From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: "Herman, Geza" Newsgroups: gmane.emacs.bugs Subject: bug#62352: Very slow scroll-down-line with a lot of text properties Date: Tue, 21 Mar 2023 21:01:58 +0100 Message-ID: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------BgNMqBAAV7o0gSOVQGhZNeef" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="21220"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 To: 62352@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Mar 21 21:03:16 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1peiCR-0005H7-JV for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 21 Mar 2023 21:03:15 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1peiCH-0005yk-4D; Tue, 21 Mar 2023 16:03:05 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1peiCF-0005yL-Ba for bug-gnu-emacs@gnu.org; Tue, 21 Mar 2023 16:03:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1peiCF-0002Xh-29 for bug-gnu-emacs@gnu.org; Tue, 21 Mar 2023 16:03:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1peiCE-0006WG-Kl for bug-gnu-emacs@gnu.org; Tue, 21 Mar 2023 16:03:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: "Herman, Geza" Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 21 Mar 2023 20:03:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 62352 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.167942893324993 (code B ref -1); Tue, 21 Mar 2023 20:03:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 21 Mar 2023 20:02:13 +0000 Original-Received: from localhost ([127.0.0.1]:60876 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1peiBQ-0006V2-KA for submit@debbugs.gnu.org; Tue, 21 Mar 2023 16:02:13 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:59754) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1peiBN-0006Uu-Sj for submit@debbugs.gnu.org; Tue, 21 Mar 2023 16:02:11 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1peiBM-0005my-1f for bug-gnu-emacs@gnu.org; Tue, 21 Mar 2023 16:02:08 -0400 Original-Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1peiBG-0002I4-Pl for bug-gnu-emacs@gnu.org; Tue, 21 Mar 2023 16:02:06 -0400 Original-Received: by mail-wm1-x32e.google.com with SMTP id o11-20020a05600c4fcb00b003eb33ea29a8so10201408wmq.1 for ; Tue, 21 Mar 2023 13:02:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679428920; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=fqDtfzOQKqLlM9SGKQ4QKme0PTw2bkDjAGwLl6RpcQQ=; b=Y9djeKRjVOr9JWk8IsaxUNcuaeMFmFEFCGx8zEDFeela/CMUZGpcECBgVRWUKE3Eq3 OFp5Jc/GYSMAVNsHkVzAySXQ1UkoTgIexAOCQ0sQ3dKpIb2gVGVLiv48W9StW2A7saXX z//rVcOimQYcWCEN3bHgHYTCguddP8ezx1TfdpTFSyqdjz6n57vdmah/9fBZSJDGhdH+ kJ0nk27flH5KTVLuNdnhY10yk1wI3hQxEUCroysxMU40xhcOH0OsRs21XBSoVUWVjzyW gu5jHlxCwEbuVgqd7Sf5F85vdtBageiL0K1lsKEp87kbhFBA5qmfu5zyUcKXZVZyPYuD IEAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679428920; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fqDtfzOQKqLlM9SGKQ4QKme0PTw2bkDjAGwLl6RpcQQ=; b=6Hflzjkv8b5THnPasRm3d50ylXpOCZV9BzD6zXuDadXvFFcczaM2JHfA64db6dASoJ zG26/4KdLrAOgvO3OkkvDunp3xU4BTg7MkvTuyk55u401sbD8ld8aMHY5es2Z9N7jZMi dF9qvkXEl7RhGdbkZU+RIRAWmCEVbgUx0uSDFLorZ0zVtwQpjlwTT3+AS265irKi/Kcz zT60S8fA2DCDuz3QJwIZsWRphbV5QMjPom15c+PCzb114d9GueqKj4UJwZt9z0VpWpEa 37Mn1ChSJKWOrlKyYiIPvNLyk0SgUV28xV2LFXBtMm8oNIDyzXvOCIbG4Oe6gWjtNERB kk2g== X-Gm-Message-State: AO0yUKXisjS+v+WHp0iXJ38OHsdEAoPSCDfJ0EuyCDpef8dgcMIY9pbO HqCQtmAy54MDHQHC8jdwQl0hbePU/AI= X-Google-Smtp-Source: AK7set/QMBACyYSOjZfQmuo8GFL2EoqYqVg1IPvtuNK6pL3QWApg8WZbpekEq90UBGdKTqW/ynLCwQ== X-Received: by 2002:a1c:f718:0:b0:3ed:2ae9:6c75 with SMTP id v24-20020a1cf718000000b003ed2ae96c75mr3307423wmh.37.1679428920174; Tue, 21 Mar 2023 13:02:00 -0700 (PDT) Original-Received: from [192.168.8.108] (netacc-gpn-204-172-116.pool.yettel.hu. [5.204.172.116]) by smtp.gmail.com with ESMTPSA id bi8-20020a05600c3d8800b003dc434b39c7sm3602360wmb.0.2023.03.21.13.01.59 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 21 Mar 2023 13:01:59 -0700 (PDT) Content-Language: en-US Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=geza.herman@gmail.com; helo=mail-wm1-x32e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:258364 Archived-At: This is a multi-part message in MIME format. --------------BgNMqBAAV7o0gSOVQGhZNeef Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Emacs can freeze for seconds when scroll-down-line is called multiple times if the buffer contains a lot of text properties. I noticed this when using lsp-mode for C++. To reproduce the issue without lsp-mode, execute this elisp command with M-:, this will add a face to operators: (font-lock-add-keywords 'c++-mode '(("[][~!^&\|<>:=,.\\+*/%-]" 0 'error))) Also, bind scroll-down-line to a key, like shift-up: (global-set-key (kbd "") 'scroll-down-line) Then, put the attached example.cpp into a c++ buffer, move the point to the bottom, then press and hold shift-up. Emacs will update the window for several scroll events, but after that it won't update the screen for a while. Even after shift-up is released, Emacs needs several seconds to be interactive again. In GNU Emacs 29.0.60 (build 1, x86_64-pc-linux-gnu, GTK+ Version  3.24.36, cairo version 1.16.0) of 2023-03-21 built on okoska Repository revision: 7a1272168af1a5b82979efa29451147c5d867981 Repository branch: emacs-29 Windowing system distributor 'The X.Org Foundation', version 11.0.12101006 System Description: Debian GNU/Linux bookworm/sid Configured using:  'configure --with-native-compilation=aot --without-compress-install  --with-json --with-xinput2 --with-xwidgets --with-tree-sitter  --with-cairo' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB Important settings:   value of $LC_ALL: C.UTF-8   value of $LANG: en_US.UTF-8   value of $XMODIFIERS: @im=none   locale-coding-system: utf-8-unix Major mode: C++//l Minor modes in effect:   tooltip-mode: t   global-eldoc-mode: t   show-paren-mode: t   electric-indent-mode: t   mouse-wheel-mode: t   tool-bar-mode: t   menu-bar-mode: t   file-name-shadow-mode: t   global-font-lock-mode: t   font-lock-mode: t   blink-cursor-mode: t   line-number-mode: t   indent-tabs-mode: t   transient-mark-mode: t   auto-composition-mode: t   auto-encryption-mode: t   auto-compression-mode: t   abbrev-mode: t Load-path shadows: /home/geza/.emacs.d/elpa/transient-20230304.1149/transient hides /usr/local/share/emacs/29.0.60/lisp/transient Features: (shadow sort mail-extr emacsbug message mailcap yank-media puny dired dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068 epg-config gnus-util text-property-search time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils comp comp-cstr warnings icons subr-x rx cl-seq cl-macs gv cl-extra help-mode bytecomp byte-compile cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs cl-loaddefs cl-lib info evil-surround-autoloads scad-mode-autoloads qml-mode-autoloads evil-exchange-autoloads evil-args-autoloads cmake-font-lock-autoloads visual-fill-column-autoloads evil-textobj-anyblock-autoloads evil-visualstar-autoloads impatient-mode-autoloads volatile-highlights-autoloads maxima-autoloads evil-cleverparens-autoloads consult-dir-autoloads gnuplot-autoloads helpful-autoloads git-modes-autoloads font-lock-profiler-autoloads paredit-autoloads math-preview-autoloads modern-cpp-font-lock-autoloads column-enforce-mode-autoloads plantuml-mode-autoloads yaml-mode-autoloads magit-todos-autoloads hl-todo-autoloads treemacs-evil-autoloads define-word-autoloads paradox-autoloads highlight-quoted-autoloads rg-autoloads lsp-pyright-autoloads peep-dired-autoloads highlight-numbers-autoloads dired-filter-autoloads fold-this-autoloads eterm-256color-autoloads xterm-color-autoloads rainbow-mode-autoloads evil-org-autoloads evil-mc-autoloads doom-modeline-autoloads hungry-delete-autoloads vterm-autoloads magit-tbdiff-autoloads embark-consult-autoloads literate-calc-mode-autoloads free-keys-autoloads memory-usage-autoloads ccls-autoloads svg-tag-mode-autoloads atomic-chrome-autoloads websocket-autoloads test-simple-autoloads frog-jump-buffer-autoloads frog-menu-autoloads gcmh-autoloads elisp-refs-autoloads evil-textobj-line-autoloads yasnippet-autoloads highlight-doxygen-autoloads vertico-autoloads elfeed-autoloads consult-lsp-autoloads dired-narrow-autoloads highlight-autoloads smeargle-autoloads clean-aindent-mode-autoloads cmake-mode-autoloads string-inflection-autoloads ws-butler-autoloads ov-autoloads gif-screencast-autoloads diredfl-autoloads go-mode-autoloads centered-cursor-mode-autoloads lsp-ui-autoloads camcorder-autoloads easy-mmode org-jira-autoloads ag-autoloads queue-autoloads orderless-autoloads hide-lines-autoloads git-timemachine-autoloads csv-mode-autoloads broadcast-autoloads evil-leader-autoloads hide-mode-line-autoloads company-box-autoloads transpose-frame-autoloads lsp-treemacs-autoloads evil-textobj-entire-autoloads htmlize-autoloads dired-subtree-autoloads dired-hacks-utils-autoloads evil-multiedit-autoloads iedit-autoloads orgit-autoloads evil-textobj-column-autoloads names-autoloads advice wgrep-autoloads ninja-mode-autoloads smartparens-autoloads powerthesaurus-autoloads request-autoloads git-gutter-fringe-autoloads git-gutter-autoloads highlight-indent-guides-autoloads parent-mode-autoloads pcre2el-autoloads rust-mode-autoloads evil-snipe-autoloads fringe-helper-autoloads glsl-mode-autoloads disk-usage-autoloads highlight-symbol-autoloads git-identity-autoloads consult-flycheck-autoloads consult-autoloads shrink-path-autoloads treemacs-projectile-autoloads winum-autoloads svg-lib-autoloads org-superstar-autoloads rmsbolt-autoloads dired-git-info-autoloads all-the-icons-autoloads ob-ipython-autoloads dash-functional-autoloads evil-collection-autoloads annalist-autoloads treemacs-magit-autoloads treemacs-autoloads cfrs-autoloads pfuture-autoloads ace-window-autoloads avy-autoloads demangle-mode-autoloads frame-local-autoloads evil-anzu-autoloads anzu-autoloads evil-indent-plus-autoloads better-jumper-autoloads delight-autoloads company-autoloads projectile-autoloads marginalia-autoloads dumb-jump-autoloads popup-autoloads bm-autoloads vdiff-magit-autoloads vdiff-autoloads hydra-autoloads evil-lion-autoloads evil-autoloads goto-chg-autoloads evil-matchit-autoloads async-autoloads simple-httpd-autoloads lorem-ipsum-autoloads expand-region-autoloads shut-up-autoloads flycheck-autoloads pkg-info-autoloads epl-autoloads page-break-lines-autoloads embark-autoloads which-key-autoloads blamer-autoloads posframe-autoloads git-link-autoloads drag-stuff-autoloads code-review-autoloads emojify-autoloads forge-autoloads yaml-autoloads deferred-autoloads uuidgen-autoloads ghub-autoloads treepy-autoloads a-autoloads magit-autoloads magit-section-autoloads git-commit-autoloads with-editor-autoloads transient-autoloads closql-autoloads emacsql-autoloads compat-autoloads lsp-mode-autoloads lv-autoloads markdown-mode-autoloads spinner-autoloads ht-autoloads f-autoloads s-autoloads dash-autoloads rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads xwidget-internal dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process native-compile emacs) Memory information: ((conses 16 150387 10063)  (symbols 48 11460 0)  (strings 32 32439 3583)  (string-bytes 1 1406757)  (vectors 16 19041)  (vector-slots 8 386441 14177)  (floats 8 38 102)  (intervals 56 7894 0)  (buffers 984 13)) --------------BgNMqBAAV7o0gSOVQGhZNeef Content-Type: text/x-c++src; charset=UTF-8; name="example.cpp" Content-Disposition: attachment; filename="example.cpp" Content-Transfer-Encoding: base64 I2luY2x1ZGUgPGFycmF5PgoKc3RydWN0IEFmZmluZU1hdHJpeCB7CiAgICBzdGQ6OmFycmF5 PGZsb2F0LCAxMj4gYzsKfTsKCkFmZmluZU1hdHJpeCBmb28oY29uc3QgQWZmaW5lTWF0cml4 ICZhLCBjb25zdCBBZmZpbmVNYXRyaXggJmIpIHsKICAgIEFmZmluZU1hdHJpeCByOwoKICAg IHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAq IGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNb NV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsg YS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1sw XSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNb M107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsg YS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1 XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBi LmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzdd ID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5jWzEx XSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzldICog Yi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICogYi5j WzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBd ID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sx MF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzddICsg YS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIu Y1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0g PSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDld OwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5j WzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAq IGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0gYS5j WzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAg IHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAq IGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNb Nl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNdICsg YS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNb IDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIu Y1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5jWzVd ICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsg YS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5j WzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBh LmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0 XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBh LmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBd ICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIu Y1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIu Y1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVd ICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIu Y1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0g PSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBd OwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5j WzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBd ICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0g YS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07 CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5j WzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzld ICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1swXSA9 IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sgOF07 CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNb Ml0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFdICog Yi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIuY1sz XSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107CgogICAg ci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZdICog Yi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1 XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBh LmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5jWzRd ICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEuY1s3 XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRdICsg YS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsgYS5j WzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5jWzhd ICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAgICBy LmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEwXSAq IGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEu Y1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0g KiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5j WzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5j WzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSAr IGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5j WzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9 IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07 CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNb Nl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICog Yi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5j WzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAg ICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEw XSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICog Yi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5j WzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoK ICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1sy XSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBi LmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJd ICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEu Y1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBh LmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRd ICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEu Y1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0g KiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5j WzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5j WzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzld ICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICog Yi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNb MTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIu Y1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzdd ICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAq IGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNb MV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNb IDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsg YS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sx XSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0g YS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsK ICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2 XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBi LmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNd ICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICBy LmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAq IGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5j WzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJd ICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0g YS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0g KyBhLmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIu Y1s0XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0g KyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5j WzBdICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAg IHIuY1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAq IGIuY1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5j WzVdICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAq IGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNb Nl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNb MTBdOwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsg YS5jWzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5j WzBdICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDld ID0gYS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sg OV07CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsg YS5jWzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5j WzldICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1sw XSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sg OF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBh LmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFd ICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIu Y1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107Cgog ICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZd ICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIu Y1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0g KyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5j WzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEu Y1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRd ICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsg YS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5j WzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAg ICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEw XSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSAr IGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNb MF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAg ci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICog Yi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3 XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICog Yi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1 XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sg OV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBh LmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVd ICogYi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0g YS5jWzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07 CiAgICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5j WzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzld ICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICog Yi5jWzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFd OwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEu Y1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0g KiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5j WzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9 IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0g KyBhLmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5j WzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSAr IGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNb NF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAg ci5jWzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICog Yi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5j WzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhd ICogYi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICBy LmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAq IGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5j WzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHJldHVybiByOwp9Cg== --------------BgNMqBAAV7o0gSOVQGhZNeef--