From debbugs-submit-bounces@debbugs.gnu.org Fri Jun 05 10:07:06 2015 Received: (at submit) by debbugs.gnu.org; 5 Jun 2015 14:07:06 +0000 Received: from localhost ([127.0.0.1]:41846 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0sH3-0004H5-6w for submit@debbugs.gnu.org; Fri, 05 Jun 2015 10:07:06 -0400 Received: from eggs.gnu.org ([208.118.235.92]:56443) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0sGz-0004GX-0l for submit@debbugs.gnu.org; Fri, 05 Jun 2015 10:07:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z0sGo-0003hD-Ay for submit@debbugs.gnu.org; Fri, 05 Jun 2015 10:06:55 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:51403) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0sGo-0003h9-7P for submit@debbugs.gnu.org; Fri, 05 Jun 2015 10:06:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41706) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0sGm-0001yt-3h for bug-gnu-emacs@gnu.org; Fri, 05 Jun 2015 10:06:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z0sGi-0003fl-Na for bug-gnu-emacs@gnu.org; Fri, 05 Jun 2015 10:06:48 -0400 Received: from mail-wg0-x22c.google.com ([2a00:1450:400c:c00::22c]:35227) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0sGi-0003fK-4M for bug-gnu-emacs@gnu.org; Fri, 05 Jun 2015 10:06:44 -0400 Received: by wgme6 with SMTP id e6so57729432wgm.2 for ; Fri, 05 Jun 2015 07:06:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=from:to:subject:date:message-id:mime-version:content-type :content-transfer-encoding; bh=cYU7ot4OyIxcqP5FbrGjVq/fb3bV/ZNC1LwfQBxfB7o=; b=3hbGPnlfyO4C+Qq0QTMXM5JS5RcT/fQswvScB+30V/7ZTaYNULyiEEKgxJtdSVLWF+ 5GO8lL9ZI6zt/NnYCEFoJQVrgKQ9QESJpp7F9lf9hzWON82adbfGMnOESOsTYNQevoli PR4VZTybYm3coHF9EFGZTCF6OtVs2psUOcrM8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-type:content-transfer-encoding; bh=cYU7ot4OyIxcqP5FbrGjVq/fb3bV/ZNC1LwfQBxfB7o=; b=BNRbH51Iz9betn3lBwXLTsjNETf/M9eQqiWtUHviLlSUZlu3hN6gaGWKgrpjbJQ55Q 1+X3bPL4JAXTVaZuXN/6Rto6RAumT7tu1iU/NlppVnmpyOKMrFVvQ8wrJ56EcPXJm5Jt Hj670X4gU/PRY5WqQYejEQFwPN6PJT2w3Deopw01yaKF26k6yirSBzW9jg7pUYz0sKjI 3p4S71J6LxEELg5iARp7JFVXoVigLwf79OaV/z734i3K0OGE1jqKQDZs3PXewIF2fcdE soMn6aMZ+AQq6EfS7L2lzsp1zxRP0knLNn01a5DPlSiqzI8DEm9tGN4K3wDDa3CRGwm1 XUeg== X-Gm-Message-State: ALoCoQmf0BCkCMeMKnf59Wx2sDCdcM0BIGn7lJb46PzVhZO74qNXQcFhOdI8xzJDd4LzmEUxz9mj X-Received: by 10.180.78.136 with SMTP id b8mr61516584wix.44.1433513202764; Fri, 05 Jun 2015 07:06:42 -0700 (PDT) Received: from skwd ([2.216.216.26]) by mx.google.com with ESMTPSA id v3sm3591118wiz.14.2015.06.05.07.06.41 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 05 Jun 2015 07:06:41 -0700 (PDT) From: Reuben Thomas To: bug-gnu-emacs@gnu.org Subject: 24.4; flyspell doesn't work with abbreviations ending in a period Date: Fri, 05 Jun 2015 15:06:40 +0100 Message-ID: <87pp5az1u7.fsf@sc3d.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.1 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 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: -4.1 (----) flyspell marks as incorrect =E2=80=9Cetc.=E2=80=9D, =E2=80=9Ci.e.=E2=80=9D,= =E2=80=9Ce.g.=E2=80=9D &c. flyspell is of course behaving as expected: =E2=80=9C.=E2=80=9D is in OTHER= CHARS, and as it comes after the word, it is not included. ispell sets my default dictionary to en_GB (from my locale, I presume), and I=E2=80=99m using hunspell. If I run ispell-buffer on a buffer containing the above words, they pass, which is surprising in that it seems that the OTHERCHARS specification has not been applied in this case. It is not surprising in the sense that these definitions are in my dictionary. The somewhat nonsensical result is that if I run ispell-word on such a word marked incorrect by flyspell, the first correction offered is the word I already have, plus a period. If I select it, the net effect is that an extra period is inserted, and flyspell complains again. I tried to move =E2=80=9C.=E2=80=9D to CASECHARS and NOT-CASECHARS in a cus= tom dictionary definition: ("en_GB" "[[:alpha:].]" "[^[:alpha:].]" "['0-9=E2=80=99-]" t ("-d" "en_GB") nil utf-8) but this causes flyspell to give an error saying it got nil where it expected a stringp in its post-command-hook. In any case, I guess this would not do what I wanted without adding an inflexion rule to the dictionary that allowed any word to add =E2=80=9C.=E2=80=9D (except, ideall= y, a word that already ends in a period). In GNU Emacs 24.4.1 (x86_64-pc-linux-gnu, GTK+ Version 3.10.8) of 2014-11-21 on skwd, modified by Debian Windowing system distributor `The X.Org Foundation', version 11.0.11501000 System Description: Ubuntu 14.04.2 LTS Configured using: `configure --build x86_64-linux-gnu --prefix=3D/usr --sharedstatedir=3D/var/lib --libexecdir=3D/usr/lib --localstatedir=3D/var/lib --infodir=3D/usr/share/info --mandir=3D/usr/share/man --with-pop=3Dyes --enable-locallisppath=3D/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24= .4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.4/site-li= sp:/usr/share/emacs/site-lisp --build x86_64-linux-gnu --prefix=3D/usr --sharedstatedir=3D/var/lib --libexecdir=3D/usr/lib --localstatedir=3D/var/lib --infodir=3D/usr/share/info --mandir=3D/usr/share/man --with-pop=3Dyes --enable-locallisppath=3D/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24= .4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.4/site-li= sp:/usr/share/emacs/site-lisp --with-x=3Dyes --with-x-toolkit=3Dgtk3 --with-toolkit-scroll-bars 'CFLAGS=3D-g -O2 -fstack-protector --param=3Dssp-buffer-size=3D4 -Wformat -Werror=3Dformat-security -Wall' CPPFLAGS=3D-D_FORTIFY_SOURCE=3D2 'LDFLAGS=3D-Wl,-Bsymbolic-functions -Wl,-z,relro'' Important settings: value of $LC_MONETARY: en_GB.UTF-8 value of $LC_NUMERIC: en_GB.UTF-8 value of $LC_TIME: en_GB.UTF-8 value of $LANG: en_GB.UTF-8 value of $XMODIFIERS: @im=3Dlocal locale-coding-system: utf-8-unix Major mode: Emacs-Lisp Minor modes in effect: TeX-PDF-mode: t TeX-source-correlate-mode: t shell-dirtrack-mode: t paredit-mode: t show-paren-mode: t savehist-mode: t minibuffer-electric-default-mode: t icomplete-mode: t global-auto-revert-mode: t desktop-save-mode: t bug-reference-prog-mode: t global-undo-tree-mode: t undo-tree-mode: t global-whitespace-mode: t ido-everywhere: t dtrt-indent-mode: t global-auto-complete-mode: t auto-complete-mode: t eldoc-mode: t tooltip-mode: t electric-indent-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: (only . t) Recent input: C-x b A g C-n C-n C-b=20 C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b=20 C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b=20 C-b C-b C-b C-b C-b C-b C-f C-f C-f C-f C-f C-f C-f=20 C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f=20 C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f=20 C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f=20 C-f C-f C-f C-f C-f C-f C-b C-b C-b C-b C-b C-b C-b=20 C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b=20 C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b=20 C-b C-b C-b C-b C-b C-b C-p C-p C-p C-p C-p C-p C-p=20 C-p C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b=20 C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b=20 C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b=20 C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b=20 C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b=20 C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b=20 C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-p=20 C-b C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f=20 C-x b * N M e s s C-r f=20 g g l C-a C-x b C-x b c u s t =20 C-a =20 =20 M-x r e p o r t - e m a c s - b u g=20 Recent messages: Applying style hooks... done Applying style hooks... done Applying style hooks... done Applying style hooks... done Wrote /home/rrt/.emacs.desktop.lock Desktop: 4 frames, 16 buffers restored. For information about GNU Emacs and the GNU system, type C-h C-a. call-interactively: End of buffer [18 times] Mark saved where search started Mark set Load-path shadows: /home/rrt/.emacs.d/el-get/xrdb-mode/xrdb-mode hides /usr/share/emacs24/site= -lisp/emacs-goodies-el/xrdb-mode /home/rrt/.emacs.d/el-get/csv-mode/csv-mode hides /usr/share/emacs24/site-l= isp/emacs-goodies-el/csv-mode /home/rrt/.emacs.d/el-get/quack/quack hides /usr/share/emacs24/site-lisp/em= acs-goodies-el/quack /home/rrt/.emacs.d/el-get/markdown-mode/markdown-mode hides /usr/share/emac= s24/site-lisp/emacs-goodies-el/markdown-mode /home/rrt/.emacs.d/el-get/filladapt/filladapt hides /usr/share/emacs24/site= -lisp/emacs-goodies-el/filladapt /home/rrt/.emacs.d/el-get/graphviz-dot-mode/graphviz-dot-mode hides /usr/sh= are/emacs24/site-lisp/emacs-goodies-el/graphviz-dot-mode /home/rrt/.emacs.d/el-get/browse-kill-ring/browse-kill-ring hides /usr/shar= e/emacs24/site-lisp/emacs-goodies-el/browse-kill-ring /home/rrt/.emacs.d/el-get/apache-mode/apache-mode hides /usr/share/emacs24/= site-lisp/emacs-goodies-el/apache-mode /usr/share/emacs/24.4/site-lisp/debian-startup hides /usr/share/emacs/site-= lisp/debian-startup /home/rrt/.local/share/emacs/site-lisp/lilypond-mode hides /usr/share/emacs= /site-lisp/lilypond-mode /home/rrt/.local/share/emacs/site-lisp/lilypond-what-beat hides /usr/share/= emacs/site-lisp/lilypond-what-beat /usr/share/emacs/24.4/site-lisp/cdargs hides /usr/share/emacs/site-lisp/cda= rgs /home/rrt/.emacs.d/el-get/cmake-mode/cmake-mode hides /usr/share/emacs/site= -lisp/cmake-mode /home/rrt/.local/share/emacs/site-lisp/lilypond-init hides /usr/share/emacs= /site-lisp/lilypond-init /home/rrt/.local/share/emacs/site-lisp/lilypond-song hides /usr/share/emacs= /site-lisp/lilypond-song /home/rrt/.local/share/emacs/site-lisp/lilypond-indent hides /usr/share/ema= cs/site-lisp/lilypond-indent /home/rrt/.local/share/emacs/site-lisp/lilypond-font-lock hides /usr/share/= emacs/site-lisp/lilypond-font-lock /home/rrt/.local/share/emacs/site-lisp/whitespace hides /usr/share/emacs/24= .4/lisp/whitespace /usr/share/emacs24/site-lisp/dictionaries-common/ispell hides /usr/share/em= acs/24.4/lisp/textmodes/ispell /usr/share/emacs/site-lisp/rst hides /usr/share/emacs/24.4/lisp/textmodes/r= st /usr/share/emacs24/site-lisp/dictionaries-common/flyspell hides /usr/share/= emacs/24.4/lisp/textmodes/flyspell /home/rrt/.emacs.d/el-get/flymake/flymake hides /usr/share/emacs/24.4/lisp/= progmodes/flymake /home/rrt/.emacs.d/el-get/cperl-mode/cperl-mode hides /usr/share/emacs/24.4= /lisp/progmodes/cperl-mode Features: (shadow sort mail-extr emacsbug message rfc822 mml mml-sec mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader sendmail mail-utils misearch multi-isearch mule-util plain-tex gitignore-mode conf-mode latexenc preview prv-emacs tex-buf font-latex latex tex-style tex dbus xml crm tex-mode shell yaml-mode tern url-http tls url-auth mail-parse rfc2231 rfc2047 rfc2045 ietf-drums url-gw json js3-mode imenu js3-parse js3-browse js3-highlight js3-ast js3-messages js3-scan js3-util js3-vars cc-langs js3-externs adaptive-wrap window-margin face-remap flyspell ispell goto-addr smart-quotes org-element org-indent org-rmail org-mhe org-irc org-info org-gnus org-docview doc-view jka-compr image-mode org-bibtex bibtex org-bbdb org-w3m flymake compile paredit info tex-site sws-mode-autoloads server paren savehist minibuf-eldef icomplete autorevert filenotify desktop frameset cus-start cus-load iimage org org-macro org-footnote org-pcomplete pcomplete org-list org-faces org-entities noutline outline org-version ob-emacs-lisp ob ob-tangle ob-ref ob-lob ob-table ob-exp org-src ob-keys ob-comint comint ansi-color ob-core ob-eval org-compat org-macs org-loaddefs format-spec find-func cal-menu calendar cal-loaddefs go-mode url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap ffap thingatpt url-parse auth-source gnus-util mm-util mail-prsvr password-cache url-vars dired-x bug-reference-github bug-reference vc-git undo-tree diff whitespace locate yasnippet derived po-mode php-mode etags ring cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs speedbar sb-image ezimage dframe init-paredit ido-hacks ido magit-autoloads geiser-load geiser flymake-point filladapt dtrt-indent csv auto-complete-config auto-complete edmacro kmacro popup init-eldoc eldoc-extension cl-macs advice eldoc .loaddefs eieio byte-opt eieio-core el-get el-get-autoloading el-get-list-packages el-get-dependencies el-get-build el-get-status pp el-get-methods el-get-fossil el-get-svn el-get-pacman el-get-github-zip el-get-github-tar el-get-http-zip el-get-http-tar el-get-hg el-get-go el-get-git-svn el-get-fink el-get-emacswiki el-get-http el-get-notify help-mode easymenu el-get-emacsmirror el-get-github el-get-git el-get-elpa package epg-config el-get-darcs el-get-cvs el-get-bzr el-get-brew el-get-builtin el-get-apt-get el-get-recipes el-get-byte-compile el-get-custom el-get-core autoload help-fns lisp-mnt bytecomp byte-compile cconv cl gv cl-loaddefs cl-lib dired user-site-loaddefs debian-el debian-el-loaddefs emacs-goodies-el emacs-goodies-custom emacs-goodies-loaddefs easy-mmode dpkg-dev-el dpkg-dev-el-loaddefs devhelp time-date tooltip electric uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment lisp-mode prog-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process dbusbind gfilenotify dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs) Memory information: ((conses 16 603598 45229) (symbols 48 50761 0) (miscs 40 267 443) (strings 32 171824 23445) (string-bytes 1 5482137) (vectors 16 49781) (vector-slots 8 1578059 70586) (floats 8 291 310) (intervals 56 3314 78) (buffers 960 28) (heap 1024 62706 2723)) --=20 http://rrt.sc3d.org/ From debbugs-submit-bounces@debbugs.gnu.org Fri Jun 05 10:08:40 2015 Received: (at 20741) by debbugs.gnu.org; 5 Jun 2015 14:08:40 +0000 Received: from localhost ([127.0.0.1]:41855 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0sIa-0004K3-3B for submit@debbugs.gnu.org; Fri, 05 Jun 2015 10:08:40 -0400 Received: from mail-ie0-f169.google.com ([209.85.223.169]:36726) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0sIY-0004Jr-N2 for 20741@debbugs.gnu.org; Fri, 05 Jun 2015 10:08:39 -0400 Received: by ieclw1 with SMTP id lw1so58728392iec.3 for <20741@debbugs.gnu.org>; Fri, 05 Jun 2015 07:08:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:date:message-id:subject:from:to:content-type; bh=lvUj9W0LXJoa+Yy3FG72EHP9t8NYD+v6U/rLpA4oZL8=; b=V9zArdS64T3iPhzD0lhheu1KWtkD6su0g6hdm0ZSmDp10Uu3gVrq3oj47VfS98ZKlQ erbckP5dYuXEeIZJvOH0C4hyXJFF291lPbARIHPhPnTxwqnqlRoCh7bH7XViyD5QlxFC XiImU5Iogw7bHY6T0laJzsCbfRlyxcVhJMV38= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to :content-type; bh=lvUj9W0LXJoa+Yy3FG72EHP9t8NYD+v6U/rLpA4oZL8=; b=YJuRQqCxFfFVCiSjill9bXu/a0X5t7p+8ikdh79umo91ZfW84tX1jUBXx1hQdmShxF BRROpf38hxZZ359OXAnBRTIKq5FNzbyYQGDFexSPu08V66Uu2Wmcpy7KndxW0yC6Muj5 YCa2fUi3jG2yuUxc/oGQzfytEgYsuFCdvxIpJrHpGdJ4ywl7MlMrWs10p3o3YNyvjotO K6iWt7ixBI8PYniA/TTWzGZlDUoUl0QkN+c/od8LUqnqiLwWv/zgTg4KFXoq5lkjjrp3 r/nm2lHlJaTRbApoH4/WqpzP5IbUsdjNUKLTSd0quI2OYkfqbhktbiXlOcVLQ/DEbf4i Y91g== X-Gm-Message-State: ALoCoQn94bA8W+ireByqR0OkdXV5jqWPFpXc7CUhHGwnWsaG4bkAY/m04py25ltIAf5Co3dKjGoX MIME-Version: 1.0 X-Received: by 10.50.61.234 with SMTP id t10mr41417611igr.19.1433513312902; Fri, 05 Jun 2015 07:08:32 -0700 (PDT) Received: by 10.36.118.19 with HTTP; Fri, 5 Jun 2015 07:08:32 -0700 (PDT) Date: Fri, 5 Jun 2015 15:08:32 +0100 Message-ID: Subject: Workaround From: Reuben Thomas To: 20741@debbugs.gnu.org Content-Type: multipart/alternative; boundary=047d7bdc07e2cbf8570517c5d381 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 20741 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 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: -0.7 (/) --047d7bdc07e2cbf8570517c5d381 Content-Type: text/plain; charset=UTF-8 As a workaround, I've added "i.e", "e.g" and "etc" to my personal word list. -- http://rrt.sc3d.org --047d7bdc07e2cbf8570517c5d381 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
As = a workaround, I've added "i.e", "e.g" and "etc= " to my personal word list.

--
--047d7bdc07e2cbf8570517c5d381-- From debbugs-submit-bounces@debbugs.gnu.org Fri Jun 05 15:24:02 2015 Received: (at 20741) by debbugs.gnu.org; 5 Jun 2015 19:24:03 +0000 Received: from localhost ([127.0.0.1]:42092 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0xDm-0004nP-6Z for submit@debbugs.gnu.org; Fri, 05 Jun 2015 15:24:02 -0400 Received: from mtaout27.012.net.il ([80.179.55.183]:55943) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0xDj-0004mz-3h for 20741@debbugs.gnu.org; Fri, 05 Jun 2015 15:24:00 -0400 Received: from conversion-daemon.mtaout27.012.net.il by mtaout27.012.net.il (HyperSendmail v2007.08) id <0NPH00800J56CP00@mtaout27.012.net.il> for 20741@debbugs.gnu.org; Fri, 05 Jun 2015 22:19:02 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by mtaout27.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NPH00B5WKBQCW20@mtaout27.012.net.il>; Fri, 05 Jun 2015 22:19:02 +0300 (IDT) Date: Fri, 05 Jun 2015 22:23:49 +0300 From: Eli Zaretskii Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period In-reply-to: <87pp5az1u7.fsf@sc3d.org> X-012-Sender: halo1@inter.net.il To: Reuben Thomas Message-id: <83twumnem2.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-transfer-encoding: 8BIT References: <87pp5az1u7.fsf@sc3d.org> X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 20741 Cc: 20741@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Eli Zaretskii 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 (+) > From: Reuben Thomas > Date: Fri, 05 Jun 2015 15:06:40 +0100 > > flyspell marks as incorrect “etc.”, “i.e.”, “e.g.” &c. I can reproduce part of this with en_GB, but not with en_US. So I think it's an issue with the dictionary, not with flyspell or ispell. > flyspell is of course behaving as expected: “.” is in OTHERCHARS, and as > it comes after the word, it is not included. What OTHERCHARS are you looking at? In Emacs 24.4 and later, ispell.el takes that value from the dictionary's .aff file, not from the internal database. So if you customized ispell-dictionary-alist, try without those customizations, you shouldn't need them in v24.4. > ispell sets my default dictionary to en_GB (from my locale, I presume), Yes. But you can override that, if you want. > I tried to move “.” to CASECHARS and NOT-CASECHARS in a custom > dictionary definition: > > ("en_GB" "[[:alpha:].]" "[^[:alpha:].]" "['0-9’-]" t > ("-d" "en_GB") > nil utf-8) You shouldn't need all that in Emacs 24.4. Try not to customize the dictionary at all. From debbugs-submit-bounces@debbugs.gnu.org Fri Jun 05 17:42:48 2015 Received: (at 20741) by debbugs.gnu.org; 5 Jun 2015 21:42:48 +0000 Received: from localhost ([127.0.0.1]:42253 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0zO3-0008A9-JL for submit@debbugs.gnu.org; Fri, 05 Jun 2015 17:42:48 -0400 Received: from mail-ig0-f170.google.com ([209.85.213.170]:33686) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0zO1-00089w-Dy for 20741@debbugs.gnu.org; Fri, 05 Jun 2015 17:42:46 -0400 Received: by igbpi8 with SMTP id pi8so24890871igb.0 for <20741@debbugs.gnu.org>; Fri, 05 Jun 2015 14:42:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=o7pr//TIMO+WhfBc+4RUwPAFdcQBib9Jx0odAco4J3U=; b=Iou/S8LBfyZOILMMJ3bNnZiqRNtKq/JS/w5d/4caKdXm1TltOEQpRidluVlQVRKQ0T zu3ADnhQkYflpK0B0xZLOgJqLy4XzpMwmstNenINYLzebyuG3eL5tgbPoUd239s2H+q1 8Arf/9d7G9ogfPH072KcaOWlQlr8Y4A627LN4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=o7pr//TIMO+WhfBc+4RUwPAFdcQBib9Jx0odAco4J3U=; b=UazEZ2pH9qEVoAalHNeu9Nyb4+laPgpel+TeYi4u0+gDO4m+mHBTOylPhXWJdLM516 U8yt8EJoJgRvfPSmyvugVc5/ZrXbMSQGO/lrr2OkNvs/pHR++hrFIHAeV0QCMrQH77oA g8lqZhRtvN6MdZmkZr+4DYsHbImE5L7fQI3/qt5f5zenv4NrFmQ8SKf7zJUVD0+Qp/RW 0z23XlrAsTZ0BVxv5JvJ5CEYhjqercwidxMbO/vBqp3vp25Puqh/xHz11RpOx8+wqzpD qBkSBa6iWa3qFdBU/q6rxxT7Kb+OpGJ/bHpiTYC3kRaJAKFJ28I5kFySbwVED2UKtUbj 2VrQ== X-Gm-Message-State: ALoCoQmu+WCoqxx1+t07xmaZ7muyRsjEvt0KSxxBnT2rt8qb44jAeGWN8gilR4DXbRgWMtavD6Tu MIME-Version: 1.0 X-Received: by 10.42.213.136 with SMTP id gw8mr12621438icb.95.1433540559722; Fri, 05 Jun 2015 14:42:39 -0700 (PDT) Received: by 10.36.118.19 with HTTP; Fri, 5 Jun 2015 14:42:39 -0700 (PDT) In-Reply-To: <83twumnem2.fsf@gnu.org> References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> Date: Fri, 5 Jun 2015 22:42:39 +0100 Message-ID: Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period From: Reuben Thomas To: Eli Zaretskii Content-Type: multipart/alternative; boundary=001a11c31700d5786a0517cc2b2d X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 20741 Cc: 20741@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 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: -0.7 (/) --001a11c31700d5786a0517cc2b2d Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 5 June 2015 at 20:23, Eli Zaretskii wrote: > > From: Reuben Thomas > > Date: Fri, 05 Jun 2015 15:06:40 +0100 > > > > flyspell marks as incorrect =E2=80=9Cetc.=E2=80=9D, =E2=80=9Ci.e.=E2=80= =9D, =E2=80=9Ce.g.=E2=80=9D &c. > > I can reproduce part of this with en_GB, but not with en_US. So I > think it's an issue with the dictionary, not with flyspell or ispell. > The en_US dictionary contains "etc", which is incorrect. What OTHERCHARS are you looking at? In Emacs 24.4 and later, > ispell.el takes that value from the dictionary's .aff file, not from > the internal database. So if you customized ispell-dictionary-alist, > try without those customizations, you shouldn't need them in v24.4. > =E2=80=8BOh dear, after =E2=80=8Bfurther investigation this turns out to be= because Debian overrides ispell.el and flyspell.el with its own patched versions, which predate Emacs 24.4 (they are from 2013). In what follows, I have moved these patched files aside, and am definitely working with just Emacs 24.4's versions! Now, still using hunspell, and having removed "i.e", "e.g" and "etc" from my en_GB spelling list, I get exactly the same highlighting. > > ispell sets my default dictionary to en_GB (from my locale, I presume), > > Yes. But you can override that, if you want. > =E2=80=8BI don't want to override it, it's fine. =E2=80=8BWhen I mention OTHERCHARS, I am looking at the documentation for ispell-dictionary-alist. Indeed, when I change language, and I am using hunspell, the language definitions seem to be auto-generated. With hunspell, OTHERCHARS is set to include ".".=E2=80=8B But indeed, removing i= t or moving it into CASECHARS and NOT-CASECHARS still seems not to help, so I'm back to my original workaround. But indeed, apart from when I specifically mentioned customising the dictionary, I am working with Emacs's default values, not customised at all= . =E2=80=8BThanks very much for your help with this. --=20 http://rrt.sc3d.org --001a11c31700d5786a0517cc2b2d Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On 5= June 2015 at 20:23, Eli Zaretskii <eliz@gnu.org> wrote:
> From: Reuben Thomas <<= a href=3D"mailto:rrt@sc3d.org" target=3D"_blank">rrt@sc3d.org>
> Date: Fri, 05 Jun 2015 15:06:40 +0100
>
> flyspell marks as incorrect =E2=80=9Cetc.=E2=80=9D, =E2=80=9Ci.e.=E2= =80=9D, =E2=80=9Ce.g.=E2=80=9D &c.

I can reproduce part of this with en_GB, but not with en_US.=C2=A0 So I
think it's an issue with the dictionary, not with flyspell or ispell.

The en_US dictionary contains "etc", which is incorrect.
<= /div>
What OTHERCHARS are you looking at?=C2=A0 In Emacs 24.4 and later,
ispell.el takes that value from the dictionary's .aff file, not from the internal database.=C2=A0 So if you customized ispell-dictionary-alist,<= br> try without those customizations, you shouldn't need them in v24.4.
=

=E2=80=8BOh dear, after =E2=80=8Bfurther investigation this turns out to = be because Debian overrides ispell.el and flyspell.el with its own patched = versions, which predate Emacs 24.4 (they are from 2013).

In what follows, I have m= oved these patched files aside, and am definitely working with just Emacs 2= 4.4's versions!

Now, still using hunspell, and having removed "i.e",= "e.g" and "etc" from my en_GB spelling list, I get exa= ctly the same highlighting.
=C2=A0
> ispell sets my default dictionary to en_GB (from my locale, I presume)= ,

Yes.=C2=A0 But you can override that, if you want.
=E2=80=8BI don'= t want to override it, it's fine.

=E2=80=8BWhen I mention OTHERCHARS, = I am looking at the documentation for ispell-dictionary-alist. Indeed, when= I change language, and I am using hunspell, the language definitions seem = to be auto-generated. With hunspell, OTHERCHARS is set to include ".&q= uot;.=E2=80=8B But indeed, removing it or moving it into CASECHARS and NOT-= CASECHARS still seems not to help, so I'm back to my original workaroun= d.

But = indeed, apart from when I specifically mentioned customising the dictionary= , I am working with Emacs's default values, not customised at all.
<= /div>
=E2=80=8BTh= anks very much for your help with this.

--
--001a11c31700d5786a0517cc2b2d-- From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 06 02:49:56 2015 Received: (at 20741) by debbugs.gnu.org; 6 Jun 2015 06:49:56 +0000 Received: from localhost ([127.0.0.1]:42385 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z17vX-0003mV-VU for submit@debbugs.gnu.org; Sat, 06 Jun 2015 02:49:56 -0400 Received: from mtaout26.012.net.il ([80.179.55.182]:55394) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z17vV-0003mF-0z for 20741@debbugs.gnu.org; Sat, 06 Jun 2015 02:49:54 -0400 Received: from conversion-daemon.mtaout26.012.net.il by mtaout26.012.net.il (HyperSendmail v2007.08) id <0NPI00J00G8RYX00@mtaout26.012.net.il> for 20741@debbugs.gnu.org; Sat, 06 Jun 2015 09:51:50 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by mtaout26.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NPI00F70GEEJ250@mtaout26.012.net.il>; Sat, 06 Jun 2015 09:51:50 +0300 (IDT) Date: Sat, 06 Jun 2015 09:49:44 +0300 From: Eli Zaretskii Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period In-reply-to: X-012-Sender: halo1@inter.net.il To: Reuben Thomas Message-id: <83iob1nxfb.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-transfer-encoding: 8BIT References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 20741 Cc: 20741@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Eli Zaretskii 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 (+) > Date: Fri, 5 Jun 2015 22:42:39 +0100 > From: Reuben Thomas > Cc: 20741@debbugs.gnu.org > > > flyspell marks as incorrect “etc.”, “i.e.”, “e.g.” &c. > > I can reproduce part of this with en_GB, but not with en_US. So I > think it's an issue with the dictionary, not with flyspell or ispell. > > The en_US dictionary contains "etc", which is incorrect. Not that I'm maintaining those dictionaries, but why is it incorrect, in your opinion? It clearly produces the desirable effect, doesn't it? > ​When I mention OTHERCHARS, I am looking at the documentation for > ispell-dictionary-alist. Indeed, when I change language, and I am using > hunspell, the language definitions seem to be auto-generated. With hunspell, > OTHERCHARS is set to include ".".​ But indeed, removing it or moving it into > CASECHARS and NOT-CASECHARS still seems not to help, so I'm back to my original > workaround. > > But indeed, apart from when I specifically mentioned customising the > dictionary, I am working with Emacs's default values, not customised at all. > > ​Thanks very much for your help with this. You are welcome. Does this mean that your problem is solved, and we can close this bug? Or does something still need to be fixed in Emacs? From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 06 05:35:56 2015 Received: (at 20741) by debbugs.gnu.org; 6 Jun 2015 09:35:56 +0000 Received: from localhost ([127.0.0.1]:42548 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1AWB-0007et-96 for submit@debbugs.gnu.org; Sat, 06 Jun 2015 05:35:55 -0400 Received: from mail-ie0-f177.google.com ([209.85.223.177]:34169) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1AW8-0007ee-P3 for 20741@debbugs.gnu.org; Sat, 06 Jun 2015 05:35:53 -0400 Received: by iebmu5 with SMTP id mu5so37228962ieb.1 for <20741@debbugs.gnu.org>; Sat, 06 Jun 2015 02:35:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=f4IzrNsnjjpBjXmCO3hsKtP9MkFuk0lh3RCboUc9ILc=; b=FYodRO9SrCWjiYybly9xFHWZanuoeG8X0aWVl04dzfkzHvcb9QJbP1INZvEZxfBpW2 1OKMWXfFM6GxN/RhubSAVxFfbnbYkrkTQNGphNcZXLerq14ZJfXQ2QuG0tCq0m996zIe lUMxaKSsfBidKlmjGh7+ZR0aRV8iZZ7pQIpzw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=f4IzrNsnjjpBjXmCO3hsKtP9MkFuk0lh3RCboUc9ILc=; b=Zaa4w8nrKrMvsfPl6pNvfOtwqtpoVJ9wESyI601aXQnQhIZMqNdKnG/jmTXBeoEliO VGkr1FrRSdZEBucB1kIqSg63feskgk+sAn6iOIplgMbQ/uMann2BwOsWASDZAbT+BFdC pLDz24oZUtWOIQCYotbQoPxUdFScXHLkucST3Nk8XIy1Rdel93rZ6HM84RZryxItDU5l syOAkfH4zWrq2xe/ZToNAL7N79xVB1Xx0yOxE0OecdUQterhgX0OJ3Jya+5uBZ7QH58K uC4OSFI2phqUpVt9tiK32nejA5GgWrmLPut0UUz7RNGo2V7aBYbJD+WKz6KLsPQYKKAk iRQA== X-Gm-Message-State: ALoCoQnNOEv9N2LnS+HBDQLC1NaPp9ME3cdy96WoDidKlF1Vu+uA33HlkReRW+kC5p5wFpQ9jUuQ MIME-Version: 1.0 X-Received: by 10.42.154.65 with SMTP id p1mr14555572icw.26.1433583346954; Sat, 06 Jun 2015 02:35:46 -0700 (PDT) Received: by 10.36.118.19 with HTTP; Sat, 6 Jun 2015 02:35:46 -0700 (PDT) In-Reply-To: <83iob1nxfb.fsf@gnu.org> References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> Date: Sat, 6 Jun 2015 10:35:46 +0100 Message-ID: Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period From: Reuben Thomas To: Eli Zaretskii Content-Type: multipart/alternative; boundary=90e6ba6e815a26d69d0517d62213 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 20741 Cc: 20741@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 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: -0.7 (/) --90e6ba6e815a26d69d0517d62213 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 6 June 2015 at 07:49, Eli Zaretskii wrote: > > Date: Fri, 5 Jun 2015 22:42:39 +0100 > > From: Reuben Thomas > > Cc: 20741@debbugs.gnu.org > > > > > flyspell marks as incorrect =E2=80=9Cetc.=E2=80=9D, =E2=80=9Ci.e.= =E2=80=9D, =E2=80=9Ce.g.=E2=80=9D &c. > > > > I can reproduce part of this with en_GB, but not with en_US. So I > > think it's an issue with the dictionary, not with flyspell or ispel= l. > > > > The en_US dictionary contains "etc", which is incorrect. > > Not that I'm maintaining those dictionaries, but why is it incorrect, > in your opinion? It clearly produces the desirable effect, doesn't it? > =E2=80=8BNo, it produces the undesirable effect of treating "etc" as a corr= ect spelling.=E2=80=8B Does this mean that your problem is solved, and we can close this bug? > Or does something still need to be fixed in Emacs? > =E2=80=8BSorry, I must have been unclear. I still have the original problem= : without the workaround of adding incorrect spellings to my personal wordlist, "i.e." and "e.g." are marked as wrong in en_GB. I just double checked this with the following recipe: 1. Rename my ~/.hunspell_en_GB. 2. Start "emacs -Q" 3. M-x flyspell-mode RET 4. M-x customize-variable RET ispell-program-name RET; set to "/usr/bin/hunspell" (doing this after step 3 because the variable is not available for customization before loading ispell) 5. Type "etc. i.e. e.g." All of the above is now red-underwiggled. --=20 http://rrt.sc3d.org --90e6ba6e815a26d69d0517d62213 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On 6= June 2015 at 07:49, Eli Zaretskii <eliz@gnu.org> wrote:
> Date: Fri, 5 Jun 2015 22:42:39 +0100
> From: Reuben Thomas <rrt@sc3d.org>
> Cc:
20741@debbugs.gnu.org=
>
>=C2=A0 =C2=A0 =C2=A0> flyspell marks as incorrect =E2=80=9Cetc.=E2= =80=9D, =E2=80=9Ci.e.=E2=80=9D, =E2=80=9Ce.g.=E2=80=9D &c.
>
>=C2=A0 =C2=A0 =C2=A0I can reproduce part of this with en_GB, but not wi= th en_US. So I
>=C2=A0 =C2=A0 =C2=A0think it's an issue with the dictionary, not wi= th flyspell or ispell.
>
> The en_US dictionary contains "etc", which is incorrect.

Not that I'm maintaining those dictionaries, but why is it incor= rect,
in your opinion?=C2=A0 It clearly produces the desirable effect, doesn'= t it?

=E2=80=8BNo, it produces the undesirable effect of treating &quo= t;etc" as a correct spelling.=E2=80=8B

Does this mean that your problem is solved, and we can close this bug?
Or does something still need to be fixed in Emacs?

=E2=80=8BSorry, I must have been unclear. I still have the original prob= lem: without the workaround of adding incorrect spellings to my personal wo= rdlist, "i.e." and "e.g." are marked as wrong in en_GB.= I just double checked this with the following recipe:

1. Rename my ~/.hunspell_en= _GB.

2.= Start "emacs -Q"

3. M-x flyspell-mode RET

4. M-x customize-variable RET ispell= -program-name RET; set to "/usr/bin/hunspell" (doing this after s= tep 3 because the variable is not available for customization before loadin= g ispell)

5. Type "etc. i.e. e.g."

All of the above is now red-underwiggled.

--
--90e6ba6e815a26d69d0517d62213-- From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 06 05:38:25 2015 Received: (at 20741) by debbugs.gnu.org; 6 Jun 2015 09:38:25 +0000 Received: from localhost ([127.0.0.1]:42574 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1AYa-0007jY-Dw for submit@debbugs.gnu.org; Sat, 06 Jun 2015 05:38:24 -0400 Received: from mail-ig0-f175.google.com ([209.85.213.175]:36698) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1AYY-0007jM-Rq for 20741@debbugs.gnu.org; Sat, 06 Jun 2015 05:38:23 -0400 Received: by igbpi8 with SMTP id pi8so32241627igb.1 for <20741@debbugs.gnu.org>; Sat, 06 Jun 2015 02:38:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=1kljNVwxdhwG8FuVPGY2L6R7RxvwSJx7UKWs3oV8qg8=; b=haQFeJILP6soMepydP/5FFGyMQDyy8vUmekvcaQ4MMiRemAESSsPfeDlI1uUm0Vud8 bAxeXzAIxvP8uLK3j6SSRuFe9/rY7vVkQInR2SU6C+XIHB07Y5VeCR7idT/FaSLm6VN1 H6dHHodGq9We1Gy8BGWO0M2vLsEy6ERE3Uij8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=1kljNVwxdhwG8FuVPGY2L6R7RxvwSJx7UKWs3oV8qg8=; b=V0dldCxrEFt/rPVyynPyQXA0AiNxklBa8Qvf2Byc1Ar8cC5Nerr803hm6gnc3F7FG8 KQUNCKGxa5doLkKyJ0ZuLE8r0qsm/cbjtMjEpbHsXKJ/aw+gZj7nt/ig5rbU83CVEYjK UF3N31L0JlhGP7IJ0d7X83hDerwYTpCkz03oE44G/umh89GMY9wRfeYCxKVnoWAiO13m XSURJHGrZSYyQY4SqBtTSBYe+3kf+ZbZhV1IvUmZ/RnSZ50PrfuKMJrXF1HdZ7cShfhn /7mDNk2H+l1542dYHNgkAAQr8gt0XoXecCfFGtLcD7+HJJUs1bJ6g8qGoJw4XSMINDfu UMkg== X-Gm-Message-State: ALoCoQm5qM3vLWf63RYUAeWD17L2ncaD2xKF5CqiO/k4WntkZyiUtdpcDF6AmvsFDw0qx71EwHAk MIME-Version: 1.0 X-Received: by 10.42.175.74 with SMTP id az10mr9794649icb.55.1433583497120; Sat, 06 Jun 2015 02:38:17 -0700 (PDT) Received: by 10.36.118.19 with HTTP; Sat, 6 Jun 2015 02:38:17 -0700 (PDT) In-Reply-To: References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> Date: Sat, 6 Jun 2015 10:38:17 +0100 Message-ID: Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period From: Reuben Thomas To: Eli Zaretskii Content-Type: multipart/alternative; boundary=485b397b947d1a286a0517d62b27 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 20741 Cc: 20741@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 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: -0.7 (/) --485b397b947d1a286a0517d62b27 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 6 June 2015 at 10:35, Reuben Thomas wrote: > > > All of the above is now red-underwiggled. > =E2=80=8BI should add, if I M-x ispell-change-dictionary=E2=80=8B =E2=80=8BRET american RET, then allow the underlining to refresh, "etc." is= no longer marked as wrong (as we've seen, it's incorrectly in the "american" word list), but "i.e." and "e.g." are still so marked.=E2=80=8B --=20 http://rrt.sc3d.org --485b397b947d1a286a0517d62b27 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On 6= June 2015 at 10:35, Reuben Thomas <rrt@sc3d.org> wrote:

<= br>
All of the above is now red-underwiggled.=

=E2=80=8BI should add, if I M-x ispe= ll-change-dictionary=E2=80=8B
=C2=A0
=E2=80=8BRET american RET, then allow t= he underlining to refresh, "etc." is no longer marked as wrong (a= s we've seen, it's incorrectly in the "american" word lis= t), but "i.e." and "e.g." are still so marked.=E2=80=8B=

--
--485b397b947d1a286a0517d62b27-- From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 06 05:58:30 2015 Received: (at 20741) by debbugs.gnu.org; 6 Jun 2015 09:58:30 +0000 Received: from localhost ([127.0.0.1]:42589 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1As1-0008B6-VJ for submit@debbugs.gnu.org; Sat, 06 Jun 2015 05:58:30 -0400 Received: from mtaout23.012.net.il ([80.179.55.175]:53264) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1Arz-0008Ar-73 for 20741@debbugs.gnu.org; Sat, 06 Jun 2015 05:58:28 -0400 Received: from conversion-daemon.a-mtaout23.012.net.il by a-mtaout23.012.net.il (HyperSendmail v2007.08) id <0NPI00200OZXWA00@a-mtaout23.012.net.il> for 20741@debbugs.gnu.org; Sat, 06 Jun 2015 12:58:20 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout23.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NPI0029CP17W600@a-mtaout23.012.net.il>; Sat, 06 Jun 2015 12:58:20 +0300 (IDT) Date: Sat, 06 Jun 2015 12:58:18 +0300 From: Eli Zaretskii Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period In-reply-to: X-012-Sender: halo1@inter.net.il To: Reuben Thomas Message-id: <836171nop1.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-transfer-encoding: 8BIT References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 20741 Cc: 20741@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Eli Zaretskii 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 (+) > Date: Sat, 6 Jun 2015 10:35:46 +0100 > From: Reuben Thomas > Cc: 20741@debbugs.gnu.org > > > The en_US dictionary contains "etc", which is incorrect. > > Not that I'm maintaining those dictionaries, but why is it incorrect, > in your opinion? It clearly produces the desirable effect, doesn't it? > > > ​No, it produces the undesirable effect of treating "etc" as a correct spelling.​ I think it's a correct spelling, but that's me. > Does this mean that your problem is solved, and we can close this bug? > Or does something still need to be fixed in Emacs? > > > ​Sorry, I must have been unclear. I still have the original problem: without the > workaround of adding incorrect spellings to my personal wordlist, "i.e." and > "e.g." are marked as wrong in en_GB. I just double checked this with the > following recipe: > > 1. Rename my ~/.hunspell_en_GB. > > 2. Start "emacs -Q" > > 3. M-x flyspell-mode RET > > 4. M-x customize-variable RET ispell-program-name RET; set to > "/usr/bin/hunspell" (doing this after step 3 because the variable is not > available for customization before loading ispell) > > 5. Type "etc. i.e. e.g." > > All of the above is now red-underwiggled. But do you agree that it's not an Emacs problem? From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 06 06:03:48 2015 Received: (at 20741) by debbugs.gnu.org; 6 Jun 2015 10:03:48 +0000 Received: from localhost ([127.0.0.1]:42597 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1AxA-0008Ju-4k for submit@debbugs.gnu.org; Sat, 06 Jun 2015 06:03:48 -0400 Received: from mtaout21.012.net.il ([80.179.55.169]:47770) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1Ax7-0008Jf-VT for 20741@debbugs.gnu.org; Sat, 06 Jun 2015 06:03:47 -0400 Received: from conversion-daemon.a-mtaout21.012.net.il by a-mtaout21.012.net.il (HyperSendmail v2007.08) id <0NPI00B00P5H6N00@a-mtaout21.012.net.il> for 20741@debbugs.gnu.org; Sat, 06 Jun 2015 13:03:39 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout21.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NPI00B8BPA14Y60@a-mtaout21.012.net.il>; Sat, 06 Jun 2015 13:03:39 +0300 (IDT) Date: Sat, 06 Jun 2015 13:03:36 +0300 From: Eli Zaretskii Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period In-reply-to: X-012-Sender: halo1@inter.net.il To: Reuben Thomas Message-id: <834mmlnog7.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-transfer-encoding: 8BIT References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 20741 Cc: 20741@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Eli Zaretskii 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 (+) > Date: Sat, 6 Jun 2015 10:38:17 +0100 > From: Reuben Thomas > Cc: 20741@debbugs.gnu.org > > ​I should add, if I M-x ispell-change-dictionary​ > ​RET american RET, then allow the underlining to refresh, "etc." is no longer > marked as wrong (as we've seen, it's incorrectly in the "american" word list), > but "i.e." and "e.g." are still so marked.​ That's not what I see here. When en_US is used, neither of these is flagged as a mis-spelling. When I switch to en_GB, only "etc" and the "i" in "i.e." are flagged, the rest (including all of "e.g.") are not. I guess the reason is the different versions of Hunspell dictionaries we have installed. Once again, I don't think this is an Emacs problem. Don't you see the same when you invoke Hunspell as a stand-alone program? From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 06 06:08:20 2015 Received: (at 20741) by debbugs.gnu.org; 6 Jun 2015 10:08:20 +0000 Received: from localhost ([127.0.0.1]:42601 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1B1Y-0008QU-5L for submit@debbugs.gnu.org; Sat, 06 Jun 2015 06:08:20 -0400 Received: from mail-ig0-f182.google.com ([209.85.213.182]:37270) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1B1V-0008QB-NR for 20741@debbugs.gnu.org; Sat, 06 Jun 2015 06:08:18 -0400 Received: by igbsb11 with SMTP id sb11so30593936igb.0 for <20741@debbugs.gnu.org>; Sat, 06 Jun 2015 03:08:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=9UAznoQ/Sr9oqrVaEf5mFZk9ATltjjPatvfj1wM6p9I=; b=vHKc/rN1h/ZwFUPX1Yiq5YEJLlAAX8qvtr6Kar0jBnsFAY4rwxzfUghImqolCFYq1t WveNQo8IT13ZZ7R77U5vpXf5Dn565vGJwOEI67Mp9TrprVZaJvDCDmozx1cmqzGaUySB 7gkhXBv1QcSlK+pAoQMaNLvAv9FWjWBlscGb0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=9UAznoQ/Sr9oqrVaEf5mFZk9ATltjjPatvfj1wM6p9I=; b=jqWErf9CkBFmk6X5oY0g/Uq7QpU1x6dLHCuxZMlEbL7wBJ4Kg5n7x9RIMtGKV1ylqq zuZUdNiuTYn3XNcTu7CtC+WCG6D28FZQznHu0wLto7EuYjR7mAAw9VIyVwiks7sgkmfG gxUCQ6jpwRKIXJXD4zWa3znUXLr/dLiKdABwQQcN/CWAZB7Au7VpEcKFskixv8fIFyBl IBZHzL8N/MQBzvJLPKkCLPQsfQZEQOdWF6aTUbmYxG3H3VmHfgaoubLVbs5XykwiYWkm VXaxDwkfh1hZ3nhwYFH3OVWeuE8aIBXvMW5YN3VQha+G0RJrjbCm1NGbUTijQN9aXqX9 cZtQ== X-Gm-Message-State: ALoCoQlVyF7CnJkNlG8me3hS/vsaSIjyuZhzGK4CGv/60ADT9b7nQrIlWLjh1q58QXX7ByFxwHdX MIME-Version: 1.0 X-Received: by 10.50.178.133 with SMTP id cy5mr2838361igc.5.1433585292330; Sat, 06 Jun 2015 03:08:12 -0700 (PDT) Received: by 10.36.118.19 with HTTP; Sat, 6 Jun 2015 03:08:12 -0700 (PDT) In-Reply-To: <834mmlnog7.fsf@gnu.org> References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> <834mmlnog7.fsf@gnu.org> Date: Sat, 6 Jun 2015 11:08:12 +0100 Message-ID: Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period From: Reuben Thomas To: Eli Zaretskii Content-Type: multipart/alternative; boundary=089e01538cbe1b15aa0517d696ca X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 20741 Cc: 20741@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 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: -0.7 (/) --089e01538cbe1b15aa0517d696ca Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 6 June 2015 at 11:03, Eli Zaretskii wrote: > > Date: Sat, 6 Jun 2015 10:38:17 +0100 > > From: Reuben Thomas > > Cc: 20741@debbugs.gnu.org > > > > =E2=80=8BI should add, if I M-x ispell-change-dictionary=E2=80=8B > > =E2=80=8BRET american RET, then allow the underlining to refresh, "etc.= " is no > longer > > marked as wrong (as we've seen, it's incorrectly in the "american" word > list), > > but "i.e." and "e.g." are still so marked.=E2=80=8B > > That's not what I see here. When en_US is used, neither of these is > flagged as a mis-spelling. When I switch to en_GB, only "etc" and the > "i" in "i.e." are flagged, the rest (including all of "e.g.") are not. > > I guess the reason is the different versions of Hunspell dictionaries > we have installed. > > Once again, I don't think this is an Emacs problem. Don't you see the > same when you invoke Hunspell as a stand-alone program? > $ cat Downloads/foo.txt i.e. this is not e.g. etc. help! =E2=80=8B foxb=E2=80=8B $ hunspell -a -d en_GB -i UTF-8 ~/Downloads/foo.txt @(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.3) * * * * * * * & foxb 6 33: fox, fob, foxy, fox b, fixable, faux =E2=80=8BHere we see that hunspell doesn't like "foxb" (great!) but is othe= rwise happy. So the problem does not appear to be with hunspell. --=20 http://rrt.sc3d.org --089e01538cbe1b15aa0517d696ca Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On 6= June 2015 at 11:03, Eli Zaretskii <eliz@gnu.org> wrote:
> Date: Sat, 6 Jun 2015 10:= 38:17 +0100
> From: Reuben Thomas <rrt@sc3d.org>
> Cc: 20741@debbugs.gnu.org=
>
> =E2=80=8BI should add, if I M-x ispell-change-= dictionary=E2=80=8B
> =E2=80=8BRET american RET, then allow the underlining to refresh, &quo= t;etc." is no longer
> marked as wrong (as we've seen, it's incorrectly in the "= american" word list),
> but "i.e." and "e.g." are still so marked.=E2=80= =8B

That's not what I see here.=C2=A0 When en_US is used, neither of= these is
flagged as a mis-spelling.=C2=A0 When I switch to en_GB, only "etc&quo= t; and the
"i" in "i.e." are flagged, the rest (including all of &= quot;e.g.") are not.

I guess the reason is the different versions of Hunspell dictionaries
we have installed.

Once again, I don't think this is an Emacs problem.=C2=A0 Don't you= see the
same when you invoke Hunspell as a stand-alone program?

$ cat Downloads/foo.txt
i.e. this is not e.g. etc= . help!
=E2=80=8B foxb=E2=80=8B

$ hunspell -a -d en_GB -i UTF-8 ~/Downlo= ads/foo.txt
@(#) International Ispell Version 3.2.06 (but really Hunspe= ll 1.3.3)
*
*
*
*
*
*
*
& foxb 6 33: fox, fob, = foxy, fox b, fixable, faux

=E2=80=8BHere we see that hunspell doesn't like "fox= b" (great!) but is otherwise happy.

So the problem does not appear to be with= hunspell.

--
--089e01538cbe1b15aa0517d696ca-- From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 06 06:11:30 2015 Received: (at 20741) by debbugs.gnu.org; 6 Jun 2015 10:11:30 +0000 Received: from localhost ([127.0.0.1]:42605 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1B4c-0008W0-Ar for submit@debbugs.gnu.org; Sat, 06 Jun 2015 06:11:30 -0400 Received: from mail-ig0-f171.google.com ([209.85.213.171]:38252) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1B4a-0008Vj-De for 20741@debbugs.gnu.org; Sat, 06 Jun 2015 06:11:28 -0400 Received: by igblz2 with SMTP id lz2so30470700igb.1 for <20741@debbugs.gnu.org>; Sat, 06 Jun 2015 03:11:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=t0w9GKVOxOsqFVQiuGz0ewjkE9jfQbRoaMAy9kuhLHA=; b=3MHsnc3eLr9bpTMTytsYhu9Taf7WfGtAG5axOk2ChuvCM/+j0TmZdcKwtiyGFlL6O6 5U8jzWL4biLuto5hCnYihd+nDdm2f/4pXEpGMXYGvRowvx2zCjrf72VmAJEobZsk6mqX jy60InQsHHJ3aoE+xTT8d9t2v4dZv2AXKoyWA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=t0w9GKVOxOsqFVQiuGz0ewjkE9jfQbRoaMAy9kuhLHA=; b=bxS0yc0yAJNMuMqvPoUZl0beRoC7uVRmy7JNcnH1e7iR8w6ptjMpmsJQSgt97M4pW0 ZiRMDUVeJWvp9ip6Im/95IlFxAjbWgNJcruuudcwibvqJJzEsUjm8ypGSiN3pMaYNrn8 CLSQ90npEsg34fXSeiwDwwwbEj2vTWt+iNsPxQAeiv39ayLPQzdYV9rTV5nNYjYk8ZiY 1WcxNRDG2Flc+JMzyWu2wVHWR845Ug/uRmyokly+cnvyBYOakX4+Ii00cSg8MSJvIMnA YUqR14pQkUxuA2MBp4MTOQssjgGeAaAQxONwugiaxYk2lYOytnnE7jWkvlfY+AL7pOwB W4Uw== X-Gm-Message-State: ALoCoQmIErWZRX/qhN5QvLDIoxaMZWiI2uKkTho9ZksOhQA7D3jMkxBNWFr80xDQVu7OCjxsPFRy MIME-Version: 1.0 X-Received: by 10.107.164.70 with SMTP id n67mr9653382ioe.8.1433585483044; Sat, 06 Jun 2015 03:11:23 -0700 (PDT) Received: by 10.36.118.19 with HTTP; Sat, 6 Jun 2015 03:11:22 -0700 (PDT) In-Reply-To: References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> <834mmlnog7.fsf@gnu.org> Date: Sat, 6 Jun 2015 11:11:22 +0100 Message-ID: Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period From: Reuben Thomas To: Eli Zaretskii Content-Type: multipart/alternative; boundary=001a114289f278f3a90517d6a15b X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 20741 Cc: 20741@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 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: -0.7 (/) --001a114289f278f3a90517d6a15b Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 6 June 2015 at 11:08, Reuben Thomas wrote: > > > $ cat Downloads/foo.txt > i.e. this is not e.g. etc. help! > =E2=80=8B foxb=E2=80=8B > > $ hunspell -a -d en_GB -i UTF-8 ~/Downloads/foo.txt > @(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.3) > * > * > * > * > * > * > * > & foxb 6 33: fox, fob, foxy, fox b, fixable, faux > > =E2=80=8BHere we see that hunspell doesn't like "foxb" (great!) but is ot= herwise > happy. > > So the problem does not appear to be with hunspell > =E2=80=8B. > =E2=80=8BI should add, ispell-buffer too only complains about "foxb". It is= just flyspell that complains about the other (correct) spellings. --=20 http://rrt.sc3d.org --001a114289f278f3a90517d6a15b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On 6= June 2015 at 11:08, Reuben Thomas <rrt@sc3d.org> wrote:

<= div>

$ cat Downloads/foo.txt
i.e. this = is not e.g. etc. help!
=E2=80= =8B foxb=E2=80=8B

$ hunspell -a -d en_GB -i UTF-8 ~/Downloads/foo.= txt
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.3= )
*
*
*
*
*
*
*
& foxb 6 33: fox, fob, foxy, fo= x b, fixable, faux

=E2=80=8BHere we s= ee that hunspell doesn't like "foxb" (great!) but is otherwis= e happy.

So the problem does no= t appear to be with hunspell
=E2=80=8B.
=
= =E2=80=8BI should add, ispell-buffer too only complains about "foxb&qu= ot;. It is just flyspell that complains about the other (correct) spellings= .

--
--001a114289f278f3a90517d6a15b-- From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 06 06:37:07 2015 Received: (at 20741) by debbugs.gnu.org; 6 Jun 2015 10:37:07 +0000 Received: from localhost ([127.0.0.1]:42614 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1BTO-0000i1-Lj for submit@debbugs.gnu.org; Sat, 06 Jun 2015 06:37:07 -0400 Received: from mtaout27.012.net.il ([80.179.55.183]:44273) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1BTK-0000hU-Um for 20741@debbugs.gnu.org; Sat, 06 Jun 2015 06:37:04 -0400 Received: from conversion-daemon.mtaout27.012.net.il by mtaout27.012.net.il (HyperSendmail v2007.08) id <0NPI00J00Q3EMU00@mtaout27.012.net.il> for 20741@debbugs.gnu.org; Sat, 06 Jun 2015 13:32:07 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by mtaout27.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NPI00C78QLI4EA0@mtaout27.012.net.il>; Sat, 06 Jun 2015 13:32:06 +0300 (IDT) Date: Sat, 06 Jun 2015 13:36:55 +0300 From: Eli Zaretskii Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period In-reply-to: X-012-Sender: halo1@inter.net.il To: Reuben Thomas Message-id: <833825nmwo.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-transfer-encoding: 8BIT References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> <834mmlnog7.fsf@gnu.org> X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 20741 Cc: 20741@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Eli Zaretskii 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 (+) > Date: Sat, 6 Jun 2015 11:11:22 +0100 > From: Reuben Thomas > Cc: 20741@debbugs.gnu.org > > ​I should add, ispell-buffer too only complains about "foxb". It is just > flyspell that complains about the other (correct) spellings. Then I guess flyspell-word-search-forward/backward is the culprit. From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 13 04:04:54 2022 Received: (at 20741) by debbugs.gnu.org; 13 Feb 2022 09:04:54 +0000 Received: from localhost ([127.0.0.1]:36278 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJAoQ-0002NG-2x for submit@debbugs.gnu.org; Sun, 13 Feb 2022 04:04:54 -0500 Received: from quimby.gnus.org ([95.216.78.240]:51034) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJAoN-0002N1-K1 for 20741@debbugs.gnu.org; Sun, 13 Feb 2022 04:04:52 -0500 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=LKbQncVDv15yYDbJEJ/zr5ChkoPL8zEcBO40fgwKWjA=; b=MZx2ripSjoVIlAVoVXQN5pZFUc O+LITzp+GL4ipm/dutDuSBs7+br2pI7IYCoY62ZymDwjApbd7ea4CTw+ilGrfKBi5nffHgxJIErhn Mr0xgPlrofepKwfPVS7VuBpvbmGV1jn78TQ7r4BG3XkmTDAJL1if9N/Gl3gnKwShTzf4=; Received: from [84.212.220.105] (helo=giant) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nJAoD-00010p-Eg; Sun, 13 Feb 2022 10:04:44 +0100 From: Lars Ingebrigtsen To: Reuben Thomas Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> X-Now-Playing: Nils Petter =?utf-8?Q?Molv=C3=A6r's?= _Solid Ether_: "Vilderness 1" Date: Sun, 13 Feb 2022 10:04:38 +0100 In-Reply-To: (Reuben Thomas's message of "Sat, 6 Jun 2015 10:35:46 +0100") Message-ID: <87o83bxhll.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" 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: Reuben Thomas writes: > 1. Rename my ~/.hunspell_en_GB. > > 2. Start "emacs -Q" > > 3. M-x flyspell-mode RET > > 4. M-x customize-variable RET ispell-program-name RET; set to "/usr/bin/hunspell" > (doing this after step 3 [...] 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: 20741 Cc: Eli Zaretskii , 20741@debbugs.gnu.org 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 (---) --=-=-= Content-Type: text/plain Reuben Thomas writes: > 1. Rename my ~/.hunspell_en_GB. > > 2. Start "emacs -Q" > > 3. M-x flyspell-mode RET > > 4. M-x customize-variable RET ispell-program-name RET; set to "/usr/bin/hunspell" > (doing this after step 3 because the variable is not available for customization > before loading ispell) > > 5. Type "etc. i.e. e.g." > > All of the above is now red-underwiggled. Easier reproduction case: ---- (setq ispell-program-name "/usr/bin/hunspell") (ispell-change-dictionary "en_GB") (flyspell-mode) etc. ---- --=-=-= Content-Type: image/png Content-Disposition: inline Content-Transfer-Encoding: base64 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 TkSuQmCC --=-=-= Content-Type: text/plain Note red wiggle under etc. `M-$' on the etc gives me: --=-=-= Content-Type: image/png Content-Disposition: inline Content-Transfer-Encoding: base64 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 --=-=-= Content-Type: text/plain So flyspell doesn't really understand that a full stop can be part of a word, apparently? (This is with Emacs 29.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 13 04:04:57 2022 Received: (at control) by debbugs.gnu.org; 13 Feb 2022 09:04:57 +0000 Received: from localhost ([127.0.0.1]:36281 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJAoT-0002NX-Bb for submit@debbugs.gnu.org; Sun, 13 Feb 2022 04:04:57 -0500 Received: from quimby.gnus.org ([95.216.78.240]:51048) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJAoR-0002N5-0u for control@debbugs.gnu.org; Sun, 13 Feb 2022 04:04:55 -0500 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=H3Sp+ykl8U4s5qU/XjCr3aWo0gSyGJ8SozaE0rUjp4U=; b=mgZhVlMbarBAkPa1OOlBMhlsbx QroR4eywab46NUqV0TCGI6eOsPJnH4JTodmN9MaWtAEMXawHwXxJLLbIHCZ7SHT7jvCI21hF93hzL HdmrmsZbpwRpODnGJe7bLTcDR55WFvck/LdzR9rc883HmwBH2Ziac4OersvUjCI9Jy8Q=; Received: from [84.212.220.105] (helo=giant) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nJAoI-00010w-T4 for control@debbugs.gnu.org; Sun, 13 Feb 2022 10:04:49 +0100 Date: Sun, 13 Feb 2022 10:04:46 +0100 Message-Id: <87mtivxhld.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #20741 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 20741 + confirmed 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 20741 + confirmed quit From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 13 07:37:56 2022 Received: (at 20741) by debbugs.gnu.org; 13 Feb 2022 12:37:56 +0000 Received: from localhost ([127.0.0.1]:36741 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJE8Z-00015f-SC for submit@debbugs.gnu.org; Sun, 13 Feb 2022 07:37:56 -0500 Received: from eggs.gnu.org ([209.51.188.92]:52260) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJE8W-00015S-Ql for 20741@debbugs.gnu.org; Sun, 13 Feb 2022 07:37:55 -0500 Received: from [2001:470:142:3::e] (port=34750 helo=fencepost.gnu.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nJE8R-000808-Ah; Sun, 13 Feb 2022 07:37:47 -0500 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=QGsSARF2QytUU9g4UP341FwKYDKWmoR9zXpDSMPmorY=; b=Y/iJmuvr3dz+ aqc6bcnBAtx/Tl9lXvwkb0SOUrdwptSUPqg04sPImXO30UT0vp6rkjbG+Zsss5/UnJRnXbDKYNNTh gnw9xG6SWI/GTqXZmYonC0w7QclzJTRBKOut3yS3GoDRQXFAhkfJDqNQTLzQ3gJD/9fNvLb01I3en quD9o2FbRMl7d/hzT92O98YY6v+CpIEFREKcowGlg1IkEfh0FjYPkvddESEnA+v+xOmRRL7zx6FAy 0NPrKapzJj8en+D2vAGU2d2vlYOM+qtA3mrDXEl7CQTmx5llgUbc8Vk+2c6Wje29B1ZeOfluzWpr9 CRFVlZCARknutamoAfgb1g==; Received: from [87.69.77.57] (port=4845 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 1nJE8Q-0004Nk-Qq; Sun, 13 Feb 2022 07:37:47 -0500 Date: Sun, 13 Feb 2022 14:37:42 +0200 Message-Id: <83fsonq6w9.fsf@gnu.org> From: Eli Zaretskii To: Lars Ingebrigtsen In-Reply-To: <87o83bxhll.fsf@gnus.org> (message from Lars Ingebrigtsen on Sun, 13 Feb 2022 10:04:38 +0100) Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> <87o83bxhll.fsf@gnus.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 20741 Cc: 20741@debbugs.gnu.org, rrt@sc3d.org 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 (---) > From: Lars Ingebrigtsen > Cc: Eli Zaretskii , 20741@debbugs.gnu.org > Date: Sun, 13 Feb 2022 10:04:38 +0100 > > So flyspell doesn't really understand that a full stop can be part of a > word, apparently? Yes; and it normally isn't. Maybe we should have a list of exceptions? From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 13 16:33:55 2022 Received: (at 20741) by debbugs.gnu.org; 13 Feb 2022 21:33:55 +0000 Received: from localhost ([127.0.0.1]:39035 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJMVG-0002fl-SV for submit@debbugs.gnu.org; Sun, 13 Feb 2022 16:33:55 -0500 Received: from mail-pf1-f179.google.com ([209.85.210.179]:41723) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJMVB-0002fT-MW for 20741@debbugs.gnu.org; Sun, 13 Feb 2022 16:33:53 -0500 Received: by mail-pf1-f179.google.com with SMTP id c10so314011pfv.8 for <20741@debbugs.gnu.org>; Sun, 13 Feb 2022 13:33:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=+1i4nWn1SvjNv19QnwYllMqAC9aCUqgvByjQ67liSVQ=; b=wMMYUOe0BgRIRmHTNpNEDB70qRf60mruqmYZQw7emmPVw6GlyP6rLifwrFDKXpQ6Z/ KiN4FoYrArc5GHOLssh2zXGVK6lkB6NkcfE6KmvscCnp2EMFh8i1kllqMbXr8Gh+xxeA Kvl9Tv+U8y3X1Q0SYp1Q+jG3Kohftkyw/C/KA= 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=+1i4nWn1SvjNv19QnwYllMqAC9aCUqgvByjQ67liSVQ=; b=aKpugqThwk/bcquM0y2MAck1fsrtEuwNBvuodJxaTIzWBqs56wcdMRmWQYcb6xFLCj D5iznjGsIsrR3w49YQHYt785BxgLhKf1d6GZPe70tBgNfU9GM/U+IWuzpETzb57iyDk4 XoLZDofhwKY6vFwsV+4wFlf4eVtyBOEw1SI3Z7Z06fJn5DXMig9lr0No7q7pyI2jkvpS iWyWMGXEVUjphCBRVztouxAkshx1pgylU8W3aATimz82jUmY+4NCO1kjDkf3BtKw2i1f BKD0qKx/HH3L78jFNd9lA/OjzbDPUH4GLgQ/1ULKCWdKfdqms/p8o32YG6AaNXbMS4hT nnFA== X-Gm-Message-State: AOAM530UIGVlR+u6QRxVNo/nXpTWNouNC6fYYeRSKUUQnYCOOjknAe29 y4pWLbaRF/y0njBHrwgG+wg43JuqSWXwvCgHARau9w== X-Google-Smtp-Source: ABdhPJwFjAUCVjRW5eoKXAlZSZifRqZhmB0lgBJKkiZtdpOU80cOHIC+mDSz/IiLy9zHKh9Qa8s1my4rauYqZFVGf34= X-Received: by 2002:a05:6a00:22d1:: with SMTP id f17mr11316113pfj.13.1644788023690; Sun, 13 Feb 2022 13:33:43 -0800 (PST) MIME-Version: 1.0 References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> <87o83bxhll.fsf@gnus.org> <83fsonq6w9.fsf@gnu.org> In-Reply-To: <83fsonq6w9.fsf@gnu.org> From: Reuben Thomas Date: Sun, 13 Feb 2022 21:33:32 +0000 Message-ID: Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period To: Eli Zaretskii Content-Type: multipart/alternative; boundary="000000000000e2219905d7ed0df1" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 20741 Cc: Lars Ingebrigtsen , 20741@debbugs.gnu.org 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 (-) --000000000000e2219905d7ed0df1 Content-Type: text/plain; charset="UTF-8" On Sun, 13 Feb 2022 at 12:37, Eli Zaretskii wrote: > > Maybe we should have a list of exceptions? > As an upstream spellchecker maintainer, I don't think that's a good idea. Emacs should just be using the spellchecker. If it's not working, the problem should be fixed in the spellchecker. As far as I can see, the problem is not specific to flyspell (mea culpa for the bug title!). For now, with current hunspell dictionaries, and using either hunspell, or enchant with hunspell backend, I have used the workaround of adding a few words like "etc" to my personal word list. To be honest, I'm not sure Emacs can do much here. As far as I can tell, hunspell doesn't cope well with characters like "." that normally are non-word characters, but *can* occur in a word. Relatedly, see: https://github.com/hunspell/hunspell/issues/361 -- https://rrt.sc3d.org --000000000000e2219905d7ed0df1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Maybe we should have a list of exceptions?

As an upstream sp= ellchecker maintainer, I don't think that's a good idea. Emacs shou= ld just be using the spellchecker. If it's not working, the problem sho= uld be fixed in the spellchecker.

As far as I can see, the problem is not specific to flyspell (m= ea culpa for the bug title!).

For now, with current hunspell dictionaries, and using either huns= pell, or enchant with hunspell backend, I have used the workaround of addin= g a few words like "etc" to my personal word list.

To be honest, I'm not sure Emacs= can do much here. As far as I can tell, hunspell doesn't cope well wit= h characters like "." that normally are non-word characters, but = *can* occur in a word.


--
--000000000000e2219905d7ed0df1-- From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 14 05:45:13 2022 Received: (at 20741) by debbugs.gnu.org; 14 Feb 2022 10:45:13 +0000 Received: from localhost ([127.0.0.1]:39957 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJYr2-0002RV-S0 for submit@debbugs.gnu.org; Mon, 14 Feb 2022 05:45:13 -0500 Received: from quimby.gnus.org ([95.216.78.240]:34952) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJYr0-0002JL-BM for 20741@debbugs.gnu.org; Mon, 14 Feb 2022 05:45:11 -0500 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=ifaoaAlbY/gbpUhszXFJ7FeXUVcsFGiCZAP2jsVspRA=; b=tb7TL7DaTm13Zgag1+dttET0Mi MKBGPAFBn8V71Un7F1YNGCtZl74egdnK5mCh4F5zlSgukjOH8VTtz490ufv+E6LPHasoRAJPv6sQK lTVBg+dzNt8ue/VbQuVWEk63dB2J9GOWc8i0o7NiRDG3FqeBrOlPv7+jpGhEeHODwLjY=; Received: from [84.212.220.105] (helo=giant) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nJYqq-000707-Kj; Mon, 14 Feb 2022 11:45:03 +0100 From: Lars Ingebrigtsen To: Reuben Thomas Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> <87o83bxhll.fsf@gnus.org> <83fsonq6w9.fsf@gnu.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAALVBMVEUzLzBMTDdBPTRn ajqZoDivxTjb5S4PDQ01O0M5SExVWVg7RDlBPUKLlG7///+ItTPNAAAAAWJLR0QOb70wTwAAAAd0 SU1FB+YCDgoeNoC6WfwAAAGDSURBVDjL1ZOxboMwEIYPltDSShyeqi6EN7BM+wLQvkBDnyBh7paV EbaM0C7MFkjJ1oglc6S+QfMutREQkxB16dJDGPF/uv/OJxvgHwS64F5imnUBMOo6J5KjywRvRm1V 1d0pIjqgPyx81UyXMkGZEgyAIHbrQHG0vBbYNowCNp4Alj6e8GtM/gxMzoGRynU5ApIGnJtI3SiW b+2vud423zTjeZ5nqw5c83YOiZDzWFi1QMNuQEYSNzU6YN31xVcqAFz31eNL+4uPOzdkkzfiacof wWeSXGVxCbzYSYkXx+QEkrS4Lb85lABVMXBOy8PXoar4jlcnk3gvS873APtyCNKVKdY1nMU2+6g3 23ykfbPGDaGIA/FevLWNG8bQdgag1igVgyQMFd2Rp88LfUQNVSAvkPYUBjNx1imxVCPhEQSLkHoU iQ2OIhPqhVE0R2SEUeyOrsYIoew5iiKRwBglHUCcIsVHAV4IMp/2G9FRF8B7jcIFC3xU2kIZxIvm oc8s6MEPo/hbI+3QpFIAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMTRUMTA6MzA6NTQrMDA6 MDC9rYNHAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTE0VDEwOjMwOjU0KzAwOjAwzPA7+wAA AABJRU5ErkJggg== X-Now-Playing: Moose's _Still in a Dream (3)_: "Suzanne" Date: Mon, 14 Feb 2022 11:44:56 +0100 In-Reply-To: (Reuben Thomas's message of "Sun, 13 Feb 2022 21:33:32 +0000") Message-ID: <8735klu3pz.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: Reuben Thomas writes: > To be honest, I'm not sure Emacs can do much here. As far as I can > tell, hunspell doesn't cope well with characters like "." that > normally are non-word characters, but *can* occur in a word. > > [...] 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: 20741 Cc: Eli Zaretskii , 20741@debbugs.gnu.org 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 (---) Reuben Thomas writes: > To be honest, I'm not sure Emacs can do much here. As far as I can > tell, hunspell doesn't cope well with characters like "." that > normally are non-word characters, but *can* occur in a word. > > Relatedly, see: https://github.com/hunspell/hunspell/issues/361 So it's a problem on the hunspell side, and not because Emacs is considering the "." to be a non-word character? (I haven't tried to debug what's going on.) There's also a problem in common abbreviations like "i.e.", which is considered as the words "i" and "e", apparently... I was wondering whether Emacs could query the backend speller whether it had the word "foo." in the dictionary before squiggly-lining "foo", but I'm very unfamiliar with how these functions work. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 14 08:09:06 2022 Received: (at 20741) by debbugs.gnu.org; 14 Feb 2022 13:09:06 +0000 Received: from localhost ([127.0.0.1]:40168 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJb6I-000708-7p for submit@debbugs.gnu.org; Mon, 14 Feb 2022 08:09:06 -0500 Received: from mout.gmx.net ([212.227.17.21]:47405) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJb6E-0006zY-8M for 20741@debbugs.gnu.org; Mon, 14 Feb 2022 08:09:05 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1644844135; bh=ulJmAjevTwwkVCRSg8uI8WM+T8Co8pDXMhRX14zU2qs=; h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:In-Reply-To; b=TXy7Dv3cvC/5ZEjXQviprH9+/t4olildkNcIqPSXP8ua++DkE0GVVT9S/LedJBEN/ gTsndHBrwxYjktdOku8m2kSMgOPU4tB9Dweao9R1m73zUl8+p2mfzoTl0WV/FrLcF+ 4g36O4F6g/7kerusPjSV/iP167VqCS0vDzh91JmA= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.101] ([213.142.96.169]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MiaYJ-1ny8iO28pj-00ffCf; Mon, 14 Feb 2022 14:08:55 +0100 Message-ID: Date: Mon, 14 Feb 2022 14:08:54 +0100 MIME-Version: 1.0 Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period Content-Language: en-US To: Lars Ingebrigtsen , Reuben Thomas References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> <87o83bxhll.fsf@gnus.org> <83fsonq6w9.fsf@gnu.org> <8735klu3pz.fsf@gnus.org> From: martin rudalics In-Reply-To: <8735klu3pz.fsf@gnus.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:KTsBBfE8RNXUkgmPnYVZ7ziMmy2HMBE7A5zeQ8SJrDaxfL31YzI pyD2X6fNM/U+93apXugOjNkkKnwcjxIMA8nl5fSzMkqVyzWCt66tO4AizbIbj4Vh/QNIBI/ 7yPmyulA5q8AGXiiwFH+7TvX6S4hOxtSJTLWugdNCRtclzJKQjV23yvfS/2TwyMsTZomuY8 JspMMMY7HnTKhFXrB6iSg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:TeSQIsP+6Mk=:S5xCUqHHCS4h+4130/brwt 7Ey7CfnrmfwsAVNsoZP6Z37arlsCEb7TaEEHBemzGp6HSt/62NOhOQj0uUnRqtGElzp1Wl3b+ EOfb1Lpx8u4SrYwVAZLyIj2bKifSrSuJp35AthJ3oKjEEzbu3xJZ4Il3f+jBkYWi3gtUfeu+/ pRLV8FLs1B7TM3VtLXhq2sE3/hbPm2uf9kjk+HPC3/WOqxu32VHenKYepS2cU8KHWh0jYNrgO cXj59H1CTp66jqa1NGwS1wGSy7K8AIdOSMf/NBKkQ3H9kzSE1Ji1fDSTtrnQMJNIdu06OSRbM hK+c3kkP9vJz+vJbwReDNGvKmPig4ucUsmWVjV+tpQBcBZxeTfoAy9I8e+Lj3f+D3YuZnhPqG KAJkqxyVtBo8ha1y+yFs/DjNvd7uFD2oOpJUKvYm1tv4gpInJYZvWqY8S50GPH34Nu8PIHaMT hP01lfiesJEw/HB+g6Li00pEtvboZBd9gHahWaOBFbOU8bsOxSmyMcRc6rVLr5kVK2eUv52se ikLkEB+YxSJ1HcjMPY6iXkvTOaSe0HTg+XtTpEnkG72nzBzH3dARfN8dBc6S3zV1q4/RFR8/K 64hzZtKXQPfBHHoeNX/LkwWRDKNyQG8vo6JvvXp94q9QaGW00KN940Y4MHhZ28J6uqoGrFwlb IYqJPmeM42XOEq36GrNg8aOcKJQnprk0r2zRpTNhczqaZYbb9/80PkJC/0yi3hMMi8Lhbe4l+ /QIEawZBgWQFDhJrST1l/WrCQve91B7cSiAzQOEFdEXw045rRrqGNU6eRpQsSKC9xhYaLPWaM KYh+E4P5QLNGM42ny3csCTiMCDwR84fjRLUCIgXe1foAg/1LiS23IqJ7Eh6OFAOfBWK3UDbj5 Kk5UW67Q7+/4oeFGqVcC0mAuJXTG+zBPcvhwm63jDFc4Wu4nYylN97C5dRPrBB9opcH2m51c+ 7hpvUDhrLYdS2089/Xda+D8Y0rWVxDt1e9z0pG0Rwk2CSadY+Ggs+40RJdcwT+GxBmig/V0jE zVzK7KVNwIWgnnOvBfC+lw32OSCS8X2pYYA9FMCEt0fKYDYtVWxsdrSFWrJ+cvEWru012w1wq QTvDpyJ2ez9D38= X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 20741 Cc: 20741@debbugs.gnu.org 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.7 (-) > I was wondering whether Emacs could query the backend speller whether it > had the word "foo." in the dictionary before squiggly-lining "foo", but > I'm very unfamiliar with how these functions work. Query and/or set WORDCHARS in the respective .aff file. martin From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 14 08:35:21 2022 Received: (at 20741) by debbugs.gnu.org; 14 Feb 2022 13:35:21 +0000 Received: from localhost ([127.0.0.1]:40237 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJbVe-0007kp-F8 for submit@debbugs.gnu.org; Mon, 14 Feb 2022 08:35:21 -0500 Received: from eggs.gnu.org ([209.51.188.92]:55734) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJbVR-0007jw-Jq for 20741@debbugs.gnu.org; Mon, 14 Feb 2022 08:35:17 -0500 Received: from [2001:470:142:3::e] (port=58682 helo=fencepost.gnu.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nJbVK-0005VT-7e; Mon, 14 Feb 2022 08:34:59 -0500 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=R96VDqDS5wmaRtuJms2oYtNpbs6LOmoW8RxfmXFQC48=; b=DfuDasl7QBIs HIXj3PejyyuBrbFQpL5HKIZagQup/93TCWDp81ELVZuI5tlc+S4a//EmsYABMLJMlQ2VvJanQjzff UvttmSnygpbbhosKlHZVBtwybcF/1uyX0bRHnKE3OYCD4jho/PVj0eKm/u11uGKEzkKkHWqnMaI23 Ba91C+HRhmav+uJdQ6r9/p14n6Klyl3Bwbvs0VB7SN238KNGosUgCUTM8X/Fv9RjeW9VeBIotmGGu EprOOvCnOFmrZtxPlyY81OvizTiX//lsXbnrr09wh8pnksqKnFQtdOwDdPydfvwqPA32sgM/M/AqX zxj3O+1R0PG0ea92BKGsfw==; Received: from [87.69.77.57] (port=1667 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 1nJbVG-0007Ae-4H; Mon, 14 Feb 2022 08:34:57 -0500 Date: Mon, 14 Feb 2022 15:34:52 +0200 Message-Id: <83k0dxpo5f.fsf@gnu.org> From: Eli Zaretskii To: Reuben Thomas In-Reply-To: (message from Reuben Thomas on Sun, 13 Feb 2022 21:33:32 +0000) Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> <87o83bxhll.fsf@gnus.org> <83fsonq6w9.fsf@gnu.org> X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 20741 Cc: larsi@gnus.org, 20741@debbugs.gnu.org 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 (---) > From: Reuben Thomas > Date: Sun, 13 Feb 2022 21:33:32 +0000 > Cc: Lars Ingebrigtsen , 20741@debbugs.gnu.org > > Maybe we should have a list of exceptions? > > As an upstream spellchecker maintainer, I don't think that's a good idea. Emacs should just be using the > spellchecker. If it's not working, the problem should be fixed in the spellchecker. I don't think I understand what this means in practice. "Use the spell-checker" how? Do you mean we should not break words on punctuation characters, or do you mean not to break them only on '.', or do you mean something else? Emacs is widely used to edit program sources, where stuff like "file.attribute" and "list-my-packages" happens quite frequently. Right now, these are not marked as misspellings, but if we pass them to the speller with the punctuation, we are likely to get back indications of misspelled words, which is not what we want. Thus my questions above: if we want to handle punctuation characters smarter than just considering them part of the NOT-CASECHARS class, we need to come up with a specification that will improve the situation, not make it worse. Can we do that? > To be honest, I'm not sure Emacs can do much here. I tend to agree, but maybe we can come up with some minor improvements, even if they don't solve the problem in its entirety. From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 14 08:43:33 2022 Received: (at 20741) by debbugs.gnu.org; 14 Feb 2022 13:43:33 +0000 Received: from localhost ([127.0.0.1]:40266 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJbdd-0007zf-5S for submit@debbugs.gnu.org; Mon, 14 Feb 2022 08:43:33 -0500 Received: from mail-pf1-f181.google.com ([209.85.210.181]:36362) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJbdZ-0007zQ-Rs for 20741@debbugs.gnu.org; Mon, 14 Feb 2022 08:43:31 -0500 Received: by mail-pf1-f181.google.com with SMTP id z16so7379712pfh.3 for <20741@debbugs.gnu.org>; Mon, 14 Feb 2022 05:43:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=aD2zr/cdoQ1o2bFJYN/qmhnytQ9tGYOld5h/iF3hDlg=; b=nNyUJ6DiyqWbY5wMJZAyh0KUQPvf6LRH1yV4W/DWRb8vIq8YAqFs6saNq0FfCRxmgb w7NZgRe36rmk3ICiSvLxOuWfcC1iLEJjo/9gZ85v8U1eZrMwnhFiSjt9PpGCI8JFSKwP tbisK35L6APfCt8BBz/NhJntIuZ22K43wU7kY= 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=aD2zr/cdoQ1o2bFJYN/qmhnytQ9tGYOld5h/iF3hDlg=; b=N3UdG+zdc0FmCcgnpdGllv8B5l7nKBDwMZ28JehtRWlLKB4j+2rqe1ZqFdBzvsLWLa F3Q3CCpgoUm2lKsNgd+D7AY6SDGlxvgi+5psIuTfhLt3ELjMIF4oeLl+d6gkbV7zTX/R +7+84SpKiCZfpRFF57FFL5ta2N5QTSJGEdhcH0RM718I/SQHffWcGoL1iuSKk7NIrHXw HynIMc29EZ0JFHy0cizSnVt49bmuor/XNBCoKxCTIkboM+8f0eLRkYwiPX+d+Beoq8Mk DvC4A6Z288/VB0BqXtyJQp7efbfb6b4V/LEqqWDVGLmCJ8EepNFbnTD0Ap/xrMLn6ROu 3njA== X-Gm-Message-State: AOAM533c5siEUXPIEZvuVmcNu4W5szB7lWe9oO4ZvbzQPCtRe6DmXPMj T1uumpkyJpAg6JhXBqQJXc6lx05qLO8a74jcIEKmgA== X-Google-Smtp-Source: ABdhPJwdMashxjADu/3vHExfVvuezp51I4H0cxXIoQeuYUUGUlAR6INd2gl7JChPElGGZfweISWsK20HIPlpfjO78QA= X-Received: by 2002:a65:5943:: with SMTP id g3mr12097557pgu.3.1644846203783; Mon, 14 Feb 2022 05:43:23 -0800 (PST) MIME-Version: 1.0 References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> <87o83bxhll.fsf@gnus.org> <83fsonq6w9.fsf@gnu.org> <83k0dxpo5f.fsf@gnu.org> In-Reply-To: <83k0dxpo5f.fsf@gnu.org> From: Reuben Thomas Date: Mon, 14 Feb 2022 13:43:12 +0000 Message-ID: Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period To: Eli Zaretskii Content-Type: multipart/alternative; boundary="000000000000afe23405d7fa996a" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 20741 Cc: larsi@gnus.org, 20741@debbugs.gnu.org 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 (-) --000000000000afe23405d7fa996a Content-Type: text/plain; charset="UTF-8" On Mon, 14 Feb 2022 at 13:35, Eli Zaretskii wrote: > > I don't think I understand what this means in practice. "Use the > spell-checker" how? Do you mean we should not break words on > punctuation characters, or do you mean not to break them only on '.', > or do you mean something else? > > Emacs is widely used to edit program sources, where stuff like > "file.attribute" and "list-my-packages" happens quite frequently. > I wasn't considering this case, and this issue is about checking text (or comments or strings) where you can just feed the entire thing to the spellchecker, and not have to isolate words "manually", as in program source. In program source (i.e. not strings or comments), the issue currently under discussion won't arise, as "." cannot be part of an identifier. -- https://rrt.sc3d.org --000000000000afe23405d7fa996a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Mon, 14 Feb 2022 at 13:35, Eli Zaretskii <eliz@gnu.org> wrote:

I don't think I understand what this means in practice.=C2=A0 "Use= the
spell-checker" how?=C2=A0 Do you mean we should not break words on
punctuation characters, or do you mean not to break them only on '.'= ;,
or do you mean something else?

Emacs is widely used to edit program sources, where stuff like
"file.attribute" and "list-my-packages" happens quite f= requently.

I wasn= 9;t considering this case, and this issue is about checking text (or commen= ts or strings) where you can just feed the entire thing to the spellchecker= , and not have to isolate words "manually", as in program source.=

In program source (i.= e. not strings or comments), the issue currently under discussion won't= arise, as "." cannot be part of an identifier.

--
--000000000000afe23405d7fa996a-- From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 14 10:07:56 2022 Received: (at 20741) by debbugs.gnu.org; 14 Feb 2022 15:07:56 +0000 Received: from localhost ([127.0.0.1]:42278 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJcxI-0003AJ-Dm for submit@debbugs.gnu.org; Mon, 14 Feb 2022 10:07:56 -0500 Received: from mout.gmx.net ([212.227.15.15]:33265) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJcxD-0003A4-I9 for 20741@debbugs.gnu.org; Mon, 14 Feb 2022 10:07:55 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1644851264; bh=u21AMR6x3zU4dzfBwszL/m/C2IbLL2ApqcDvU5hRplc=; h=X-UI-Sender-Class:From:To:Cc:Subject:References:Date:In-Reply-To; b=VtY4nTQAKXeuKgNXkypfAAH012FD4zfZb8BfdJp4Q5cpz+Qj1tULAA2KSPvX5oRNK So3TOMZptEMLY4CrLk2i/UmJ5728vx+OmQvkQWy2LBoC3lxZxgaTlEWQ50h1AcfjbR Dzfie8WhmP8OWAZ9rWOXCDCLw9kf2ZlszG15103A= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from strobelfs2 ([89.246.38.110]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MFsUv-1nVPsF28g3-00HMOc; Mon, 14 Feb 2022 16:07:44 +0100 From: Stephen Berman To: Reuben Thomas via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> <87o83bxhll.fsf@gnus.org> <83fsonq6w9.fsf@gnu.org> <83k0dxpo5f.fsf@gnu.org> Date: Mon, 14 Feb 2022 16:07:43 +0100 In-Reply-To: (Reuben Thomas via's message of "Mon, 14 Feb 2022 13:43:12 +0000") Message-ID: <878rudcwqo.fsf@rub.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:B7xS7y8XotlAcDgQkw/P6cFWRsLu0mAV7GXidWeujUZExP98EVc sDP31EqAK6KvxR05mJl0J6idWnb5RY7Aa8IsayhK0u/MFTExIPnFk1ZFakOXm7et90fd2ON QYrCqrRETNri1sk5EdHbL/EglgPB0xt9WBxLKSzqmBtydPd8mbA27qwbQOGpGcQT/krXQOW gHcoS6D8SMTY0pQEjo4EQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:VBBE2U+HdiA=:J7plLOxqo8szJQxaQIb37R YWobTcKs8VB+VF3U9ouBcd55az4gowYqIAaR41aHQOMVM1TI8S2X15qRJzm7VQoUaX9igMWjK 3o7rTVF/ACJw+X/EA20lZTH/XXshc5npwW0Ld6q3TbwpPOtHmxemS3Y0PhdK0Hqb8ZmP402UM O/+OmdszSkrp4DsUhO75gUlLEUAPJer70eoyOGjDny1tWHp/SEjaBWEv0OhHbYEnm2j9XpVbR jCrb8dzwBm1wmeoX/YCNSGOUCFJxGzvVLfmD1y/4xo/5knQd/9quWMGV7m77nlgulwR43+E8t QwCk6/awGM5J9oud6ivLFlUEkuaApUmTQNoCGYyszjKbI+m2PRvJqln7FN7DNL7CXmsxkiVDH hVPNYbYJ7Q0Sjg79Mo+zKdzHbvO2nivf64xbj/c3PZe2HnPzxfcTiovNr0kslMbDMZHY461+9 /vZdkqqs1N+YvKVztZgpKLAw9hFR9sHFOGNbUUuHX3I0aoeOFAtmowWYU508xkiw91H+6kFXf 8/W4jhu62+i0QGpq3AzxU05TVQgxnkFpwe2FXIpoSCSesXc3EpQGy8ridv9lCuIMacqAfdbOb Q5AxXuVDWW4QD+nhUheECpWHphH92/2h9HqTb1mhPAK/itzydpZx8805ybe3DM8Ia5KSJ7tQs n4wIriMsweS3U/pysMRIr+qXKilS74Xpt8q9bs9A5C/XZcViFAHMyNEdQdttrgH+YZUHh/dHW 1BC7eCaPc795SnQaYSf7ut8jmMJPklDy/UAxu3SHw6AjpvQoqUN6uBzhJwCwLaKyp3iCONigl cyL6GJ7vok6Cocw3YdZT8683S5mmWh4KfIsMPqelD4GSn3HqvzIy0bFSOoGUis6ciy1TO9Ivb un9fMgd7ZUB1/pgqBw3aj8QHS0Yl75C1+CMUJhvkoeOnVQCND2hVhWC0rx+lmYA5PBdIkrqNl NCDLEOELSvhLP40gguMvAlKWQNxfbTvehjW+KQPAviemgtLl5XjaRKCKYIC+1HkvUL3tOttMm C24I9HExGdCoy0Y/mv2WJc3KLXdcPTsd7IU4ONSi81QXamFC1e8JuZjTn5+yZGmGB611c1jlE o1uD1/FHRNtcgs= X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 20741 Cc: Eli Zaretskii , 20741@debbugs.gnu.org, larsi@gnus.org, Reuben Thomas 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.7 (-) On Mon, 14 Feb 2022 13:43:12 +0000 Reuben Thomas via "Bug reports for GNU E= macs, the Swiss army knife of text editors" wrote: > On Mon, 14 Feb 2022 at 13:35, Eli Zaretskii wrote: > > I don't think I understand what this means in practice. "Use the > spell-checker" how? Do you mean we should not break words on > punctuation characters, or do you mean not to break them only on '.', > or do you mean something else? > > Emacs is widely used to edit program sources, where stuff like > "file.attribute" and "list-my-packages" happens quite frequently. > > I wasn't considering this case, and this issue is about checking text > (or comments or strings) where you can just feed the entire thing to > the spellchecker, and not have to isolate words "manually", as in > program source. > > In program source (i.e. not strings or comments), the issue currently > under discussion won't arise, as "." cannot be part of an identifier. In some languages it can, e.g. R: "Identifiers consist of a sequence of letters, digits, the period (=E2=80=98.=E2=80=99) and the underscore." (https://cran.r-project.org/doc/manuals/r-release/R-lang.html#Identifiers) Steve Berman From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 14 10:21:37 2022 Received: (at 20741) by debbugs.gnu.org; 14 Feb 2022 15:21:37 +0000 Received: from localhost ([127.0.0.1]:42309 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJdAX-0003Yk-Cn for submit@debbugs.gnu.org; Mon, 14 Feb 2022 10:21:37 -0500 Received: from eggs.gnu.org ([209.51.188.92]:35016) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJdAV-0003YG-RC for 20741@debbugs.gnu.org; Mon, 14 Feb 2022 10:21:36 -0500 Received: from [2001:470:142:3::e] (port=33234 helo=fencepost.gnu.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nJdAQ-00033N-Di; Mon, 14 Feb 2022 10:21:30 -0500 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=kZ0C27UqpBIS/g+jGqL+KwfSHM5vut2Yybv3nd5XWvE=; b=dY9dPCGOSWRm nieCq4ikjJeN9/FIiB96pjTcju3+c5t34HL9vPVRnVZcBCIy/uTar2+91HB64ty6J4MnszOpjDGYS uUE/HCW16bpJSWj+D7+QGHg902WraNu88PiB5esn5pqJ59XCdXxtLX9UbIrrLFbdNv8j+gKqUc5H1 /8uM9jBpAKYbDGJ93CcsloApt9Rv0vQCuuVhSALfb27B1MjpuWfEvJ3kAowvSflogCJsm2nujZeP2 VyFiikGJOYJTeddB2xLkG4lpQcxBxUf81RVvQ8gE9D2tpEZZLHGxP8ABDP96Qfc4yixA0RHrj61n2 qPjYT/d+dU6FY4YerxAbUw==; Received: from [87.69.77.57] (port=4196 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 1nJdAP-0006Kh-PX; Mon, 14 Feb 2022 10:21:30 -0500 Date: Mon, 14 Feb 2022 17:21:28 +0200 Message-Id: <83ee45pj7r.fsf@gnu.org> From: Eli Zaretskii To: Reuben Thomas In-Reply-To: (message from Reuben Thomas on Mon, 14 Feb 2022 13:43:12 +0000) Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> <87o83bxhll.fsf@gnus.org> <83fsonq6w9.fsf@gnu.org> <83k0dxpo5f.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 20741 Cc: larsi@gnus.org, 20741@debbugs.gnu.org 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 (---) > From: Reuben Thomas > Date: Mon, 14 Feb 2022 13:43:12 +0000 > Cc: larsi@gnus.org, 20741@debbugs.gnu.org > > Emacs is widely used to edit program sources, where stuff like > "file.attribute" and "list-my-packages" happens quite frequently. > > I wasn't considering this case, and this issue is about checking text (or comments or strings) where you can > just feed the entire thing to the spellchecker, and not have to isolate words "manually", as in program > source. It's the same case: references to variables and other symbols in comments and strings of a program are very frequent. They are also very frequent in email messages which discuss programming, such as this discussion (I have Flyspell turned on in all my email buffers). From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 14 10:28:24 2022 Received: (at 20741) by debbugs.gnu.org; 14 Feb 2022 15:28:24 +0000 Received: from localhost ([127.0.0.1]:42317 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJdH6-0003kG-4H for submit@debbugs.gnu.org; Mon, 14 Feb 2022 10:28:24 -0500 Received: from mail-pj1-f48.google.com ([209.85.216.48]:44879) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJdGu-0003jp-CN for 20741@debbugs.gnu.org; Mon, 14 Feb 2022 10:28:22 -0500 Received: by mail-pj1-f48.google.com with SMTP id d9-20020a17090a498900b001b8bb1d00e7so16158600pjh.3 for <20741@debbugs.gnu.org>; Mon, 14 Feb 2022 07:28:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=MV4enPLMS3UjgM30BU8GeR1gv3oJcb5yAUJQWrB/+Uo=; b=eFnJ9XUcnfF5Fh36oA+Tauq6tiblk/EjGYod7EWcyqdFOL4fEI8ns4VfnJCfMceVOv XHZWy2GWDTJp2SD4f3DNBycZmOiv/JCOo+NDKklsTjP4nEO29EOIxgIiwkKEhXgKGLQD s2DLLy3nb6kpfhbBGzyNIvU0TgFgJG6D0nocM= 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=MV4enPLMS3UjgM30BU8GeR1gv3oJcb5yAUJQWrB/+Uo=; b=FAkO9GedhRhTGj279qX+tlW8Zldrh8iyBdF9PS30YNUwJ64Ez62Oo0YERxyRLz1CKg V5tJK4yiQV/CjM787xir05i+XaM9sd9YvQVsuIkQmU2SC1ukNox7MXRUCDiNoHrfi2Qn WC4ENQSRWpQ/wUAoZNmPXQt9L1HVF/cqz57szTEpZ3HvpAQTQD5oYq7z8/8SsQRz0iD4 hLwQDOpE9EOaTbjLKg0kPd5HqIrLKtFoWOecMZqL4UGMvowMNWJCD1pUekckQ64mwdWt uRGxLpVqKYpJW/pX+muVw3cUh1ai5LhUF0RvjQ/hRf8j+rTdmcEbI5nfaHG35Aa3n9mb 0Y2A== X-Gm-Message-State: AOAM5304VKy7BBVHPAtjiHN06d5TsgvA4CjRUz4tvXD7Y4Ioj3WqNARJ fNdhq/ZdBYV9g4iZCrmXgOCot1vVXWJJbZnOfYf0jqFYq8w= X-Google-Smtp-Source: ABdhPJy4jpri4xXfTcYLT5PzvegCMAbqI7Q8MtUrpNEnh47lGnOnQDn6vpUZjQvUP516wuUJrLO/pfNVKFe3P4ZAvrw= X-Received: by 2002:a17:902:bd4a:: with SMTP id b10mr279387plx.152.1644852485352; Mon, 14 Feb 2022 07:28:05 -0800 (PST) MIME-Version: 1.0 References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> <87o83bxhll.fsf@gnus.org> <83fsonq6w9.fsf@gnu.org> <83k0dxpo5f.fsf@gnu.org> <83ee45pj7r.fsf@gnu.org> In-Reply-To: <83ee45pj7r.fsf@gnu.org> From: Reuben Thomas Date: Mon, 14 Feb 2022 15:27:54 +0000 Message-ID: Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period To: Eli Zaretskii Content-Type: multipart/alternative; boundary="000000000000190b3f05d7fc1066" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20741 Cc: larsi@gnus.org, 20741@debbugs.gnu.org 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 (-) --000000000000190b3f05d7fc1066 Content-Type: text/plain; charset="UTF-8" On Mon, 14 Feb 2022 at 15:21, Eli Zaretskii wrote: > > It's the same case: references to variables and other symbols in > comments and strings of a program are very frequent. They are also > very frequent in email messages which discuss programming, such as > this discussion (I have Flyspell turned on in all my email buffers). > I think we can distinguish 3 different problems here: 1. Natural language spellchecking. That's what this issue is about. 2. Spell-checking code. (Essentially, identifiers.) 3. Finding code inside natural language, and checking it as if it were code. (That's what you're talking about here.) This is not a spellchecking problem, it's a problem of identifying which spell-checking apparatus to use, rather like font-lock for multi-language buffers. It's hard to see how to do it without some syntactic clue (e.g. the use of backticks in markdown), as used in multi-language buffers for font-locking. -- https://rrt.sc3d.org --000000000000190b3f05d7fc1066 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Mon, 14 Feb 2022 at 15:21, Eli Zaretskii <eliz@gnu.org> wrote:

It's the same case: references to variables and other symbols in
comments and strings of a program are very frequent.=C2=A0 They are also very frequent in email messages which discuss programming, such as
this discussion (I have Flyspell turned on in all my email buffers).

I think we can di= stinguish 3 different problems here:

1. Natural language spellchecking. That's what this issu= e is about.
2. Spell-checking code. (Essentially, i= dentifiers.)
3. Finding code inside natural languag= e, and checking it as if it were code. (That's what you're talking = about here.) This is not a spellchecking problem, it's a problem of ide= ntifying which spell-checking apparatus to use, rather like font-lock for m= ulti-language buffers. It's hard to see how to do it without some synta= ctic clue (e.g. the use of backticks in markdown), as used in multi-languag= e buffers for font-locking.

--
<= a href=3D"https://rrt.sc3d.org" target=3D"_blank">https://rrt.sc3d.org<= /div>
--000000000000190b3f05d7fc1066-- From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 14 10:29:01 2022 Received: (at 20741) by debbugs.gnu.org; 14 Feb 2022 15:29:01 +0000 Received: from localhost ([127.0.0.1]:42323 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJdHg-0003lN-Sa for submit@debbugs.gnu.org; Mon, 14 Feb 2022 10:29:01 -0500 Received: from mail-pf1-f173.google.com ([209.85.210.173]:34542) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJdHf-0003l8-1y for 20741@debbugs.gnu.org; Mon, 14 Feb 2022 10:28:59 -0500 Received: by mail-pf1-f173.google.com with SMTP id g1so10005370pfv.1 for <20741@debbugs.gnu.org>; Mon, 14 Feb 2022 07:28:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=v4clzQ7FowQxWyf+o4EHKaM1jD5q3ULyhFqbonJQk1g=; b=mJPRK5OqmN19k25T89S/xNHXjJz022gueJIGM01mWXP65DUdaQ7l2zpruppyaF0Y3L Up9s//au4aaisMuP1EEi+9VZzpnWkvKkgTXdevPEeC8/Ae0FbA15idUPNk0LV7jcOTJq Mdi7mJzx5NNnVyftpSgtds5qOaqI7bUnpz/D0= 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=v4clzQ7FowQxWyf+o4EHKaM1jD5q3ULyhFqbonJQk1g=; b=uX6q43EhTQYp+PNgMcmhYrx9SxGB+IEObddRVQEpw6DHMvGueK2b9CmTpdad5R7c2l RjQOgpiN2yW0iEfcgHKqejQp9y1F1H2KXwqoEasgohCDBizb6AXpTKUTN8V9bMhYGSML jDzoV78+K4t9bdLnqSdskl6Kw8SdtrlTn/KmbEoPi0hx1pI9EidNrnuJzo8hPRgk2SLK cZOSKOniF/zWVs8Kg+I7QH5an8c35mIc6hILHNkIDrvSLN4KD7BH+vx9wQrQDZ8kOrc/ 0h6IgNOZQCrmdQeNTLQD8oI7yQPMk5XiYDKAMo9rlaO0O3Hf9cs8mwLTEo5alp1X0L6r b7mA== X-Gm-Message-State: AOAM5331hljYwptMn8QPGzm+NzAgp6PbOQmPbaPjID07hDtO5jLLwC1J bbUkExxUVjMZ890VbSLXmDEKDGslGepcpBSwhGzBUg== X-Google-Smtp-Source: ABdhPJyc5THjCaOzSAA9GWGBttk3gyTCNIl5ZbmmNiuCD6aVNyhXCHxJ6iQq+IUUnnMfb/kSvvDbjh8PYa1GDUpiX1Q= X-Received: by 2002:a65:5943:: with SMTP id g3mr227052pgu.3.1644852533276; Mon, 14 Feb 2022 07:28:53 -0800 (PST) MIME-Version: 1.0 References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> <87o83bxhll.fsf@gnus.org> <83fsonq6w9.fsf@gnu.org> <8735klu3pz.fsf@gnus.org> In-Reply-To: <8735klu3pz.fsf@gnus.org> From: Reuben Thomas Date: Mon, 14 Feb 2022 15:28:42 +0000 Message-ID: Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period To: Lars Ingebrigtsen Content-Type: multipart/alternative; boundary="000000000000f44ef705d7fc12da" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 20741 Cc: Eli Zaretskii , 20741@debbugs.gnu.org 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 (-) --000000000000f44ef705d7fc12da Content-Type: text/plain; charset="UTF-8" On Mon, 14 Feb 2022 at 10:45, Lars Ingebrigtsen wrote: > Reuben Thomas writes: > > > To be honest, I'm not sure Emacs can do much here. As far as I can > > tell, hunspell doesn't cope well with characters like "." that > > normally are non-word characters, but *can* occur in a word. > > > > Relatedly, see: https://github.com/hunspell/hunspell/issues/361 > > So it's a problem on the hunspell side, and not because Emacs is > considering the "." to be a non-word character? (I haven't tried to > debug what's going on.) For natural language, yes. There's also a problem in common abbreviations like "i.e.", which is > considered as the words "i" and "e", apparently... > This is indeed the case, and it's not normally a problem because Emacs does not spellcheck words so short. I was wondering whether Emacs could query the backend speller whether it > had the word "foo." in the dictionary before squiggly-lining "foo", but > I'm very unfamiliar with how these functions work. > It could! -- https://rrt.sc3d.org --000000000000f44ef705d7fc12da Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Mon, 14 Feb 2022 at 10:45, Lars Ingebr= igtsen <larsi@gnus.o= rg> wrote:
rrt@s= c3d.org> writes:

> To be honest, I'm not sure Emacs can do much here. As far as I can=
> tell, hunspell doesn't cope well with characters like "."= ; that
> normally are non-word characters, but *can* occur in a word.
>
> Relatedly, see: https://github.com/hunspell/huns= pell/issues/361

So it's a problem on the hunspell side, and not because Emacs is
considering the "." to be a non-word character?=C2=A0 (I haven= 9;t tried to
debug what's going on.)
For natural language, yes.

There's also a problem in common abbreviations like "i.e.", w= hich is
considered as the words "i" and "e", apparently...
<= /blockquote>

This is indeed the case,= and it's not normally a problem because Emacs does not spellcheck word= s so short.


It could!
= =C2=A0
--
--000000000000f44ef705d7fc12da-- From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 14 11:42:27 2022 Received: (at 20741) by debbugs.gnu.org; 14 Feb 2022 16:42:27 +0000 Received: from localhost ([127.0.0.1]:42414 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJeQl-0005uR-6z for submit@debbugs.gnu.org; Mon, 14 Feb 2022 11:42:27 -0500 Received: from eggs.gnu.org ([209.51.188.92]:35270) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJeQj-0005u8-8R for 20741@debbugs.gnu.org; Mon, 14 Feb 2022 11:42:26 -0500 Received: from [2001:470:142:3::e] (port=35212 helo=fencepost.gnu.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nJeQd-0001tf-OU; Mon, 14 Feb 2022 11:42:19 -0500 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=IsjSvnmCWj2xb3iEbM1r3YJgrx/Mefe61XY6nbUCNsU=; b=XQx5f6yVrU2N kS9HlH5yov6hOhIZJdjSAujrmAPOM+h4Ip+ePvuaMHl17zulthRzOy/4iXMMiTdjDzUlAyXrovtgj QmWh1mI7hfk+BBJIVQBT9eiPFi+HvkIR5YSO/xTTxja6e7mAlluSsLFt/g4Fhk+L//hD/3Q5dGD1K wgezrrTQULrlYCSKL4w5VZnSmITJ4Cdj3dGGLyumw6fy0tLZT756sopynW7sCqfYi3rP8/mqaA4VU Dc5xbRkoY3XgJSJ65WjCqCPMzrmcAGBIa4R0zRvhrAjei/9SHooM1AADJNW10rG5RK3OqzljEU3qy 0LcZkkxdr5hDD8ju7gFW1Q==; Received: from [87.69.77.57] (port=1186 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 1nJeQd-0003ap-97; Mon, 14 Feb 2022 11:42:19 -0500 Date: Mon, 14 Feb 2022 18:42:18 +0200 Message-Id: <83czjppfh1.fsf@gnu.org> From: Eli Zaretskii To: Reuben Thomas In-Reply-To: (message from Reuben Thomas on Mon, 14 Feb 2022 15:27:54 +0000) Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> <87o83bxhll.fsf@gnus.org> <83fsonq6w9.fsf@gnu.org> <83k0dxpo5f.fsf@gnu.org> <83ee45pj7r.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 20741 Cc: larsi@gnus.org, 20741@debbugs.gnu.org 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 (---) > From: Reuben Thomas > Date: Mon, 14 Feb 2022 15:27:54 +0000 > Cc: larsi@gnus.org, 20741@debbugs.gnu.org > > It's the same case: references to variables and other symbols in > comments and strings of a program are very frequent. They are also > very frequent in email messages which discuss programming, such as > this discussion (I have Flyspell turned on in all my email buffers). > > I think we can distinguish 3 different problems here: > > 1. Natural language spellchecking. That's what this issue is about. > 2. Spell-checking code. (Essentially, identifiers.) > 3. Finding code inside natural language, and checking it as if it were code. (That's what you're talking about > here.) This is not a spellchecking problem, it's a problem of identifying which spell-checking apparatus to > use, rather like font-lock for multi-language buffers. It's hard to see how to do it without some syntactic clue > (e.g. the use of backticks in markdown), as used in multi-language buffers for font-locking. Like I said: when we talk about this stuff in email, it's both case 1 and case 3. Anyway: what are the practical proposals for improving this? Are we going to handle only periods, or does anyone have a more general solution? From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 14 12:01:31 2022 Received: (at 20741) by debbugs.gnu.org; 14 Feb 2022 17:01:31 +0000 Received: from localhost ([127.0.0.1]:42428 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJejC-0000Ds-Go for submit@debbugs.gnu.org; Mon, 14 Feb 2022 12:01:30 -0500 Received: from mail-pf1-f169.google.com ([209.85.210.169]:36570) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJej9-0000Dd-MW for 20741@debbugs.gnu.org; Mon, 14 Feb 2022 12:01:29 -0500 Received: by mail-pf1-f169.google.com with SMTP id z16so8369862pfh.3 for <20741@debbugs.gnu.org>; Mon, 14 Feb 2022 09:01:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sc3d.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=4sLxnDDOvXQohZOVabqJdirq95f44IWTPCb7NprPkDM=; b=LUfCJH5wYkGRX7I/czn/ThgeQbA9/NApTIcHwExTx1fc5kwmBUiKsJWLa1sSuUjyv0 WWjmwcHcHZU2/b2KGB6BQI03F4oIMJmeeI0CY+fIxuHwTiKZHt9LK33v2PTkAK63YKqp ZOQIhrkw5lEHCpZC+IiluB5yb3TpS1ZREZP+o= 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=4sLxnDDOvXQohZOVabqJdirq95f44IWTPCb7NprPkDM=; b=fhuPe5CTXGljf57ESiPv1hw9Cjg/w/QX0aRtp56VW43NVR9/bzyeD1i026yQ5VLmN5 x3z90XBlhSjhF0nX4RQSt5paNoVPcq+I3iLBUFMOE84CAaVUCtQLzIUAhay12yY3gY5S UMJJ+Md6vF/wSj6UttD2+SCl48gv+9HjSzNJ5U6yLzluD+hFMPDz2bCLj80BXLY/l3Rk CodqcLB+MWiEUDoS0jjOkagPID9sHxZhZk0CpbZOiVpPG2zkiEULJOAR+w1l8UjjfffQ NETJEHeq1m3GpvaPjWd7t4VdDwDEKMgk0PknQ1FIZ+5rCkow9bd9P6nZYnDEsOiQPAn+ hv0g== X-Gm-Message-State: AOAM530ZxIV8QDF5QfLZD4MvJbNhtDXMV1Ow5mK7uAmE5gJO/FbYP/T9 WfMg8tCocpdH7eGNR9IfMzGgoVMNo4AF7bMP+dH8fA== X-Google-Smtp-Source: ABdhPJxdVt6Si6YZkKgwsWIkCxAhEpAu4dfiFS5zVqhLvc+tr/ZhZCoLGchukOfZdtjYb5pWLTaEQGi7pipRixhxVCU= X-Received: by 2002:a65:5c48:: with SMTP id v8mr520982pgr.343.1644858081405; Mon, 14 Feb 2022 09:01:21 -0800 (PST) MIME-Version: 1.0 References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> <87o83bxhll.fsf@gnus.org> <83fsonq6w9.fsf@gnu.org> <83k0dxpo5f.fsf@gnu.org> <83ee45pj7r.fsf@gnu.org> <83czjppfh1.fsf@gnu.org> In-Reply-To: <83czjppfh1.fsf@gnu.org> From: Reuben Thomas Date: Mon, 14 Feb 2022 17:01:09 +0000 Message-ID: Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period To: Eli Zaretskii Content-Type: multipart/alternative; boundary="000000000000a6062e05d7fd5d8d" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 20741 Cc: larsi@gnus.org, 20741@debbugs.gnu.org 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 (-) --000000000000a6062e05d7fd5d8d Content-Type: text/plain; charset="UTF-8" On Mon, 14 Feb 2022 at 16:42, Eli Zaretskii wrote: > > From: Reuben Thomas > > > > I think we can distinguish 3 different problems here: > > > > 1. Natural language spellchecking. That's what this issue is about. > > 2. Spell-checking code. (Essentially, identifiers.) > > 3. Finding code inside natural language, and checking it as if it were > code. (That's what you're talking about > > here.) This is not a spellchecking problem, it's a problem of > identifying which spell-checking apparatus to > > use, rather like font-lock for multi-language buffers. It's hard to see > how to do it without some syntactic clue > > (e.g. the use of backticks in markdown), as used in multi-language > buffers for font-locking. > > Anyway: what are the practical proposals for improving this? Are we > going to handle only periods, or does anyone have a more general > solution? > Emacs does not currently try to handle case 3, as far as I know. That would be a medium-sized project in its own right. Case 2 depends on per-programming-language syntax tables, not on the spellchecker. I don't know what the current arrangements for this are. Case 1, on which everything else depends, is a matter of Emacs sending stretches of text to the spell-checker, which currently (at least with Hunspell) does not deal with punctuation very well, though there are plans to improve Hunspell, according to the issue I linked to earlier. None of these would benefit from special-casing treatment of the period or any other character in ispell.el, I think. -- https://rrt.sc3d.org --000000000000a6062e05d7fd5d8d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Mon, 14 Feb 2022 at 16:42, Eli Zaret= skii <eliz@gnu.org> wrote:
> From: Reu= ben Thomas <rrt@sc3d.o= rg>
>
> I think we can distinguish 3 different problems here:
>
> 1. Natural language spellchecking. That's what this issue is about= .
> 2. Spell-checking code. (Essentially, identifiers.)
> 3. Finding code inside natural language, and checking it as if it were= code. (That's what you're talking about
> here.) This is not a spellchecking problem, it's a problem of iden= tifying which spell-checking apparatus to
> use, rather like font-lock for multi-language buffers. It's hard t= o see how to do it without some syntactic clue
> (e.g. the use of backticks in markdown), as used in multi-language buf= fers for font-locking.

Anyway: what are the practical proposals for improving this?=C2=A0 Are = we
going to handle only periods, or does anyone have a more general
solution?

Emacs does not cu= rrently try to handle case 3, as far as I know. That would be a medium-size= d project in its own right.

Case 2 depends on per-programming-language syntax tables, not on the = spellchecker. I don't know what the current arrangements for this are.<= /div>

Case 1, on which every= thing else depends, is a matter of Emacs sending stretches of text to the s= pell-checker, which currently (at least with Hunspell) does not deal with p= unctuation very well, though there are plans to improve Hunspell, according= to the issue I linked to earlier.

None of these would benefit from special-casing treatment of t= he period or any other character in ispell.el, I think.

= --
--000000000000a6062e05d7fd5d8d-- From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 14 13:09:09 2022 Received: (at 20741) by debbugs.gnu.org; 14 Feb 2022 18:09:09 +0000 Received: from localhost ([127.0.0.1]:42506 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJfmf-0001x6-0H for submit@debbugs.gnu.org; Mon, 14 Feb 2022 13:09:09 -0500 Received: from mout.gmx.net ([212.227.17.20]:53029) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJfme-0001wu-3A for 20741@debbugs.gnu.org; Mon, 14 Feb 2022 13:09:08 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1644862141; bh=FVuCz96l621uRZuImXfbIcqaFVoQOeuBBkiNXoBIuSo=; h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:In-Reply-To; b=ENgsh78unqYsN2K8EAPvd2nUl5OZPzat0xS0m4sie70kYDYLSfY7PEJR6cIIGWeym 7OpvJ9rjNbEnLRyKoiPumYc39xOrTg9m8smtjCEVaXoAkW527t6bAGAJ4Oh2Ujdxxd kh1CD27RHfsbgwmEfMNqaY3dLbCqhi6Mm2LwS9RA= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.101] ([213.142.96.169]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N0XD2-1oFt4C19Rk-00wVQp; Mon, 14 Feb 2022 19:09:01 +0100 Content-Type: multipart/mixed; boundary="------------IRttFKIG0tKOQ3VYGl4vcgGz" Message-ID: <18db59b9-f502-7ee5-ff6a-7732b2f10aae@gmx.at> Date: Mon, 14 Feb 2022 19:08:57 +0100 MIME-Version: 1.0 Subject: Re: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period Content-Language: en-US To: Reuben Thomas , Eli Zaretskii References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> <87o83bxhll.fsf@gnus.org> <83fsonq6w9.fsf@gnu.org> <83k0dxpo5f.fsf@gnu.org> <83ee45pj7r.fsf@gnu.org> <83czjppfh1.fsf@gnu.org> From: martin rudalics In-Reply-To: X-Provags-ID: V03:K1:sypu72llT8QGb4JpE7qoAkq/SJjw3flNL0WdVBMabmNEhvL8veM 9MlMrIq4A/3ZpLEURD83HygkphrFzCwsvtu91H/01Lo78nUuGBUWjr6nuOLl+CatX/muazO N3KHPef6NvXUEKsPsQjCM6qBY+/RrJ1WD41VQTAjnn3z/rsOall6iEYnRipErWnQwgKtkAW TKrrWNetPVjxEwQAjRaYg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:hstFHh9edC4=:gqdosnk2DxEyjdqZzolZQ6 E1g1US748kbJP7OMJIGaH2aprlQwFDCmukJpdwOXQyEv5dFf0VZZLZD/a3Log/RAPgWVsHsm5 KgMKPDZNL2LLSlM16sGzzXldyqh8tYLl1b3n2LssiaZsb1oqdQdHC2NN2Zsge9V08E0bEZchO +cBcAvIs6v1FC8PxL/BYf+niW6BDgaXwgFJyjVPjZu6uVUilYOIlIxUrMb3Enf2DZTAeJmdFW 0nqS+uX3JBMBglbQIT+amwaZidwbR3/vzi+HBhg0OA85B1D6G9OEHRgFjKGXnq8Pcokyok8Od yCseBSHxd/6VQHVQ2d9A42dyVBApwd1X24PlHzKMq9OEVQsoBj2XB5KjKkCvfGC0Xlb5G1UvO rXWhFWzVzqVcj2qkThyszSrxeCW6K0bHRFKMHZPirYDQKATYR0huGGMVutX+ljAFesk1CVr6V uTN0Apq6z3yDHDPJQKCiboGoRWnBvq6YdaHG/CLSH+O9gE38xzVI9OmwvilZpfRXLkyWgw3e2 0G8y4yyJSqz/oGLrdOA/VRmkYE2L9ePqoqS82gZv10s7LzkpLMfAcsbZwH2stVrA9KdZfKzaS URZlAnuh2lnIsggNPVXk3xjtX3/AG7OIGXsU8D12+q9mbMp9jMFYcP3Gvjo0SSv0ryH+1Kvm2 haXmbkXPu8Mv2Qap00fvdW9pqzBvvuP5uCp8urqULiwWfcCmogm/gKFSXr9wDB0VNXkt28NGC 4DjZOrbLhTroxR62qcsY51OEFbdf3dY4GVD6ZlQgJuCZ13b3MmOyCiGr/2jJ4JMYYk3cdf4wb iR2n6CZNZ7AU7WBya/hqnHJpKJ2/Np66SMHdazj5PbL3bJ+H2AZXLtB9Lu649xNnzoPdHBvos rVsmvbHwtVMLN/tCd7qJZz3qVCC1h8KFbOAiFFQ9ap60N19k0FO1RhQ+3KK01VLFVij76o0oY 61eIieN53G3kJkfKNrIU3CoYdvz1EYLhR6DzXsVrSStevyXGuMD1w07y/arqZLOjNEfyZgIWI BTjS+ZJdLX5h/LlrtjEuVo/Yj846bZaqgiryX6hvKPNwlyWgm3/PXh74TtjHMMwgglHvTX9Aw 9WQlMk89Fk6psk= X-Debbugs-Envelope-To: 20741 Cc: larsi@gnus.org, 20741@debbugs.gnu.org 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" This is a multi-part message in MIME format. --------------IRttFKIG0tKOQ3VYGl4vcgGz Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 ID4gQ2FzZSAxLCBvbiB3aGljaCBldmVyeXRoaW5nIGVsc2UgZGVwZW5kcywgaXMgYSBtYXR0 ZXIgb2YgRW1hY3Mgc2VuZGluZw0KID4gc3RyZXRjaGVzIG9mIHRleHQgdG8gdGhlIHNwZWxs LWNoZWNrZXIsIHdoaWNoIGN1cnJlbnRseSAoYXQgbGVhc3Qgd2l0aA0KID4gSHVuc3BlbGwp IGRvZXMgbm90IGRlYWwgd2l0aCBwdW5jdHVhdGlvbiB2ZXJ5IHdlbGwsIHRob3VnaCB0aGVy ZSBhcmUgcGxhbnMNCiA+IHRvIGltcHJvdmUgSHVuc3BlbGwsIGFjY29yZGluZyB0byB0aGUg aXNzdWUgSSBsaW5rZWQgdG8gZWFybGllci4NCiA+DQogPiBOb25lIG9mIHRoZXNlIHdvdWxk IGJlbmVmaXQgZnJvbSBzcGVjaWFsLWNhc2luZyB0cmVhdG1lbnQgb2YgdGhlIHBlcmlvZCBv cg0KID4gYW55IG90aGVyIGNoYXJhY3RlciBpbiBpc3BlbGwuZWwsIEkgdGhpbmsuDQoNCkF0 dGFjaGVkIGZpbmQgbXkgY29kZSB3aGljaCB3b3JrcyB3aXRoIEh1bnNwZWxsIGFuZCB1dGYt OCBjb2RlZCBidWZmZXJzDQpvbmx5LiAgQWRkIHRvIHlvdXIgLmVtYWNzIHNvbWV0aGluZyBs aWtlDQoNCg0KKGxvYWQgIn4vc3BlY2suZWwiIG5pbCB0KQ0KDQooY3VzdG9tLXNldC12YXJp YWJsZXMNCiAgJyhzcGVjay1kaWN0aW9uYXJpZXMtYWxpc3QgJygoMCAiZW5fVVMiIG5pbCBu aWwpICgxICJkZV9BVCIgbmlsIG5pbCkgKDIgImVuX1VTIiAoImRlX0FUIikgbmlsKSkpDQog ICcoc3BlY2std29yZGNoYXJzLWFsaXN0DQogICAgJygoImVuX1VTIiAiJ8K0YCIgbmlsKQ0K ICAgICAgKCJmcl9GUiIgIuKAmSciIG5pbCkNCiAgICAgICgiZW5fVVMsZnJfRlIiICInwrRg 4oCZJyIgbmlsKSkpKQ0KDQooZ2xvYmFsLXNldC1rZXkgWyhmNyldICdzcGVjay1tb2RlKQ0K DQoNCmN1c3RvbWl6ZSAnc3BlY2std29yZGNoYXJzLWFsaXN0JyBhY2NvcmRpbmcgdG8geW91 ciBsaWtlICh0aGUgYWJvdmUgYXJlDQp0aGUgdmFsdWVzIEkgdXNlIC0geW91IHByb2JhYmx5 IHdhbnQgdG8gYWRkIG9wdGlvbnMgZm9yIGVuX0dCKSwgaGl0IEY3DQppbiBzb21lIHdpbmRv dyB5b3Ugd2FudCB0byBjaGVjayBhbmQgdGVsbCBtZSBpZiBzcGVjaWFsLWNhc2luZyB0cmVh dG1lbnQNCm9mIGNoYXJhY3RlcnMgd2l0aCB0aGF0IG9wdGlvbiB3b3Jrcy4NCg0KbWFydGlu DQo= --------------IRttFKIG0tKOQ3VYGl4vcgGz Content-Type: text/x-emacs-lisp; charset=UTF-8; name="speck.el" Content-Disposition: attachment; filename="speck.el" Content-Transfer-Encoding: base64 Ozs7IHNwZWNrLmVsIC0tLSBtaW5vciBtb2RlIGZvciBzcGVsbCBjaGVja2luZwoKOzsgQ29w eXJpZ2h0IChDKSAyMDA2LTIwMjIgTWFydGluIFJ1ZGFsaWNzCgo7OyBUaW1lLXN0YW1wOiAi MjAyMi0wMi0xNCAxODo0Njo0NiBtYXJ0aW4iCjs7IEF1dGhvcjogTWFydGluIFJ1ZGFsaWNz IDxydWRhbGljc0BnbXguYXQ+Cjs7IEtleXdvcmRzOiBzcGVsbCBjaGVja2luZwoKOzsgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKOzsgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCjs7IFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo7OyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv Zgo7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCjs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCgo7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7OyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KCjs7OyBDb21tZW50 YXJ5OgoKOzsgU3BlY2sgaXMgYSBtaW5vciBtb2RlIGZvciAic3BlY2tpbmciIC0gc3BlbGwt Y2hlY2tpbmcgdGV4dCBkaXNwbGF5ZWQKOzsgaW4gRW1hY3Mgd2luZG93cy4gIEludm9rZSB0 aGUgY29tbWFuZCBgc3BlY2stbW9kZScgdG8gdG9nZ2xlIHNwZWNraW5nCjs7IG9mIGFsbCB3 aW5kb3dzIHNob3dpbmcgdGhlIGN1cnJlbnQgYnVmZmVyIHdpdGggeW91ciBtYWNoaW5lJ3Mg ZGVmYXVsdAo7OyBkaWN0aW9uYXJ5LiAgSW52b2tlIGBzcGVjay1idWZmZXInIHRvIHNwZWNr IGFsbCB3aW5kb3dzIHNob3dpbmcgdGhlCjs7IGN1cnJlbnQgYnVmZmVyIGNob29zaW5nIHRo ZSBkaWN0aW9uYXJpZXMgb2YgeW91ciBsaWtlLgoKOzsgSW4gaXRzIGN1cnJlbnQgdmVyc2lv biBTcGVjayB3b3JrcyBleGNsdXNpdmVseSB3aXRoIGJ1ZmZlcnMgY29kZWQgaW4KOzsgdXRm LTggYW5kIEh1bnNwZWxsLgoKOzsgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KOzsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF8KOzs7CQkJICAgICBWYXJpYWJsZXMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF8KOzsgX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K OzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF8KCihkZWZ2YXIgc3BlY2stbW9kZSBuaWwpCgoo ZGVmdmFyIHNwZWNrLWJ1ZmZlci1saXN0IG5pbAogICJMaXN0IG9mIGJ1ZmZlcnMgbWFuYWdl ZCBieSBTcGVjay4iKQoKKGRlZnZhciBzcGVjay13aW5kb3ctbGlzdCBuaWwKICAiTGlzdCBv ZiB3aW5kb3dzIG1hbmFnZWQgYnkgU3BlY2suIikKCihkZWZ2YXIgc3BlY2stZGVsYXktdGlt ZXIgbmlsCiAgIklkbGUgdGltZXIgdG8gc3RhcnQgc3BlY2tpbmcgYWZ0ZXIgYHNwZWNrLWRl bGF5JyBzZWNvbmRzLiIpCgooZGVmdmFyIHNwZWNrLXBhdXNlLXRpbWVyIG5pbAogICJJZGxl IHRpbWVyIHRvIHN1c3BlbmQgc3BlY2tpbmcgZm9yIGBzcGVjay1wYXVzZScgc2Vjb25kcy4i KQoKKGRlZnZhciBzcGVjay1tYXJrZXIgKG1ha2UtbWFya2VyKQogICJNYXJrZXIgdXNlZCBk dXJpbmcgcXVlcnlpbmcuIikKCihkZWZ2YXIgc3BlY2stbWFya2VyLXdpbmRvdyBuaWwKICAi V2luZG93IHdoZXJlIGBzcGVjay1tYXJrZXInIHdhcyBzZXQuIikKCihkZWZ2YXIgc3BlY2st cHJvY2VzcyBuaWwKICAiVGhpcyBidWZmZXIncyBTcGVjayBwcm9jZXNzLiIpCihtYWtlLXZh cmlhYmxlLWJ1ZmZlci1sb2NhbCAnc3BlY2stcHJvY2VzcykKKHB1dCAnc3BlY2stcHJvY2Vz cyAncGVybWFuZW50LWxvY2FsIHQpCgooZGVmdmFyIHNwZWNrLXByb2Nlc3MtbWFya2VyIG5p bAogICJUaGlzIGJ1ZmZlcidzIFNwZWNrIHByb2Nlc3MgbWFya2VyLiIpCihtYWtlLXZhcmlh YmxlLWJ1ZmZlci1sb2NhbCAnc3BlY2stcHJvY2Vzcy1tYXJrZXIpCihwdXQgJ3NwZWNrLXBy b2Nlc3MtbWFya2VyICdwZXJtYW5lbnQtbG9jYWwgdCkKCihkZWZ2YXIgc3BlY2stYnVmZmVy LWRpY3Rpb25hcmllcyBuaWwKICAiVGhpcyBidWZmZXIncyBTcGVjayBkaWN0aW9uYXJpZXMu IikKKG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdzcGVjay1idWZmZXItZGljdGlvbmFy aWVzKQoocHV0ICdzcGVjay1idWZmZXItZGljdGlvbmFyaWVzICdwZXJtYW5lbnQtbG9jYWwg dCkKCihkZWZ2YXIgc3BlY2stYnVmZmVyLWRpY3Rpb25hcmllcy1zdHJpbmcgIiIKICAiU3Ry aW5nIHNwZWNpZnlpbmcgdGhpcyBidWZmZXIncyBTcGVjayBkaWN0aW9uYXJpZXMuIikKKG1h a2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdzcGVjay1idWZmZXItZGljdGlvbmFyaWVzLXN0 cmluZykKKHB1dCAnc3BlY2stYnVmZmVyLWRpY3Rpb25hcmllcy1zdHJpbmcgJ3Blcm1hbmVu dC1sb2NhbCB0KQoKKGRlZnZhciBzcGVjay1idWZmZXItb3B0aW9ucyBuaWwKICAiVGhpcyBi dWZmZXIncyBsaXN0IG9mIFNwZWNrIG9wdGlvbnMuClRoaXMgaXMgdGhlIGxpc3Qgb2Ygb3B0 aW9ucyBwYXNzZWQgdG8gdGhlIHNwZWxsIGVuZ2luZS4iKQoobWFrZS12YXJpYWJsZS1idWZm ZXItbG9jYWwgJ3NwZWNrLWJ1ZmZlci1vcHRpb25zKQoocHV0ICdzcGVjay1idWZmZXItb3B0 aW9ucyAncGVybWFuZW50LWxvY2FsIHQpCgooZGVmdmFyIHNwZWNrLWlnbm9yZS1saXN0IG5p bAogICJMaXN0IG9mIHdvcmRzIGlnbm9yZWQgaW4gdGhpcyBidWZmZXIuIikKKG1ha2UtdmFy aWFibGUtYnVmZmVyLWxvY2FsICdzcGVjay1pZ25vcmUtbGlzdCkKKHB1dCAnc3BlY2staWdu b3JlLWxpc3QgJ3Blcm1hbmVudC1sb2NhbCB0KQoKKGRlZnZhciBzcGVjay1sb2cgbmlsCiAg Ik5vbi1uaWwgd2hlbiBTcGVjayBsb2dnaW5nIGlzIHR1cm5lZCBvbiIpCgooZGVmdmFyIHNw ZWNrLWxvZy1idWZmZXIgbmlsKQoKKGRlZnVuIHNwZWNrLWxvZy1idWZmZXIgKCkKICAiUmV0 dXJuIGJ1ZmZlciBmb3IgU3BlY2sgbG9ncy4iCiAgKGlmIChidWZmZXItbGl2ZS1wIHNwZWNr LWxvZy1idWZmZXIpCiAgICAgIHNwZWNrLWxvZy1idWZmZXIKICAgIChnZXQtYnVmZmVyLWNy ZWF0ZSAiKnNwZWNrLWxvZyoiKSkpCgo7OyBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo7OyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXwo7OzsJCQkgICAgICAgQ3VzdG9taXphdGlvbiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXwo7OyBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXwoKKGRlZmdyb3VwIHNwZWNrIG5pbAog ICJBbm90aGVyIGludGVyZmFjZSB0byBIdW5zcGVsbC4iCiAgOnZlcnNpb24gIjI4LjEiCiAg Omdyb3VwICdhcHBsaWNhdGlvbnMpCgooZGVmY3VzdG9tIHNwZWNrLWRlbGF5IDAuNQogICJU aW1lIGluIHNlY29uZHMgdG8gd2FpdCBiZWZvcmUgc3BlY2tpbmcuClN0YXJ0IHNwZWNraW5n IGFmdGVyIEVtYWNzIGhhcyBiZWVuIGlkbGUgZm9yIHRoYXQgbWFueSBzZWNvbmRzLiIKICA6 dHlwZSAnbnVtYmVyCiAgOmdyb3VwICdzcGVjaykKCihkZWZjdXN0b20gc3BlY2stcGF1c2Ug MC4xCiAgIlRpbWUgaW4gc2Vjb25kcyB0byBwYXVzZSBzcGVja2luZy4KR2l2ZSBvdGhlciB0 aW1lcnMgYSBjaGFuY2UgdG8gcnVuIHdoaWxlIHNwZWNraW5nLiIKICA6dHlwZSAnbnVtYmVy CiAgOmdyb3VwICdzcGVjaykKCihkZWZjdXN0b20gc3BlY2stY2h1bmstbWF4IDQwOTYKICAi TWF4aW11bSBzaXplIG9mIGNodW5rcyBzZW5kIHRvIHNwZWxsaW5nIGVuZ2luZSwgaW4gYnl0 ZXMuClRoaXMgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyBTcGVjayBt YXkgc2VuZCB0byB0aGUKc3BlbGxpbmcgZW5naW5lIGluIG9uZSBzdGVwLiAgSXQgc2hvdWxk IG5vdCBleGNlZWQgdGhlIGRlZmF1bHQKYnVmZmVyIHNpemUgb2YgdGhlIHVuZGVybHlpbmcg b3BlcmF0aW5nIHN5c3RlbSBmb3Igc2VuZGluZyBkYXRhCm92ZXIgYSBwaXBlIGNvbm5lY3Rp b24uIgogIDp0eXBlICdudW1iZXIKICA6Z3JvdXAgJ3NwZWNrKQoKKGRlZmN1c3RvbSBzcGVj ay1yZXBsYWNlLXF1ZXJ5IG5pbAogICJXaGVuIG5vbi1uaWwgcXVlcnkgZm9yIGZ1cnRoZXIg b2NjdXJyZW5jZXMgYWZ0ZXIgY29ycmVjdGluZyBhIHdvcmQuClRoZSBjb21tYW5kcyB0byBj b3JyZWN0IGEgd29yZCBhcmUgYHNwZWNrLXBvcHVwLW1lbnUtcHJldmlvdXMnLApgc3BlY2st cG9wdXAtbWVudS1uZXh0JywgYHNwZWNrLXJlcGxhY2UtcHJldmlvdXMnIGFuZApgc3BlY2st cmVwbGFjZS1uZXh0Jy4iCiAgOnR5cGUgJ2Jvb2xlYW4KICA6Z3JvdXAgJ3NwZWNrKQoKKGRl ZmN1c3RvbSBzcGVjay1yZXBsYWNlLXByZXNlcnZlLXBvaW50ICd3aXRoaW4KICAiV2hlcmUg dG8gbW92ZSBjdXJzb3Igd2l0aGluIHJlcGxhY2VkIHRleHQuCk9wdGlvbnMgYXJlOgogYmVm b3JlIC4uLiBiZWZvcmUgcmVwbGFjZWQgdGV4dAogd2l0aGluIC4uLiBhdCBzYW1lIG9mZnNl dCBmcm9tIGJlZ2luIG9mIG9yIGFmdGVyIHJlcGxhY2VkIHRleHQKIGFmdGVyIC4uLi4gYWZ0 ZXIgcmVwbGFjZWQgdGV4dCIKICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiQmVmb3Jl IiBiZWZvcmUpCgkJIChjb25zdCA6dGFnICJXaXRoaW4iIHdpdGhpbikKCQkgKGNvbnN0IDp0 YWcgIkFmdGVyIiBhZnRlcikpCiAgOmdyb3VwICdzcGVjaykKCjs7IChkZWZjdXN0b20gc3Bl Y2stc3ludGFjdGljIG5pbAo7OyAgICJOb24tbmlsIG1lYW5zIGhpZ2hsaWdodCBtaXNzcGVs bGVkIHdvcmRzIGluIGNvbW1lbnRzIG9yIHN0cmluZ3Mgb25seS4KOzsgT3B0aW9ucyBhcmUg dG8gaGlnaGxpZ2h0IHRleHQgYW55d2hlcmUgaW4gdGhlIGJ1ZmZlciwgdGV4dCBpbgo7OyBj b21tZW50cyBvbmx5LCB0ZXh0IGluIHN0cmluZ3Mgb25seSwgb3IgdGV4dCBpbiBjb21tZW50 cyBvcgo7OyBzdHJpbmdzLgoKOzsgVGhlIHByZWZlcnJlZCB3YXkgdG8gc2V0IHRoaXMgb3B0 aW9uIGlzIGJ5IGFkZGluZwoKOzsgICAgIChzZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ3Nw ZWNrLXN5bnRhY3RpYykgdCkKCjs7IHRvIGEgbWFqb3IgbW9kZSdzIGhvb2suIgo7OyAgIDp0 eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJBbnkiIG5pbCkKOzsgCQkgKGNvbnN0IDp0YWcg IkNvbW1lbnRzIiAnY29tbWVudHMpCjs7IAkJIChjb25zdCA6dGFnICJTdHJpbmdzIiAnc3Ry aW5ncykKOzsgCQkgKGNvbnN0IDp0YWcgIkNvbW1lbnRzIG9yIFN0cmluZ3MiIHQpKQo7OyAg IDpncm91cCAnc3BlY2spCgooZGVmY3VzdG9tIHNwZWNrLWh1bnNwZWxsLXByb2dyYW0KICAo bG9jYXRlLWZpbGUgImh1bnNwZWxsIiBleGVjLXBhdGggZXhlYy1zdWZmaXhlcyAnZmlsZS1l eGVjdXRhYmxlLXApCiAgIkZpbGUgbmFtZSBvZiBIdW5zcGVsbCBwcm9ncmFtLiIKICA6dHlw ZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiSW52YWxpZCIgbmlsKSAoZmlsZSA6dGFnICJGaWxl IikpCiAgOmdyb3VwICdzcGVjaykKCihkZWZ1biBzcGVjay1odW5zcGVsbC1leGVjdXRhYmxl LXAgKCkKICAiUmV0dXJuIG5vbi1uaWwgd2hlbiBgc3BlY2staHVuc3BlbGwtcHJvZ3JhbScg YXBwZWFycyBleGVjdXRhYmxlLiIKICAoYW5kIChzdHJpbmdwIHNwZWNrLWh1bnNwZWxsLXBy b2dyYW0pCiAgICAgICAoZmlsZS1leGVjdXRhYmxlLXAgc3BlY2staHVuc3BlbGwtcHJvZ3Jh bSkpKQoKKGRlZmN1c3RvbSBzcGVjay1odW5zcGVsbC1saWJyYXJ5LWRpcmVjdG9yeSAiL3Vz ci9zaGFyZS9odW5zcGVsbC8iCiAgIk5hbWUgb2YgSHVuc3BlbGwgbGlicmFyeSBkaXJlY3Rv cnkuClRoaXMgc2hvdWxkIHNwZWNpZnkgdGhlIGFic29sdXRlIG5hbWUgb2YgdGhlIGRpcmVj dG9yeSB3aGVyZSB0aGUKSHVuc3BlbGwgZGljdGlvbmFyaWVzIHJlc2lkZS4iCiAgOnR5cGUg JyhjaG9pY2UgKGNvbnN0IDp0YWcgIkludmFsaWQiIG5pbCkKCQkgKGZpbGUgOnRhZyAiRmls ZSIpKQogIDpncm91cCAnc3BlY2spCgo7OyBUaGUgZm9sbG93aW5nIGlzIG1vcmUgdXNlZnVs IHRoYW4gcnVubmluZyBIdW5zcGVsbCB3aXRoIHRoZSAiLUQiCjs7IG9wdGlvbiB3aGljaCBt YXkgYWxzbyByZXR1cm4gYWxsIHNvcnRzIG9mIG15c3BlbGwgZGljdGlvbmFyaWVzLgooZGVm dW4gc3BlY2staHVuc3BlbGwtZGljdGlvbmFyaWVzICgpCiAgIlJldHVybiBsaXN0IG9mIEh1 bnNwZWxsIGRpY3Rpb25hcmllcyBpbnN0YWxsZWQgb24gdGhpcyBtYWNoaW5lLgpUaGlzIHJl dHVybnMgdGhlIHJlbGF0aXZlIGZpbGUgbmFtZXMgc2FucyBleHRlbnNpb24gb2YgYWxsIGZp bGVzCndpdGggZXh0ZW5zaW9uIFwiLmRpY1wiIGluICdzcGVjay1odW5zcGVsbC1saWJyYXJ5 LWRpcmVjdG9yeScuIgogICh3aGVuIChhbmQgc3BlY2staHVuc3BlbGwtbGlicmFyeS1kaXJl Y3RvcnkKCSAgICAgKGZpbGUtZXhpc3RzLXAgc3BlY2staHVuc3BlbGwtbGlicmFyeS1kaXJl Y3RvcnkpKQogICAgKGxldCAoKGZpbGVzIChkaXJlY3RvcnktZmlsZXMKCQkgIHNwZWNrLWh1 bnNwZWxsLWxpYnJhcnktZGlyZWN0b3J5IG5pbCAiXFwuZGljJCIpKQoJICBkaWN0aW9uYXJp ZXMpCiAgICAgIChkb2xpc3QgKGZpbGUgZmlsZXMpCgkoc2V0cSBkaWN0aW9uYXJpZXMKCSAg ICAgIChjb25zIChmaWxlLW5hbWUtc2Fucy1leHRlbnNpb24gZmlsZSkgZGljdGlvbmFyaWVz KSkpCiAgICAgIChzb3J0IGRpY3Rpb25hcmllcyAnc3RyaW5nLWxlc3NwKSkpKQoKKGRlZnZh ciBzcGVjay1odW5zcGVsbC1kaWN0aW9uYXJpZXMgKHNwZWNrLWh1bnNwZWxsLWRpY3Rpb25h cmllcykKICAiTGlzdCBvZiBIdW5zcGVsbCBkaWN0aW9uYXJpZXMgaW5zdGFsbGVkIG9uIHRo aXMgbWFjaGluZS4KSWYgeW91IGNoYW5nZSB0aGVtLCB5b3UgaGF2ZSB0byByZWxvYWQgc3Bl Y2suZWwgdG8gbWFrZSBzcGVjawphd2FyZSBvZiB0aGUgY2hhbmdlLiIpCgooZGVmdW4gc3Bl Y2staHVuc3BlbGwtYmFzZS1kaWN0aW9uYXJpZXMgKCkKICAiUmV0dXJuIGxpc3Qgb2YgSHVu c3BlbGwgYmFzZSBkaWN0aW9uYXJpZXMgaW5zdGFsbGVkIG9uIHRoaXMgbWFjaGluZS4KVGhp cyByZXR1cm5zIHRoZSByZWxhdGl2ZSBmaWxlIG5hbWVzIHNhbnMgZXh0ZW5zaW9uIG9mIGFs bCBmaWxlcwp3aXRoIGV4dGVuc2lvbiBcIi5hZmZcIiBpbiAnc3BlY2staHVuc3BlbGwtbGli cmFyeS1kaXJlY3RvcnknLiIKICAod2hlbiAoYW5kIHNwZWNrLWh1bnNwZWxsLWxpYnJhcnkt ZGlyZWN0b3J5CgkgICAgIChmaWxlLWV4aXN0cy1wIHNwZWNrLWh1bnNwZWxsLWxpYnJhcnkt ZGlyZWN0b3J5KSkKICAgIChsZXQgKChmaWxlcyAoZGlyZWN0b3J5LWZpbGVzCgkJICBzcGVj ay1odW5zcGVsbC1saWJyYXJ5LWRpcmVjdG9yeSBuaWwgIlxcLmFmZiQiKSkKCSAgZGljdGlv bmFyaWVzKQogICAgICAoZG9saXN0IChmaWxlIGZpbGVzKQoJKHNldHEgZGljdGlvbmFyaWVz CgkgICAgICAoY29ucyAoZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9uIGZpbGUpIGRpY3Rpb25h cmllcykpKQogICAgICAoc29ydCBkaWN0aW9uYXJpZXMgJ3N0cmluZy1sZXNzcCkpKSkKCihk ZWZ2YXIgc3BlY2staHVuc3BlbGwtYmFzZS1kaWN0aW9uYXJpZXMgKHNwZWNrLWh1bnNwZWxs LWJhc2UtZGljdGlvbmFyaWVzKQogICJMaXN0IG9mIEh1bnNwZWxsIGJhc2UgZGljdGlvbmFy aWVzIGluc3RhbGxlZCBvbiB0aGlzIG1hY2hpbmUuCkEgSHVuc3BlbGwgYmFzZSBkaWN0aW9u YXJ5IGlzIG9uZSBmb3Igd2hpY2ggYW4gYWZmaXggKC5hZmYpIGZpbGUKZXhpc3RzIGluIGBz cGVjay1odW5zcGVsbC1saWJyYXJ5LWRpcmVjdG9yeScuCgpJZiB5b3UgY2hhbmdlIHRoZW0s IHlvdSBoYXZlIHRvIHJlbG9hZCBzcGVjay5lbCB0byBtYWtlIHNwZWNrCmF3YXJlIG9mIHRo ZSBjaGFuZ2UuIikKCjs7IE1heWJlIHdlIHNob3VsZCBjaGVjayByaWdodCBoZXJlIGZvciBV VEYtOCBhd2FyZW5lc3MgdG9vIC4uLgooZGVmdW4gc3BlY2staHVuc3BlbGwtZGVmYXVsdC1k aWN0aW9uYXJ5ICgpCiAgKGxldCAoKGxhbmcgKGdldGVudiAiTEFORyIpKQoJZGljdGlvbmFy eSkKICAgICh3aGVuIChzdHJpbmctbWF0Y2ggIl5cXCguKlxcKVxcLiIgbGFuZykKICAgICAg KHNldHEgZGljdGlvbmFyeSAobWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMSBsYW5nKSkK ICAgICAgKGNhciAobWVtYmVyIGRpY3Rpb25hcnkgc3BlY2staHVuc3BlbGwtYmFzZS1kaWN0 aW9uYXJpZXMpKSkpKQoKKGRlZnZhciBzcGVjay1odW5zcGVsbC1kZWZhdWx0LWRpY3Rpb25h cnkgKHNwZWNrLWh1bnNwZWxsLWRlZmF1bHQtZGljdGlvbmFyeSkKICAiRGVmYXVsdCBkaWN0 aW9uYXJ5IHVzZWQgYnkgSHVuc3BlbGwgb24gdGhpcyBtYWNoaW5lLiIpCgooZGVmdmFyIHNw ZWNrLWRpY3Rpb25hcmllcyBzcGVjay1odW5zcGVsbC1kaWN0aW9uYXJpZXMKICAiTGlzdCBv ZiBkaWN0aW9uYXJpZXMgaW5zdGFsbGVkIG9uIHRoaXMgbWFjaGluZS4iKQoKKGRlZnZhciBz cGVjay1iYXNlLWRpY3Rpb25hcmllcyBzcGVjay1odW5zcGVsbC1iYXNlLWRpY3Rpb25hcmll cwogICJMaXN0IG9mIGJhc2UgZGljdGlvbmFyaWVzIGluc3RhbGxlZCBvbiB0aGlzIG1hY2hp bmUuIikKCihkZWZ2YXIgc3BlY2stZGljdGlvbmFyaWVzLWhpc3RvcnkgbmlsCiAgIkhpc3Rv cnkgb2YgZGljdGlvbmFyaWVzIGVudGVyZWQgZm9yIGBzcGVjay1idWZmZXInLiIpCgo7OyBU aGUgcmFkaW8gYnV0dG9uIHNvbHV0aW9uIGlzIG5vdCBvdmVybHkgYXR0cmFjdGl2ZSBidXQg YSBzaW1wbGUgd2F5Cjs7IHRvIHNob3cgYWxsIGluc3RhbGxlZCBkaWN0aW9uYXJpZXMgdG8g dGhlIGN1c3RvbWl6ZXIuCihkZWZjdXN0b20gc3BlY2stZGVmYXVsdC1kaWN0aW9uYXJ5IHNw ZWNrLWh1bnNwZWxsLWRlZmF1bHQtZGljdGlvbmFyeQogICJTcGVjaydzIGRlZmF1bHQgZGlj dGlvbmFyeS4KVGhlIGRlZmF1bHQgZGljdGlvbmFyeSBpcyB1c2VkIGZvciBzcGVja2luZyBh IGJ1ZmZlciB1bmxlc3MgeW91CnNwZWNpZnkgb3RoZXIgZGljdGlvbmFyaWVzIHZpYSBgc3Bl Y2stZGljdGlvbmFyaWVzLWFsaXN0JyBvcgpgc3BlY2stYnVmZmVyJy4iCiAgOnR5cGUgYChy YWRpbwoJICA6aW5kZW50IDIKCSAgLEAobWFwY2FyCgkgICAgIChsYW1iZGEgKGVudHJ5KQoJ ICAgICAgIChsaXN0ICdjb25zdCA6Zm9ybWF0ICIldiBcbiIgZW50cnkpKQoJICAgICBzcGVj ay1kaWN0aW9uYXJpZXMpKQogIDpncm91cCAnc3BlY2spCgooZGVmY3VzdG9tIHNwZWNrLWRp Y3Rpb25hcmllcy1hbGlzdCBgKCgwICxzcGVjay1kZWZhdWx0LWRpY3Rpb25hcnkpKQogICJM aXN0IGFzc29jaWF0aW5nIGludGVnZXJzIHdpdGggb25lIG9yIG1vcmUgZGljdGlvbmFyaWVz LgpUaGlzIGlzIHRoZSBiYXNpYyBmYWNpbGl0eSB0byBzcGVjaWZ5aW5nIHdoaWNoIGRpY3Rp b25hcnkgdG8gdXNlCndoZW4gc3BlY2tpbmcgYSBidWZmZXIuICBTcGVjayBjb25zdWx0cyB0 aGUgYXNzb2NpYXRpb25zCnNwZWNpZmllZCBoZXJlIHdoZW4gZGV0ZXJtaW5pbmcgd2hpY2gg ZGljdGlvbmFyaWVzIHRvIHVzZSBmb3IKc3BlY2tpbmcgYSBidWZmZXIuCgpUaGUgbWVtYmVy cyBvZiB0aGlzIGxpc3QgYXJlIGxpc3RzIG9mIHRocmVlIGVsZW1lbnRzLgoKVGhlIGZpcnN0 IGVsZW1lbnQgc2hvdWxkIGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgd2hpY2ggY2FuIGJl CnVzZWQgYXMgbnVtZXJpYyBwcmVmaXggYXJndW1lbnQgZm9yIGBzcGVjay1idWZmZXInIHRl bGxpbmcgdGhlCmxhdHRlciB0byB1c2UgdGhlIGRpY3Rpb25hcmllcyBzcGVjaWZpZWQgYnkg dGhlIHJlbWFpbmRlciBvZiB0aGUKZWxlbWVudCBmb3Igc3BlY2tpbmcgdGhlIGN1cnJlbnQg YnVmZmVyLgoKVGhlIHNlY29uZCBlbGVtZW50IHNwZWNpZmllcyB0aGUgXCJiYXNlXCIgZGlj dGlvbmFyeSBmb3Igc3BlY2tpbmcKYSBidWZmZXIgd2hlbiB0aGlzIGFzc29jaWF0aW9uIGlz IHVzZWQuICBJdCBtdXN0IGJlIGEgbWVtYmVyIG9mCmBzcGVjay1iYXNlLWRpY3Rpb25hcmll cycuCgpUaGUgdGhpcmQgZWxlbWVudCBzcGVjaWZpZXMgYWRkaXRpb25hbCBkaWN0aW9uYXJp ZXMgdGhhdCBhcmUKY29uc3VsdGVkIHdoZW4gdGhpcyBhc3NvY2lhdGlvbiBpcyB1c2VkLiAg VGhleSBtdXN0IGJlIG1lbWJlcnMgb2YKYHNwZWNrLWRpY3Rpb25hcmllcycuICBJZiBubyBh ZGRpdGlvbmFsIGRpY3Rpb25hcmllcyBhcmUKc3BlY2lmaWVkIGhlcmUsIG9ubHkgdGhlIGJh c2UgZGljdGlvbmFyeSBpcyB1c2VkIGZvciBzcGVja2luZy4KCkRvIG5vdCByZW1vdmUgdGhl IGFzc29jaWF0aW9uIGZvciAwICh6ZXJvKS4gIEl0IGlzIHRoZSBkZWZhdWx0CmFzc29jaWF0 aW9uIGFuZCB3aGVuIGl0IGlzIG1pc3NpbmcsIGludm9raW5nIGBzcGVjay1tb2RlJyAob3IK YHNwZWNrLWJ1ZmZlcicgd2l0aG91dCBhIHByZWZpeCBhcmd1bWVudCkgd2lsbCBicmVhay4g IFlvdSBjYW4sCmhvd2V2ZXIsIGNoYW5nZSB0aGUgZGljdGlvbmFyaWVzIHNwZWNpZmllZCBi eSB0aGlzIGFzc29jaWF0aW9uLgoKRG8gbm90IHNldCB1cCBhbiBhc3NvY2lhdGlvbiBmb3Ig bmVnYXRpdmUgdmFsdWVzIGhlcmUgc2luY2UgdGhlc2UKYXJlIG5vdCBoYW5kbGVkIGNvcnJl Y3RseS4iCiAgOnR5cGUgYChyZXBlYXQKCSAgKGxpc3QgOmZvcm1hdCAiJXZcbiIKCQkoaW50 ZWdlciA6Zm9ybWF0ICIldiIpCgkJKGNob2ljZQoJCSAsQChtYXBjYXIKCQkgICAgKGxhbWJk YSAoZW50cnkpCgkJICAgICAgKGxpc3QgJ2NvbnN0IDpmb3JtYXQgIiV2IFxuIiBlbnRyeSkp CgkJICAgIHNwZWNrLWJhc2UtZGljdGlvbmFyaWVzKSkKCQkocmVwZWF0CgkJIChjaG9pY2UK CQkgICxAKG1hcGNhcgoJCSAgICAgKGxhbWJkYSAoZW50cnkpCgkJICAgICAgIChsaXN0ICdj b25zdCA6Zm9ybWF0ICIldiBcbiIgZW50cnkpKQoJCSAgICAgc3BlY2stZGljdGlvbmFyaWVz KSkpCgkJKGNob2ljZQoJCSAoY29uc3QgOnRhZyAiTm9uZSIgbmlsKQoJCSAoc3RyaW5nIDp0 YWcgIlN0cmluZyIpKSkpCiAgOmdyb3VwICdzcGVjaykKCihkZWZ2YXIgc3BlY2std29yZGNo YXJzLXJlZ2V4cCBuaWwKICAiVGhlIHdvcmRjaGFycyBvZiBhIHNwZWNrIHByb2Nlc3MgYnVm ZmVyLiIpCihtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAnc3BlY2std29yZGNoYXJzLXJl Z2V4cCkKKHB1dCAnc3BlY2std29yZGNoYXJzLXJlZ2V4cCAncGVybWFuZW50LWxvY2FsIHQp CgooZGVmdmFyIHNwZWNrLXdvcmRjaGFycy1mdW5jdGlvbiBuaWwKICAiSWYgbm9uLW5pbCwg ZnVuY3Rpb24gdXNlZCBpbnN0ZWFkIG9mIGBzcGVjay13b3JkY2hhcnMtZnVuY3Rpb24nLiIp CihtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAnc3BlY2std29yZGNoYXJzLWZ1bmN0aW9u KQoocHV0ICdzcGVjay13b3JkY2hhcnMtZnVuY3Rpb24gJ3Blcm1hbmVudC1sb2NhbCB0KQoK KGRlZmN1c3RvbSBzcGVjay13b3JkY2hhcnMtYWxpc3QgbmlsCiAgIkFsaXN0IGFzc29jaWF0 aW5nIGRpY3Rpb25hcnkgc3RyaW5ncyB3aXRoIHdvcmQgY2hhcmFjdGVycy4KRWFjaCBlbnRy eSBvZiB0aGlzIGFsaXN0IGNvbnRhaW5zIGEgbGlzdCBvZiB0aHJlZSBlbGVtZW50czoKCi0g YSBkaWN0aW9uYXJ5IHN0cmluZwoKLSBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzCgotIGEgZnVu Y3Rpb24gb3IgbmlsLgoKQSBkaWN0aW9uYXJ5IHN0cmluZyBpcyBvYnRhaW5lZCBieSBjb25j YXRlbmF0aW5nIGFsbCBkaWN0aW9uYXJpZXMKc3BlY2lmaWVkIGZvciBhIGJ1ZmZlciB1c2lu ZyBhIGNvbW1hIHdpdGhvdXQgc3BhY2VzIGFzIHNlcGFyYXRvci4KSWYgYHNwZWNrLWxpZ2h0 ZXInIGlzIHVzZWQsIFNwZWNrIGJ5IGRlZmF1bHQgZGlzcGxheXMgYSBidWZmZXIncwpkaWN0 aW9uYXJ5IHN0cmluZyBpbiB0aGUgYnVmZmVyJ3MgbW9kZSBsaW5lLiAgU2VlIHRoZSBleGFt cGxlCmJlbG93IGZvciBzb21lIHZhbGlkIGRpY3Rpb25hcnkgc3RyaW5ncy4KCldoZW4gc2V0 dGluZyB1cCBhIGNodW5rIHRvIHNlbmQgdG8gdGhlIHNwZWxsIGVuZ2luZSwgU3BlY2sgc2Nh bnMKdGhhdCBjaHVuayBwcm92aWRlZCB0aGUgZGljdGlvbmFyeSBzdHJpbmcgc3BlY2lmaWVk IGJ5IHRoZSBmaXJzdAplbGVtZW50IG9mIHRoaXMgYWxpc3QgZXF1YWxzIHRoZSBkaWN0aW9u YXJ5IHN0cmluZyBvZiB0aGUgY2h1bmsncwpidWZmZXIuICBUaGF0IHNjYW4gcmVwbGFjZXMg d2l0aGluIHRoYXQgY2h1bmsgYW55IG9jY3VycmVuY2VzIG9mCmEgY2hhcmFjdGVyIHNwZWNp ZmllZCBieSB0aGUgc2Vjb25kIGVsZW1lbnQgb2YgdGhpcyBhbGlzdCBub3QKZW5jbG9zZWQg YnkgdHdvIGNoYXJhY3RlcnMgb2Ygd29yZCBzeW50YXguCgpUaGUgZGVmYXVsdCBmdW5jdGlv biB0byBkbyB0aGF0IGlzIGBzcGVjay13b3JkY2hhcnMnIHdoaWNoIGdldHMKY2FsbGVkIGlm IHRoZSB0aGlyZCBlbGVtZW50IG9mIHRoaXMgYWxpc3QgaXMgbmlsIGFuZCBzdWJzdGl0dXRl cwphIHNwYWNlIGNoYXJhY3RlciBmb3IgYW55IHN1Y2ggb2NjdXJyZW5jZSBmb3VuZC4KCklm IHRoZSB0aGlyZCBlbGVtZW50IGlzIGEgZnVuY3Rpb24sIHRoYXQgZnVuY3Rpb24gaXMgY2Fs bGVkIHdpdGgKbm8gYXJndW1lbnRzIGFuZCBwb2ludCBpbW1lZGlhdGVseSBhZnRlciB0aGUg b2NjdXJyZW5jZSBvZiBzdWNoIGEKY2hhcmFjdGVyLiAgSXQgaXMgdXAgdG8gdGhhdCBmdW5j dGlvbiB0byByZXBsYWNlIHRoYXQgY2hhcmFjdGVyCndpdGggZXhhY3RseSBvbmUgb3RoZXIg Y2hhcmFjdGVyICh3aGljaCBtdXN0IG5vdCBiZSB0aGUgbmV3bGluZQpjaGFyYWN0ZXIpIG9y IGxlYXZlIHRoYXQgY2hhcmFjdGVyIGFsb25lLiAgT3RoZXIgYnVmZmVyCm1vZGlmaWNhdGlv bnMgbWF5IGluZXZpdGFibHkgYnJlYWsgc3BlY2tpbmcuICBOb3RlIHRoYXQgYW55IHN1Y2gK c3Vic3RpdHV0aW9ucyBhcmUgb25seSBkb25lIG9uIGEgc2hhZG93IGNvcHkgb2YgdGhlIGJ1 ZmZlciB0ZXh0Owp0aGUgb3JpZ2luYWwgYnVmZmVyIGlzIG5vdCBhZmZlY3RlZCBieSB0aGlz IG9wZXJhdGlvbi4KClJlbW92aW5nIHN1Y2ggY2hhcmFjdGVycyBpcyBuZWNlc3NhcnkgaWYg dGhlIFdPUkRDSEFSUyBlbnRyeSBvZiBhCkh1bnNwZWxsIGRpY3Rpb25hcnkgc3BlY2lmaWVz IGEgY2hhcmFjdGVyIHRoYXQgaXMgYWxzbyB1c2VkIGluIGEKYnVmZmVyIGF0IHRoZSBiZWdp bm5pbmcgb3IgZW5kIG9mIGEgd29yZC4gIEZvciBleGFtcGxlLCB3aGVuIHlvdQpzZWUgcHJv YmxlbXMgd2hlbiB1c2luZyB0aGUgYXBvc3Ryb3BoZSBcIidcIiB3aXRoIHRoZSBcImVuX1VT XCIKZGljdGlvbmFyeSB5b3UgbWF5IHdhbnQgdG8gdHJ5IHRoZSBmb2xsb3dpbmcgY3VyZToK Ci0gTWFrZSBzdXJlIHRoYXQgXCInXCIgaXMgc3BlY2lmaWVkIGJ5IHRoZSBXT1JEQ0hBUlMg ZW50cnkgb2YKICBlbl9VUy5hZmYuICBPdGhlcndpc2UsIEh1bnNwZWxsIG1heSBwaXRpbGVz cyBtYXJrIFwiZG9lc1wiIGluCiAgXCJkb2Vzbid0XCIgYXMgbWlzc3BlbGxlZC4KCi0gTWFr ZSBzdXJlIHRoYXQgYW4gZW50cnkgZm9yIGVuX1VTIGFuZCBcIidcIiBpcyBpbmNsdWRlZCBp biB0aGlzCiAgYWxpc3QuICBPdGhlcndpc2UsIEh1bnNwZWxsIHdpbGwgbWFyayBcIidkb2Vz J1wiIGFzIG1pc3NwZWxsZWQuCgpBbiBleGFtcGxlIGZvciBjdXN0b21pemluZyB0aGlzIG9w dGlvbiBpbiB5b3VyIGluaXQgZmlsZSBpcwoKKGN1c3RvbWl6ZS1zZXQtdmFyaWFibGUKIFxc PSdzcGVjay13b3JkY2hhcnMtYWxpc3QKIFxcPScoKFwiZW5fVVNcIiBcIlxcPSdcXD3CtFxc PWBcIiBuaWwpCiAgIChcImZyX0ZSXCIgXCJcXD3igJlcXD0nXCIgbmlsKQogICAoXCJlbl9V Uyxmcl9GUlwiIFwiXFw9J1xcPcK0XFw9YFxcPeKAmVxcPSdcIiBuaWwpKSkKCndoaWNoIGlu Y2x1ZGVzIHRoZSBhcG9zdHJvcGhlcyB0eXBpY2FsbHkgdXNlZCBpbiB0aGUgc3BlY2lmaWVk Cmxhbmd1YWdlcy4iCiAgOnR5cGUgJyhyZXBlYXQKCSAgKGxpc3QKCSAgIChzdHJpbmcgOnRh ZyAiRGljdGlvbmFyeSBTdHJpbmciKQoJICAgKHN0cmluZyA6dGFnICJDaGFyYWN0ZXJzIikK ICAgICAgICAgICAoY2hvaWNlCgkgICAgKGNvbnN0IDp0YWcgIlVzZSBTcGVjaydzIGludGVy bmFsIHdvcmRjaGFycyBmdW5jdGlvbiIgbmlsKQoJICAgIChmdW5jdGlvbiA6dGFnICJVc2Vy LWRlZmluZWQgZnVuY3Rpb24iKSkpKQogIDpncm91cCAnc3BlY2spCgooZGVmY3VzdG9tIHNw ZWNrLWxpZ2h0ZXIgdAogICJXaGVuIG5vbi1uaWwgZGlzcGxheSBhIHN0cmluZyBpbiB0aGUg bW9kZS1saW5lIHdoZW4gc3BlY2tpbmcuCkNvbXBhcmUgYHNwZWNrLW1vZGUtbGluZS1zcGVj a2luZycgYW5kIGBzcGVjay1tb2RlLWxpbmUtc3BlY2tlZCcuIgogIDp0eXBlICdib29sZWFu CiAgOmdyb3VwICdzcGVjaykKCihkZWZjdXN0b20gc3BlY2stbW9kZS1saW5lLXNwZWNraW5n IHQKICAiU3RyaW5nIGRpc3BsYXllZCBpbiBtb2RlLWxpbmUgd2hpbGUgc3BlY2tpbmcgd2lu ZG93LgpTaG91bGQgY29udGFpbiBhIGxlYWRpbmcgc3BhY2UuICBTZWxlY3RpbmcgXCJkaWN0 aW9uYXJ5XCIgXCh0KQpoZXJlIG1lYW5zIHRvIGRpc3BsYXkgdGhpcyBidWZmZXIncyBkaWN0 aW9uYXJpZXMuIgogIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJEaWN0aW9uYXJ5IiB0 KSBzdHJpbmcpCiAgOmdyb3VwICdzcGVjaykKCihkZWZjdXN0b20gc3BlY2stbW9kZS1saW5l LXNwZWNrZWQgdAogICJTdHJpbmcgZGlzcGxheWVkIGluIG1vZGUtbGluZSBhZnRlciB3aW5k b3cgaGFzIGJlZW4gc3BlY2tlZC4KU2hvdWxkIGNvbnRhaW4gYSBsZWFkaW5nIHNwYWNlLiAg U2VsZWN0aW5nIFwiZGljdGlvbmFyeVwiICh0KQpoZXJlIG1lYW5zIHRvIGRpc3BsYXkgdGhp cyBidWZmZXIncyBkaWN0aW9uYXJpZXMuIgogIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFn ICJEaWN0aW9uYXJ5IiB0KSBzdHJpbmcpCiAgOmdyb3VwICdzcGVjaykKCihkZWZmYWNlIHNw ZWNrLWd1ZXNzCiAgJygoKChjbGFzcyBjb2xvcikpIDp1bmRlcmxpbmUgKDpzdHlsZSB3YXZl IDpjb2xvciAicmVkIikpCiAgICAodCA6dW5kZXJsaW5lIHQpKQogICJGYWNlIGZvciBoaWdo bGlnaHRpbmcgbWlzc3BlbGxlZCB3b3JkcyB3aXRoIGd1ZXNzZXMuIgogIDpncm91cCAnc3Bl Y2spCgooZGVmZmFjZSBzcGVjay1taXNzCiAgJygoKChjbGFzcyBjb2xvcikpIDp1bmRlcmxp bmUgKDpzdHlsZSB3YXZlIDpjb2xvciAib3JhbmdlIikpCiAgICAodCA6dW5kZXJsaW5lIHQp KQogICJGYWNlIGZvciBoaWdobGlnaHRpbmcgbWlzc3BlbGxlZCB3b3JkcyB3aXRob3V0IGd1 ZXNzZXMuIgogIDpncm91cCAnc3BlY2spCgo7OyAoZGVmZmFjZSBzcGVjay1tb3VzZQo7OyAg ICcoKCgoY2xhc3MgY29sb3IpKSA6YmFja2dyb3VuZCAidGhpc3RsZSIpCjs7ICAgICAodCA6 dW5kZXJsaW5lIHQpKQo7OyAgICJGYWNlIGZvciBoaWdobGlnaHRpbmcgbWlzc3BlbGxlZCB3 b3JkIHdoZW4gdGhlIG1vdXNlIGlzIG92ZXIgaXQuIgo7OyAgIDpncm91cCAnc3BlY2spCgoo ZGVmZmFjZSBzcGVjay1xdWVyeQogICcoKCgoY2xhc3MgY29sb3IpKSA6YmFja2dyb3VuZCAi eWVsbG93IikKICAgICh0IDp1bmRlcmxpbmUgdCkpCiAgIkZhY2UgZm9yIGhpZ2hsaWdodGlu ZyB3b3JkIGluIHF1ZXJpZXMuIgogIDpncm91cCAnc3BlY2stZmFjZXMpCgooZGVmZmFjZSBz cGVjay1tb2RlLWxpbmUtc3BlY2tpbmcKICAnKCgoKGNsYXNzIGNvbG9yKSkgOmZvcmVncm91 bmQgIm9yYW5nZSIpCiAgICAodCBuaWwpKQogICJGYWNlIGZvciBTcGVjayBsaWdodGVyIHdo ZW4gd2luZG93IGlzIG5vdCBmdWxseSBzcGVja2VkLiIKICA6Z3JvdXAgJ3NwZWNrKQoKKGRl ZmZhY2Ugc3BlY2stbW9kZS1saW5lLXNwZWNrZWQKICAnKCgoKGNsYXNzIGNvbG9yKSkgOmZv cmVncm91bmQgImdyZWVuIikKICAgICh0IG5pbCkpCiAgIkZhY2UgZm9yIFNwZWNrIGxpZ2h0 ZXIgd2hlbiB3aW5kb3cgaXMgZnVsbHkgc3BlY2tlZC4iCiAgOmdyb3VwICdzcGVjaykKCihk ZWZmYWNlIHNwZWNrLXNwZWNrZWQKICAnKCgoKGNsYXNzIGNvbG9yKSkgOmJhY2tncm91bmQg ImxhdmVuZGVyYmx1c2gxIikKICAgICh0IDp1bmRlcmxpbmUgdCkpCiAgIkZhY2UgZm9yIGhp Z2hsaWdodGluZyBzcGVja2VkIHRleHQuIgogIDpncm91cCAnc3BlY2spCgooZGVmdmFyIHNw ZWNrLWZhY2UtaW5oaWJpdC1saXN0IG5pbAogICJMaXN0IG9mIGZhY2VzIHRoYXQgaW5oaWJp dCBzcGVja2luZy4KSWYgdGhpcyBsaXN0IGlzIG5vdCBlbXB0eSwgYSB3b3JkIGlzIG5vdCBt YXJrZWQgYXMgbWlzc3BlbGxlZCBpZgp0aGUgZmFjZSB0ZXh0IHByb3BlcnR5IG9mIGl0cyBm aXJzdCBjaGFyYWN0ZXIgY29udGFpbnMgYW4gZWxlbWVudApvZiB0aGlzIGxpc3QuCgpUaGUg cmVjb21tZW5kZWQgd2F5IHRvIHNldCB0aGlzIHZhcmlhYmxlIGlzIHZpYSBhIG1ham9yIG1v ZGUKaG9vay4gIFRoZSBmb2xsb3dpbmcgY29kZSBhc3NlcnRzIHRoYXQgaW4gYGVtYWNzLWxp c3AtbW9kZScgdGV4dApkaXNwbGF5ZWQgd2l0aCBgZm9udC1sb2NrLXZhcmlhYmxlLW5hbWUt ZmFjZScgb3IKYGZvbnQtbG9jay1jb25zdGFudC1mYWNlJyBpcyBub3QgbWFya2VkIGFzIG1p c3NwZWxsZWQuCgogICAgKGFkZC1ob29rCiAgICAgXFw9J2VtYWNzLWxpc3AtbW9kZS1ob29r CiAgICAgXFw9JyhsYW1iZGEgKCkKICAgICAgICAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxl IFxcPSdzcGVjay1mYWNlLWluaGliaXQtbGlzdCkKCSAgICAgIFxcPScoZm9udC1sb2NrLXZh cmlhYmxlLW5hbWUtZmFjZQogICAgICAgICAgICAgICBmb250LWxvY2stY29uc3RhbnQtZmFj ZSkpKSkKClRoaXMgb3B0aW9uIG92ZXJyaWRlcyBgc3BlY2stZmFjZS1lbmZvcmNlLWxpc3Qn IGZvciB0ZXh0IHRoYXQgaGFzCmZhY2VzIGluIGJvdGggbGlzdHMuIikKCihkZWZ2YXIgc3Bl Y2stZmFjZS1lbmZvcmNlLWxpc3QgbmlsCiAgIkxpc3Qgb2YgZmFjZXMgdGhhdCBlbmZvcmNl IHNwZWNraW5nLgpJZiB0aGlzIGxpc3QgaXMgbm90IGVtcHR5LCBhIHdvcmQgaXMgbm90IHNw ZWNrZWQgaWYgdGhlIGZhY2UgdGV4dApwcm9wZXJ0eSBvZiBpdHMgZmlyc3QgY2hhcmFjdGVy IGRvZXMgbm90IGNvbnRhaW4gYW4gZWxlbWVudCBvZgp0aGlzIGxpc3QuCgpUaGUgcmVjb21t ZW5kZWQgd2F5IHRvIHNldCB0aGlzIHZhcmlhYmxlIGlzIHZpYSBhIG1ham9yIG1vZGUKaG9v ay4gIFRoZSBmb2xsb3dpbmcgY29kZSBhc3NlcnRzIHRoYXQgaW4gYGVtYWNzLWxpc3AtbW9k ZScgdGV4dApkaXNwbGF5ZWQgd2l0aCBgZm9udC1sb2NrLWNvbW1lbnQtZmFjZScgb3IgYGZv bnQtbG9jay1kb2MtZmFjZScKY2FuIGJlIGNoZWNrZWQsIHdoaWxlIG90aGVyIHByb2dyYW0g dGV4dCByZW1haW5zIHVuY2hlY2tlZC4KCiAgICAoYWRkLWhvb2sKICAgICBcXD0nZW1hY3Mt bGlzcC1tb2RlLWhvb2sKICAgICBcXD0nKGxhbWJkYSAoKQogICAgICAgIChzZXQgKG1ha2Ut bG9jYWwtdmFyaWFibGUgXFw9J3NwZWNrLWZhY2UtZW5mb3JjZS1saXN0KQoJICAgICBcXD0n KGZvbnQtbG9jay1jb21tZW50LWZhY2UgZm9udC1sb2NrLWRvYy1mYWNlKSkKClRoaXMgb3B0 aW9uIGlzIG92ZXJyaWRkZW4gYnkgYHNwZWNrLWZhY2UtaW5oaWJpdC1saXN0JyBmb3IgdGV4 dAp0aGF0IGhhcyBmYWNlcyBpbiBib3RoIGxpc3RzLgoKTm90ZSB0aGF0IG9uY2UgdGV4dCBo YXMgYmVlbiBzcGVja2VkIGl0IHdpbGwgbm90IGJlIHJlLXNwZWNrZWQKdW5sZXNzIGl0IGlz IG1vZGlmaWVkLiAgRmFjZSBjaGFuZ2VzIGRvbmUgYnkgZm9udCBsb2NraW5nIGFzIGEKY29u c2VxdWVuY2Ugb2YgYnVmZmVyIGNoYW5nZXMsIGhvd2V2ZXIsIGFyZSB1c3VhbGx5IGRvbmUg c2lsZW50bHkKLSB0aGV5IGRvIG5vdCBjb3VudCBhcyBidWZmZXIgbW9kaWZpY2F0aW9ucyBh bmQgYXJlIG5vdCBkZXRlY3RlZApieSBTcGVjay4gIElmIHlvdSB3YW50IHRvIG1ha2Ugc3Vy ZSB0aGF0IHN1Y2ggY2hhbmdlcyBhcmUgaGFuZGxlZApieSBTcGVjaywgc2V0IGBzcGVjay1m YWNlLWVuZm9yY2UtY29udGV4dHVhbCcgdG8gbm9uLW5pbC4iKQoKKGRlZnZhciBzcGVjay1m YWNlLWVuZm9yY2UtY29udGV4dHVhbCBuaWwKICAiTm9uLW5pbCBtZWFucyByZS1zcGVjayBy ZXN0IG9mIGJ1ZmZlciBhZnRlciBhIGJ1ZmZlciBtb2RpZmljYXRpb24uCklmIHRoaXMgaXMg bmlsLCBTcGVjayByZS1zY2FucyBvbmx5IGJ1ZmZlciB0ZXh0IHRoYXQgYWN0dWFsbHkKY2hh bmdlZCBhZnRlciBhIGJ1ZmZlciBtb2RpZmljYXRpb24uICBUaGlzIG1pZ2h0IGJlIGluc3Vm ZmljaWVudAp3aGVuIGBzcGVjay1mYWNlLWVuZm9yY2UtbGlzdCcgaXMgbm9uLW5pbCBhbmQg U3BlY2sgaXMgc3VwcG9zZWQKdG8gcmVhY3QgdG8gZmFjZSBjaGFuZ2VzIGluIHRoZSByZW1h aW5kZXIgb2YgYSBidWZmZXIgYWZ0ZXIgc3VjaCBhCm1vZGlmaWNhdGlvbi4KCklmIHlvdSB3 YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGFueSBzdWNoIGZhY2UgY2hhbmdlcyBhcmUgcGlja2Vk IHVwCmJ5IFNwZWNrLCBtYWtlIHRoaXMgbm9uLW5pbC4gIEluIGdlbmVyYWwsIGl0IGlzIG5v dCByZWNvbW1lbmRlZAp0byBkbyB0aGF0IGJlY2F1c2UgaXQgbWF5IHNsb3cgZG93biBib3Ro LCBzcGVja2luZyBhbmQgY29udGV4dHVhbApyZS1mb250aWZpY2F0aW9uLiAgSW4gYnVmZmVy cyB3aGVyZSBgc3BlY2stZmFjZS1lbmZvcmNlLWxpc3QnIGlzCm5pbCwgdGhpcyBvcHRpb24g aGFzIG5vIGVmZmVjdC4iKQoKOzsgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KOzsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF8KOzs7CQkJICAgICAgIFV0aWxpdHkgRnVuY3Rpb25zICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF8KOzsgX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K OzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF8KCihkZWZ1biBzcGVjay1zdHJpbmcgKCZvcHRp b25hbCBiZWdpbiBlbmQpCiAgImBidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMnIHdp dGggb3B0aW9uYWwgYXJndW1lbnRzLiIKICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0 aWVzCiAgIChvciBiZWdpbiAocG9pbnQtbWluKSkgKG9yIGVuZCAocG9pbnQtbWF4KSkpKQoK KGRlZnVuIHNwZWNrLXJlbW92ZS1vdmVybGF5cyAoJm9wdGlvbmFsIGZyb20gdG8pCiAgIlJl bW92ZSBhbGwgc3BlY2sgb3ZlcmxheXMgYmV0d2VlbiBGUk9NIGFuZCBUTy4iCiAgKHVubGVz cyBmcm9tIChzZXRxIGZyb20gKHBvaW50LW1pbikpKQogICh1bmxlc3MgdG8gKHNldHEgdG8g KHNldHEgdG8gKHBvaW50LW1heCkpKSkKICAod2hlbiAoPCB0byBmcm9tKQogICAgKHNldHEg ZnJvbSAocHJvZzEgdG8gKHNldHEgdG8gZnJvbSkpKSkKICAgICAgKGRvbGlzdCAob3Zlcmxh eSAob3ZlcmxheXMtaW4gZnJvbSB0bykpCgkod2hlbiAob3ZlcmxheS1nZXQgb3ZlcmxheSAn c3BlY2spCgkgIChkZWxldGUtb3ZlcmxheSBvdmVybGF5KSkpKQoKKGRlZnVuIHNwZWNrLXJl bW92ZS10ZXh0LXByb3BlcnRpZXMgKCZvcHRpb25hbCBmcm9tIHRvIHdoaWNoKQogICJSZW1v dmUgYWxsIHNwZWNrIHRleHQgcHJvcGVydGllcyBiZXR3ZWVuIEZST00gYW5kIFRPLgpXSElD SCwgaWYgbm9uLW5pbCwgc3BlY2lmaWVzIHRoZSB0ZXh0IHByb3BlcnRpZXMgdG8gcmVtb3Zl LiIKICAoc2F2ZS1yZXN0cmljdGlvbgogICAgKHdpZGVuKQogICAgKHVubGVzcyBmcm9tIChz ZXRxIGZyb20gKHBvaW50LW1pbikpKQogICAgKHVubGVzcyB0byAoc2V0cSB0byAoc2V0cSB0 byAocG9pbnQtbWF4KSkpKQogICAgKHdoZW4gKDwgdG8gZnJvbSkKICAgICAgKHNldHEgZnJv bSAocHJvZzEgdG8gKHNldHEgdG8gZnJvbSkpKSkKICAgICh3aXRoLXNpbGVudC1tb2RpZmlj YXRpb25zCiAgICAgIChyZW1vdmUtdGV4dC1wcm9wZXJ0aWVzCiAgICAgICBmcm9tIHRvIChv ciB3aGljaCAnKHNwZWNrIG5pbCBzcGVja2VkIG5pbCkpKSkpKQoKKGRlZnVuIHNwZWNrLWFk ZC13aW5kb3cgKCZvcHRpb25hbCB3aW5kb3cpCiAgIkFkZCBXSU5ET1cgdG8gYHNwZWNrLXdp bmRvdy1saXN0Jy4iCiAgKHNldHEgd2luZG93IChvciB3aW5kb3cgKHNlbGVjdGVkLXdpbmRv dykpKQogICh1bmxlc3MgKG1lbXEgd2luZG93IHNwZWNrLXdpbmRvdy1saXN0KQogICAgKHdp dGgtY3VycmVudC1idWZmZXIgKHdpbmRvdy1idWZmZXIgd2luZG93KQogICAgICAod2hlbiBz cGVjay1tb2RlCgkoc2V0cSBzcGVjay13aW5kb3ctbGlzdCAoY29ucyB3aW5kb3cgc3BlY2st d2luZG93LWxpc3QpKQoJKHNwZWNrLXJ1bi1kZWxheS10aW1lcikKCShzcGVjay1ydW4tcGF1 c2UtdGltZXIpCgkoZm9yY2UtbW9kZS1saW5lLXVwZGF0ZSkpKSkpCgooZGVmdW4gc3BlY2st YWRkLWJ1ZmZlci13aW5kb3dzICgmb3B0aW9uYWwgYnVmZmVyKQogICJBZGQgQlVGRkVSJ3Mg d2luZG93cyB0byBgc3BlY2std2luZG93LWxpc3QnLiIKICAoZG9saXN0ICh3aW5kb3cgKGdl dC1idWZmZXItd2luZG93LWxpc3QgYnVmZmVyIG5pbCB0KSkKICAgIChzcGVjay1hZGQtd2lu ZG93IHdpbmRvdykpKQoKKGRlZnVuIHNwZWNrLXJlbW92ZS13aW5kb3cgKCZvcHRpb25hbCB3 aW5kb3cpCiAgIlJlbW92ZSBXSU5ET1cgZnJvbSBgc3BlY2std2luZG93LWxpc3QnLiIKICAo c2V0cSB3aW5kb3cgKG9yIHdpbmRvdyAoc2VsZWN0ZWQtd2luZG93KSkpCiAgKHNldHEgc3Bl Y2std2luZG93LWxpc3QgKGRlbHEgd2luZG93IHNwZWNrLXdpbmRvdy1saXN0KSkKICAodW5s ZXNzIHNwZWNrLXdpbmRvdy1saXN0CiAgICAod2hlbiBzcGVjay1kZWxheS10aW1lcgogICAg ICAoY2FuY2VsLXRpbWVyIHNwZWNrLWRlbGF5LXRpbWVyKQogICAgICAoc2V0cSBzcGVjay1k ZWxheS10aW1lciBuaWwpKQogICAgKHdoZW4gc3BlY2stcGF1c2UtdGltZXIKICAgICAgKGNh bmNlbC10aW1lciBzcGVjay1wYXVzZS10aW1lcikKICAgICAgKHNldHEgc3BlY2stcGF1c2Ut dGltZXIgbmlsKSkpCiAgKGZvcmNlLW1vZGUtbGluZS11cGRhdGUpKQoKKGRlZnVuIHNwZWNr LXJlbW92ZS1idWZmZXItd2luZG93cyAoJm9wdGlvbmFsIGJ1ZmZlcikKICAiUmVtb3ZlIEJV RkZFUidzIHdpbmRvd3MgZnJvbSBgc3BlY2std2luZG93LWxpc3QnLiIKICAoZG9saXN0ICh3 aW5kb3cgKGdldC1idWZmZXItd2luZG93LWxpc3QgYnVmZmVyIG5pbCB0KSkKICAgIChzcGVj ay1yZW1vdmUtd2luZG93IHdpbmRvdykpKQoKKGRlZnVuIHNwZWNrLWFkZC1idWZmZXIgKCZv cHRpb25hbCBidWZmZXIpCiAgIkFkZCBCVUZGRVIgdG8gYHNwZWNrLWJ1ZmZlci1saXN0Jy4i CiAgKHNldHEgYnVmZmVyIChvciBidWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpCiAgKHVubGVz cyAobWVtcSBidWZmZXIgc3BlY2stYnVmZmVyLWxpc3QpCiAgICAoc2V0cSBzcGVjay1idWZm ZXItbGlzdCAoY29ucyBidWZmZXIgc3BlY2stYnVmZmVyLWxpc3QpKSkKICAoZG9saXN0ICh3 aW5kb3cgKGdldC1idWZmZXItd2luZG93LWxpc3QgYnVmZmVyIG5pbCB0KSkKICAgIChzcGVj ay1hZGQtd2luZG93IHdpbmRvdykpKQoKKGRlZnVuIHNwZWNrLXJlbW92ZS1idWZmZXIgKCZv cHRpb25hbCBidWZmZXIpCiAgIlJlbW92ZSBCVUZGRVIgZnJvbSBgc3BlY2stYnVmZmVyLWxp c3QnLiIKICAoc2V0cSBidWZmZXIgKG9yIGJ1ZmZlciAoY3VycmVudC1idWZmZXIpKSkKICAo c3BlY2stcmVtb3ZlLWJ1ZmZlci13aW5kb3dzIGJ1ZmZlcikKICAoc2V0cSBzcGVjay1idWZm ZXItbGlzdCAocmVtcSBidWZmZXIgc3BlY2stYnVmZmVyLWxpc3QpKQogICh3aXRoLWN1cnJl bnQtYnVmZmVyIGJ1ZmZlcgogICAgKHdoZW4gKGFuZCBzcGVjay1wcm9jZXNzIChwcm9jZXNz LWxpdmUtcCBzcGVjay1wcm9jZXNzKSkKICAgICAgKGtpbGwtYnVmZmVyIChwcm9jZXNzLWJ1 ZmZlciBzcGVjay1wcm9jZXNzKSkpCiAgICAoc2V0cSBzcGVjay1wcm9jZXNzIG5pbCkpKQoK KGRlZnVuIHNwZWNrLWdvdG8tbWFya2VyICgpCiAgIkdvIHRvIGBzcGVjay1tYXJrZXInIGFu ZCBtYWtlIGl0IHBvaW50IG5vd2hlcmUuIgogICh3aGVuIChhbmQgKG1hcmtlcnAgc3BlY2st bWFya2VyKSAobWFya2VyLXBvc2l0aW9uIHNwZWNrLW1hcmtlcikKCSAgICAgKHdpbmRvdy1s aXZlLXAgc3BlY2stbWFya2VyLXdpbmRvdykpCiAgICAoc2VsZWN0LXdpbmRvdyBzcGVjay1t YXJrZXItd2luZG93KQogICAgKGdvdG8tY2hhciBzcGVjay1tYXJrZXIpCiAgICAoc2V0LW1h cmtlciBzcGVjay1tYXJrZXIgbmlsKSkpCgooZGVmdW4gc3BlY2stb3ZlcmxheS1hdC1wb2lu dCAoJm9wdGlvbmFsIGF0IGZhY2VzKQogICJSZXR1cm4gc3BlY2sgb3ZlcmxheSBhdCBwb2lu dC4KT3B0aW9uYWwgYXJndW1lbnQgQVQgbm9uLW5pbCBtZWFucyByZXR1cm4gb3ZlcmxheSBh dCBwb3NpdGlvbiBBVC4KT3B0aW9uYWwgYXJndW1lbnQgRkFDRVMgbm9uLW5pbCBtZWFucyBy ZXR1cm4gb3ZlcmxheSBpZiBhbmQgb25seQppZiBpdCBoYXMgYSBmYWNlIHByb3BlcnR5IGlu IHRoYXQgbGlzdC4iCiAgKHNldHEgYXQgKG9yIGF0IChwb2ludCkpKQogIChsZXQgKChvdmVy bGF5IChjZHIgKGdldC1jaGFyLXByb3BlcnR5LWFuZC1vdmVybGF5IGF0ICdzcGVjaykpKSkK ICAgICh3aGVuIChvciAobm90IGZhY2VzKQoJICAgICAgKGFuZCBvdmVybGF5IChtZW1xIChv dmVybGF5LWdldCBvdmVybGF5ICdmYWNlKSBmYWNlcykpKQogICAgICBvdmVybGF5KSkpCgoo ZGVmdW4gc3BlY2stbmV4dC1vdmVybGF5ICgmb3B0aW9uYWwgYXJnIGZhY2VzKQogICJHZXQg Zmlyc3Qgc3BlY2sgb3ZlcmxheSBlbmRpbmcgYWZ0ZXIgYHBvaW50Jy4KT3B0aW9uYWwgYXJn dW1lbnQgQVJHIG5vbi1uaWwgbWVhbnMgcmV0dXJuIEFSR3RoIG92ZXJsYXkgYWZ0ZXIKYHBv aW50Jy4gIE9wdGlvbmFsIGFyZ3VtZW50IEZBQ0VTIG5vbi1uaWwgbWVhbnMgcmV0dXJuIG92 ZXJsYXkgaWYKYW5kIG9ubHkgaWYgaXQgaGFzIGEgZmFjZSBwcm9wZXJ0eSBpbiB0aGF0IGxp c3QuIgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKHNldHEgYXJnIChvciBhcmcgMSkpCiAgICAo bGV0ICgob3ZlcmxheSAoc3BlY2stb3ZlcmxheS1hdC1wb2ludCBuaWwgZmFjZXMpKSkKICAg ICAgKHVubGVzcyAoYW5kIG92ZXJsYXkKCQkgICAob3IgKD0gYXJnIDEpCgkJICAgICAgIChw cm9nbgoJCQkgKHNldHEgYXJnICgxLSBhcmcpKQoJCQkgKGdvdG8tY2hhciAob3ZlcmxheS1l bmQgb3ZlcmxheSkpCgkJCSAoc2V0cSBvdmVybGF5IG5pbCkpKSkKCShzYXZlLXJlc3RyaWN0 aW9uCgkgIDs7IFRoaXMgbmFycm93aW5nIHNob3VsZCBiZSBzYWZlLgoJICAobmFycm93LXRv LXJlZ2lvbiAocG9pbnQpICh3aW5kb3ctZW5kKSkKCSAgKHdoaWxlIChhbmQgKG5vdCBvdmVy bGF5KSAoPCAocG9pbnQpIChwb2ludC1tYXgpKSAoPj0gYXJnIDApKQoJICAgIChnb3RvLWNo YXIgKG5leHQtb3ZlcmxheS1jaGFuZ2UgKHBvaW50KSkpCgkgICAgKHNldHEgb3ZlcmxheSAo c3BlY2stb3ZlcmxheS1hdC1wb2ludCBuaWwgZmFjZXMpKQoJICAgICh3aGVuIChhbmQgb3Zl cmxheSAoPiBhcmcgMSkpCgkgICAgICAoc2V0cSBvdmVybGF5IG5pbCkKCSAgICAgIChzZXRx IGFyZyAoMS0gYXJnKSkpKSkpCiAgICAgIG92ZXJsYXkpKSkKCihkZWZ1biBzcGVjay1wcmV2 aW91cy1vdmVybGF5ICgmb3B0aW9uYWwgYXJnIGZhY2VzKQogICJHZXQgZmlyc3Qgc3BlY2sg b3ZlcmxheSBzdGFydGluZyBiZWZvcmUgYHBvaW50Jy4KT3B0aW9uYWwgYXJndW1lbnQgQVJH IG5vbi1uaWwgbWVhbnMgcmV0dXJuIEFSR3RoIG92ZXJsYXkgYmVmb3JlCmBwb2ludCcuICBP cHRpb25hbCBhcmd1bWVudCBGQUNFUyBub24tbmlsIG1lYW5zIHJldHVybiBvdmVybGF5IGlm CmFuZCBvbmx5IGlmIGl0IGhhcyBhIGZhY2UgcHJvcGVydHkgaW4gdGhhdCBsaXN0LiIKICAo c2F2ZS1leGN1cnNpb24KICAgIChzZXRxIGFyZyAob3IgYXJnIDEpKQogICAgKGxldCAoKG92 ZXJsYXkgKHNwZWNrLW92ZXJsYXktYXQtcG9pbnQgbmlsIGZhY2VzKSkpCiAgICAgICh1bmxl c3MgKGFuZCBvdmVybGF5CgkJICAgKG9yICg8IChvdmVybGF5LXN0YXJ0IG92ZXJsYXkpIChw b2ludCkpCgkJICAgICAgIChzZXRxIG92ZXJsYXkgbmlsKSkKCQkgICAob3IgKD0gYXJnIDEp CgkJICAgICAgIChwcm9nbgoJCQkgKHNldHEgYXJnICgxLSBhcmcpKQoJCQkgKGdvdG8tY2hh ciAob3ZlcmxheS1zdGFydCBvdmVybGF5KSkKCQkJIChzZXRxIG92ZXJsYXkgbmlsKSkpKQoJ KHNhdmUtcmVzdHJpY3Rpb24KCSAgOzsgVGhpcyBuYXJyb3dpbmcgc2hvdWxkIGJlIHNhZmUu CgkgIChuYXJyb3ctdG8tcmVnaW9uICh3aW5kb3ctc3RhcnQpIChwb2ludCkpCgkgICh3aGls ZSAoYW5kIChub3Qgb3ZlcmxheSkgKD4gKHBvaW50KSAocG9pbnQtbWluKSkgKD49IGFyZyAw KSkKCSAgICAoZ290by1jaGFyIChwcmV2aW91cy1vdmVybGF5LWNoYW5nZSAocG9pbnQpKSkK CSAgICAoc2V0cSBvdmVybGF5IChzcGVjay1vdmVybGF5LWF0LXBvaW50IG5pbCBmYWNlcykp CgkgICAgKHdoZW4gKGFuZCBvdmVybGF5ICg+IGFyZyAxKSkKCSAgICAgIChzZXRxIG92ZXJs YXkgbmlsKQoJICAgICAgKHNldHEgYXJnICgxLSBhcmcpKSkpKSkKICAgICAgb3ZlcmxheSkp KQoKKGRlZnVuIHNwZWNrLWlnbm9yZWQgKHdvcmQpCiAgIlJldHVybiBub24tbmlsIGlmIFdP UkQgaXMgb24gdGhlIGN1cnJlbnQgYnVmZmVyJ3MgbGlzdCBvZiBpZ25vcmVkIHdvcmRzLiIK ICAobWVtYmVyIHdvcmQgc3BlY2staWdub3JlLWxpc3QpKQoKKGRlZnVuIHNwZWNrLWlnbm9y ZSAod29yZCkKICAiQWRkIFdPUkQgdG8gdGhlIGN1cnJlbnQgYnVmZmVyJ3MgbGlzdCBvZiBp Z25vcmVkIHdvcmRzLiIKICAoc2V0cSBzcGVjay1pZ25vcmUtbGlzdCAoY29ucyB3b3JkIHNw ZWNrLWlnbm9yZS1saXN0KSkpCgooZGVmdW4gc3BlY2staWdub3JlLW5vdCAod29yZCkKICAi UmVtb3ZlIFdPUkQgZnJvbSB0aGUgY3VycmVudCBidWZmZXIncyBsaXN0IG9mIGlnbm9yZWQg d29yZHMuCkludGVyYWN0aXZlbHkgcHJvbXB0IGZvciB0aGUgd29yZCB0byByZW1vdmUuIgog IChpbnRlcmFjdGl2ZSAiTSIpCiAgKHNldHEgc3BlY2staWdub3JlLWxpc3QgKGRlbGV0ZSB3 b3JkIHNwZWNrLWlnbm9yZS1saXN0KSkKICA7OyBXZSBoYXZlIHRvIHJlLXNwZWNrIHRoZSBl bnRpcmUgYnVmZmVyIGFuZCBhbGwgaXRzIHdpbmRvd3MuCiAgKHNwZWNrLXJlbW92ZS10ZXh0 LXByb3BlcnRpZXMpCiAgKHNwZWNrLWFkZC1idWZmZXItd2luZG93cykpCgo7OyBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXwo7OzsJCQkJQWRk aW5nIFdvcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfCjs7IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCjs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfCgooZGVmdW4g c3BlY2stYWRkLWNsZWFudXAgKG92ZXJsYXkgZnJvbSB0byB3b3JkKQogICJDbGVhbiB1cCBj dXJyZW50IGJ1ZmZlciBhZnRlciBXT1JEIGhhcyBiZWVuIGFkZGVkLgpPVkVSTEFZIGlzIHRo ZSBvdmVybGF5IGNvdmVyaW5nIFdPUkQsIEZST00gYW5kIFRPIGFyZQppdHMgYm91bmRhcmll cy4iCiAgKHdpdGgtc2lsZW50LW1vZGlmaWNhdGlvbnMKICAgKGRlbGV0ZS1vdmVybGF5IG92 ZXJsYXkpCiAgIChzcGVjay1yZW1vdmUtdGV4dC1wcm9wZXJ0aWVzIGZyb20gdG8pCiAgIDs7 IFJlbW92ZSBhbGwgc3BlY2sgb3ZlcmxheXMgYW5kIHByb3BlcnRpZXMgY292ZXJpbmcgYW55 IGluc3RhbmNlCiAgIDs7IG9mIFdPUkQgaW4gdGhpcyBidWZmZXIuCiAgIChzYXZlLWV4Y3Vy c2lvbgogICAgIChzYXZlLXJlc3RyaWN0aW9uCiAgICAgICAod2lkZW4pCiAgICAgICAoZ290 by1jaGFyIChwb2ludC1taW4pKQogICAgICAgKHVubGVzcyAoZ2V0LWNoYXItcHJvcGVydHkg KHBvaW50KSAnc3BlY2spCgkgKGdvdG8tY2hhciAob3IgKG5leHQtc2luZ2xlLWNoYXItcHJv cGVydHktY2hhbmdlIChwb2ludCkgJ3NwZWNrKQoJCQkocG9pbnQtbWF4KSkpCgkgKGxldCAo cHJvcGVydHkpCgkgICAod2hpbGUgKG5vdCAoZW9icCkpCgkgICAgIChzZXRxIGZyb20gKHBv aW50KSkKCSAgICAgKHNldHEgdG8gKG9yIChuZXh0LXNpbmdsZS1jaGFyLXByb3BlcnR5LWNo YW5nZSBmcm9tICdzcGVjaykKCQkJICAocG9pbnQtbWF4KSkpCgkgICAgIChzZXRxIG92ZXJs YXkgKGNkciAoZ2V0LWNoYXItcHJvcGVydHktYW5kLW92ZXJsYXkgZnJvbSAnc3BlY2spKSkK CSAgICAgKHdoZW4gKGFuZCBvdmVybGF5IChzdHJpbmctZXF1YWwgKHNwZWNrLXN0cmluZyBm cm9tIHRvKSB3b3JkKSkKCSAgICAgICAoZGVsZXRlLW92ZXJsYXkgb3ZlcmxheSkKCSAgICAg ICAoc3BlY2stcmVtb3ZlLXRleHQtcHJvcGVydGllcyBmcm9tIHRvKSkKCSAgICAgKGdvdG8t Y2hhciAob3IgKG5leHQtc2luZ2xlLWNoYXItcHJvcGVydHktY2hhbmdlIChwb2ludCkgJ3Nw ZWNrKQoJCQkgICAgKHBvaW50LW1heCkpKSkpKSkpKQoKICA7OyBBZGQgYnVmZmVyJ3Mgd2lu ZG93cyB0byBgc3BlY2std2luZG93LWxpc3QnLgogIChzcGVjay1hZGQtYnVmZmVyLXdpbmRv d3MpKQoKKGRlZnVuIHNwZWNrLWFkZC13b3JkIChvdmVybGF5KQogICJBZGQgd29yZCBjb3Zl cmVkIGJ5IE9WRVJMQVkgdG8gZGljdGlvbmFyeSBvciB3b3JkIGxpc3QuIgogIChpbnRlcmFj dGl2ZSkKICAobGV0KiAoKGZyb20gKG92ZXJsYXktc3RhcnQgb3ZlcmxheSkpCgkgKHRvIChv dmVybGF5LWVuZCBvdmVybGF5KSkKCSAod29yZCAoc3BlY2stc3RyaW5nIGZyb20gdG8pKQoJ IChmYWNlIChvdmVybGF5LWdldCBvdmVybGF5ICdmYWNlKSkKCSAoaWdub3JlZCAoc3BlY2st aWdub3JlZCB3b3JkKSkpCiAgICAod2hlbiBvdmVybGF5CiAgICAgIChvdmVybGF5LXB1dCBv dmVybGF5ICdmYWNlICdzcGVjay1xdWVyeSkKICAgICAgKG1lc3NhZ2UgKGNvbmNhdAoJCShm b3JtYXQgIlwicFwiIGFkZHMgYCVzJyB0byBwZXJzb25hbCBkaWN0aW9uYXJ5IiB3b3JkKQoJ CSh1bmxlc3MgKHN0cmluZy1lcXVhbCB3b3JkIChkb3duY2FzZSB3b3JkKSkKCQkgIChmb3Jt YXQgIiAoXCJsXCIgYWRkcyBgJXMnKSIgKGRvd25jYXNlIHdvcmQpKSkKCQk7OyBTdXBwcmVz cyB0aGUgZm9sbG93aW5nIHdoZW4gYW4gZW50cnkgYWxyZWFkeSBleGlzdHMuCgkJKHVubGVz cyBpZ25vcmVkIChmb3JtYXQgIiwgXCJpXCIgaWdub3JlcyBpdCIpKSkpCiAgICAgICh1bndp bmQtcHJvdGVjdAoJICAobGV0KiAoKGNoYXIgKHJlYWQtZXZlbnQpKQoJCSAoa2V5ICh2ZWN0 b3IgY2hhcikpCgkJIChjYXNlLWZvbGQtc2VhcmNoIHQpKQoJICAgIChjb25kCgkgICAgICgo YW5kIChpbnRlZ2VycCBjaGFyKQoJCSAgIChvciAoY2hhci1lcXVhbCBjaGFyID9wKSAoY2hh ci1lcXVhbCBjaGFyID8qKSkpCgkgICAgICAocHJvY2Vzcy1zZW5kLXN0cmluZyBzcGVjay1w cm9jZXNzIChjb25jYXQgIioiIHdvcmQgIlxuIikpCgkgICAgICAocHJvY2Vzcy1zZW5kLXN0 cmluZyBzcGVjay1wcm9jZXNzICIjXG4iKQoJICAgICAgKHNwZWNrLWFkZC1jbGVhbnVwIG92 ZXJsYXkgZnJvbSB0byB3b3JkKSkKCSAgICAgKChhbmQgKGludGVnZXJwIGNoYXIpCgkJICAg KG9yIChjaGFyLWVxdWFsIGNoYXIgP2wpIChjaGFyLWVxdWFsIGNoYXIgPyYpKSkKCSAgICAg IChwcm9jZXNzLXNlbmQtc3RyaW5nIHNwZWNrLXByb2Nlc3MgKGNvbmNhdCAiJiIgd29yZCAi XG4iKSkKCSAgICAgIChwcm9jZXNzLXNlbmQtc3RyaW5nIHNwZWNrLXByb2Nlc3MgIiNcbiIp CgkgICAgICAoc3BlY2stYWRkLWNsZWFudXAgb3ZlcmxheSBmcm9tIHRvIHdvcmQpKQoJICAg ICAoKGFuZCAoaW50ZWdlcnAgY2hhcikgKGNoYXItZXF1YWwgY2hhciA/aSkgKG5vdCBpZ25v cmVkKSkKCSAgICAgIChzcGVjay1pZ25vcmUgd29yZCkKCSAgICAgIChzcGVjay1hZGQtY2xl YW51cCBvdmVybGF5IGZyb20gdG8gd29yZCkpCgkgICAgICh0CgkgICAgICAoc2V0cSB0aGlz LWNvbW1hbmQgJ21vZGUtZXhpdGVkKQoJICAgICAgKHNldHEgdW5yZWFkLWNvbW1hbmQtZXZl bnRzCgkJICAgIChhcHBlbmQgKGxpc3RpZnkta2V5LXNlcXVlbmNlIGtleSkKCQkJICAgIHVu cmVhZC1jb21tYW5kLWV2ZW50cykpKSkpCgoJOzsgUmVzdG9yZSBwcmV2aW91cyBmYWNlLgoJ KHdoZW4gKG92ZXJsYXlwIG92ZXJsYXkpCgkgIChvdmVybGF5LXB1dCBvdmVybGF5ICdmYWNl IGZhY2UpKSkpKSkKCihkZWZ1biBzcGVjay1hZGQtcHJldmlvdXMgKCZvcHRpb25hbCBhcmcp CiAgIkFkZCBwcmV2aW91cyBoaWdobGlnaHRlZCB3b3JkIG9uIHNlbGVjdGVkIHdpbmRvdy4K V2l0aCBBUkcgbiBkbyB0aGlzIGZvciBudGggaGlnaGxpZ2h0ZWQgd29yZCBwcmVjZWRpbmcg YHBvaW50Jy4iCiAgKGludGVyYWN0aXZlICJwIikKICAobGV0ICgob3ZlcmxheSAoc3BlY2st cHJldmlvdXMtb3ZlcmxheSAob3IgYXJnIDEpICcoc3BlY2stZ3Vlc3Mgc3BlY2stbWlzcykp KSkKICAgIChpZiBvdmVybGF5Cgkoc3BlY2stYWRkLXdvcmQgb3ZlcmxheSkKICAgICAgKGxl dCAobWVzc2FnZS1sb2ctbWF4KQoJKG1lc3NhZ2UgIk5vIHdvcmQgZm91bmQgLi4uIikpKSkp CgooZGVmdW4gc3BlY2stYWRkLW5leHQgKCZvcHRpb25hbCBhcmcpCiAgIkFkZCBuZXh0IGhp Z2hsaWdodGVkIHdvcmQgb24gc2VsZWN0ZWQgd2luZG93LgpXaXRoIEFSRyBuIGRvIHRoaXMg Zm9yIG50aCBoaWdobGlnaHRlZCB3b3JkIGZvbGxvd2luZyBgcG9pbnQnLiIKICAoaW50ZXJh Y3RpdmUgInAiKQogIChsZXQgKChvdmVybGF5IChzcGVjay1uZXh0LW92ZXJsYXkgKG9yIGFy ZyAxKSAnKHNwZWNrLWd1ZXNzIHNwZWNrLW1pc3MpKSkpCiAgICAoaWYgb3ZlcmxheQoJKHNw ZWNrLWFkZC13b3JkIG92ZXJsYXkpCiAgICAgIChsZXQgKG1lc3NhZ2UtbG9nLW1heCkKCSht ZXNzYWdlICJObyB3b3JkIGZvdW5kIC4uLiIpKSkpKQoKOzsgX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8KOzs7CQkJICAgICAgIE1lbnVzICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8KOzsgX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8KCihkZWZ1biBzcGVj ay1tZW51LXRhaWwgKGxvd2VyIGlnbm9yZSkKICAiUHJlY2FsY3VsYXRlZCB0YWlsIGZvciBw b3B1cCBtZW51LiIKICAoYXBwZW5kCiAgIChsaXN0CiAgICAiIgogICAgKGNvbnMgIi0tLSIg Ii0tLSIpCiAgICA7OyBSZWFkaW5nIHRoZSBjb3JyZWN0IHdvcmQgZnJvbSB0aGUgbWluaWJ1 ZmZlciBzb3VuZHMgbHVkaWNyb3VzIGJ1dAogICAgOzsgaGFzIHRoZSBhZHZhbnRhZ2UgdGhh dCBvbmUgZG9lcyBub3QgaGF2ZSB0byBtb3ZlIHBvaW50IGZvcgogICAgOzsgY29ycmVjdGlu ZyB0aGUgd29yZCBpbiBwbGFjZSBhbmQgc29tZSBoaXN0b3J5IG1heSBiZSBhdmFpbGFibGUu CiAgICAoY29ucyAiQ29ycmVjdCB3b3JkIHZpYSBtaW5pYnVmZmVyIiAnbWluaWJ1ZmZlcikK ICAgIChjb25zICJBZGQgdG8gcGVyc29uYWwgZGljdGlvbmFyeSIgJ3BlcnNvbmFsKSkKICAg KHdoZW4gbG93ZXIgKGxpc3QgKGNvbnMgIkFkZCBsb3dlci1jYXNlIHZlcnNpb24iICdsb3dl cikpKQogICA7OyBJR05PUkUgc2hvdWxkIGJlIG5vbi1uaWwgaGVyZSwgb3RoZXJ3aXNlIHdl IHNob3VsZCBuZXZlciBoYXZlIGdvdAogICA7OyBhIG1lbnUgaGVyZSBpbiB0aGUgZmlyc3Qg cGxhY2UuCiAgICh3aGVuIGlnbm9yZSAobGlzdCAoY29ucyAiSWdub3JlIHdvcmQgaW4gdGhp cyBzZXNzaW9uIiAnaWdub3JlKSkpKSkKCihkZWZ1biBzcGVjay1wb3B1cC1tZW51IChwb3Nu ICZvcHRpb25hbCBmYWNlcykKICAiUG9wIHVwIHNwZWNrIG1lbnUgYXQgcG9zaXRpb24gUE9T Ti4iCiAgKGxldCAoKG92ZXJsYXkgKHNwZWNrLW92ZXJsYXktYXQtcG9pbnQgbmlsIGZhY2Vz KSkKCShwcm9jZXNzIHNwZWNrLXByb2Nlc3MpKQogICAgKHdoZW4gKGFuZCBvdmVybGF5IHBy b2Nlc3MpCiAgICAgIDs7IFByZWVtcHQgYHNwZWNrLXByb2Nlc3MnIGFuZCB1bndpbmQtcHJv dGVjdCB0aGUgZm9sbG93aW5nIHRvCiAgICAgIDs7IGFzc2VydCB0aGF0IHByZWVtcHRpb24g aXMgY2FuY2VsZWQgKHdlIGRvIHRoaXMgdG8gYXZvaWQgdGhhdAogICAgICA7OyBzcGVja2lu ZyBjb250aW51ZXMgZHVyaW5nIHBvcHVwcykuCiAgICAgIChwcm9jZXNzLXB1dCBwcm9jZXNz ICdwcmVlbXB0ZWQgdCkKICAgICAgKHVud2luZC1wcm90ZWN0CgkgIChsZXQqICgoZnJvbSAo b3ZlcmxheS1zdGFydCBvdmVybGF5KSkKCQkgKHRvIChvdmVybGF5LWVuZCBvdmVybGF5KSkK CQkgKHdvcmQgKHNwZWNrLXN0cmluZyBmcm9tIHRvKSkKCQkgKGd1ZXNzZXMKCQkgIChsZXQg KGxpc3QpCgkJICAgIChucmV2ZXJzZQoJCSAgICAgKGRvbGlzdCAoaXRlbSAoc3BlY2std29y ZCB3b3JkKSBsaXN0KQoJCSAgICAgICAoc2V0cSBsaXN0IChjb25zIChjb25zIGl0ZW0gaXRl bSkgbGlzdCkpKSkpKQoJCSAoaWdub3JlZCAoc3BlY2staWdub3JlZCB3b3JkKSkKCQkgKHNw ZWNrLXJlcGxhY2UtcXVlcnkgc3BlY2stcmVwbGFjZS1xdWVyeSkKCQkgKHJlcGxhY2UgKHgt cG9wdXAtbWVudQoJCQkgICBwb3NuCgkJCSAgIDs7IFB1dCBkaWN0aW9uYXJ5IGluIG1lbnUg KHRoZSB1c2VyIHNob3VsZAoJCQkgICA7OyBub3QgaGF2ZSB0byBndWVzcyB3aGljaCBsYW5n dWFnZSBpcyB1c2VkKS4KCQkJICAgKGxpc3QKCQkJICAgIHdvcmQKCQkJICAgIChjb25zICIi IChvciBndWVzc2VzIChsaXN0ICIiKSkpCgkJCSAgICAoc3BlY2stbWVudS10YWlsCgkJCSAg ICAgKG5vdCAoc3RyaW5nLWVxdWFsIHdvcmQgKGRvd25jYXNlIHdvcmQpKSkKCQkJICAgICAo bm90IGlnbm9yZWQpKSkpKSkKCSAgICAod2hpbGUgKGVxIHJlcGxhY2UgJ3F1ZXJ5KQoJICAg ICAgKHNldHEgc3BlY2stcmVwbGFjZS1xdWVyeSAobm90IHNwZWNrLXJlcGxhY2UtcXVlcnkp KQoJICAgICAgKHNldHEgcmVwbGFjZSAoeC1wb3B1cC1tZW51CgkJCSAgICAgcG9zbgoJCQkg ICAgIChsaXN0CgkJCSAgICAgIHdvcmQKCQkJICAgICAgKGNvbnMgIiIgKG9yIGd1ZXNzZXMg IiIgKGxpc3QgIiIpKSkKCQkJICAgICAgKHNwZWNrLW1lbnUtdGFpbAoJCQkgICAgICAgKG5v dCAoc3RyaW5nLWVxdWFsIHdvcmQgKGRvd25jYXNlIHdvcmQpKSkKCQkJICAgICAgIChub3Qg aWdub3JlZCkpKSkpKQoJICAgICh3aGVuIChlcSByZXBsYWNlICdtaW5pYnVmZmVyKQoJICAg ICAgKHNldHEgcmVwbGFjZQoJCSAgICAocmVhZC1mcm9tLW1pbmlidWZmZXIKCQkgICAgICJD b3JyZWN0IHdvcmQ6ICIgd29yZCBtaW5pYnVmZmVyLWxvY2FsLW1hcCBuaWwKCQkgICAgICdz cGVjay1yZXBsYWNlLWhpc3Rvcnkgd29yZCB0KSkpCgkgICAgKGNvbmQKCSAgICAgKChtZW1x IHJlcGxhY2UgJyhwZXJzb25hbCBsb3dlcikpCgkgICAgICAoaWYgKGVxIHJlcGxhY2UgJ3Bl cnNvbmFsKQoJCSAgKHByb2Nlc3Mtc2VuZC1zdHJpbmcgc3BlY2stcHJvY2VzcyAoY29uY2F0 ICIqIiB3b3JkICJcbiIpKQoJCShwcm9jZXNzLXNlbmQtc3RyaW5nCgkJIHNwZWNrLXByb2Nl c3MgKGNvbmNhdCAiJiIgd29yZCAiXG4iKSkpCgkgICAgICAocHJvY2Vzcy1zZW5kLXN0cmlu ZyBzcGVjay1wcm9jZXNzICIjXG4iKQoJICAgICAgKHNwZWNrLWFkZC1jbGVhbnVwIG92ZXJs YXkgZnJvbSB0byB3b3JkKSkKCSAgICAgKChhbmQgKGVxIHJlcGxhY2UgJ2lnbm9yZSkgKG5v dCBpZ25vcmVkKSkKCSAgICAgIChzcGVjay1pZ25vcmUgd29yZCkKCSAgICAgIChzcGVjay1h ZGQtY2xlYW51cCBvdmVybGF5IGZyb20gdG8gd29yZCkpCgkgICAgIChyZXBsYWNlCgkgICAg ICAodW5sZXNzIChhdG9tIHJlcGxhY2UpCgkJKHNldHEgcmVwbGFjZSAoY2FyIHJlcGxhY2Up KSkKCSAgICAgIChzcGVjay1yZXBsYWNlLXdvcmQgZnJvbSB0byB3b3JkIHJlcGxhY2Ugb3Zl cmxheSkpKSkKCShwcm9jZXNzLXB1dCBwcm9jZXNzICdwcmVlbXB0ZWQgbmlsKSkpKSkKCihk ZWZ1biBzcGVjay1wb3B1cC1tZW51LWF0LXBvaW50ICgmb3B0aW9uYWwgYXQgcG9pbnQpCiAg IlBvcCB1cCBzcGVjayBtZW51LgpPcHRpb25hbCBhcmd1bWVudHMgQVQgYW5kIFBPSU5UIGlm IHNldCBtZWFuIHBvcHVwIG1lbnUgYXQgcG9zaXRpb24gQVQKYW5kIHJldHVybiB0byBwb3Np dGlvbiBQT0lOVCBhZnRlcndhcmRzLiAgQXQgbGVhc3Qgb25lIGxldHRlciBvZiB0aGUKaW5j b3JyZWN0IHdvcmQgbXVzdCBhcHBlYXIgYXQgdGhlIHJpZ2h0IG9mIGBwb2ludCcuIgogIChp bnRlcmFjdGl2ZSkKICAoc2V0LW1hcmtlciBzcGVjay1tYXJrZXIgKG9yIHBvaW50IChwb2lu dCkpKQogIChzZXRxIHNwZWNrLW1hcmtlci13aW5kb3cgKHNlbGVjdGVkLXdpbmRvdykpCiAg KHdoZW4gYXQgKGdvdG8tY2hhciBhdCkpCiAgKGxldCAoKHBvc24gKHBvc24tYXQtcG9pbnQp KSkKICAgIDs7IEFsd2F5cyBqdW1wIGJhY2sgdG8gYHNwZWNrLW1hcmtlcicuCiAgICAodW53 aW5kLXByb3RlY3QKCShzcGVjay1wb3B1cC1tZW51CgkgKGxpc3QgKGxpc3QgKGNhciAocG9z bi14LXkgcG9zbikpIChjZHIgKHBvc24teC15IHBvc24pKSkKCSAgICAgICAocG9zbi13aW5k b3cgcG9zbikpKQogICAgICAoc3BlY2stZ290by1tYXJrZXIpKSkpCgooZGVmdW4gc3BlY2st cG9wdXAtbWVudS1wcmV2aW91cyAoJm9wdGlvbmFsIGFyZykKICAiUG9wdXAgbWVudSBmb3Ig cHJldmlvdXMgd29yZCB3aXRoIGd1ZXNzZXMgb3IgbWlzcy4KV2l0aCBBUkcgbiBkbyB0aGlz IGZvciBudGggc3VjaCB3b3JkIHByZWNlZGluZyBgcG9pbnQnLiIKICAoaW50ZXJhY3RpdmUg InAiKQogIChsZXQgKChvdmVybGF5IChzcGVjay1wcmV2aW91cy1vdmVybGF5IChvciBhcmcg MSkgJyhzcGVjay1ndWVzcyBzcGVjay1taXNzKSkpKQogICAgKGlmIG92ZXJsYXkKCShzcGVj ay1wb3B1cC1tZW51LWF0LXBvaW50IChvdmVybGF5LXN0YXJ0IG92ZXJsYXkpIChwb2ludCkp CiAgICAgIChsZXQgKG1lc3NhZ2UtbG9nLW1heCkKCShtZXNzYWdlICJObyB3b3JkIGZvdW5k IC4uLiIpKSkpKQoKKGRlZnVuIHNwZWNrLXBvcHVwLW1lbnUtbmV4dCAoJm9wdGlvbmFsIGFy ZykKICAiUG9wdXAgbWVudSBmb3IgbmV4dCB3b3JkIHdpdGggZ3Vlc3NlcyBvciBtaXNzLgpX aXRoIEFSRyBuIGRvIHRoaXMgZm9yIG50aCBzdWNoIHdvcmQgZm9sbG93aW5nIGBwb2ludCcu IgogIChpbnRlcmFjdGl2ZSAicCIpCiAgKGxldCAoKG92ZXJsYXkgKHNwZWNrLW5leHQtb3Zl cmxheSAob3IgYXJnIDEpICcoc3BlY2stZ3Vlc3Mgc3BlY2stbWlzcykpKSkKICAgIChpZiBv dmVybGF5Cgkoc3BlY2stcG9wdXAtbWVudS1hdC1wb2ludCAob3ZlcmxheS1zdGFydCBvdmVy bGF5KSAocG9pbnQpKQogICAgICAobGV0IChtZXNzYWdlLWxvZy1tYXgpCgkobWVzc2FnZSAi Tm8gd29yZCBmb3VuZCAuLi4iKSkpKSkKCihkZWZ1biBzcGVjay1tb3VzZS1wb3B1cC1tZW51 IChldmVudCkKICAiUG9wIHVwIHNwZWNrIG1lbnUgYXQgbW91c2UtcG9zaXRpb24uClNob3Vs ZCBiZSBib3VuZCB0byBhIGNsaWNrIGV2ZW50LiIKICAoaW50ZXJhY3RpdmUgImUiKQogIChz ZXQtbWFya2VyIHNwZWNrLW1hcmtlciAod2luZG93LXBvaW50KSAoY3VycmVudC1idWZmZXIp KQogIChzZXRxIHNwZWNrLW1hcmtlci13aW5kb3cgKHNlbGVjdGVkLXdpbmRvdykpCiAgKG1v dXNlLXNldC1wb2ludCBldmVudCkKICA7OyBBbHdheXMganVtcCBiYWNrIHRvIGBzcGVjay1t YXJrZXInLgogICh1bndpbmQtcHJvdGVjdAogICAgICAoc3BlY2stcG9wdXAtbWVudSBldmVu dCkKICAgIChzcGVjay1nb3RvLW1hcmtlcikpKQoKOzsgX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8KOzs7CQkJICAgICAgIFBhcnNpbmcgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8KOzsgX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8KCihkZWZ1biBzcGVjay1t YWtlLW92ZXJsYXkgKGZyb20gdG8gZmFjZSkKICAiTWFrZSBvdmVybGF5IGZyb20gRlJPTSB0 byBUTyB3aXRoIGZhY2UgRkFDRS4iCiAgKHVubGVzcyAob3IgKHNwZWNrLWlnbm9yZWQgKHNw ZWNrLXN0cmluZyBmcm9tIHRvKSkKCSAgICAgIChhbmQgKGVxIG1ham9yLW1vZGUgJ3RleGlu Zm8tbW9kZSkKCQkgICAob3IgKGVxIChjaGFyLWJlZm9yZSBmcm9tKSA/XEApCgkJICAgICAg IChzYXZlLWV4Y3Vyc2lvbgoJCQkgKGdvdG8tY2hhciBmcm9tKQoJCQkgKGJlZ2lubmluZy1v Zi1saW5lKQoJCQkgKGxvb2tpbmctYXQgIlxcQFxcKD86XFwoPzpkZWZcXCg/OnVuXFx8dmFy XFx8b3B0XFx8Zm5cXClcXClcXHxlbmRcXCkiKSkpKSkKICAgIChsZXQgKChvdmVybGF5ICht YWtlLW92ZXJsYXkgZnJvbSB0bykpKQogICAgICAob3ZlcmxheS1wdXQgb3ZlcmxheSAnc3Bl Y2sgdCkKICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2V2YXBvcmF0ZSB0KQogICAgICAo b3ZlcmxheS1wdXQgb3ZlcmxheSAnZmFjZSBmYWNlKQogICAgICAob3ZlcmxheS1wdXQgb3Zl cmxheSAna2V5bWFwIHNwZWNrLW92ZXJsYXktbWFwKSkpKQoKKGRlZnVuIHNwZWNrLXdvcmRj aGFycyAod29yZGNoYXJzLXJlZ2V4cCkKICAiU3BlY2sncyBpbnRlcm5hbCB3b3JkY2hhcnMg ZnVuY3Rpb24uIgogIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgOzsgUmVwbGFjZSBjaGFy IGF0IEJPQi4KICAod2hlbiAobG9va2luZy1hdCB3b3JkY2hhcnMtcmVnZXhwKQogICAgKHJl cGxhY2UtbWF0Y2ggIiAiKQogICAgKGZvcndhcmQtY2hhcikpCiAgKHdoaWxlIChyZS1zZWFy Y2gtZm9yd2FyZCB3b3JkY2hhcnMtcmVnZXhwIG5pbCB0KQogICAgKGJhY2t3YXJkLWNoYXIg MSkKICAgIChpZiAoZXEgKGNoYXItc3ludGF4IChjaGFyLWJlZm9yZSkpID9cdykKCShwcm9n bgoJICAoZm9yd2FyZC1jaGFyKQoJICAod2hlbiAob3IgKGVvYnApIChub3QgKGVxIChjaGFy LXN5bnRheCAoY2hhci1hZnRlcikpID9cdykpKQoJICAgIDs7IFJlcGxhY2UgY2hhciBhdCBF T0Igb3IgZm9sbG93ZWQgYnkgYSBub24td29yZC1jaGFyLgoJICAgIChkZWxldGUtY2hhciAt MSkKCSAgICAoaW5zZXJ0ID9cICkpKQogICAgICA7OyBSZXBsYWNlIGNoYXIgcHJlY2VkZWQg YnkgYSBub24td29yZC1jaGFyLgogICAgICAoZGVsZXRlLWNoYXIgMSkKICAgICAgKGluc2Vy dCA/XCApCiAgICAgIChmb3J3YXJkLWNoYXIpKSkpCgooZGVmdW4gc3BlY2stbG9nICgmcmVz dCByZXN0KQogICJMb2cgUkVTVCBpbiBvdXIgTG9nIGJ1ZmZlci4iCiAgKHdpdGgtY3VycmVu dC1idWZmZXIgKHNwZWNrLWxvZy1idWZmZXIpCiAgICAoZ290by1jaGFyIChwb2ludC1tYXgp KQogICAgKHdoZW4gcmVzdAogICAgICAoaW5zZXJ0IChmb3JtYXQgIiVzIiAoY2FyIHJlc3Qp KSkKICAgICAgKHNldHEgcmVzdCAoY2RyIHJlc3QpKQogICAgICAod2hpbGUgcmVzdAoJKGlu c2VydCAoZm9ybWF0ICIgJXMiIChjYXIgcmVzdCkpKQoJKHNldHEgcmVzdCAoY2RyIHJlc3Qp KSkKICAgICAgKGluc2VydCAiXG4iKSkpKQoKKGRlZnVuIHNwZWNrLWNodW5rIChmcm9tLTEg dG8tMSBwcm9jZXNzIHdpbmRvdy1idWZmZXIgZnJvbSB0bykKICAiU3BlY2sgY3VycmVudCBi dWZmZXIncyBjaHVuayBmcm9tIEZST00tMSB0byBUTy0xLgpUaGUgY3VycmVudCBidWZmZXIg Y29udGFpbnMgdGhlIHN0cmV0Y2ggdG8gcGFyc2Ugd2hlbiB0aGlzIGdldHMKY2FsbGVkIGFu ZCBGUk9NLTEgYW5kIFRPLTEgYXJlIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBjaHVuayB0 bwpzZW5kIHRvIHRoZSBzcGVsbGluZyBwcm9jZXNzIFBST0NFU1MgLgoKV0lORE9XLUJVRkZF UiBpcyB0aGUgYnVmZmVyIHdoZXJlIHRoZSBjaHVuayBvcmlnaW5hbGx5IHN0ZW1zIGZyb20K YW5kIEZST00gYW5kIFRPIGFyZSB0aGUgc3RhcnQgYW5kIGVuZCBwb3NpdGlvbnMgb2YgdGhl IHN0cmV0Y2gKdGhhdCBjb250YWlucyB0aGlzIGNodW5rLiAgQW55IG92ZXJsYXlzIHJlcHJl c2VudGluZyBndWVzc2VzIGFuZAptaXNzZXMgYXJlIG1hZGUgaW4gV0lORE9XLUJVRkZFUiBi eSBhZGRpbmcgdGhlIGNodW5rIHN0YXJ0CnBvc2l0aW9uIEZST00tMSB0byB0aGUgc3RyZXRj aCBzdGFydCBwb3NpdGlvbiBGUk9NLiIKICAobGV0IChkb25lIHBvcyBhdCBsZW5ndGggd29y ZCBsb2ctY2h1bmsgbG9nLW91dHB1dCByZWFkKQoKICAgIDs7IFByb2Nlc3Mgc3RhbGUgb3V0 cHV0LgogICAgKHdpdGgtY3VycmVudC1idWZmZXIgKHByb2Nlc3MtYnVmZmVyIHByb2Nlc3Mp CiAgICAgIChzaXQtZm9yIDAuMDUpCiAgICAgIChlcmFzZS1idWZmZXIpCiAgICAgIChtb3Zl LW1hcmtlciBzcGVjay1wcm9jZXNzLW1hcmtlciAocG9pbnQtbWluKSkpCgogICAgKHNhdmUt ZXhjdXJzaW9uCiAgICAgIDs7IEluc2VydCBhIGxlYWRpbmcgIl4iIGFuZCBhIGZpbmFsIG5l d2xpbmUsIHNlbmQgdGhlIHJlZ2lvbiB0bwogICAgICA7OyB0aGUgc3BlbGwgcHJvY2VzcyBh bmQgcmV2ZXJ0IHRoZSBpbnNlcnRpb25zIGltbWVkaWF0ZWx5LgogICAgICAoZ290by1jaGFy IHRvLTEpIChpbnNlcnQtY2hhciA/XG4pCiAgICAgIChnb3RvLWNoYXIgZnJvbS0xKSAoaW5z ZXJ0ICJeIikKICAgICAgKHByb2Nlc3Mtc2VuZC1yZWdpb24gcHJvY2VzcyBmcm9tLTEgKCsg dG8tMSAyKSkKICAgICAgKGdvdG8tY2hhciBmcm9tLTEpIChkZWxldGUtY2hhciAxKQogICAg ICAoZ290by1jaGFyIHRvLTEpIChkZWxldGUtY2hhciAxKSkKCiAgICAod2l0aC1jdXJyZW50 LWJ1ZmZlciAocHJvY2Vzcy1idWZmZXIgcHJvY2VzcykKICAgICAgKHNpdC1mb3IgMC4xKQoK ICAgICAgKHdoZW4gc3BlY2stbG9nCgkobGV0ICgoc2l6ZSAoLSAocG9pbnQtbWF4KSAocG9p bnQtbWluKSkpCgkgICAgICAoc3RyaW5nIChzcGVjay1zdHJpbmcgKHBvaW50LW1pbikgKG1p biAocG9pbnQtbWF4KSAyMCkpKSkKCSAgKHdpdGgtY3VycmVudC1idWZmZXIgKHNwZWNrLWxv Zy1idWZmZXIpCgkgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKCSAgICAoaW5zZXJ0IChm b3JtYXQgIkZJUlNUOiAlcyAoJXMtJXMpICVzXG4iIHNpemUgZnJvbSB0byBzdHJpbmcpKSkp KQoKICAgICAgOzsgUXVpdCBpZiB0aGVyZSBpcyBpbnB1dC4KICAgICAgKHdoaWxlIChhbmQg KG5vdCBkb25lKQoJCSAgKG9yIChhbmQgKG5vdCBxdWl0LWZsYWcgKSAobm90IChpbnB1dC1w ZW5kaW5nLXApKSkKCQkgICAgICAocHJvZ24KCQkJKHdpdGgtY3VycmVudC1idWZmZXIgd2lu ZG93LWJ1ZmZlcgoJCQkgICh3aGVuIChwcm9jZXNzLWxpdmUtcCBzcGVjay1wcm9jZXNzKQoJ CQkgICAgKGxldCAoKHByb2Nlc3MtYnVmZmVyIChwcm9jZXNzLWJ1ZmZlciBzcGVjay1wcm9j ZXNzKSkpCgkJCSAgICAgICh3aGVuIChidWZmZXItbGl2ZS1wIHByb2Nlc3MtYnVmZmVyKQoJ CQkJKGtpbGwtYnVmZmVyIHByb2Nlc3MtYnVmZmVyKSkpKQoJCQkgIChzZXRxIHNwZWNrLXBy b2Nlc3MgbmlsKQoJCQkgIChzcGVjay1yZS1zdGFydC1wcm9jZXNzCgkJCSAgIHNwZWNrLWJ1 ZmZlci1kaWN0aW9uYXJpZXMtc3RyaW5nIHNwZWNrLWJ1ZmZlci1vcHRpb25zKSkKCgkJCSh3 aGVuIHNwZWNrLWxvZwoJCQkgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChzcGVjay1sb2ctYnVm ZmVyKQoJCQkgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKCQkJICAgIChpbnNlcnQgIlJF U1RBUlRcbiIpKSkKCgkJCShzZXRxIGRvbmUgbmlsKSkpCgkJICAocHJvZ24KCQkgICAgKHNp dC1mb3IgMC4xKQoKCQkgICAgKHdoZW4gc3BlY2stbG9nCgkJICAgICAgKGxldCAoKHNpemUg KC0gKHBvaW50LW1heCkgKHBvaW50LW1pbikpKQoJCQkgICAgKHN0cmluZyAoc3BlY2stc3Ry aW5nIDEgKG1pbiAocG9pbnQtbWF4KSAyMCkpKSkKCQkJKHdpdGgtY3VycmVudC1idWZmZXIg KHNwZWNrLWxvZy1idWZmZXIpCgkJCSAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKCQkJICAo aW5zZXJ0IChmb3JtYXQgIlJFQUQ6ICVzICglcy0lcykgJXNcbiIgc2l6ZSBmcm9tIHRvIHN0 cmluZykpKSkpCgoJCSAgICAob3IgKD4gKHBvaW50LW1heCkgKHBvaW50LW1pbikpCgkJCShw cm9nbgoKCQkJICAod2hlbiBzcGVjay1sb2cKCQkJICAgICh3aXRoLWN1cnJlbnQtYnVmZmVy IChzcGVjay1sb2ctYnVmZmVyKQoJCQkgICAgICAoZ290by1jaGFyIChwb2ludC1tYXgpKQoJ CQkgICAgICAoaW5zZXJ0ICJOTyBPVVRQVVRcbiIpKSkKCgkJCSAgKHNldHEgZG9uZSBuaWwp KSkpKQoKCSh3aGVuIHNwZWNrLWxvZwoJICAoc2V0cSBsb2ctb3V0cHV0IChzcGVjay1zdHJp bmcpKSkKCgkoZ290by1jaGFyIHNwZWNrLXByb2Nlc3MtbWFya2VyKQoJOzsgVGhpcyBpcyBz dGlsbCBhIGhhcmQgbG9vcCB3ZSBkbyBub3QgaW50ZXJydXB0IHlldC4gIEJ1dCBub3RlCgk7 OyB0aGF0IGl0IGhhcyBhbGwgaW5ncmVkaWVudHMgd2l0aCB0aGUgYnVmZmVyIHBvc2l0aW9u IG9mIGVhY2gKCTs7IG1pc3NwZWxsZWQgaXRlbSAtIHNvIHdlIGNvdWxkIHF1aXQgdGhlcmUs IGlmIHdlIHdhbnQgdG8uCgkod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJcXCheJiBcXClc XHxcXCheIyBcXCkiIG5pbCAnbm9lcnJvcikKCSAgKGNvbmQKCSAgICgobWF0Y2gtYmVnaW5u aW5nIDEpCQkJOyAmCgkgICAgKHNldHEgYXQgKHBvaW50KSkKCSAgICAoc2V0cSBsZW5ndGgg KHNraXAtY2hhcnMtZm9yd2FyZCAiXiAiKSkKCSAgICAoc2V0cSB3b3JkIChzcGVjay1zdHJp bmcgYXQgKHBvaW50KSkpCgkgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiICIpCgkgICAgKHNr aXAtY2hhcnMtZm9yd2FyZCAiMC05IikKCSAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgIikK CSAgICAoc2V0cSBhdCAocG9pbnQpKQoJICAgIChza2lwLWNoYXJzLWZvcndhcmQgIl46IikK CSAgICAoc2V0cSBwb3MgKHN0cmluZy10by1udW1iZXIgKHNwZWNrLXN0cmluZyBhdCAocG9p bnQpKSkpCgkgICAgKHdoZW4gKD0gKGZvcndhcmQtbGluZSkgMCkKCSAgICAgIChtb3ZlLW1h cmtlciBzcGVjay1wcm9jZXNzLW1hcmtlciAocG9pbnQpKQoJICAgICAgKHdpdGgtY3VycmVu dC1idWZmZXIgd2luZG93LWJ1ZmZlcgoJCShsZXQgKChmcm9tLTIgKCsgZnJvbSBwb3MgLTEp KQoJCSAgICAgICh0by0yICgrIGZyb20gcG9zIGxlbmd0aCAtMSkpKQoJCSAgKHNwZWNrLW1h a2Utb3ZlcmxheSBmcm9tLTIgdG8tMiAnc3BlY2stZ3Vlc3MpCgoJCSAgKHdoZW4gc3BlY2st bG9nCgkJICAgIChsZXQgKChzdHJpbmcgKHNwZWNrLXN0cmluZyBmcm9tLTIgdG8tMikpKQoJ CSAgICAgIChjb25kCgkJICAgICAgICgobm90IChzdHJpbmctZXF1YWwgd29yZCBzdHJpbmcp KQoJCQkod2l0aC1jdXJyZW50LWJ1ZmZlciAoc3BlY2stbG9nLWJ1ZmZlcikKCQkJICAoZ290 by1jaGFyIChwb2ludC1tYXgpKQoJCQkgIChpbnNlcnQgKGZvcm1hdCAiQkFEIFdPUkQ6ICVz IGF0OiAlcyBpcyBub3Q6ICVzXG4iCgkJCQkJICB3b3JkIGZyb20tMiBzdHJpbmcpKSkpCgkJ ICAgICAgICgoYW5kICg8IHRvLTIgKHBvaW50LW1heCkpCgkJCSAgICAgKGVxIChjaGFyLXN5 bnRheCAoY2hhci1hZnRlciB0by0yKSkgP1x3KSkKCQkJKHdpdGgtY3VycmVudC1idWZmZXIg KHNwZWNrLWxvZy1idWZmZXIpCgkJCSAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKCQkJICAo aW5zZXJ0IChmb3JtYXQgIklOQ09NUExFVEU6ICVzIGF0OiAlcyBpcyBub3Q6ICVzXG4iCgkJ CQkJICB3b3JkIGZyb20tMiBzdHJpbmcpKSkpKSkpKSkpKQoJICAgKChtYXRjaC1iZWdpbm5p bmcgMikJCQk7ICMKCSAgICAoc2V0cSBhdCAocG9pbnQpKQoJICAgIChzZXRxIGxlbmd0aCAo c2tpcC1jaGFycy1mb3J3YXJkICJeICIpKQoJICAgIChzZXRxIHdvcmQgKHNwZWNrLXN0cmlu ZyBhdCAocG9pbnQpKSkKCSAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgIikKCSAgICAoc2V0 cSBhdCAocG9pbnQpKQoJICAgIChza2lwLWNoYXJzLWZvcndhcmQgIjAtOSIpCgkgICAgKHNl dHEgcG9zIChzdHJpbmctdG8tbnVtYmVyIChzcGVjay1zdHJpbmcgYXQgKHBvaW50KSkpKQoJ ICAgICh3aGVuICg9IChmb3J3YXJkLWxpbmUpIDApCgkgICAgICAobW92ZS1tYXJrZXIgc3Bl Y2stcHJvY2Vzcy1tYXJrZXIgKHBvaW50KSkKCSAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVy IHdpbmRvdy1idWZmZXIKCQkobGV0ICgoZnJvbS0yICgrIGZyb20gcG9zIC0xKSkKCQkgICAg ICAodG8tMiAoKyBmcm9tIHBvcyBsZW5ndGggLTEpKSkKCQkgIChzcGVjay1tYWtlLW92ZXJs YXkgZnJvbS0yIHRvLTIgJ3NwZWNrLWd1ZXNzKQoKCQkgICh3aGVuIHNwZWNrLWxvZwoJCSAg ICAobGV0ICgoc3RyaW5nIChzcGVjay1zdHJpbmcgZnJvbS0yIHRvLTIpKSkKCQkgICAgICAo Y29uZAoJCSAgICAgICAoKG5vdCAoc3RyaW5nLWVxdWFsIHdvcmQgc3RyaW5nKSkKCQkJKHdp dGgtY3VycmVudC1idWZmZXIgKHNwZWNrLWxvZy1idWZmZXIpCgkJCSAgKGdvdG8tY2hhciAo cG9pbnQtbWF4KSkKCQkJICAoaW5zZXJ0IChmb3JtYXQgIkJBRCBXT1JEOiAlcyBhdDogJXMg aXMgbm90OiAlc1xuIgoJCQkJCSAgd29yZCBmcm9tLTIgc3RyaW5nKSkpKQoJCSAgICAgICAo KGFuZCAoPCB0by0yIChwb2ludC1tYXgpKQoJCQkgICAgIChlcSAoY2hhci1zeW50YXggKGNo YXItYWZ0ZXIgdG8tMikpID9cdykpCgkJCSh3aXRoLWN1cnJlbnQtYnVmZmVyIChzcGVjay1s b2ctYnVmZmVyKQoJCQkgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCgkJCSAgKGluc2VydCAo Zm9ybWF0ICJJTkNPTVBMRVRFOiAlcyBhdDogJXMgaXMgbm90OiAlc1xuIgoJCQkJCSAgd29y ZCBmcm9tLTIgc3RyaW5nKSkpKSkpKSkpKSkpKQoKCTs7IFdpdGggZXJyb3JzIHdlIGdldCB0 d28gbmV3bGluZXMgYXQgRU9CLCB3aXRob3V0IGVycm9ycyBhCgk7OyBidWZmZXIgY29udGFp bmluZyBvbmUgbmV3bGluZSBjaGFyYWN0ZXIgb25seS4gIFNldCBkb25lIHdoZW4KCTs7IHRo ZSBzcGVsbGluZyBlbmdpbmUgaGFzIHNlbnQgdXMgZXZlcnl0aGluZyBmb3IgdGhpcyBjaHVu ay4KCSh3aGVuIChhbmQgKGVxIChjaGFyLWJlZm9yZSAocG9pbnQtbWF4KSkgP1xuKQoJCSAg IChvciAoPSAocG9pbnQtbWluKSAoMS0gKHBvaW50LW1heCkpKQoJCSAgICAgICAoZXEgKGNo YXItYmVmb3JlICgxLSAocG9pbnQtbWF4KSkpID9cbikpKQoJICAoc2V0cSBkb25lIHQpKSkK CiAgICAgICh3aGVuIHNwZWNrLWxvZwoJKHdpdGgtY3VycmVudC1idWZmZXIgKHNwZWNrLWxv Zy1idWZmZXIpCgkgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCgkgIChpbnNlcnQgKGZvcm1h dCAiQ0hVTksgRE9ORTogJXMgKCVzLSVzKVxuIiBkb25lIGZyb20gdG8pKSkpCgogICAgICBk b25lKSkpCgooZGVmdW4gc3BlY2stc3RyZXRjaCAoZnJvbSB0bykKICAiU3BlY2sgY3VycmVu dCBidWZmZXIncyBzdHJldGNoIGZyb20gRlJPTSB0byBUTy4iCiAgKGxldCAoKGRvbmUgdCkK CShwcm9jZXNzIHNwZWNrLXByb2Nlc3MpCgkod2luZG93LWJ1ZmZlciAoY3VycmVudC1idWZm ZXIpKQoJKHdvcmRjaGFycy1mdW5jdGlvbiBzcGVjay13b3JkY2hhcnMtZnVuY3Rpb24pCgko d29yZGNoYXJzLXJlZ2V4cCBzcGVjay13b3JkY2hhcnMtcmVnZXhwKQoJZnJvbS0xIHRvLTEg bG9nLXN0cmV0Y2gpCiAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVh dGUgIipzcGVjay1zdHJldGNoKiIpCiAgICAgIChzZXRxIGJ1ZmZlci11bmRvLWxpc3QgdCkK ICAgICAgKGVyYXNlLWJ1ZmZlcikKICAgICAgOzsgQSByZWFsIGBpbnNlcnQtYnVmZmVyLXN1 YnN0cmluZy1uby1wcm9wZXJ0aWVzJyBpcyBhIHBpcGUgZHJlYW0uCiAgICAgIChpbnNlcnQt YnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIHdpbmRvdy1idWZmZXIgZnJvbSB0bykK CiAgICAgIDs7IFJlcGxhY2Ugd29yZGNoYXJzIHdpdGggc3BhY2VzLiAgSXQgd291bGQgYmUg dGVtcHRpbmcgdG8gY2hlY2sKICAgICAgOzsgdGhlc2Ugd2hlbiBtYWtpbmcgdGhlIG92ZXJs YXlzIGJ1dCB0aGVuIHdlIHdvdWxkIGhhdmUgdG8gc2VuZAogICAgICA7OyB0aGUgd29yZCBw cm9wZXIgYSBzZWNvbmQgdGltZSBiZWNhdXNlIHRoZSB3b3JkIG1pZ2h0IGJlCiAgICAgIDs7 IG1pc3NwZWxsZWQgb3IgaXQgbWlnaHQgYmUgZW5jbG9zZWQgYnkgdGhlIHdvcmRjaGFycywg b3IgYm90aCEKICAgICAgOzsgU2VuZGluZyB0aGUgd29yZCBhIHNlY29uZCB0aW1lIHdvdWxk IG1lYW4gdG8gaW50ZXJydXB0IHRoZQogICAgICA7OyB1bmRlcmx5aW5nIGNodW5rIGxvZ2lj IHNvIHdlIGRvIHRoYXQgcmVwbGFjZW1lbnQgaGVyZS4KICAgICAgKHdoZW4gd29yZGNoYXJz LWZ1bmN0aW9uCgkoZ290by1jaGFyIChwb2ludC1taW4pKQoJKGZ1bmNhbGwgd29yZGNoYXJz LWZ1bmN0aW9uIHdvcmRjaGFycy1yZWdleHApKQoKICAgICAgOzsgUmVwbGFjZSBuZXdsaW5l cyB3aXRoIHNwYWNlcy4gIFdlIHByb2JhYmx5IHNob3VsZCBkbyB0aGF0IGZvcgogICAgICA7 OyBjaHVua3Mgb25seSBidXQgaXQncyB0b28gdGVtcHRpbmcgdG8gcnVuIGl0IGluIG9uZSBy dXNoIGhlcmUuCiAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgICh3aGlsZSAo cmUtc2VhcmNoLWZvcndhcmQgIlxuIiBuaWwgJ25vZXJyb3IpCgkocmVwbGFjZS1tYXRjaCAi ICIpKQoKICAgICAgKHdoZW4gc3BlY2stbG9nCgk7OyBMb2cgc3RyZXRjaCAtIGl0cyBmaXJz dCBhbmQgbGFzdCBsaW5lcywgYXQgbGVhc3QuCgkoZ290by1jaGFyIChwb2ludC1taW4pKQoJ KGlmIChhbmQgKHJlLXNlYXJjaC1mb3J3YXJkICJcbiIgbmlsICdub2Vycm9yKSAobm90IChl b2JwKSkpCgkgICAgKGxldCAoKHBvaW50IChwb2ludCkpKQoJICAgICAgKHNldHEgbG9nLXN0 cmV0Y2ggKHNwZWNrLXN0cmluZyBuaWwgKDEtIChwb2ludCkpKSkKCSAgICAgIChnb3RvLWNo YXIgKHBvaW50LW1heCkpCgkgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiWyBcblx0XSIp CgkgICAgICAoaWYgKD4gKHBvaW50KSBwb2ludCkKCQkgIChzZXRxIGxvZy1zdHJldGNoCgkJ CShjb25jYXQgbG9nLXN0cmV0Y2ggIi4uLiIKCQkJCShzcGVjay1zdHJpbmcKCQkJCSAobGlu ZS1iZWdpbm5pbmctcG9zaXRpb24pIChwb2ludCkpKSkKCQkoc2V0cSBsb2ctc3RyZXRjaCAo c3BlY2stc3RyaW5nIG5pbCAocG9pbnQpKSkpKQoJICAoc2V0cSBsb2ctc3RyZXRjaCAoc3Bl Y2stc3RyaW5nKSkpCgkod2l0aC1jdXJyZW50LWJ1ZmZlciAoc3BlY2stbG9nLWJ1ZmZlcikK CSAgKGluc2VydCAoZm9ybWF0ICJTVFJFVENIICglcy0lcyk6ICVzXG4iIGZyb20gdG8gbG9n LXN0cmV0Y2gpKSkpCgogICAgICA7OyBFeHRyYWN0IGNodW5rcyBmcm9tIHN0cmV0Y2guCiAg ICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgIChzZXRxIGZyb20tMSAocG9pbnQt bWluKSkKICAgICAgKHdoaWxlIChhbmQgZG9uZSAoPCBmcm9tLTEgKHBvaW50LW1heCkpKQoJ OzsgU2V0IHRvLTEgdG8gdGhlIGxhcmdlc3QgYnVmZmVyIHBvc2l0aW9uIHByZWNlZGluZyBh Cgk7OyAnc3BlY2stY2h1bmstbWF4JyBieXRlIG9mZnNldCBhZnRlciBmcm9tLTEuCgkobGV0 ICgodG8tMSAob3IgKGJ5dGUtdG8tcG9zaXRpb24KCQkJICgrIChwb3NpdGlvbi1ieXRlcyBm cm9tLTEpIHNwZWNrLWNodW5rLW1heCkpCgkJCShwb2ludC1tYXgpKSkpCgkgICh3aGVuICg8 IHRvLTEgKHBvaW50LW1heCkpCgkgICAgKGdvdG8tY2hhciB0by0xKQoJICAgIChza2lwLWNo YXJzLWJhY2t3YXJkICJeIFx0IikKCSAgICAoc2V0cSB0by0xIChwb2ludCkpKQoKCSAgKGlm ICg8PSB0by0xIGZyb20tMSkKCSAgICAgIDs7IElmIHNlYXJjaGluZyBmb3IgYSB3aGl0ZXNw YWNlIGhhcyBnb3QgdXMgYmVmb3JlIGZyb20tMSwKCSAgICAgIDs7IHdlIGhhdmUgYSBjaHVu ayB0aGF0IGRvZXMgbm90IGZpdCwgdGhhdCBpcywgYW4gb3Zlcmx5CgkgICAgICA7OyBsb25n IG5vbi13aGl0ZXNwYWNlIHN0cmluZy4gIEp1c3QgbWFyayBpdCBhcyBzcGVja2VkLgoJICAg ICAgKHByb2duCgkJKHNraXAtY2hhcnMtZm9yd2FyZCAiXiBcdCIpCgkJKHNldHEgdG8tMSAo cG9pbnQpKQoJCSh3aXRoLWN1cnJlbnQtYnVmZmVyIHdpbmRvdy1idWZmZXIKCQkgIChsZXQg KChmcm9tLTIgKCsgZnJvbSBmcm9tLTEgLTEpKQoJCQkodG8tMiAoKyBmcm9tIHRvLTEgLTEp KSkKCQkgICAgKHdpdGgtc2lsZW50LW1vZGlmaWNhdGlvbnMKCQkgICAgICAocHV0LXRleHQt cHJvcGVydHkgZnJvbS0yIHRvLTIgJ3NwZWNrZWQgdCkKCgkJICAgICAgKHdoZW4gc3BlY2st bG9nCgkJCSh3aXRoLWN1cnJlbnQtYnVmZmVyIChzcGVjay1sb2ctYnVmZmVyKQoJCQkgIChp bnNlcnQgKGZvcm1hdCAiSUdOT1JFOiAlcy0lc1xuIiBmcm9tLTIgdG8tMikpKQoJCQkocHV0 LXRleHQtcHJvcGVydHkKCQkJIGZyb20tMiB0by0yICdmYWNlICdzcGVjay1zcGVja2VkKSkp KSkKCgkJKHNldHEgdG8tMSAocG9pbnQpKSkKCSAgICA7OyBBIGNodW5rIHRoYXQgZml0cywg cHJvY2VzcyBpdC4KCSAgICAoc2V0cSBkb25lCgkJICAoc3BlY2stY2h1bmsKCQkgICBmcm9t LTEgdG8tMSBwcm9jZXNzIHdpbmRvdy1idWZmZXIKCQkgICAoKyBmcm9tIGZyb20tMSAtMSkg KCsgZnJvbSB0by0xIC0xKSkpCgoJICAgICh3aGVuIGRvbmUKCSAgICAgIChsZXQgKChmcm9t LTIgKCsgZnJvbSBmcm9tLTEgLTEpKQoJCSAgICAodG8tMiAoKyBmcm9tIHRvLTEgLTEpKSkK CQkod2hlbiBzcGVjay1sb2cKCQkgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChzcGVjay1sb2ct YnVmZmVyKQoJCSAgICAoaW5zZXJ0IChmb3JtYXQgIlNQRUNLRUQgJXMtJXNcbiIgZnJvbS0y IHRvLTIpKSkpCgoJCSh3aXRoLWN1cnJlbnQtYnVmZmVyIHdpbmRvdy1idWZmZXIKCQkgICh3 aXRoLXNpbGVudC1tb2RpZmljYXRpb25zCgkJICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBmcm9t LTIgdG8tMiAnc3BlY2tlZCB0KQoJCSAgICAod2hlbiBzcGVjay1sb2cKCQkgICAgICAocHV0 LXRleHQtcHJvcGVydHkKCQkgICAgICAgZnJvbS0yIHRvLTIgJ2ZhY2UgJ3NwZWNrLXNwZWNr ZWQpKSkpKSkpCgoJICAoc2V0cSBmcm9tLTEgdG8tMSkpKQoKICAgICAgKHdoZW4gc3BlY2st bG9nCgkod2l0aC1jdXJyZW50LWJ1ZmZlciAoc3BlY2stbG9nLWJ1ZmZlcikKCSAgKGdvdG8t Y2hhciAocG9pbnQtbWF4KSkKCSAgKGluc2VydCAoZm9ybWF0ICJTVFJFVENIIERPTkU6ICVz ICglcy0lcylcbiIgZG9uZSBmcm9tIHRvKSkpKQoKICAgICAgZG9uZSkpKQoKOzsgKHNldHEg c3BlY2stZmFjZS1lbmZvcmNlLWxpc3QgJyhmb250LWxvY2stZG9jLWZhY2UgZm9udC1sb2Nr LWNvbW1lbnQtZmFjZSkpCgooZGVmdW4gc3BlY2stZW5mb3JjZS1mYWNlLWF0LXBvaW50ICgp CiAgIlJldHVybiBub24tbmlsIHdoZW4gYSBmYWNlIHByb3BlcnR5IGF0IHBvaW50IGlzIGVu Zm9yY2VkLiIKICAodW5sZXNzIChlb2JwKQogICAgKGxldCAoKGZhY2VzIChnZXQtdGV4dC1w cm9wZXJ0eSAocG9pbnQpICdmYWNlKSkpCiAgICAgIChjb25kCiAgICAgICAoKG5vdCBmYWNl cykKCW5pbCkKICAgICAgICgobGlzdHAgZmFjZXMpCgk7OyBXZSBoYXZlIGEgbGlzdCBvZiBm YWNlIHByb3BlcnRpZXMuCgkoY2F0Y2ggJ2ZvdW5kCgkgIChkb2xpc3QgKGZhY2UgZmFjZXMg dCkKCSAgICAod2hlbiAobWVtcSBmYWNlIHNwZWNrLWZhY2UtZW5mb3JjZS1saXN0KQoJICAg ICAgKHRocm93ICdmb3VuZCB0KSkpKSkKICAgICAgICh0IDsgQXRvbS4KCShtZW1xIGZhY2Vz IHNwZWNrLWZhY2UtZW5mb3JjZS1saXN0KSkpKSkpCgooZGVmdW4gc3BlY2std2luZG93ICgm b3B0aW9uYWwgd2luZG93KQogICJTcGVjayBzcGVjaWZpZWQgV0lORE9XLiIKICAobGV0KiAo KHdpbmRvdyAob3Igd2luZG93IChzZWxlY3RlZC13aW5kb3cpKSkKCSAod2luZG93LWJ1ZmZl ciAod2luZG93LWJ1ZmZlciB3aW5kb3cpKQoJICh3aW5kb3ctc3RhcnQgKHdpbmRvdy1zdGFy dCB3aW5kb3cpKQoJICh3aW5kb3ctZW5kICh3aW5kb3ctZW5kIHdpbmRvdykpCgkgKGZyb20g d2luZG93LXN0YXJ0KQoJIChkb25lIHQpCgkgdG8gZnJvbS0xKQogICAgKHdpdGgtY3VycmVu dC1idWZmZXIgd2luZG93LWJ1ZmZlcgogICAgICAod2hlbiAoYW5kIHNwZWNrLXByb2Nlc3Mg KG5vdCAocHJvY2Vzcy1nZXQgc3BlY2stcHJvY2VzcyAncHJlZW1wdGVkKSkpCgkod2l0aC1z aWxlbnQtbW9kaWZpY2F0aW9ucwoJIChsZXQgKG1pbmlidWZmZXItYXV0by1yYWlzZSBtZXNz YWdlLWxvZy1tYXgpCgkgICAoc2F2ZS1leGN1cnNpb24KCgkgICAgICh3aGVuIHNwZWNrLWZh Y2UtZW5mb3JjZS1saXN0CgkgICAgICAgKHNhdmUtZXhjdXJzaW9uCgkJIChnb3RvLWNoYXIg d2luZG93LXN0YXJ0KQoJCSA7OyBmcm9tLTEgbm9uLW5pbCBwb2ludHMgYXQgdGhlIGZpcnN0 IHBvc2l0aW9uIHRoYXQKCQkgOzsgc2hvdWxkIG5vdCBiZSBzcGVja2VkLgoJCSAoc2V0cSBm cm9tLTEgKHVubGVzcyAoc3BlY2stZW5mb3JjZS1mYWNlLWF0LXBvaW50KQoJCQkJKHBvaW50 KSkpCgkJICh3aGlsZSAoYW5kICg8IChwb2ludCkgd2luZG93LWVuZCkKCQkJICAgICAoZ290 by1jaGFyIChuZXh0LXNpbmdsZS1wcm9wZXJ0eS1jaGFuZ2UKCQkJCQkgKHBvaW50KSAnZmFj ZSBuaWwgd2luZG93LWVuZCkpKQoJCSAgIChjb25kCgkJICAgICgob3IgKD0gKHBvaW50KSB3 aW5kb3ctZW5kKQoJCQkgKHNwZWNrLWVuZm9yY2UtZmFjZS1hdC1wb2ludCkpCgkJICAgICAo d2hlbiBmcm9tLTEKCQkgICAgICAgKHdpdGgtc2lsZW50LW1vZGlmaWNhdGlvbnMKCQkJIDs7 IE1hcmsgdGV4dCBmcm9tIGZyb20tMSB0byBwb2ludCBhcyBzcGVja2VkLgoJCQkgKHB1dC10 ZXh0LXByb3BlcnR5IGZyb20tMSAocG9pbnQpICdzcGVja2VkIHQpCgoJCQkgKHdoZW4gc3Bl Y2stbG9nCgkJCSAgIChwdXQtdGV4dC1wcm9wZXJ0eQoJCQkgICAgZnJvbS0xIChwb2ludCkg J2ZhY2UgJ3NwZWNrLXNwZWNrZWQpKSkpCgoJCSAgICAgKHNldHEgZnJvbS0xIG5pbCkpCgkJ ICAgICh0CgkJICAgICA7OyBFeHBhbmQgZnJvbSBwcmV2aW91cyBmcm9tLTEgb3Igc3RhcnQg bmV3CgkJICAgICA7OyBzdHJldGNoIHRoYXQgc2hvdWxkIG5vdCBiZSBzcGVja2VkLgoJCSAg ICAgKHNldHEgZnJvbS0xIChvciBmcm9tLTEgKHBvaW50KSkpKSkpKSkKCgkgICAgICh3aGls ZSAoYW5kIChvciAoYW5kIChub3QgcXVpdC1mbGFnKSAobm90IChpbnB1dC1wZW5kaW5nLXAp KSkKCQkJICAgICAoc2V0cSBkb25lIG5pbCkpCgkJCSAoc2V0cSBmcm9tICh0ZXh0LXByb3Bl cnR5LWFueSBmcm9tIHdpbmRvdy1lbmQgJ3NwZWNrZWQgbmlsKSkpCgkgICAgICAgKHNldHEg dG8gKG5leHQtc2luZ2xlLXByb3BlcnR5LWNoYW5nZSBmcm9tICdzcGVja2VkIG5pbCB3aW5k b3ctZW5kKSkKCgkgICAgICAgKHdoZW4gc3BlY2stbG9nCgkJIChzcGVjay1sb2cgIldJTkRP VzoiIHdpbmRvdyAiYnVmZmVyOiIgd2luZG93LWJ1ZmZlcgoJCQkgICAgInN0YXJ0OiIgd2lu ZG93LXN0YXJ0ICJlbmQ6IiB3aW5kb3ctZW5kCgkJCSAgICAiZnJvbToiIGZyb20gInRvOiIg dG8pKQoKCSAgICAgICAodW5sZXNzIChzcGVjay1zdHJldGNoIGZyb20gdG8pCgkJIChzZXRx IGRvbmUgbmlsKSkKCgkgICAgICAgKHNldHEgZnJvbSB0bykpKSkpKSkKCiAgICAod2hlbiBk b25lCiAgICAgIChzcGVjay1yZW1vdmUtd2luZG93IHdpbmRvdykpKSkKCihkZWZ1biBzcGVj ay1yZXNwZWNrIChkZWxheSkKICAiU3BlY2sgYWdhaW4gYWZ0ZXIgREVMQVkgc2Vjb25kcy4i CiAgKHRpbWVyLXNldC1pZGxlLXRpbWUgc3BlY2stcGF1c2UtdGltZXIgKGN1cnJlbnQtaWRs ZS10aW1lKSkKICAodGltZXItaW5jLXRpbWUgc3BlY2stcGF1c2UtdGltZXIgKG9yIGRlbGF5 IDApKQogICh0aW1lci1hY3RpdmF0ZS13aGVuLWlkbGUgc3BlY2stcGF1c2UtdGltZXIgdCkp CgooZGVmdW4gc3BlY2std2luZG93cyAoJm9wdGlvbmFsIHBhdXNlKQogICJTcGVjayB3aW5k b3dzIG9uIGBzcGVjay13aW5kb3ctbGlzdCcuCldvcmtzIGNvcnJlY3RseSBpZiBhbmQgb25s eSBpZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgUEFVU0UgaXMgbmlsCndoZW4gdHJpZ2dlcmVk IGJ5IGBzcGVjay1kZWxheS10aW1lcicgYW5kIG5vbi1uaWwgd2hlbiB0cmlnZ2VyZWQKYnkg YHNwZWNrLXBhdXNlLXRpbWVyJy4iCiAgKHVubGVzcyBwYXVzZQogICAgOzsgV2hlbiBgcGF1 c2UnIGlzIG5pbCBjYW5jZWwgYHNwZWNrLXBhdXNlLXRpbWVyJyAoaW4gcGF0aG9sb2dpY2Fs CiAgICA7OyBjYXNlcyB0aGlzIG1pZ2h0IGludGVyZmVyZSB3aXRoIHRoZSBjdXJyZW50IGNh bGwpLgogICAgKGNhbmNlbC10aW1lciBzcGVjay1wYXVzZS10aW1lcikpCiAgKGNvbmQKICAg KChvciAoaW5wdXQtcGVuZGluZy1wKQoJOzsgKGFjdGl2ZS1taW5pYnVmZmVyLXdpbmRvdykg OyBkbyB3ZSBuZWVkIHRoaXM/CglleGVjdXRpbmcta2JkLW1hY3JvIGRlZmluaW5nLWtiZC1t YWNybykKICAgIDs7IFBhdXNlIGJ5IGBzcGVjay1kZWxheScgc2Vjb25kcyAobWF5YmUgdGhl IGxpc3QgYWJvdmUgc2hvdWxkIGJlCiAgICA7OyBleHRlbmRlZCkuCiAgICAoc3BlY2stcmVz cGVjayBzcGVjay1kZWxheSkpCiAgIDs7IFRlc3Qgc2VsZWN0ZWQgd2luZG93IGZpcnN0Lgog ICAoKGFuZCAobWVtcSAoc2VsZWN0ZWQtd2luZG93KSBzcGVjay13aW5kb3ctbGlzdCkKCSAo b3IgKGxldCAoKGJ1ZmZlciAod2luZG93LWJ1ZmZlcikpKQoJICAgICAgIChhbmQgKGxvY2Fs LXZhcmlhYmxlLXAgJ3NwZWNrLW1vZGUgYnVmZmVyKQoJCSAgICAoYnVmZmVyLWxvY2FsLXZh bHVlICdzcGVjay1tb2RlIGJ1ZmZlcikpKQoJICAgICA7OyBUaGUgc2VsZWN0ZWQgd2luZG93 IGlzIG5vdCBzdWl0YWJsZSBmb3Igc3BlY2tpbmcsIHJlbW92ZQoJICAgICA7OyBpdCBmcm9t IGBzcGVjay13aW5kb3ctbGlzdCcgKGNvdWxkIGl0IGV2ZXIgZ2V0IHRoZXJlPykuCgkgICAg IChhbmQgKHNwZWNrLXJlbW92ZS13aW5kb3cgKHNlbGVjdGVkLXdpbmRvdykpCgkJICBuaWwp KSkKICAgIChzcGVjay13aW5kb3cpKQogICAodAogICAgKGxldCogKHdpbmRvd3MtdG8tcmVt b3ZlCgkgICAod2luZG93CgkgICAgKGNhdGNoICdmb3VuZAoJICAgICAgOzsgU2NhbiBgc3Bl Y2std2luZG93LWxpc3QnCgkgICAgICAoZG9saXN0ICh3aW5kb3cgc3BlY2std2luZG93LWxp c3QpCgkJKGlmIChhbmQgKHdpbmRvdy1saXZlLXAgd2luZG93KQoJCQkgKGxldCAoKGJ1ZmZl ciAod2luZG93LWJ1ZmZlciB3aW5kb3cpKSkKCQkJICAgKGFuZCAobG9jYWwtdmFyaWFibGUt cCAnc3BlY2stbW9kZSBidWZmZXIpCgkJCQkoYnVmZmVyLWxvY2FsLXZhbHVlICdzcGVjay1t b2RlIGJ1ZmZlcikpKSkKCQkgICAgOzsgYHdpbmRvdycgaXMgc3VpdGFibGUgZm9yIHNwZWNr aW5nLCByZXR1cm4gaXQuCgkJICAgICh0aHJvdyAnZm91bmQgd2luZG93KQoJCSAgOzsgYHdp bmRvdycgaXMgbm90IHN1aXRhYmxlIGZvciBzcGVja2luZywgcmVtb3ZlIGl0CgkJICA7OyBm cm9tIGBzcGVjay13aW5kb3ctbGlzdCcuICBGSVhNRSwgdGhpcyBpcyBoYWlyeSAuLi4KCQkg IChzZXRxIHdpbmRvd3MtdG8tcmVtb3ZlIChjb25zIHdpbmRvdyB3aW5kb3dzLXRvLXJlbW92 ZSkpKSkpKSkKICAgICAgOzsgUmVtb3ZlIGRlYWQgd2luZG93cy4KICAgICAgKHdoaWxlIHdp bmRvd3MtdG8tcmVtb3ZlCgkoc3BlY2stcmVtb3ZlLXdpbmRvdyAoY2FyIHdpbmRvd3MtdG8t cmVtb3ZlKSkKCShzZXRxIHdpbmRvd3MtdG8tcmVtb3ZlIChjZHIgd2luZG93cy10by1yZW1v dmUpKSkKICAgICAgOzsgU3BlY2sgYHdpbmRvdycuCiAgICAgIChzcGVjay13aW5kb3cgd2lu ZG93KSkpKQoKICAod2hlbiBzcGVjay13aW5kb3ctbGlzdAogICAgOzsgUGF1c2UgYnkgYHNw ZWNrLXBhdXNlJyBzZWNvbmRzLgogICAgKHNwZWNrLXJlc3BlY2sgc3BlY2stcGF1c2UpKSkK CihkZWZ1biBzcGVjay1hZnRlci1jaGFuZ2UgKHN0YXJ0IGVuZCBvbGQtbGVuKQogICJTcGVj ayBhZnRlciBhIHRleHQgY2hhbmdlLgpTVEFSVCwgRU5ELCBhbmQgT0xELUxFTiBoYXZlIHRo ZSB1c3VhbCBtZWFuaW5ncy4iCiAgKHdoZW4gc3BlY2stbW9kZQogICAgKHNhdmUtZXhjdXJz aW9uCiAgICAgIChzYXZlLXJlc3RyaWN0aW9uCgkod2lkZW4pCgkoZ290by1jaGFyIHN0YXJ0 KQoJKHNraXAtY2hhcnMtYmFja3dhcmQgIl4gXG5cdCIpCgkoc2tpcC1jaGFycy1mb3J3YXJk ICIgXG5cdCIpCgkoc2V0cSBzdGFydCAocG9pbnQpKQoJKGdvdG8tY2hhciBlbmQpCgkoc2tp cC1jaGFycy1mb3J3YXJkICJeIFxuXHQiKQoJKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcblx0 IikKCShzZXRxIGVuZCAocG9pbnQpKQoJKHdpdGgtc2lsZW50LW1vZGlmaWNhdGlvbnMKCSAo aWYgKGFuZCBzcGVjay1mYWNlLWVuZm9yY2UtbGlzdAoJCSAgc3BlY2stZmFjZS1lbmZvcmNl LWNvbnRleHR1YWwpCgkgICAgIChwcm9nbgoJICAgICAgIChzcGVjay1yZW1vdmUtb3Zlcmxh eXMgc3RhcnQgKHBvaW50LW1heCkpCgkgICAgICAgKHNwZWNrLXJlbW92ZS10ZXh0LXByb3Bl cnRpZXMgc3RhcnQgKHBvaW50LW1heCkpKQoJICAgKHNwZWNrLXJlbW92ZS1vdmVybGF5cyBz dGFydCBlbmQpCgkgICAoc3BlY2stcmVtb3ZlLXRleHQtcHJvcGVydGllcyBzdGFydCBlbmQp KSkpKQogICAgKHNwZWNrLWFkZC1idWZmZXItd2luZG93cykpKQoKKGRlZnVuIHNwZWNrLXdp bmRvdy1zY3JvbGwgKHdpbmRvdyBfc3RhcnQpCiAgIlNwZWNrIGFmdGVyIFdJTkRPVyB3YXMg c2Nyb2xsZWQuIgogIChzcGVjay1hZGQtd2luZG93IHdpbmRvdykpCgooZGVmdW4gc3BlY2st d2luZG93LXN0YXRlLWNoYW5nZSAod2luZG93KQogICJTcGVjayBhZnRlciBXSU5ET1cgY2hh bmdlZCBzdGF0ZS4iCiAgKHNwZWNrLWFkZC13aW5kb3cgd2luZG93KSkKCjs7IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCjs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfCjs7OwkJCSAgICAg ICBLZXltYXBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfCjs7 IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCjs7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfCgoo ZGVmdmFyIHNwZWNrLW92ZXJsYXktbWFwCiAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5 bWFwKSkpCiAgICAoZGVmaW5lLWtleSBtYXAgW2Rvd24tbW91c2UtM10gJ3NwZWNrLW1vdXNl LXBvcHVwLW1lbnUpCiAgICBtYXApCiAgIlNwZWNrIG1vdXNlIG1hcC4iKQoKKGRlZnVuIHNw ZWNrLW1ha2UtbW9kZS1tYXAgKG1hcCkKICAiQXNzaWduIGBzcGVjay1tb2RlLWtleXMnIHRv IE1BUCB3aGljaCBzaG91bGQgYmUgYHNwZWNrLW1vZGUtbWFwJy4iCiAgKHdoZW4gKGJvdW5k cCAnc3BlY2stbW9kZS1rZXlzKQogICAgKGRlZmluZS1rZXkgbWFwIChudGggMCBzcGVjay1t b2RlLWtleXMpICdzcGVjay1wb3B1cC1tZW51LXByZXZpb3VzKQogICAgKGRlZmluZS1rZXkg bWFwIChudGggMSBzcGVjay1tb2RlLWtleXMpICdzcGVjay1wb3B1cC1tZW51LW5leHQpCiAg ICAoZGVmaW5lLWtleSBtYXAgKG50aCAyIHNwZWNrLW1vZGUta2V5cykgJ3NwZWNrLXJlcGxh Y2UtcHJldmlvdXMpCiAgICAoZGVmaW5lLWtleSBtYXAgKG50aCAzIHNwZWNrLW1vZGUta2V5 cykgJ3NwZWNrLXJlcGxhY2UtbmV4dCkKICAgIChkZWZpbmUta2V5IG1hcCAobnRoIDQgc3Bl Y2stbW9kZS1rZXlzKSAnc3BlY2stYWRkLXByZXZpb3VzKQogICAgKGRlZmluZS1rZXkgbWFw IChudGggNSBzcGVjay1tb2RlLWtleXMpICdzcGVjay1hZGQtbmV4dCkpKQoKKGRlZnZhciBz cGVjay1tb2RlLW1hcAogIChsZXQgKChtYXAgKG1ha2Utc3BhcnNlLWtleW1hcCkpKQogICAg KHNwZWNrLW1ha2UtbW9kZS1tYXAgbWFwKQogICAgbWFwKQogICJLZXltYXAgdXNlZCBieSBg c3BlY2stbW9kZScuICBgc3BlY2stbWFrZS1tb2RlLW1hcCcgZmlsbHMgaXQuIikKCihkZWZj dXN0b20gc3BlY2stbW9kZS1rZXlzCiAgJyhbKGNvbnRyb2wgP1wuKV0gWyhjb250cm9sIG1l dGEgP1wuKV0KICAgIFsoY29udHJvbCA/XCwpXSBbKGNvbnRyb2wgbWV0YSA/XCwpXQogICAg Wyhjb250cm9sID9cKyldIFsoY29udHJvbCBtZXRhID9cKyldCiAgICBbKGNvbnRyb2wgP1wh KV0gWyhjb250cm9sIG1ldGEgP1whKV0KICAgIFsoY29udHJvbCA/XD8pXSBbKGNvbnRyb2wg bWV0YSA/XD8pXSkKICAiS2V5cyB1c2VkIGJ5IGBzcGVjay1tb2RlJy4iCiAgOnR5cGUKICAn KGxpc3QKICAgIChrZXktc2VxdWVuY2UKICAgICA6dGFnICJQb3B1cCBtZW51IGF0IHByZXZp b3VzIHdvcmQiIDpmb3JtYXQgIlxuICAldCAldlxuXG4iCiAgICAgOnZhbHVlICdbKGNvbnRy b2wgP1wuKV0gOnNpemUgMjApCiAgICAoa2V5LXNlcXVlbmNlCiAgICAgOnRhZyAiUG9wdXAg bWVudSBhdCBuZXh0IHdvcmQgICAgIiA6Zm9ybWF0ICIgICV0ICV2XG5cbiIKICAgICA6dmFs dWUgJ1soY29udHJvbCBtZXRhID9cLildIDpzaXplIDIwKQogICAgKGtleS1zZXF1ZW5jZQog ICAgIDp0YWcgIlJlcGxhY2UgcHJldmlvdXMgd29yZCAgICAgICIgOmZvcm1hdCAiICAldCAl dlxuXG4iCiAgICAgOnZhbHVlICdbKGNvbnRyb2wgP1wsKV0gOnNpemUgMjApCiAgICAoa2V5 LXNlcXVlbmNlCiAgICAgOnRhZyAiUmVwbGFjZSBuZXh0IHdvcmQgICAgICAgICAgIiA6Zm9y bWF0ICIgICV0ICV2XG5cbiIKICAgICA6dmFsdWUgJ1soY29udHJvbCBtZXRhID9cLCldIDpz aXplIDIwKQogICAgKGtleS1zZXF1ZW5jZQogICAgIDp0YWcgIkFjY2VwdCBwcmV2aW91cyB3 b3JkICAgICAgICIgOmZvcm1hdCAiICAldCAldlxuXG4iCiAgICAgOnZhbHVlICdbKGNvbnRy b2wgP1wrKV0gOnNpemUgMjApCiAgICAoa2V5LXNlcXVlbmNlCiAgICAgOnRhZyAiQWNjZXB0 IG5leHQgd29yZCAgICAgICAgICAgIiA6Zm9ybWF0ICIgICV0ICV2XG5cbiIKICAgICA6dmFs dWUgJ1soY29udHJvbCBtZXRhID9cKyldIDpzaXplIDIwKQogICAgKGtleS1zZXF1ZW5jZQog ICAgIDp0YWcgIlNwZWxsLWNoZWNrIHJlZ2lvbiAgICAgICAgICIgOmZvcm1hdCAiICAldCAl dlxuXG4iCiAgICAgOnZhbHVlICdbKGNvbnRyb2wgP1whKV0gOnNpemUgMjApCiAgICAoa2V5 LXNlcXVlbmNlCiAgICAgOnRhZyAiQ2hhbmdlIGRpY3Rpb25hcnkgICAgICAgICAgIiA6Zm9y bWF0ICIgICV0ICV2XG5cbiIKICAgICA6dmFsdWUgJ1soY29udHJvbCBtZXRhID9cISldIDpz aXplIDIwKQogICAgKGtleS1zZXF1ZW5jZQogICAgIDp0YWcgIlNldCBsYW5ndWFnZSAgICAg ICAgICAgICAgICIgOmZvcm1hdCAiICAldCAldlxuXG4iCiAgICAgOnZhbHVlICdbKGNvbnRy b2wgP1w/KV0gOnNpemUgMjApCiAgICAoa2V5LXNlcXVlbmNlCiAgICAgOnRhZyAiU2V0IG9w dGlvbiAgICAgICAgICAgICAgICAgIiA6Zm9ybWF0ICIgICV0ICV2XG5cbiIKICAgICA6dmFs dWUgJ1soY29udHJvbCBtZXRhID9cPyldIDpzaXplIDIwKSkKICA6c2V0ICMnKGxhbWJkYSAo c3ltYm9sIHZhbHVlKQoJICAgKHdoZW4gKGFuZCAoYm91bmRwICdzcGVjay1tb2RlLW1hcCkK CQkgICAgICA7OyBQYXJhbm9pYS4KCQkgICAgICAoYm91bmRwICdzcGVjay1tb2RlLWtleXMp CgkJICAgICAgKGxpc3RwIHNwZWNrLW1vZGUta2V5cykpCgkgICAgIChkb2xpc3QgKGtleSBz cGVjay1tb2RlLWtleXMpCgkgICAgICAgKGRlZmluZS1rZXkgc3BlY2stbW9kZS1tYXAga2V5 IG5pbCkpKQoJICAgKHNldC1kZWZhdWx0IHN5bWJvbCB2YWx1ZSkKCSAgICh3aGVuIChib3Vu ZHAgJ3NwZWNrLW1vZGUtbWFwKQoJICAgICAoc3BlY2stbWFrZS1tb2RlLW1hcCBzcGVjay1t b2RlLW1hcCkpKQogIDpncm91cCAnc3BlY2spCgooZGVmdW4gc3BlY2stYXNzaWduLWtleXMt dG8tbWFwIChtYXAga2V5cykKICAiQXNzaWduIEtFWVMgdG8gTUFQLgpNQVAgbXVzdCBiZSBh IGtleW1hcCwgS0VZUyBhIGxpc3Qgb2YgKGNvbW1hbmQgLiBrZXkpIHBhaXJzLiIKICAoZG9s aXN0IChwYWlyIGtleXMpCiAgICAoZGVmaW5lLWtleSBtYXAgKGNkciBwYWlyKSAoY2FyIHBh aXIpKSkpCgooZGVmY3VzdG9tIHNwZWNrLXJlcGxhY2Uta2V5cwogICcoKGhlbHAgLiBbKGNv bnRyb2wgP1w/KV0pCiAgICAoaGVscCAuIFsoY29udHJvbCA/XGgpXSkKICAgIChoZWxwIC4g W2YxXSkKICAgIChoZWxwIC4gW2hlbHBdKQogICAgKGFjY2VwdCAuIFsoY29udHJvbCA/XCEp XSkKICAgIChhY2NlcHQtYW5kLXF1aXQgLiBbKGNvbnRyb2wgP1wuKV0pCiAgICAocmVqZWN0 LWFuZC1xdWl0IC4gWyhjb250cm9sID9cLSldKQogICAgKHJlamVjdC1hbmQtcXVpdCAuIFso Y29udHJvbCA/XGcpXSkKICAgIChyZWplY3QtYW5kLXF1aXQgLiBbKGNvbnRyb2wgP1xdKV0p CiAgICAocmVqZWN0LWFuZC1xdWl0IC4gW2VzY2FwZV0pCiAgICAoZm9yd2FyZCAuIFsoY29u dHJvbCA/XCwpXSkKICAgIChiYWNrd2FyZCAuIFsoY29udHJvbCBtZXRhID9cLCldKSkKICAi S2V5cyB1c2VkIGJ5IGBzcGVjay1tb2RlJyBkdXJpbmcgcmVwbGFjZW1lbnQuIgogIDp0eXBl CiAgJyhyZXBlYXQKICAgIChjb25zIDpmb3JtYXQgIiV2IgoJICAoY2hvaWNlIDpmb3JtYXQg IiAlW0NvbW1hbmQlXSAldiIKCQkgIChjb25zdCA6Zm9ybWF0ICJoZWxwICAgICAgICAgICAi IGhlbHApCgkJICAoY29uc3QgOmZvcm1hdCAiYWNjZXB0ICAgICAgICAgIiBhY2NlcHQpCgkJ ICAoY29uc3QgOmZvcm1hdCAiYWNjZXB0LWFuZC1xdWl0IiBhY2NlcHQtYW5kLXF1aXQpCgkJ ICAoY29uc3QgOmZvcm1hdCAicmVqZWN0LWFuZC1xdWl0IiByZWplY3QtYW5kLXF1aXQpCgkJ ICAoY29uc3QgOmZvcm1hdCAiZm9yd2FyZCAgICAgICAgIiBmb3J3YXJkKQoJCSAgKGNvbnN0 IDpmb3JtYXQgImJhY2t3YXJkICAgICAgICIgYmFja3dhcmQpKQoJICAoa2V5LXNlcXVlbmNl IDpmb3JtYXQgIiAgICBLZXk6ICV2XG5cbiIgOnNpemUgMjApKSkKICA6c2V0ICMnKGxhbWJk YSAoc3ltYm9sIHZhbHVlKQoJICAgOzsgRG9uJ3QgImFuZCIgdGhlc2UuCgkgICAod2hlbiAo Ym91bmRwICdzcGVjay1yZXBsYWNlLW1hcCkKCSAgICAgKHdoZW4gKGJvdW5kcCAnc3BlY2st cmVwbGFjZS1rZXlzKQoJICAgICAgIChkb2xpc3QgKHBhaXIgc3BlY2stcmVwbGFjZS1rZXlz KQoJCSA7OyBSZXNldCB0aGVtIGFsbC4KCQkgKGRlZmluZS1rZXkgc3BlY2stcmVwbGFjZS1t YXAgKGNkciBwYWlyKSBuaWwpKSkpCgkgICAoc2V0LWRlZmF1bHQgc3ltYm9sIHZhbHVlKQoJ ICAgKHdoZW4gKGJvdW5kcCAnc3BlY2stcmVwbGFjZS1tYXApCgkgICAgIChzcGVjay1hc3Np Z24ta2V5cy10by1tYXAgc3BlY2stcmVwbGFjZS1tYXAgc3BlY2stcmVwbGFjZS1rZXlzKSkp CiAgOmdyb3VwICdzcGVjaykKCihkZWZ2YXIgc3BlY2stcmVwbGFjZS1tYXAKICAobGV0ICgo bWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKICAgIChzcGVjay1hc3NpZ24ta2V5cy10by1t YXAgbWFwIHNwZWNrLXJlcGxhY2Uta2V5cykKICAgIG1hcCkKICAiRHVtbXkga2V5bWFwIGZv ciBgc3BlY2stcmVwbGFjZScuIikKCihkZWZjdXN0b20gc3BlY2stcmVwbGFjZS1xdWVyeS1r ZXlzCiAgJygoaGVscCAuIFsoY29udHJvbCA/XD8pXSkKICAgIChoZWxwIC4gWyhjb250cm9s ID9caCldKQogICAgKGhlbHAgLiBbZjFdKQogICAgKGhlbHAgLiBbaGVscF0pCiAgICAoYWNj ZXB0IC4gWyhjb250cm9sID9cISldKQogICAgKGFjY2VwdCAuIFs/XCBdKQogICAgKGFjY2Vw dCAuIFtyZXR1cm5dKQogICAgKGFjY2VwdC1hbmQtcXVpdCAuIFsoY29udHJvbCA/XC4pXSkK ICAgIChyZWplY3QgLiBbKGNvbnRyb2wgP1wtKV0pCiAgICAocmVqZWN0LWFuZC1xdWl0IC4g Wyhjb250cm9sID9cZyldKQogICAgKHJlamVjdC1hbmQtcXVpdCAuIFsoY29udHJvbCA/XF0p XSkKICAgIChyZWplY3QtYW5kLXF1aXQgLiBbZXNjYXBlXSkKICAgIChmb3J3YXJkIC4gWyhj b250cm9sID9cLCldKQogICAgKGZvcndhcmQgLiBbdGFiXSkKICAgIChiYWNrd2FyZCAuIFso Y29udHJvbCBtZXRhID9cLCldKQogICAgKGJhY2t3YXJkIC4gWyhzaGlmdCB0YWIpXSkpCiAg IktleXMgdXNlZCBieSBgc3BlY2stbW9kZScgZHVyaW5nIHF1ZXJ5IHJlcGxhY2VtZW50LiIK ICA6dHlwZQogICcocmVwZWF0CiAgICAoY29ucyA6Zm9ybWF0ICIldiIKCSAgKGNob2ljZSA6 Zm9ybWF0ICIgJVtDb21tYW5kJV0gJXYiCgkJICAoY29uc3QgOmZvcm1hdCAiaGVscCAgICAg ICAgICAgIiBoZWxwKQoJCSAgKGNvbnN0IDpmb3JtYXQgImFjY2VwdCAgICAgICAgICIgYWNj ZXB0KQoJCSAgKGNvbnN0IDpmb3JtYXQgImFjY2VwdC1hbmQtcXVpdCIgYWNjZXB0LWFuZC1x dWl0KQoJCSAgKGNvbnN0IDpmb3JtYXQgInJlamVjdCAgICAgICAgICIgcmVqZWN0KQoJCSAg KGNvbnN0IDpmb3JtYXQgInJlamVjdC1hbmQtcXVpdCIgcmVqZWN0LWFuZC1xdWl0KQoJCSAg KGNvbnN0IDpmb3JtYXQgImZvcndhcmQgICAgICAgICIgZm9yd2FyZCkKCQkgIChjb25zdCA6 Zm9ybWF0ICJiYWNrd2FyZCAgICAgICAiIGJhY2t3YXJkKSkKCSAgKGtleS1zZXF1ZW5jZSA6 Zm9ybWF0ICIgICAgS2V5OiAldlxuXG4iIDpzaXplIDIwKSkpCiAgOnNldCAjJyhsYW1iZGEg KHN5bWJvbCB2YWx1ZSkKCSAgIDs7IERvbid0ICJhbmQiIHRoZXNlLgoJICAgKHdoZW4gKGJv dW5kcCAnc3BlY2stcmVwbGFjZS1xdWVyeS1tYXApCgkgICAgICh3aGVuIChib3VuZHAgJ3Nw ZWNrLXJlcGxhY2UtcXVlcnkta2V5cykKCSAgICAgICAoZG9saXN0IChwYWlyIHNwZWNrLXJl cGxhY2UtcXVlcnkta2V5cykKCQkgOzsgUmVzZXQgdGhlbSBhbGwuCgkJIChkZWZpbmUta2V5 IHNwZWNrLXJlcGxhY2UtcXVlcnktbWFwIChjZHIgcGFpcikgbmlsKSkpKQoJICAgKHNldC1k ZWZhdWx0IHN5bWJvbCB2YWx1ZSkKCSAgICh3aGVuIChib3VuZHAgJ3NwZWNrLXJlcGxhY2Ut cXVlcnktbWFwKQoJICAgICAoc3BlY2stYXNzaWduLWtleXMtdG8tbWFwCgkgICAgICBzcGVj ay1yZXBsYWNlLXF1ZXJ5LW1hcCBzcGVjay1yZXBsYWNlLXF1ZXJ5LWtleXMpKSkKICA6Z3Jv dXAgJ3NwZWNrKQoKKGRlZnZhciBzcGVjay1yZXBsYWNlLXF1ZXJ5LW1hcAogIChsZXQgKCht YXAgKG1ha2Utc3BhcnNlLWtleW1hcCkpKQogICAgKHNwZWNrLWFzc2lnbi1rZXlzLXRvLW1h cCBtYXAgc3BlY2stcmVwbGFjZS1xdWVyeS1rZXlzKQogICAgbWFwKQogICJEdW1teSBrZXlt YXAgZm9yIGBzcGVjay1yZXBsYWNlLXF1ZXJ5Jy4iKQoKKGRlZnVuIHNwZWNrLWtleS1oZWxw IChjb21tYW5kIGtleXMgc3VmZml4KQogICJSZXR1cm4gc3RyaW5nIG9mIGtleXMgaW4gS0VZ UyBleGVjdXRpbmcgQ09NTUFORC4KS0VZUyBtdXN0IGJlIGVpdGhlciBgc3BlY2stcmVwbGFj ZS1rZXlzJyBvcgpgc3BlY2stcmVwbGFjZS1xdWVyeS1rZXlzJy4iCiAgKGxldCAoKHN0cmlu ZyAiIikpCiAgICAoZG9saXN0IChrZXkga2V5cykKICAgICAgKHdoZW4gKGVxIGNvbW1hbmQg KGNhciBrZXkpKQoJKHNldHEgc3RyaW5nCgkgICAgICAoY29uY2F0CgkgICAgICAgc3RyaW5n CgkgICAgICAgKHVubGVzcyAoc3RyaW5nLWVxdWFsIHN0cmluZyAiIikgIiwgIikgOyBMb29r cyBiZXR0ZXIuCgkgICAgICAgKGtleS1kZXNjcmlwdGlvbiAoY2RyIGtleSkpKSkpKQogICAg KGlmIChzdHJpbmctZXF1YWwgc3RyaW5nICIiKQoJIiIKICAgICAgKGNvbmNhdCAiICAiIHN0 cmluZyBzdWZmaXgpKSkpIDsgUHJlZml4IHRoaXMgd2l0aCB0d28gc3BhY2VzLgoKKGRlZnVu IHNwZWNrLWtleXMtaGVscCAoa2V5cyAmb3B0aW9uYWwgZmlyc3QpCiAgIlJldHVybiBhIHJl YWRhYmxlIGxpc3Qgb2Yga2V5YmluZGluZ3MgZm9yIGhlbHAuIgogIChjb25jYXQKICAgOzsg VXNlIGEgZml4ZWQgbGlzdCBvZiBjb21tYW5kcyBoZXJlLCBpdCdzIHNpbXBsZXIuICBZZXMg d2UgZG8KICAgOzsgYWxsb2NhdGUgc3RyaW5nIHNwYWNlIGhlcmUsIGJ1dCBhZnRlciBhbGwg dGhpcyBzaG91bGQgYmUgdXNlZCBvbmx5CiAgIDs7IHNwb3JhZGljYWxseS4KICAgKHNwZWNr LWtleS1oZWxwICdhY2NlcHQga2V5cwoJCSAgIChjb25jYXQgIiAgdG8gYWNjZXB0IHRoZSBy ZXBsYWNlbWVudCBhbmQgIgoJCQkgICAoaWYgZmlyc3QgInF1ZXJ5IGZ1cnRoZXIgb2NjdXJy ZW5jZXMiICJjb250aW51ZSBxdWVyeWluZyIpICJcbiIpKQogICAoc3BlY2sta2V5LWhlbHAg J2FjY2VwdC1hbmQtcXVpdCBrZXlzCgkJICAgIiAgdG8gYWNjZXB0IHRoZSByZXBsYWNlbWVu dCBhbmQgcXVpdCBxdWVyeWluZ1xuIikKICAgKHNwZWNrLWtleS1oZWxwICdyZWplY3Qga2V5 cwoJCSAgICIgIHRvIHJlamVjdCB0aGUgcmVwbGFjZW1lbnQgYW5kIGNvbnRpbnVlIHF1ZXJ5 aW5nXG4iKQogICAoc3BlY2sta2V5LWhlbHAgJ3JlamVjdC1hbmQtcXVpdCBrZXlzCgkJICAg IiAgdG8gcmVqZWN0IHRoZSByZXBsYWNlbWVudCBhbmQgcXVpdCBxdWVyeWluZ1xuIikKICAg KHNwZWNrLWtleS1oZWxwICdmb3J3YXJkIGtleXMgIiAgdG8gZGlzcGxheSB0aGUgbmV4dCBy ZXBsYWNlbWVudFxuIikKICAgKHNwZWNrLWtleS1oZWxwICdiYWNrd2FyZCBrZXlzICIgIHRv IGRpc3BsYXkgdGhlIHByZXZpb3VzIHJlcGxhY2VtZW50XG4iKQogICAoc3BlY2sta2V5LWhl bHAgJ2hlbHAga2V5cyAiICB0byBkaXNwbGF5IHRoaXMgaGVscFxuIikpKQoKOzsgX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8KOzs7CQkJICAg ICAgUmVwbGFjaW5nIHdvcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8K OzsgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KOzsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8K CihkZWZ1biBzcGVjay1yZXBsYWNlLXdvcmQgKGZyb20gdG8gd29yZCByZXBsYWNlICZvcHRp b25hbCBvdmVybGF5KQogICJSZXBsYWNlIFdPUkQgd2l0aGluIEZST00gYW5kIFRPIGJ5IFJF UExBQ0UuCk9wdGlvbmFsIE9WRVJMQVkgbm9uLW5pbCBtZWFucyByZW1vdmUgdGhhdCBvdmVy bGF5LiAgUFJPUEVSVFkgbm9uLW5pbAptZWFucyBwdXQgdGhpcyBwcm9wZXJ0eSBvbiBSRVBM QUNFLiIKICAobGV0IChtb3ZlLXRvKQogICAgKHdoZW4gb3ZlcmxheQogICAgICAoZGVsZXRl LW92ZXJsYXkgb3ZlcmxheSkpCiAgICAod2hlbiAoYW5kIChlcSAobWFya2VyLWJ1ZmZlciBz cGVjay1tYXJrZXIpCgkJICAgKGN1cnJlbnQtYnVmZmVyKSkKCSAgICAgICAoPD0gZnJvbSBz cGVjay1tYXJrZXIpCgkgICAgICAgKDw9IHNwZWNrLW1hcmtlciB0bykpCiAgICAgIChjb25k CiAgICAgICAoKGVxIHNwZWNrLXJlcGxhY2UtcHJlc2VydmUtcG9pbnQgJ2JlZm9yZSkKCShz ZXRxIG1vdmUtdG8gZnJvbSkpCiAgICAgICAoKGFuZCAoZXEgc3BlY2stcmVwbGFjZS1wcmVz ZXJ2ZS1wb2ludCAnd2l0aGluKQoJICAgICAoPD0gZnJvbSBzcGVjay1tYXJrZXIpCgkgICAg ICg8PSBzcGVjay1tYXJrZXIgdG8pCgkgICAgICg8ICgtIHNwZWNrLW1hcmtlciBmcm9tKQoJ CShsZW5ndGggcmVwbGFjZSkpKQoJKHNldHEgbW92ZS10byAobWFya2VyLXBvc2l0aW9uIHNw ZWNrLW1hcmtlcikpKQogICAgICAgKHQgKHNldHEgbW92ZS10byAoKyBmcm9tIChsZW5ndGgg cmVwbGFjZSkpKSkpKQogICAgKGRlbGV0ZS1yZWdpb24gZnJvbSB0bykKICAgIChnb3RvLWNo YXIgZnJvbSkKICAgIChpbnNlcnQgcmVwbGFjZSkKICAgICh3aGVuIG1vdmUtdG8KICAgICAg KHNldC1tYXJrZXIgc3BlY2stbWFya2VyIG1vdmUtdG8pKQogICAgOzsgVGhlIGZvbGxvd2lu ZyBuZXZlciB3b3JrZWQgaGVyZS4gIE1heWJlIEkgbWlzdW5kZXJzdGFuZCB0aGlzCiAgICA7 OyBjb21wbGV0ZWx5LgogICAgOzsgICAgIChzcGVjay1zZW5kLXJlcGxhY2VtZW50IHdvcmQg cmVwbGFjZSkKICAgICkpCgooZGVmdW4gc3BlY2stcmVwbGFjZS1wdXQtb3ZlcmxheSAob3Zl cmxheSBmcm9tIHRvIG9mZnNldCByZXBsYWNlKQogICJQdXQgT1ZFUkxBWSBhbmQgZ290byBG Uk9NIG9yIFRPLiIKICAoaWYgb2Zmc2V0CiAgICAgIChjb25kCiAgICAgICAoKGVxIHNwZWNr LXJlcGxhY2UtcHJlc2VydmUtcG9pbnQgJ2JlZm9yZSkKCShvdmVybGF5LXB1dCBvdmVybGF5 ICdkaXNwbGF5IHJlcGxhY2UpCgkoZ290by1jaGFyIGZyb20pKQogICAgICAgKChhbmQgKGVx IHNwZWNrLXJlcGxhY2UtcHJlc2VydmUtcG9pbnQgJ3dpdGhpbikKCSAgICAgKDwgb2Zmc2V0 IChsZW5ndGggcmVwbGFjZSkpKQoJKG92ZXJsYXktcHV0Cgkgb3ZlcmxheSAnZGlzcGxheQoJ IChjb25jYXQgKHN1YnN0cmluZyByZXBsYWNlIDAgb2Zmc2V0KQoJCSAocHJvcGVydGl6ZQoJ CSAgKHN1YnN0cmluZyByZXBsYWNlIG9mZnNldCAoMSsgb2Zmc2V0KSkgJ2N1cnNvciB0KQoJ CSAoc3Vic3RyaW5nIHJlcGxhY2UgKDErIG9mZnNldCkpKSkKCShnb3RvLWNoYXIgZnJvbSkp CiAgICAgICAodAoJKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2Rpc3BsYXkgcmVwbGFjZSkKCShn b3RvLWNoYXIgdG8pKSkKICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICdkaXNwbGF5IHJlcGxh Y2UpKSkKCihkZWZ1biBzcGVjay1yZXBsYWNlLXF1ZXJ5ICh3b3JkIHJlcGxhY2UpCiAgIlF1 ZXJ5IHJlcGxhY2UgZnVydGhlciBvY2N1cnJlbmNlcyBvZiBXT1JEIGJ5IHNvbWV0aGluZyBs aWtlIFJFUExBQ0UuIgogIChsZXQgKChyZWdleHAgKGNvbmNhdCAiXFw8IiAocmVnZXhwLXF1 b3RlIHdvcmQpICJcXD4iKSkKCShxdWVyeSB0KQoJKGNhc2UtZm9sZC1zZWFyY2ggdCkKCSh0 ZXh0CgkgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzCgkgICJSZXBsYWNlIGAlcycgd2l0aCBg JXMnPyAgVHlwZSBcXDxzcGVjay1yZXBsYWNlLXF1ZXJ5LW1hcD5cXFtoZWxwXSBmb3IgaGVs cC4iKSkpCiAgICA7OyBDb25zaWRlciB3aWRlbmluZyBoZXJlLgogICAgOzsgQ29uc2lkZXIg dXNpbmcgYHVuZG8tYm91bmRhcnknIGhlcmUuCiAgICAoZ290by1jaGFyIChwb2ludC1taW4p KQogICAgKHdoaWxlIChhbmQgcXVlcnkgKG5vdCAoZW9icCkpCgkJKHJlLXNlYXJjaC1mb3J3 YXJkIHJlZ2V4cCBuaWwgdCkpCiAgICAgIChsZXQqICgoZnJvbSAobWF0Y2gtYmVnaW5uaW5n IDApKQoJICAgICAodG8gKG1hdGNoLWVuZCAwKSkKCSAgICAgKHdvcmQgKHNwZWNrLXN0cmlu ZyBmcm9tIHRvKSkKCSAgICAgKGJlZ2luIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpCgkg ICAgIChlbmQgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uIDIpKQoJICAgICBndWVzc2VzIHRh aWwpCgkod2hlbiAoYW5kIChub3QgKGFuZCBxdWVyeS1yZXBsYWNlLXNraXAtcmVhZC1vbmx5 CgkJCSAgICAgOzsgSWdub3JlIG1hdGNoZXMgd2l0aCByZWFkLW9ubHkgcHJvcGVydHkuCgkJ CSAgICAgKHRleHQtcHJvcGVydHktbm90LWFsbAoJCQkgICAgICAobWF0Y2gtYmVnaW5uaW5n IDApIChtYXRjaC1lbmQgMCkKCQkJICAgICAgJ3JlYWQtb25seSBuaWwpKSkKCQkgICAoc2F2 ZS1leGN1cnNpb24KCQkgICAgIChhbmQgKGdvdG8tY2hhciBmcm9tKQoJCQkgIDs7IFdoZW4g d2UgZW5mb3JjZSBmYWNlLCBtYWtlIHN1cmUgdG8gbm90CgkJCSAgOzsgb3BlcmF0ZSBvdXRz aWRlIG9mIHN1Y2ggYSBmYWNlLgoJCQkgIChvciAobm90IHNwZWNrLWZhY2UtZW5mb3JjZS1s aXN0KQoJCQkgICAgICAoc3BlY2stZW5mb3JjZS1mYWNlLWF0LXBvaW50KSkKCQkJICA7OyBv Y2N1ci4KCQkJICAoY29uc3AgKHNldHEgZ3Vlc3NlcyAoc3BlY2std29yZCB3b3JkKSkpKSkp CgkgICh3aGVuIChzZXRxIHRhaWwgKG1lbWJlci1pZ25vcmUtY2FzZSByZXBsYWNlIGd1ZXNz ZXMpKQoJICAgIDs7IFJFUExBQ0UgaXMgaW4gYGd1ZXNzZXMnLgoJICAgICh1bmxlc3MgKGVx IGd1ZXNzZXMgdGFpbCkKCSAgICAgIDs7IE1vdmUgUkVQTEFDRSB0byBoZWFkIG9mIGxpc3Qu CgkgICAgICAoc2V0cSBndWVzc2VzCgkJICAgIChjb25zIChjYXIgdGFpbCkKCQkJICAoZGVs ZXRlIChjYXIgdGFpbCkgZ3Vlc3NlcykpKSkpCgkgIChsZXQqICgocmVwbGFjZSAoY2FyIGd1 ZXNzZXMpKQoJCSAocmVwcy12ZWN0b3IgKHZjb25jYXQgZ3Vlc3NlcykpCgkJIChyZXBzLWlu ZGV4IDApCgkJIChyZXBzLW1heCAoMS0gKGxlbmd0aCByZXBzLXZlY3RvcikpKQoJCSAob3Zl cmxheSAob3IgKHNwZWNrLW92ZXJsYXktYXQtcG9pbnQKCQkJICAgICAgIGZyb20gJyhzcGVj ay1ndWVzcyBzcGVjay1taXNzKSkKCQkJICAgICAgKG1ha2Utb3ZlcmxheSBmcm9tIHRvKSkp CgkJIChkZWYgJ2ZvcndhcmQpCgkJIGNoYW5nZSBrZXkpCgkgICAgKG92ZXJsYXktcHV0IG92 ZXJsYXkgJ3NwZWNrIHQpCgkgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2Rpc3BsYXkgcmVw bGFjZSkKCSAgICAob3ZlcmxheS1wdXQgb3ZlcmxheSAnZmFjZSAnc3BlY2stcXVlcnkpCgkg ICAgKHVud2luZC1wcm90ZWN0CgkJKHdoaWxlIChtZW1xIGRlZiAnKGZvcndhcmQgYmFja3dh cmQgaGVscCkpCgkJICAoc2V0cSBxdWVyeSBuaWwpCgkJICAoc2V0cSBkZWYgbmlsKQoJCSAg KGxldCAoKG1lc3NhZ2UtbG9nLW1heCBuaWwpKQoJCSAgICA7OyBUaGlzIG1lc3NhZ2UgaXMg bmVlZGVkIHRvIGF2b2lkIGVjaG9pbmcgdHlwZWQKCQkgICAgOzsgY2hhcmFjdGVycyBpbiB0 aGUgZWNobyBhcmVhIChzZWUgcmVwbGFjZS5lbCkuCgkJICAgIChtZXNzYWdlIHRleHQgd29y ZCByZXBsYWNlKSkKCQkgIChzZXRxIGtleSAodmVjdG9yIChyZWFkLWV2ZW50KSkpCgkJICAo c2V0cSBkZWYgKGxvb2t1cC1rZXkgc3BlY2stcmVwbGFjZS1xdWVyeS1tYXAga2V5KSkKCQkg IChjb25kCgkJICAgKChlcSBkZWYgJ2FjY2VwdCkKCQkgICAgKHNldHEgY2hhbmdlIHQpCgkJ ICAgIChzZXRxIHF1ZXJ5IHQpKQoJCSAgICgoZXEgZGVmICdhY2NlcHQtYW5kLXF1aXQpCgkJ ICAgIChzZXRxIGNoYW5nZSB0KSkKCQkgICAoKGVxIGRlZiAncmVqZWN0KQoJCSAgICAoc2V0 cSBxdWVyeSB0KSkKCQkgICAoKGVxIGRlZiAncmVqZWN0LWFuZC1xdWl0KSkKCQkgICAoKGVx IGRlZiAnZm9yd2FyZCkKCQkgICAgKHNldHEgcmVwcy1pbmRleAoJCQkgIChpZiAoPSByZXBz LWluZGV4IHJlcHMtbWF4KSAwICgxKyByZXBzLWluZGV4KSkpCgkJICAgIChzZXRxIHJlcGxh Y2UgKGFyZWYgcmVwcy12ZWN0b3IgcmVwcy1pbmRleCkpCgkJICAgIChvdmVybGF5LXB1dCBv dmVybGF5ICdkaXNwbGF5IHJlcGxhY2UpKQoJCSAgICgoZXEgZGVmICdiYWNrd2FyZCkKCQkg ICAgKHNldHEgcmVwcy1pbmRleAoJCQkgIChpZiAoemVyb3AgcmVwcy1pbmRleCkgcmVwcy1t YXggKDEtIHJlcHMtaW5kZXgpKSkKCQkgICAgKHNldHEgcmVwbGFjZSAoYXJlZiByZXBzLXZl Y3RvciByZXBzLWluZGV4KSkKCQkgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2Rpc3BsYXkg cmVwbGFjZSkpCgkJICAgKChlcSBkZWYgJ2hlbHApCgkJICAgICh3aXRoLW91dHB1dC10by10 ZW1wLWJ1ZmZlciAiKkhlbHAqIgoJCSAgICAgIChwcmluYwoJCSAgICAgICAoY29uY2F0CgkJ CSJSZXBsYWNlIGAiIHdvcmQgIicgd2l0aCBgIiByZXBsYWNlICInPyAgVHlwZVxuXG4iCgkJ CShzcGVjay1rZXlzLWhlbHAgc3BlY2stcmVwbGFjZS1xdWVyeS1rZXlzKQoJCQkiXG5Bbnl0 aGluZyBlbHNlIHdpbGwgYWNjZXB0IHRoZSByZXBsYWNlbWVudCBhbmQgcmVyZWFkIGFzIGNv bW1hbmQuXG4iKSkKCQkgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBzdGFuZGFyZC1vdXRw dXQKCQkJKGhlbHAtbW9kZSkpKSkKCQkgICAodAoJCSAgICA7OyBUaGUgbW9kZS1leGl0ZWQg c3R1ZmYgaXMgbm90IGNsZWFuIGJ1dCBsZXQncyB0cnkKCQkgICAgOzsgZG9pbmcgdGhpcyBh cyBpbiBgcXVlcnktcmVwbGFjZScuCgkJICAgIChzZXRxIHRoaXMtY29tbWFuZCAnbW9kZS1l eGl0ZWQpCgkJICAgIChzZXRxIHVucmVhZC1jb21tYW5kLWV2ZW50cwoJCQkgIChhcHBlbmQg KGxpc3RpZnkta2V5LXNlcXVlbmNlIGtleSkKCQkJCSAgdW5yZWFkLWNvbW1hbmQtZXZlbnRz KSkKCQkgICAgKHNldHEgY2hhbmdlIHQpKSkpCgkgICAgICAoY29uZAoJICAgICAgIChjaGFu Z2UKCQkoc3BlY2stcmVwbGFjZS13b3JkIGZyb20gdG8gd29yZCByZXBsYWNlIG92ZXJsYXkp KQoJICAgICAgICgob3ZlcmxheXAgb3ZlcmxheSkKCQk7OyBJbnN0YWxsIG9yIHJlc3RvcmUg b3ZlcmxheSBwcm9wZXJ0aWVzLgoJCShvdmVybGF5LXB1dCBvdmVybGF5ICdkaXNwbGF5IG5p bCkgOyBTaWxseQoJCShvdmVybGF5LXB1dCBvdmVybGF5ICdmYWNlICdzcGVjay1ndWVzcykp KQoJICAgICAgKHVubGVzcyBxdWVyeSAoc3BlY2stZ290by1tYXJrZXIpKSkpKSkpKSkKCihk ZWZ1biBzcGVjay1yZXBsYWNlIChvdmVybGF5KQogICJSZXBsYWNlIHdvcmQgY292ZXJlZCBi eSBPVkVSTEFZIHdpdGggY29ycmVjdGlvbnMuIgogIChsZXQgKChwcm9jZXNzIHNwZWNrLXBy b2Nlc3MpKQogICAgKHdoZW4gKGFuZCBvdmVybGF5IHByb2Nlc3MpCiAgICAgIChwcm9jZXNz LXB1dCBwcm9jZXNzICdwcmVlbXB0ZWQgdCkKICAgICAgKHVud2luZC1wcm90ZWN0CgkgIChs ZXQqICgoZnJvbSAob3ZlcmxheS1zdGFydCBvdmVybGF5KSkKCQkgKHRvIChvdmVybGF5LWVu ZCBvdmVybGF5KSkKCQkgKG9mZnNldCAod2hlbiAoYW5kICg8IGZyb20gKHBvaW50KSkKCQkJ CSAgICAoPCAocG9pbnQpIHRvKSkKCQkJICAgOzsgT2Zmc2V0IG9mIGBwb2ludCcgd3J0IGBm cm9tJy4KCQkJICAgKC0gKHBvaW50KSBmcm9tKSkpCgkJICh3b3JkIChzcGVjay1zdHJpbmcg ZnJvbSB0bykpCgkJIChndWVzc2VzIChzcGVjay13b3JkIHdvcmQpKQoJCSAodGV4dAoJCSAg OzsgV2UgY2FuJ3QgdXNlIGFueSAiYCIgb3IgIiciIGhlcmUsIHRoZXNlIGNoYXJhY3RlcnMK CQkgIDs7IG1heSBiZSBwYXJ0IG9mIHRoZSB3b3JkIG9yIHRoZSByZXBsYWNlbWVudC4gIEhl bmNlCgkJICA7OyBlbnRpcmVseSByZWx5IG9uIGZhY2VzIChgc3BlY2stcXVlcnknKSB0byBz ZXQgdGhlbQoJCSAgOzsgYXBhcnQgZnJvbSB0aGUgcmVzdC4KCQkgIChzdWJzdGl0dXRlLWNv bW1hbmQta2V5cwoJCSAgIChjb25jYXQKCQkgICAgIlJlcGxhY2UgJXMgd2l0aCAlcyA/ICBU eXBlIFxcPHNwZWNrLXJlcGxhY2UtbWFwPlxcW2hlbHBdIGZvciBoZWxwLiIpKSkpCgkgICAg KGlmIChudWxsIGd1ZXNzZXMpCgkJKG1lc3NhZ2UgIk5vIGNvcnJlY3Rpb25zIGZvdW5kIikK CSAgICAgIChsZXQqICgocmVwbGFjZSAoY2FyIGd1ZXNzZXMpKQoJCSAgICAgKGd1ZXNzLXZl Y3RvciAodmNvbmNhdCBndWVzc2VzKSkKCQkgICAgIChndWVzcy1pbmRleCAwKQoJCSAgICAg KGd1ZXNzLW1heCAoMS0gKGxlbmd0aCBndWVzcy12ZWN0b3IpKSkKCQkgICAgIChkZWYgJ2Zv cndhcmQpCgkJICAgICBjaGFuZ2UgcXVlcnkga2V5KQoJCShzZXQtbWFya2VyIHNwZWNrLW1h cmtlciAocG9pbnQpKQoJCShzZXRxIHNwZWNrLW1hcmtlci13aW5kb3cgKHNlbGVjdGVkLXdp bmRvdykpIDsgPC0tLS0KCQkoc3BlY2stcmVwbGFjZS1wdXQtb3ZlcmxheSBvdmVybGF5IGZy b20gdG8gb2Zmc2V0IHJlcGxhY2UpCgkJKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2ZhY2UgJ3Nw ZWNrLXF1ZXJ5KQoJCSh1bndpbmQtcHJvdGVjdAoJCSAgICAocHJvZ24KCQkgICAgICAod2hp bGUgKG1lbXEgZGVmICcoZm9yd2FyZCBiYWNrd2FyZCBoZWxwKSkKCQkJKGxldCAoKG1lc3Nh Z2UtbG9nLW1heCBuaWwpKQoJCQkgIDs7IFRoaXMgbWVzc2FnZSBpcyBhbHNvIG5lZWRlZCB0 byBhdm9pZAoJCQkgIDs7IGVjaG9pbmcgdHlwZWQgY2hhcmFjdGVycyBpbiB0aGUgZWNobyBh cmVhCgkJCSAgOzsgKHNlZSByZXBsYWNlLmVsKS4KCQkJICAobWVzc2FnZQoJCQkgICB0ZXh0 IChwcm9wZXJ0aXplIHdvcmQgJ2ZhY2UgJ3NwZWNrLXF1ZXJ5KQoJCQkgICAocHJvcGVydGl6 ZSByZXBsYWNlICdmYWNlICdzcGVjay1xdWVyeSkpKQoJCQkoc2V0cSBrZXkgKHZlY3RvciAo cmVhZC1ldmVudCkpKQoJCQkoc2V0cSBkZWYgKGxvb2t1cC1rZXkgc3BlY2stcmVwbGFjZS1t YXAga2V5KSkKCQkJKGNvbmQKCQkJICgoZXEgZGVmICdhY2NlcHQpCgkJCSAgKHNldHEgY2hh bmdlIHQpCgkJCSAgKHNldHEgcXVlcnkgdCkpCgkJCSAoKGVxIGRlZiAnYWNjZXB0LWFuZC1x dWl0KQoJCQkgIChzZXRxIGNoYW5nZSB0KSkKCQkJICgobWVtcSBkZWYgJyhyZWplY3QgcmVq ZWN0LWFuZC1xdWl0KSkpCgkJCSAoKGVxIGRlZiAnZm9yd2FyZCkKCQkJICAoc2V0cSBndWVz cy1pbmRleAoJCQkJKGlmICg9IGd1ZXNzLWluZGV4IGd1ZXNzLW1heCkgMCAoMSsgZ3Vlc3Mt aW5kZXgpKSkKCQkJICAoc2V0cSByZXBsYWNlIChhcmVmIGd1ZXNzLXZlY3RvciBndWVzcy1p bmRleCkpCgkJCSAgKHNwZWNrLXJlcGxhY2UtcHV0LW92ZXJsYXkgb3ZlcmxheSBmcm9tIHRv IG9mZnNldCByZXBsYWNlKSkKCQkJICgoZXEgZGVmICdiYWNrd2FyZCkKCQkJICAoc2V0cSBn dWVzcy1pbmRleAoJCQkJKGlmICh6ZXJvcCBndWVzcy1pbmRleCkgZ3Vlc3MtbWF4ICgxLSBn dWVzcy1pbmRleCkpKQoJCQkgIChzZXRxIHJlcGxhY2UgKGFyZWYgZ3Vlc3MtdmVjdG9yIGd1 ZXNzLWluZGV4KSkKCQkJICAoc3BlY2stcmVwbGFjZS1wdXQtb3ZlcmxheSBvdmVybGF5IGZy b20gdG8gb2Zmc2V0IHJlcGxhY2UpKQoJCQkgKChlcSBkZWYgJ2hlbHApCgkJCSAgKHdpdGgt b3V0cHV0LXRvLXRlbXAtYnVmZmVyICIqSGVscCoiCgkJCSAgICAocHJpbmMKCQkJICAgICAo Y29uY2F0CgkJCSAgICAgICJSZXBsYWNlIGAiIHdvcmQgIicgd2l0aCBgIiByZXBsYWNlICIn PyAgVHlwZVxuXG4iCgkJCSAgICAgIChzcGVjay1rZXlzLWhlbHAgc3BlY2stcmVwbGFjZS1r ZXlzIHQpCgkJCSAgICAgICJcbkFueXRoaW5nIGVsc2Ugd2lsbCBhY2NlcHQgdGhlIHJlcGxh Y2VtZW50IGFuZCByZXJlYWQgYXMgY29tbWFuZC5cbiIpKQoJCQkgICAgKHdpdGgtY3VycmVu dC1idWZmZXIgc3RhbmRhcmQtb3V0cHV0CgkJCSAgICAgIChoZWxwLW1vZGUpKSkpCgkJCSAo dAoJCQkgIDs7IFRoZSBtb2RlLWV4aXRlZCBzdHVmZiBpcyBub3QgY2xlYW4gYnV0CgkJCSAg OzsgbGV0J3MgdHJ5IGRvaW5nIHRoaXMgYXMgaW4gYHF1ZXJ5LXJlcGxhY2UnLgoJCQkgIChz ZXRxIHRoaXMtY29tbWFuZCAnbW9kZS1leGl0ZWQpCgkJCSAgKHNldHEgdW5yZWFkLWNvbW1h bmQtZXZlbnRzCgkJCQkoYXBwZW5kIChsaXN0aWZ5LWtleS1zZXF1ZW5jZSBrZXkpCgkJCQkJ dW5yZWFkLWNvbW1hbmQtZXZlbnRzKSkKCQkJICAoc2V0cSBjaGFuZ2UgdCkpKSkpCgkJICAo Y29uZAoJCSAgIChjaGFuZ2UKCQkgICAgKHNwZWNrLXJlcGxhY2Utd29yZCBmcm9tIHRvIHdv cmQgcmVwbGFjZSBvdmVybGF5KSkKCQkgICAoKG92ZXJsYXlwIG92ZXJsYXkpCgkJICAgIDs7 IFJlc3RvcmUgb3ZlcmxheSBwcm9wZXJ0aWVzLgoJCSAgICAob3ZlcmxheS1wdXQgb3Zlcmxh eSAnZGlzcGxheSBuaWwpIDsgU2lsbHkKCQkgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2Zh Y2UgJ3NwZWNrLWd1ZXNzKSkpCgkJICAod2hlbiAoYW5kIHF1ZXJ5IHNwZWNrLXJlcGxhY2Ut cXVlcnkpCgkJICAgIChzcGVjay1yZXBsYWNlLXF1ZXJ5IChkb3duY2FzZSB3b3JkKSByZXBs YWNlKSkKCQkgIChzcGVjay1nb3RvLW1hcmtlcikpKSkpCgkocHJvY2Vzcy1wdXQgcHJvY2Vz cyAncHJlZW1wdGVkIG5pbCkpKSkpCgooZGVmdW4gc3BlY2stcmVwbGFjZS1wcmV2aW91cyAo Jm9wdGlvbmFsIGFyZykKICAiQ29ycmVjdCBwcmV2aW91cyB3b3JkIHdpdGggZ3Vlc3NlcyBp biBwbGFjZS4KV2l0aCBBUkcgbiBkbyB0aGlzIGZvciBudGggc3VjaCB3b3JkIHByZWNlZGlu ZyBgcG9pbnQnLiIKICAoaW50ZXJhY3RpdmUgInAiKQogIChsZXQgKChvdmVybGF5IChzcGVj ay1wcmV2aW91cy1vdmVybGF5IChvciBhcmcgMSkgJyhzcGVjay1ndWVzcykpKSkKICAgIChp ZiBvdmVybGF5Cgkoc3BlY2stcmVwbGFjZSBvdmVybGF5KQogICAgICAobGV0IChtZXNzYWdl LWxvZy1tYXgpCgkobWVzc2FnZSAiTm8gcHJldmlvdXMgd29yZCBmb3VuZCAuLi4iKSkpKSkK CihkZWZ1biBzcGVjay1yZXBsYWNlLW5leHQgKCZvcHRpb25hbCBhcmcpCiAgIkNvcnJlY3Qg bmV4dCB3b3JkIHdpdGggZ3Vlc3NlcyBpbiBwbGFjZS4KV2l0aCBBUkcgbiBkbyB0aGlzIGZv ciBudGggc3VjaCB3b3JkIGZvbGxvd2luZyBgcG9pbnQnLiIKICAoaW50ZXJhY3RpdmUgInAi KQogIChsZXQgKChvdmVybGF5IChzcGVjay1uZXh0LW92ZXJsYXkgKG9yIGFyZyAxKSAnKHNw ZWNrLWd1ZXNzKSkpKQogICAgKGlmIG92ZXJsYXkKCShzcGVjay1yZXBsYWNlIG92ZXJsYXkp CiAgICAgIChsZXQgKG1lc3NhZ2UtbG9nLW1heCkKCShtZXNzYWdlICJObyBuZXh0IHdvcmQg Zm91bmQgLi4uIikpKSkpCgo7OyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo7OyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXwo7OzsJCQkJICAgU3ludGFjdGljICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfCjs7IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCjs7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfCgo7OyAoZGVmYWxpYXMgJ3NwZWNrLWppdGlmeSAnaml0LWxv Y2stZm9udGlmeS1ub3cpCjs7IChkZWZhbGlhcyAnc3BlY2stbGF6aWZ5ICdsYXp5LWxvY2st Zm9udGlmeS1yZWdpb24pCgo7OyA7OyBTdGVmYW4ncyBpZGVhIG9mIGRvaW5nIHRoaXMuCjs7 IChkZWZzdWJzdCBzcGVjay1lbnN1cmUtZm9udGlmaWVkIChzdGFydCBlbmQpCjs7ICAgKGNv bmQKOzsgICAgKChhbmQgKGJvdW5kcCAnaml0LWxvY2stbW9kZSkgKHN5bWJvbC12YWx1ZSAn aml0LWxvY2stbW9kZSkpCjs7ICAgICAoc3BlY2staml0aWZ5IHN0YXJ0IGVuZCkpCjs7ICAg ICgoYW5kIChib3VuZHAgJ2xhenktbG9jay1tb2RlKSAoc3ltYm9sLXZhbHVlICdsYXp5LWxv Y2stbW9kZSkpCjs7ICAgICAoc3BlY2stbGF6aWZ5IHN0YXJ0IGVuZCkpKSkKCjs7IChkZWZ1 biBzcGVjay1zeW50YWN0aWMtcCAoKQo7OyAgICJSZXR1cm4gdCB3aGVuIGNoYXJhY3RlciBh dCBgcG9pbnQnIG1heSBiZSBzeW50YWN0aWNhbGx5IGNoZWNrZWQuIgo7OyAgIChhbmQgKG9y IChub3Qgc3BlY2stc3ludGFjdGljKQo7OyAJICAgKGxldCAoKHBhcnNlLXN0YXRlIChzeW50 YXgtcHBzcykpKQo7OyAJICAgICAob3IgKGFuZCAobnRoIDMgcGFyc2Utc3RhdGUpCjs7IAkJ ICAgICAgKG1lbXEgc3BlY2stc3ludGFjdGljICcoc3RyaW5ncyB0KSkpCjs7IAkJIChhbmQg KG50aCA0IHBhcnNlLXN0YXRlKQo7OyAJCSAgICAgIChtZW1xIHNwZWNrLXN5bnRhY3RpYyAn KGNvbW1lbnRzIHQpKSkpKSkKOzsgICAgICAgIChvciAobm90IHNwZWNrLWZhY2UtaW5oaWJp dC1saXN0KQo7OyAJICAgKHByb2duCjs7IAkgICAgICh1bmxlc3MgKGdldC10ZXh0LXByb3Bl cnR5IChwb2ludCkgJ2ZvbnRpZmllZCkKOzsgCSAgICAgICAoc3BlY2stZW5zdXJlLWZvbnRp ZmllZAo7OyAJCShsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKGxpbmUtZW5kLXBvc2l0aW9u KSkKOzsgCSAgICAgbmlsKSkKOzsgCSAgIChsZXQgKChmYWNlcyAoZ2V0LXRleHQtcHJvcGVy dHkgKHBvaW50KSAnZmFjZSkpKQo7OyAJICAgICA7OyBJbmhpYml0IHNwZWNraW5nIHRoaXMg d29yZCBpZiAob25lIG9mKSBpdHMgZmFjZShzKSBpcyBpbgo7OyAJICAgICA7OyBgc3BlY2st ZmFjZS1pbmhpYml0LWxpc3QnLgo7OyAJICAgICAoY29uZAo7OyAJICAgICAgKChub3QgZmFj ZXMpKQo7OyAJICAgICAgKChsaXN0cCBmYWNlcykKOzsgCSAgICAgICA7OyBXZSBoYXZlIGEg bGlzdCBvZiBmYWNlIHByb3BlcnRpZXMuCjs7IAkgICAgICAgKGNhdGNoICdmb3VuZAo7OyAJ CSAoZG9saXN0IChmYWNlIGZhY2VzIHQpCjs7IAkJICAgKHdoZW4gKG1lbXEgZmFjZSBzcGVj ay1mYWNlLWluaGliaXQtbGlzdCkKOzsgCQkJICh0aHJvdyAnZm91bmQgbmlsKSkpKSkKOzsg CSAgICAgICh0IDsgQXRvbS4KOzsgCSAgICAgICAobm90IChtZW1xIGZhY2VzIHNwZWNrLWZh Y2UtaW5oaWJpdC1saXN0KSkpKSkpKSkKCjs7IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCjs7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBfCjs7OwkJCQlQcm9jZXNzIG1hbmFnZW1lbnQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF8KOzsgX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K OzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF8KCihkZWZ1biBzcGVjay1maWx0ZXIgKHByb2Nl c3Mgc3RyaW5nKQogICJTcGVjayBwcm9jZXNzIGZpbHRlciBmdW5jdGlvbiIKICAod2hlbiAo YnVmZmVyLWxpdmUtcCAocHJvY2Vzcy1idWZmZXIgcHJvY2VzcykpCiAgICAod2l0aC1jdXJy ZW50LWJ1ZmZlciAocHJvY2Vzcy1idWZmZXIgcHJvY2VzcykKICAgICAgKHNhdmUtZXhjdXJz aW9uCiAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKICAgICAgICAoaW5zZXJ0IHN0 cmluZykKCTs7IE5vIHVzZSBmb3IgaXQgYnV0IC4uLgoJKHNldC1tYXJrZXIgKHByb2Nlc3Mt bWFyayBwcm9jZXNzKSAocG9pbnQpKSkpKSkKCihkZWZ1biBzcGVjay1yZS1zdGFydC1wcm9j ZXNzIChkaWN0aW9uYXJpZXMtc3RyaW5nIG9wdGlvbnMpCiAgIlJldHVybiBvbGQgb3IgbmV3 IHByb2Nlc3MgZm9yIGN1cnJlbnQgYnVmZmVyLiIKICAob3IgKGFuZCAocHJvY2Vzcy1saXZl LXAgc3BlY2stcHJvY2VzcykKCSAgIChvciAoYW5kIChzdHJpbmctZXF1YWwKCQkgICAgIHNw ZWNrLWJ1ZmZlci1kaWN0aW9uYXJpZXMtc3RyaW5nIGRpY3Rpb25hcmllcy1zdHJpbmcpCgkJ ICAgIChlcXVhbCBzcGVjay1idWZmZXItb3B0aW9ucyBvcHRpb25zKQoJCSAgICBzcGVjay1w cm9jZXNzKQoJICAgICAgIChsZXQgKChwcm9jZXNzLWJ1ZmZlciAocHJvY2Vzcy1idWZmZXIg c3BlY2stcHJvY2VzcykpKQoJCSA7OyBEaWN0aW9uYXJpZXMgb3Igb3B0aW9ucyBkb24ndCBt YXRjaCwga2lsbCBvbGQKCQkgOzsgcHJvY2Vzcy4KCQkgKGRlbGV0ZS1wcm9jZXNzIHNwZWNr LXByb2Nlc3MpCgkJICh3aGVuIChidWZmZXItbGl2ZS1wIHByb2Nlc3MtYnVmZmVyKQoJCSAg IChraWxsLWJ1ZmZlciBwcm9jZXNzLWJ1ZmZlcikpCgkJIChzZXRxIHNwZWNrLXByb2Nlc3Mg bmlsKSkpKQogICAgICAobGV0ICgocHJvY2VzcwoJICAgICAobWFrZS1wcm9jZXNzCgkgICAg ICA6bmFtZSAic3BlY2siCgkgICAgICA6YnVmZmVyIChnZW5lcmF0ZS1uZXctYnVmZmVyICIq c3BlY2sqIikKCSAgICAgIDpjb21tYW5kIChhcHBlbmQgKGxpc3QgImh1bnNwZWxsIiAiLWEi ICItZCIgZGljdGlvbmFyaWVzLXN0cmluZykKCQkJICAgICAgIG9wdGlvbnMpCgkgICAgICA6 Y29ubmVjdGlvbi10eXBlICdwaXBlCgkgICAgICA6ZmlsdGVyICMnc3BlY2stZmlsdGVyCgkg ICAgICA6bm9xdWVyeSB0KSkpCgkod2l0aC1jdXJyZW50LWJ1ZmZlciAocHJvY2Vzcy1idWZm ZXIgcHJvY2VzcykKCSAgKHNldHEgc3BlY2stcHJvY2Vzcy1tYXJrZXIgKG1ha2UtbWFya2Vy KSkKCSAgKHNldHEgYnVmZmVyLXVuZG8tbGlzdCB0KSkKCTs7IEFsd2F5cyB0dXJuIG9uIHRl cnNlIG1vZGUgLSBub3RlIHRoZSBuZXdsaW5lIQoJKHByb2Nlc3Mtc2VuZC1zdHJpbmcgcHJv Y2VzcyAiIVxuIikKCShzZXRxIHNwZWNrLXByb2Nlc3MgcHJvY2VzcykKCShzZXRxIHNwZWNr LWJ1ZmZlci1kaWN0aW9uYXJpZXMtc3RyaW5nIGRpY3Rpb25hcmllcy1zdHJpbmcpCglwcm9j ZXNzKSkpCgooZGVmdW4gc3BlY2stc3RhcnQtcHJvY2VzcyAoZGljdGlvbmFyaWVzICZvcHRp b25hbCBvcHRpb25zKQogICJTdGFydCBTcGVjayBwcm9jZXNzIGZvciBjdXJyZW50IGJ1ZmZl ci4iCiAgKGxldCAoKGRpY3Rpb25hcmllcy1zdHJpbmcgKGNhciBkaWN0aW9uYXJpZXMpKQoJ cHJvY2VzcykKICAgIChzZXRxIGRpY3Rpb25hcmllcyAoY2RyIGRpY3Rpb25hcmllcykpCiAg ICAod2hpbGUgZGljdGlvbmFyaWVzCiAgICAgIChzZXRxIGRpY3Rpb25hcmllcy1zdHJpbmcK CSAgICA7OyBObyBzcGFjZSBhZnRlciB0aGUgY29tbWEuCgkgICAgKGNvbmNhdCBkaWN0aW9u YXJpZXMtc3RyaW5nICIsIiAoY2FyIGRpY3Rpb25hcmllcykpKQogICAgICAoc2V0cSBkaWN0 aW9uYXJpZXMgKGNkciBkaWN0aW9uYXJpZXMpKSkKCiAgICAoc3BlY2stcmUtc3RhcnQtcHJv Y2VzcyBkaWN0aW9uYXJpZXMtc3RyaW5nIG9wdGlvbnMpKSkKCihkZWZ1biBzcGVjay13b3Jk ICh3b3JkKQogICJTZW5kIGEgd29yZC1saWtlIG9iamVjdCB0byBgc3BlY2stcHJvY2Vzcycg YW5kIHJldHVybiBsaXN0IG9mIGd1ZXNzZXMuIgogIChsZXQqIChndWVzc2VzIHByb2Nlc3Mp CiAgICAodW5sZXNzIHNwZWNrLXByb2Nlc3MKICAgICAgOzsgVEhJUyBTSE9VTEQgTk9UIEhB VkUgSEFQUEVORUQKICAgICAgKHNwZWNrLXN0YXJ0LXByb2Nlc3Mgc3BlY2stYnVmZmVyLWRp Y3Rpb25hcmllcyBzcGVjay1idWZmZXItb3B0aW9ucykpCiAgICAoc2V0cSBwcm9jZXNzIHNw ZWNrLXByb2Nlc3MpCiAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAocHJvY2Vzcy1idWZmZXIg cHJvY2VzcykKICAgICAgKGVyYXNlLWJ1ZmZlcikKICAgICAgKHByb2Nlc3Mtc2VuZC1zdHJp bmcgcHJvY2VzcyAoY29uY2F0ICJeIiB3b3JkICJcbiIpKQogICAgICAoc2l0LWZvciAwLjA1 KQogICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgICAod2hlbiAocmUtc2VhcmNo LWZvcndhcmQgIjogIiBuaWwgdCkKCSh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgIlxcKC4q P1xcKVxcKD86LCBcXHxcblxuXFwpIiBuaWwgdCkKCSAgKHNldHEgZ3Vlc3NlcyAoY29ucyAo bWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMSkgZ3Vlc3NlcykpKQoJKHdoZW4gZ3Vlc3Nl cyAobnJldmVyc2UgZ3Vlc3NlcykpKSkpKQoKKGRlZnVuIHNwZWNrLXJ1bi1kZWxheS10aW1l ciAoKQogICJSdW4gYHNwZWNrLWRlbGF5LXRpbWVyJy4KVGhpcyBpcyBhbiBpZGxlIHRpbWVy IGNhbGxlZCBlYWNoIHRpbWUgRW1hY3MgaGFzIGJlZW4gaWRsZSBmb3IKYHNwZWNrLWRlbGF5 JyBzZWNvbmRzLiIKICAodW5sZXNzIHNwZWNrLWRlbGF5LXRpbWVyCiAgICAoc2V0cSBzcGVj ay1kZWxheS10aW1lcgoJICAocnVuLXdpdGgtaWRsZS10aW1lciBzcGVjay1kZWxheSB0ICdz cGVjay13aW5kb3dzKSkpKQoKKGRlZnVuIHNwZWNrLXJ1bi1wYXVzZS10aW1lciAoKQogICJS dW4gYHNwZWNrLXBhdXNlLXRpbWVyJy4KVGhpcyBpcyBhbiBpZGxlIHRpbWVyIGNhbGxlZCBh ZnRlciBFbWFjcyBoYXMgYmVlbiBpZGxlIGZvcgpgc3BlY2stcGF1c2UnIHNlY29uZHMuICBJ dCdzIGFjdGl2YXRlZCBieSBgc3BlY2std2luZG93cycuIgogICh1bmxlc3Mgc3BlY2stcGF1 c2UtdGltZXIKICAgIChzZXRxIHNwZWNrLXBhdXNlLXRpbWVyICh0aW1lci1jcmVhdGUpKQog ICAgKHRpbWVyLXNldC1mdW5jdGlvbiBzcGVjay1wYXVzZS10aW1lciAnc3BlY2std2luZG93 cyAnKHQpKSkpCgooZGVmdW4gc3BlY2stYWN0aXZhdGUgKCkKICAiQWN0aXZhdGUgc3BlY2tp bmcgZm9yIGN1cnJlbnQgYnVmZmVyLiIKICAodW5sZXNzIHNwZWNrLWJ1ZmZlci1kaWN0aW9u YXJpZXMKICAgIChzZXRxIHNwZWNrLWJ1ZmZlci1kaWN0aW9uYXJpZXMKCSAgKG9yIChsZXQq ICgoZW50cnkgKGFzc29jIDAgc3BlY2stZGljdGlvbmFyaWVzLWFsaXN0KSkKCQkgICAgIChi YXNlIChudGggMSBlbnRyeSkpCgkJICAgICAob3RoZXJzIChudGggMiBlbnRyeSkpKQoJCShj b25zIGJhc2Ugb3RoZXJzKSkKCSAgICAgIChsaXN0IHNwZWNrLWRlZmF1bHQtZGljdGlvbmFy eSkpKSkKCiAgOzsgTWFrZSB0aGlzIGN1c3RvbWl6YWJsZSBzb21laG93IHNpbmNlIGl0IG92 ZXJyaWRlcyBhIHBlcnNvbmFsCiAgOzsgZGljdGlvbmFyeSBzcGVjaWZpZWQgdmlhIGBzcGVj ay1idWZmZXItb3B0aW9ucycuCiAgKHdoZW4gKGFuZCAoZXEgbWFqb3ItbW9kZSAndGV4aW5m by1tb2RlKSBidWZmZXItZmlsZS1uYW1lKQogICAgKGxldCAoKHNwZWxsZmlsZQoJICAgKGNv bmNhdAoJICAgIChmaWxlLW5hbWUtZGlyZWN0b3J5IGJ1ZmZlci1maWxlLW5hbWUpICJzcGVs bGZpbGUiKSkpCiAgICAgICh3aGVuIChmaWxlLWV4aXN0cy1wIHNwZWxsZmlsZSkKCShzZXRx IHNwZWNrLWJ1ZmZlci1vcHRpb25zCgkgICAgICAoYXBwZW5kIHNwZWNrLWJ1ZmZlci1vcHRp b25zIChsaXN0ICItcCIgc3BlbGxmaWxlKSkpKSkpCgogIChzcGVjay1yZW1vdmUtb3Zlcmxh eXMpCiAgKHNwZWNrLXJlbW92ZS10ZXh0LXByb3BlcnRpZXMpCiAgKGFkZC1ob29rICdhZnRl ci1jaGFuZ2UtZnVuY3Rpb25zICdzcGVjay1hZnRlci1jaGFuZ2UgbmlsIHQpCiAgKGFkZC1o b29rICdraWxsLWJ1ZmZlci1ob29rICdzcGVjay1yZW1vdmUtYnVmZmVyIG5pbCB0KQogIChh ZGQtaG9vayAnd2luZG93LXNjcm9sbC1mdW5jdGlvbnMgJ3NwZWNrLXdpbmRvdy1zY3JvbGwg bmlsIHQpCiAgKGFkZC1ob29rICd3aW5kb3ctc3RhdGUtY2hhbmdlLWZ1bmN0aW9ucyAnc3Bl Y2std2luZG93LXN0YXRlLWNoYW5nZSBuaWwgdCkKICAoc3BlY2stc3RhcnQtcHJvY2VzcyBz cGVjay1idWZmZXItZGljdGlvbmFyaWVzIHNwZWNrLWJ1ZmZlci1vcHRpb25zKQoKICA7OyBT ZXQgdXAgd29yZGNoYXJzIGZ1bmN0aW9uICh0byBjaGFuZ2UgaXQsIHlvdSBoYXZlIHRvIHJl c3RhcnQgc3BlY2sKICA7OyBpbiB0aGlzIGJ1ZmZlcikuCiAgKGRvbGlzdCAoZW50cnkgc3Bl Y2std29yZGNoYXJzLWFsaXN0KQogICAgKHdoZW4gKHN0cmluZy1lcXVhbCAobnRoIDAgZW50 cnkpIHNwZWNrLWJ1ZmZlci1kaWN0aW9uYXJpZXMtc3RyaW5nKQogICAgICAoc2V0cSBzcGVj ay13b3JkY2hhcnMtcmVnZXhwIChjb25jYXQgIlsiIChudGggMSBlbnRyeSkgIl0iKSkKICAg ICAgKHNldHEgc3BlY2std29yZGNoYXJzLWZ1bmN0aW9uCgkgICAgKGlmIChmdW5jdGlvbnAg KG50aCAyIGVudHJ5KSkKCQkobnRoIDIgZW50cnkpCgkgICAgICAnc3BlY2std29yZGNoYXJz KSkpKQoKICAoc3BlY2stYWRkLWJ1ZmZlcikKICAoc3BlY2stcnVuLWRlbGF5LXRpbWVyKQog IChzcGVjay1ydW4tcGF1c2UtdGltZXIpKQoKKGRlZnVuIHNwZWNrLWRlYWN0aXZhdGUgKCkK ICAiRGVhY3RpdmF0ZSBzcGVja2luZyBmb3IgY3VycmVudCBidWZmZXIuIgogIChzZXRxIHNw ZWNrLW1vZGUgbmlsKQogIDs7IEludGVudGlvbmFsbHkgZG8gbm90IHJlc2V0IHRoZSBmb2xs b3dpbmcuICBJdCBpcyB1c2VkIHdoZW4KICA7OyByZWFjdGl2YXRpbmcgU3BlY2sgaW4gdGhp cyBidWZmZXIgdmlhIGBzcGVjay1tb2RlJy4KICA7OyAgIChzZXRxIHNwZWNrLWJ1ZmZlci1k aWN0aW9uYXJpZXMgbmlsKQogIDs7IFJlbW92ZSB0ZXh0IHByb3BlcnRpZXMgYW5kIG92ZXJs YXlzLgogIChzcGVjay1yZW1vdmUtdGV4dC1wcm9wZXJ0aWVzKQogIChzcGVjay1yZW1vdmUt b3ZlcmxheXMpCiAgKHNwZWNrLXJlbW92ZS1idWZmZXIpCiAgKHJlbW92ZS1ob29rICdraWxs LWJ1ZmZlci1ob29rICdzcGVjay1yZW1vdmUtYnVmZmVyIHQpCiAgKHJlbW92ZS1ob29rICdh ZnRlci1jaGFuZ2UtZnVuY3Rpb25zICdzcGVjay1hZnRlci1jaGFuZ2UgdCkKICAocmVtb3Zl LWhvb2sgJ3dpbmRvdy1zY3JvbGwtZnVuY3Rpb25zICdzcGVjay13aW5kb3ctc2Nyb2xsIHQp KQoKOzs7IyMjYXV0b2xvYWQKKGRlZnVuIHNwZWNrLWJ1ZmZlciAoJm9wdGlvbmFsIGFyZykK ICAiVG9nZ2xlIGBzcGVjay1tb2RlJyBzZWxlY3RpbmcgYSBkaWN0aW9uYXJ5LgpXaXRoIEFS RyBuaWwgb3Igb21pdHRlZCB1c2UgdGhlIGRpY3Rpb25hcnkgc3BlY2lmZWQgYnkKYHNwZWNr LWRlZmF1bHQtZGljdGlvbmFyeScuICBXaXRoIGEgbnVtZXJpYyBwcmVmaXggYXJndW1lbnQg QVJHCnVzZSB0aGUgY29ycmVzcG9uZGluZyBlbnRyeSBmcm9tIGBzcGVjay1kaWN0aW9uYXJp ZXMtYWxpc3QnLgpPdGhlcndpc2UgcHJvbXB0IGZvciBhIGRpY3Rpb25hcnkuIgogIChpbnRl cmFjdGl2ZSAiUCIpCjs7ICAgKHJlcXVpcmUgJ3NwZWNrKQogIChsZXQgKGRpY3Rpb25hcmll cyBvcHRpb25zKQogICAgKGNvbmQKICAgICAoKG5vdCBhcmcpCiAgICAgIChzZXRxIGRpY3Rp b25hcmllcyAobGlzdCBzcGVjay1kZWZhdWx0LWRpY3Rpb25hcnkpKSkKICAgICAoKG51bWJl cnAgYXJnKQogICAgICAobGV0ICgoZW50cnkgKGFzc29jIGFyZyBzcGVjay1kaWN0aW9uYXJp ZXMtYWxpc3QpKSkKCShpZiBlbnRyeQoJICAgIChwcm9nbgoJICAgICAgKHNldHEgZGljdGlv bmFyaWVzIChjb25zIChudGggMSBlbnRyeSkgKG50aCAyIGVudHJ5KSkpCgkgICAgICAoc2V0 cSBvcHRpb25zIChudGggMyBlbnRyeSkpKQoJICAobWVzc2FnZSAiTm8gYXNzb2NpYXRpb24g Zm91bmQgZm9yIFwiJXNcIiIgYXJnKSkpKQogICAgICh0CiAgICAgIChsZXQgKChkaWN0aW9u YXJ5CgkgICAgIChjb21wbGV0aW5nLXJlYWQKCSAgICAgIChjb25jYXQKCSAgICAgICAiRW50 ZXIgIiAod2hlbiBzcGVjay1tb2RlICJuZXcgIikKCSAgICAgICAiZGljdGlvbmFyeSAoUkVU IGZvciBkZWZhdWx0LCBTUEMgdG8gY29tcGxldGUpOiAiKQoJICAgICAgOzsgCSAgICAgICht YXBjYXIgJ2xpc3QgKGNvbnMgImRlZmF1bHQiIHNwZWNrLWJhc2UtZGljdGlvbmFyaWVzKSkK CSAgICAgIHNwZWNrLWJhc2UtZGljdGlvbmFyaWVzIG5pbCB0IG5pbAoJICAgICAgc3BlY2st ZGljdGlvbmFyaWVzLWhpc3Rvcnkgc3BlY2stZGVmYXVsdC1kaWN0aW9uYXJ5KSkpCgkoc2V0 cSBkaWN0aW9uYXJpZXMgKGxpc3QgZGljdGlvbmFyeSkpKSkpCgogICAgKHdoZW4gKGFuZCAo ZXF1YWwgZGljdGlvbmFyaWVzIHNwZWNrLWJ1ZmZlci1kaWN0aW9uYXJpZXMpCgkgICAgICAg KGVxdWFsIG9wdGlvbnMgc3BlY2stYnVmZmVyLW9wdGlvbnMpKQogICAgICAobWVzc2FnZSAi QnVmZmVyIGRpY3Rpb25hcmllcyBhbmQgb3B0aW9ucyB1bmNoYW5nZWQiKSkKICAgICh3aGVu IHNwZWNrLW1vZGUKICAgICAgKHNwZWNrLWRlYWN0aXZhdGUpCiAgICAgIDs7IEh1bnNwZWxs IG9jY2FzaW9uYWxseSBoYW5ncyB3aGVuIHJlc3RhcnRpbmcsIG1heWJlIHRoZQogICAgICA7 OyBmb2xsb3dpbmcgaGVscHMuCiAgICAgIChzaXQtZm9yIDAuMSkpCiAgICAoc2V0cSBzcGVj ay1idWZmZXItZGljdGlvbmFyaWVzIGRpY3Rpb25hcmllcykKICAgIChzZXRxIHNwZWNrLWJ1 ZmZlci1vcHRpb25zIG9wdGlvbnMpCiAgICAoc3BlY2stbW9kZSkpKQoKKGRlZnVuIHNwZWNr LWxpZ2h0ZXIgKCkKICAiU3BlY2sgbGlnaHRlci4iCiAgKHByb3BlcnRpemUKICAgKGlmIChz dHJpbmdwIHNwZWNrLW1vZGUtbGluZS1zcGVja2luZykKICAgICAgIHNwZWNrLW1vZGUtbGlu ZS1zcGVja2luZwogICAgIChjb25jYXQgIiAiIHNwZWNrLWJ1ZmZlci1kaWN0aW9uYXJpZXMt c3RyaW5nKSkKICAgJ2ZhY2UgKGlmIChtZW1xIChzZWxlY3RlZC13aW5kb3cpIHNwZWNrLXdp bmRvdy1saXN0KQoJICAgICAnc3BlY2stbW9kZS1saW5lLXNwZWNraW5nCgkgICAnc3BlY2st bW9kZS1saW5lLXNwZWNrZWQpKSkKCjs7OyMjI2F1dG9sb2FkCihkZWZpbmUtbWlub3ItbW9k ZSBzcGVjay1tb2RlCiAgIlRvZ2dsZSBgc3BlY2stbW9kZScuCldpdGggcHJlZml4IEFSRywg dHVybiBzcGVjay1tb2RlIG9uIGlmIGFuZCBvbmx5IGlmIEFSRyBpcwpwb3NpdGl2ZS4gIFR1 cm5pbmcgb24gc3BlY2stbW9kZSB3aWxsIHNwZWxsLWNoZWNrIChcInNwZWNrXCIpIGFsbAp3 aW5kb3dzIHNob3dpbmcgdGhlIGN1cnJlbnQgYnVmZmVyLgoKR2xvYmFsIGJpbmRpbmdzIChj dXN0b21pemFibGUgdmlhIGBzcGVjay1tb2RlLWtleXMnKS4KClxce3NwZWNrLW1vZGUtbWFw fSIKICA6Z3JvdXAgJ3NwZWNrCiAgOmluaXQtdmFsdWUgbmlsCiAgOmxpZ2h0ZXIgKDpldmFs ICh3aGVuIHNwZWNrLWxpZ2h0ZXIgKHNwZWNrLWxpZ2h0ZXIpKSkKICA6a2V5bWFwIHNwZWNr LW1vZGUtbWFwCiAgOnJlcXVpcmUgJ3NwZWNrCiAgKGlmIHNwZWNrLW1vZGUKICAgICAgKHNw ZWNrLWFjdGl2YXRlKQogICAgKHNwZWNrLWRlYWN0aXZhdGUpKSkKCihwcm92aWRlICdzcGVj aykK --------------IRttFKIG0tKOQ3VYGl4vcgGz--