From unknown Sun Jun 22 03:49:13 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#25408 <25408@debbugs.gnu.org> To: bug#25408 <25408@debbugs.gnu.org> Subject: Status: Remove Decorations Around Emacs Frame (Windows OS) Reply-To: bug#25408 <25408@debbugs.gnu.org> Date: Sun, 22 Jun 2025 10:49:13 +0000 retitle 25408 Remove Decorations Around Emacs Frame (Windows OS) reassign 25408 emacs submitter 25408 Arthur Miller severity 25408 wishlist thanks From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 09 17:20:52 2017 Received: (at submit) by debbugs.gnu.org; 9 Jan 2017 22:20:52 +0000 Received: from localhost ([127.0.0.1]:48236 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cQiJ9-0008JP-Ri for submit@debbugs.gnu.org; Mon, 09 Jan 2017 17:20:52 -0500 Received: from eggs.gnu.org ([208.118.235.92]:52990) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cQiIr-0008IY-2G for submit@debbugs.gnu.org; Mon, 09 Jan 2017 17:20:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQiIi-0001kr-Ms for submit@debbugs.gnu.org; Mon, 09 Jan 2017 17:20:27 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_50, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,HTML_MESSAGE,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:50304) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cQiIi-0001kn-I9 for submit@debbugs.gnu.org; Mon, 09 Jan 2017 17:20:24 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43945) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQiIf-0007j5-3P for bug-gnu-emacs@gnu.org; Mon, 09 Jan 2017 17:20:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQiIb-0001jM-Vv for bug-gnu-emacs@gnu.org; Mon, 09 Jan 2017 17:20:21 -0500 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]:34110) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cQiIb-0001j1-JM for bug-gnu-emacs@gnu.org; Mon, 09 Jan 2017 17:20:17 -0500 Received: by mail-wm0-x241.google.com with SMTP id c85so25308271wmi.1 for ; Mon, 09 Jan 2017 14:20:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=Sxyy2PO50/hwLyDBkb3e/jFzAKmCH1E+tYLNzhhFMMk=; b=FYM3iLHI6liyyyLtLYQbjI+W1yKI3keRpBUyK7ycD8SHILpMH3musJa3Jl7dNEuD8c Xrngs4acD4nP0sKf8yHeJnC6tiYdRSm58QuYGFUG1FyklyEr1bkXFIVzYy6Atm1+rhbQ FbC3sSKYS/Ml/zyr+Rn8r5A5+2DtIwgAX0WFmZ/WcKj1sQ9gmvTXMhNZYP86zve+truR B8E//gRGtI+PmQ+CXBTQTNIkZQ5/dCLwnIkMuzeBd30V4XpVmgNar0jTitQXoot2QuNj bVKPNGzXCz8aGNqAiI9jjo+TYUX2NKaYsjTTqBfW+/wyOKoZ1M3HY8EzjPliCdR6Q7eL Ebyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=Sxyy2PO50/hwLyDBkb3e/jFzAKmCH1E+tYLNzhhFMMk=; b=YuCnd+cOQoNtAMq6sE21JW+HphhPt3GbuJ94Vu0FDeZzu4etZjG0t6eB2Px4uFcKBY YIPNW13+XsE5h8Lyvs85cyF/4eP0tJoORvF00tibbpV/6ZGZAzqPucQFbD6WpkD7YenN L6bN1C+eha9jZ1WCAkwpCTfxSZqMRpRkU/qDoNZsPcAo5OaJ1x+B4qUgi8iz+JZtfdO9 yhrv7SUpZ+nAXskumXGJGEWvCrtzHeldnTXIUK1KFoftZf+FESK8DD151PH1+xAmXuvO RR41C4RhBRvqc6CHa3eiZzBicKa8bl8qN5c93VXqpbp6NJk3Kq2P/yeXF/vcxTBeWZwA Ohlg== X-Gm-Message-State: AIkVDXLu5AwvJ1ee+2OdWXgoCdUaydS5nbUSGGaEwffxkaK3FS99gUW23t5saaOLNzWjU9Av7cPALFnfy0nIjw== X-Received: by 10.223.136.36 with SMTP id d33mr1017752wrd.199.1484000414458; Mon, 09 Jan 2017 14:20:14 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.169.98 with HTTP; Mon, 9 Jan 2017 14:20:14 -0800 (PST) From: Arthur Miller Date: Mon, 9 Jan 2017 23:20:14 +0100 Message-ID: Subject: Remove Decorations Around Emacs Frame (Windows OS) To: bug-gnu-emacs@gnu.org Content-Type: multipart/alternative; boundary=001a1149231a8ce93a0545b0c528 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -3.8 (---) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Mon, 09 Jan 2017 17:20:50 -0500 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.8 (---) --001a1149231a8ce93a0545b0c528 Content-Type: text/plain; charset=UTF-8 I would like to be able to run Emacs without frame decorations on Win OS. I don't like those since they break visual styles of my Emacs, especially if I use a dark theme. Also caption bar take some of vertical screen estate unnecessary. I didn't found any reliable way to do this from Emacs. It can be done via Win32 API SetWindowLongPtr by changing EMACS_CLASS style to WS_POPUP|WS_TABSTOP|WS_VISIBLE. It can be changed back to original by either saving old style in a variable or by setting corresponding style bits for standard window frame. I suggest either to implement this in a "border-width" property when border width is set to 0, or to implement a new variable/function that can be set in init file, such as for example "no-frame-borders t". I have made small prototype/mockup to illustrate what I mean which can be seen on https://www.youtube.com/watch?v=ii_gTRCuXog Care has to be taken to note that when removing caption bar and borders it will be no longer possible to move and resize window unless user have other means of performing those applications. I am using a small opensource app called alt-drag (https://stefansundin.github.io/altdrag/). For convienience one might implement moving/resizing ops in Emacs window procedure. For ex they can be faked by just sending corresponding messages back to wnd proc. I think standard way to do this is by handling WM_NCHITTEST, as for example: case WM_NCHITTEST: { LRESULT hit = DefWindowProc(hWnd, message, wParam, lParam); if (hit == HTCLIENT) hit = HTCAPTION; return hit; } Similar could maybe work for HTSIZE but I haven't tested it myself though, so I can't tell for sure. In GNU Emacs 26.0.50.1 (x86_64-w64-mingw32) of 2017-01-05 built on DESKTOP-EBMFI2K Repository revision: d88cdad2847726438c7d1de9fd2651c4be9243aa Windowing system distributor 'Microsoft Corp.', version 10.0.14393 Recent messages: Wrote c:/Users/Arthur/.emacs [yas] Prepared just-in-time loading of snippets successfully. [2 times] Loading c:/Users/Arthur/.emacs.d/plugins/realgud/realgud/common/custom.el (source)...done Loading c:/Users/Arthur/.emacs.d/plugins/bookmark-plus/bookmark+-mac.el (source)...done Loading c:/Users/Arthur/.emacs.d/plugins/bookmark-plus/bookmark+-mac.el (source)...done Loading c:/Users/Arthur/.emacs.d/plugins/bookmark-plus/bookmark+-mac.el (source)...done Loading c:/Users/Arthur/.emacs.d/plugins/bookmark-plus/bookmark+-mac.el (source)...done Loading c:/Users/Arthur/.emacs.d/plugins/bookmark-plus/bookmark+-mac.el (source)...done Loading c:/Users/Arthur/.emacs.d/etc/recentf...done (Shell command succeeded with no output) [2 times] Configured using: 'configure --without-imagemagick --with-modules --without-makeinfo' Configured features: XPM JPEG TIFF GIF PNG RSVG SOUND NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS MODULES Important settings: value of $LANG: SVE locale-coding-system: cp1252 Major mode: Emacs-Lisp Minor modes in effect: window-number-mode: t global-semanticdb-minor-mode: t global-semantic-idle-scheduler-mode: t semantic-mode: t global-ede-mode: t helm-mode: t shell-dirtrack-mode: t helm-autoresize-mode: t async-bytecomp-package-mode: t global-auto-complete-mode: t auto-complete-mode: t yas-global-mode: t yas-minor-mode: t global-undo-tree-mode: t undo-tree-mode: t override-global-mode: t which-function-mode: t save-place-mode: t global-auto-revert-mode: t global-hl-line-mode: t electric-pair-mode: t winner-mode: t show-paren-mode: t recentf-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-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: t Load-path shadows: c:/Users/Arthur/.emacs.d/plugins/company/company-cmake hides c:/Users/Arthur/.emacs.d/plugins/company-cmake/company-cmake c:/Users/Arthur/.emacs.d/plugins/helm/helm hides c:/Users/Arthur/.emacs.d/plugins/helm-core/helm c:/Users/Arthur/.emacs.d/plugins/helm/helm-source hides c:/Users/Arthur/.emacs.d/plugins/helm-core/helm-source c:/Users/Arthur/.emacs.d/plugins/helm/helm-multi-match hides c:/Users/Arthur/.emacs.d/plugins/helm-core/helm-multi-match c:/Users/Arthur/.emacs.d/plugins/helm/helm-lib hides c:/Users/Arthur/.emacs.d/plugins/helm-core/helm-lib c:/Users/Arthur/.emacs.d/plugins/load-relative/el-get-install hides c:/Users/Arthur/.emacs.d/plugins/loc-changes/el-get-install c:/Users/Arthur/.emacs.d/plugins/load-relative/el-get-install hides c:/Users/Arthur/.emacs.d/plugins/realgud/el-get-install c:/Users/Arthur/.emacs.d/plugins/realgud/realgud hides c:/Users/Arthur/.emacs.d/plugins/xxrealgud/realgud c:/Users/Arthur/.emacs.d/plugins/loc-changes/test/test-basic hides c:/Users/Arthur/.emacs.d/plugins/test-simple/test/test-basic Features: (shadow flyspell ispell mail-extr emacsbug sendmail helm-command helm-elisp helm-eval edebug emms-player-simple-mpv-control-functions emms-player-simple-mpv extras emms-player-vlc emms-player-mplayer emms-setup emms-librefm-stream emms-librefm-scrobbler emms-playlist-limit emms-volume emms-volume-amixer emms-i18n emms-history emms-score emms-stream-info emms-metaplaylist-mode emms-bookmarks emms-cue emms-mode-line-icon emms-browser sort emms-playlist-sort emms-last-played emms-player-xine emms-player-mpd tq emms-playing-time emms-lyrics emms-url emms-player-simple emms-streams emms-show-all emms-tag-editor emms-info-metaflac emms-mark emms-mode-line emms-cache emms-info-ogginfo emms-info-mp3info emms-info later-do emms-playlist-mode emms-source-playlist emms-source-file locate emms emms-compat ztree ztree-diff ztree-diff-model ztree-dir ztree-view ztree-util rainbow-delimiters vline sanityinc-solarized-dark-theme color-theme-sanityinc-solarized neotree dired-xtra direx dired+ image-file bookmark+ bookmark+-key bookmark+-1 gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail mail-source tls gnutls utf7 netrc nnoo gnus-spec gnus-int gnus-range message puny rfc822 mml mml-sec epa epg epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader gnus-win gnus nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums mail-utils mm-util mail-prsvr bookmark+-bmu bookmark+-lit bookmark+-mac ediff-merg ediff-wind ediff-diff ediff-mult ediff-help ediff-init ediff-util ediff realgud realgud-recursive-autoloads realgud-zshdb realgud:zshdb-track-mode realgud:zshdb-core realgud:zshdb-init realgud-trepan3k realgud:trepan3k-track-mode realgud:trepan3k-core realgud:trepan3k-init realgud-trepan2 realgud:trepan2-track-mode realgud:trepan2-core realgud:trepan2-init realgud-trepanpl realgud:trepanpl-track-mode realgud:trepanpl-core realgud:trepanpl-init realgud-trepanjs realgud:trepanjs-track-mode realgud:trepanjs-core realgud:trepanjs-init realgud-trepan realgud:trepan-track-mode realgud:trepan-core realgud:trepan-init realgud-remake realgud:remake-track-mode realgud:remake-core realgud:remake-init realgud-rdebug realgud-rdebug-track-mode realgud-rdebug-core realgud-rdebug-init realgud-perldb realgud:perldb-track-mode realgud:perldb-core realgud:perldb-init realgud-lang-perl realgud-pdb realgud:pdb-track-mode realgud:pdb-core realgud:pdb-init realgud-nodejs realgud:nodejs-track-mode realgud:nodejs-core realgud:nodejs-init realgud-lang-js realgud-kshdb realgud:kshdb-track-mode realgud:kshdb-core realgud:kshdb-init realgud-jdb realgud:jdb-track-mode realgud-lang-ruby realgud:jdb-core realgud:jdb-init gud realgud-ipdb realgud:ipdb-track-mode realgud:ipdb-core realgud:ipdb-init realgud-lang-python realgud-gub realgud:gub-track-mode realgud:gub-core realgud:gub-init realgud-gdb realgud:gdb-track-mode realgud:gdb-init realgud:gdb-core realgud-bashdb realgud:bashdb-track-mode realgud:bashdb-core realgud:bashdb-init realgud-lang-posix-shell realgud:run realgud-track-mode realgud-backtrace-mode realgud-track realgud-shortkey realgud-menu realgud-eval realgud-cmds realgud-send realgud-window realgud-utils realgud-init realgud-file esh-var esh-io esh-cmd esh-opt esh-ext esh-proc esh-arg esh-groups eshell esh-module esh-util esh-mode realgud-core realgud-reset realgud-buffer-helper realgud-buffer-backtrace realgud-buffer-command realgud-buffer-info realgud-regexp realgud-lochist the-org-mode-expansions org org-macro org-footnote org-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 ob-core ob-eval org-compat org-macs org-loaddefs cal-menu calendar cal-loaddefs realgud-bp realgud-bp-image-data realgud-loc realgud-buffer-source realgud-key realgud-custom key realgud-follow realgud-lang realgud-fringe realgud-helper test-simple loc-changes load-relative company avy window-number thing-edit sr-speedbar semantic/db-mode semantic/db semantic/idle semantic/ctxt semantic/sb semantic/sort semantic/format semantic/tag-ls semantic/find semantic/util-modes semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local find-func ede/speedbar ede/files ede ede/detect ede/base ede/auto ede/source eieio-base eieio-speedbar speedbar sb-image ezimage dframe eieio-custom cedet indent-guide helm-gtags pulse ggtags ewoc helm-descbinds helm-mode helm-files rx image-dired image-mode tramp tramp-compat tramp-loaddefs trampver ucs-normalize shell pcomplete parse-time format-spec dired-x dired-aux ffap helm-buffers helm-elscreen helm-tags helm-bookmark helm-adaptive helm-info info bookmark pp helm-locate helm-grep helm-regexp helm-external helm-net xml url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf mailcap helm-utils helm-help helm-types helm helm-source eieio-compat helm-multi-match helm-lib dired dired-loaddefs helm-config helm-autoloads helm-easymenu async-bytecomp flymake compile comint ansi-color auto-complete-config auto-complete popup autopair fill-column-indicator js2-mode-expansions js2-mode etags xref project js-mode-expansions js html-mode-expansions sgml-mode subr-x dom json map seq cc-mode-expansions cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs yasnippet expand-region text-mode-expansions er-basic-expansions thingatpt expand-region-core expand-region-custom undo-tree derived edmacro kmacro diff cl smart-mode-line advice rich-minority speck async bind-key easy-mmode diminish misearch multi-isearch add-log browse-url url-util url-parse auth-source cl-seq eieio byte-opt bytecomp byte-compile cl-extra help-mode cconv eieio-core cl-macs gv eieio-loaddefs password-cache url-vars server warnings which-func imenu saveplace autorevert filenotify hl-line elec-pair winner ring paren time-date recentf tree-widget wid-edit cl-loaddefs pcase cl-lib easymenu mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel dos-w32 ls-lisp disp-table term/w32-win w32-win w32-vars term/common-win tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded 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 w32notify w32 multi-tty make-network-process emacs) Memory information: ((conses 16 793703 34966) (symbols 56 60903 3) (miscs 48 166 213) (strings 32 132076 15794) (string-bytes 1 4760642) (vectors 16 81947) (vector-slots 8 1290395 16246) (floats 8 1646 412) (intervals 56 1557 50) (buffers 976 17)) --001a1149231a8ce93a0545b0c528 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I would like to be able to run Emacs without frame decorat= ions on Win
OS. I don't like those since they break visual styles of= my Emacs,
especially if I use a dark theme. Also caption bar take some = of
vertical screen estate unnecessary. I didn't found any reliable w= ay
to do this from Emacs.

It can be done via Win32 API SetWindowL= ongPtr by changing EMACS_CLASS
style to WS_POPUP|WS_TABSTOP|WS_VISIBLE. = It can be changed back to
original by either saving old style in a varia= ble or by setting
corresponding style bits for standard window frame. I = suggest either
to implement this in a "border-width" property = when border width
is set to 0, or to implement a new variable/function t= hat can be set in
init file, such as for example "no-frame-borders = t". I have made small
prototype/mockup to illustrate what I mean wh= ich can be seen on
https://www.youtube.com/watch?v=3Dii_gTRCuXog

Care has to b= e taken to note that when removing caption bar and borders
it will be no= longer possible to move and resize window unless user
have other means = of performing those applications. I am using a small
opensource app call= ed alt-drag (https://st= efansundin.github.io/altdrag/).
For convienience one might implement= moving/resizing ops in Emacs
window procedure. For ex they can be faked= by just sending corresponding messages
back to wnd proc. I think standa= rd way to do this is by handling
WM_NCHITTEST, as for example:
case W= M_NCHITTEST: {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 LRESULT hit = =3D DefWindowProc(hWnd, message, wParam, lParam);
=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 if (hit =3D=3D HTCLIENT) hit =3D HTCAPTION;
=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return hit;
=C2=A0=C2=A0=C2=A0 }
Similar could maybe work for HTSIZE but I haven't tested it myself=
though, so I can't tell for sure.



In GNU Emacs 26.0.= 50.1 (x86_64-w64-mingw32)
=C2=A0of 2017-01-05 built on DESKTOP-EBMFI2KRepository revision: d88cdad2847726438c7d1de9fd2651c4be9243aa
Windowin= g system distributor 'Microsoft Corp.', version 10.0.14393
Recen= t messages:
Wrote c:/Users/Arthur/.emacs
[yas] Prepared just-in-time = loading of snippets successfully. [2 times]
Loading c:/Users/Arthur/.ema= cs.d/plugins/realgud/realgud/common/custom.el (source)...done
Loading c:= /Users/Arthur/.emacs.d/plugins/bookmark-plus/bookmark+-mac.el (source)...do= ne
Loading c:/Users/Arthur/.emacs.d/plugins/bookmark-plus/bookmark+-mac.= el (source)...done
Loading c:/Users/Arthur/.emacs.d/plugins/bookmark-plu= s/bookmark+-mac.el (source)...done
Loading c:/Users/Arthur/.emacs.d/plug= ins/bookmark-plus/bookmark+-mac.el (source)...done
Loading c:/Users/Arth= ur/.emacs.d/plugins/bookmark-plus/bookmark+-mac.el (source)...done
Loadi= ng c:/Users/Arthur/.emacs.d/etc/recentf...done
(Shell command succeeded = with no output) [2 times]

Configured using:
=C2=A0'configure = --without-imagemagick --with-modules --without-makeinfo'

Configu= red features:
XPM JPEG TIFF GIF PNG RSVG SOUND NOTIFY ACL GNUTLS LIBXML2= ZLIB
TOOLKIT_SCROLL_BARS MODULES

Important settings:
=C2=A0 v= alue of $LANG: SVE
=C2=A0 locale-coding-system: cp1252

Major mode= : Emacs-Lisp

Minor modes in effect:
=C2=A0 window-number-mode: t<= br>=C2=A0 global-semanticdb-minor-mode: t
=C2=A0 global-semantic-idle-sc= heduler-mode: t
=C2=A0 semantic-mode: t
=C2=A0 global-ede-mode: t
= =C2=A0 helm-mode: t
=C2=A0 shell-dirtrack-mode: t
=C2=A0 helm-autores= ize-mode: t
=C2=A0 async-bytecomp-package-mode: t
=C2=A0 global-auto-= complete-mode: t
=C2=A0 auto-complete-mode: t
=C2=A0 yas-global-mode:= t
=C2=A0 yas-minor-mode: t
=C2=A0 global-undo-tree-mode: t
=C2=A0= undo-tree-mode: t
=C2=A0 override-global-mode: t
=C2=A0 which-functi= on-mode: t
=C2=A0 save-place-mode: t
=C2=A0 global-auto-revert-mode: = t
=C2=A0 global-hl-line-mode: t
=C2=A0 electric-pair-mode: t
=C2= =A0 winner-mode: t
=C2=A0 show-paren-mode: t
=C2=A0 recentf-mode: t=C2=A0 tooltip-mode: t
=C2=A0 global-eldoc-mode: t
=C2=A0 eldoc-mod= e: t
=C2=A0 electric-indent-mode: t
=C2=A0 mouse-wheel-mode: t
=C2= =A0 file-name-shadow-mode: t
=C2=A0 global-font-lock-mode: t
=C2=A0 f= ont-lock-mode: t
=C2=A0 blink-cursor-mode: t
=C2=A0 auto-composition-= mode: t
=C2=A0 auto-encryption-mode: t
=C2=A0 auto-compression-mode: = t
=C2=A0 column-number-mode: t
=C2=A0 line-number-mode: t
=C2=A0 t= ransient-mark-mode: t

Load-path shadows:
c:/Users/Arthur/.emacs.d= /plugins/company/company-cmake hides c:/Users/Arthur/.emacs.d/plugins/compa= ny-cmake/company-cmake
c:/Users/Arthur/.emacs.d/plugins/helm/helm hides = c:/Users/Arthur/.emacs.d/plugins/helm-core/helm
c:/Users/Arthur/.emacs.d= /plugins/helm/helm-source hides c:/Users/Arthur/.emacs.d/plugins/helm-core/= helm-source
c:/Users/Arthur/.emacs.d/plugins/helm/helm-multi-match hides= c:/Users/Arthur/.emacs.d/plugins/helm-core/helm-multi-match
c:/Users/Ar= thur/.emacs.d/plugins/helm/helm-lib hides c:/Users/Arthur/.emacs.d/plugins/= helm-core/helm-lib
c:/Users/Arthur/.emacs.d/plugins/load-relative/el-get= -install hides c:/Users/Arthur/.emacs.d/plugins/loc-changes/el-get-install<= br>c:/Users/Arthur/.emacs.d/plugins/load-relative/el-get-install hides c:/U= sers/Arthur/.emacs.d/plugins/realgud/el-get-install
c:/Users/Arthur/.ema= cs.d/plugins/realgud/realgud hides c:/Users/Arthur/.emacs.d/plugins/xxrealg= ud/realgud
c:/Users/Arthur/.emacs.d/plugins/loc-changes/test/test-basic = hides c:/Users/Arthur/.emacs.d/plugins/test-simple/test/test-basic

F= eatures:
(shadow flyspell ispell mail-extr emacsbug sendmail helm-comman= d
helm-elisp helm-eval edebug emms-player-simple-mpv-control-functionsemms-player-simple-mpv extras emms-player-vlc emms-player-mplayer
emms= -setup emms-librefm-stream emms-librefm-scrobbler
emms-playlist-limit em= ms-volume emms-volume-amixer emms-i18n
emms-history emms-score emms-stre= am-info emms-metaplaylist-mode
emms-bookmarks emms-cue emms-mode-line-ic= on emms-browser sort
emms-playlist-sort emms-last-played emms-player-xin= e emms-player-mpd tq
emms-playing-time emms-lyrics emms-url emms-player-= simple emms-streams
emms-show-all emms-tag-editor emms-info-metaflac emm= s-mark
emms-mode-line emms-cache emms-info-ogginfo emms-info-mp3info emm= s-info
later-do emms-playlist-mode emms-source-playlist emms-source-file= locate
emms emms-compat ztree ztree-diff ztree-diff-model ztree-dir ztr= ee-view
ztree-util rainbow-delimiters vline sanityinc-solarized-dark-the= me
color-theme-sanityinc-solarized neotree dired-xtra direx dired+
im= age-file bookmark+ bookmark+-key bookmark+-1 gnus-sum gnus-group
gnus-un= do gnus-start gnus-cloud nnimap nnmail mail-source tls gnutls
utf7 netrc= nnoo gnus-spec gnus-int gnus-range message puny rfc822 mml
mml-sec epa = epg epg-config mm-decode mm-bodies mm-encode mail-parse
rfc2231 mailabbr= ev gmm-utils mailheader gnus-win gnus nnheader gnus-util
rmail rmail-loa= ddefs rfc2047 rfc2045 ietf-drums mail-utils mm-util
mail-prsvr bookmark+= -bmu bookmark+-lit bookmark+-mac ediff-merg
ediff-wind ediff-diff ediff-= mult ediff-help ediff-init ediff-util ediff
realgud realgud-recursive-au= toloads realgud-zshdb
realgud:zshdb-track-mode realgud:zshdb-core realgu= d:zshdb-init
realgud-trepan3k realgud:trepan3k-track-mode realgud:trepan= 3k-core
realgud:trepan3k-init realgud-trepan2 realgud:trepan2-track-mode=
realgud:trepan2-core realgud:trepan2-init realgud-trepanpl
realgud:t= repanpl-track-mode realgud:trepanpl-core realgud:trepanpl-init
realgud-t= repanjs realgud:trepanjs-track-mode realgud:trepanjs-core
realgud:trepan= js-init realgud-trepan realgud:trepan-track-mode
realgud:trepan-core rea= lgud:trepan-init realgud-remake
realgud:remake-track-mode realgud:remake= -core realgud:remake-init
realgud-rdebug realgud-rdebug-track-mode realg= ud-rdebug-core
realgud-rdebug-init realgud-perldb realgud:perldb-track-m= ode
realgud:perldb-core realgud:perldb-init realgud-lang-perl realgud-pd= b
realgud:pdb-track-mode realgud:pdb-core realgud:pdb-init realgud-nodej= s
realgud:nodejs-track-mode realgud:nodejs-core realgud:nodejs-init
r= ealgud-lang-js realgud-kshdb realgud:kshdb-track-mode
realgud:kshdb-core= realgud:kshdb-init realgud-jdb realgud:jdb-track-mode
realgud-lang-ruby= realgud:jdb-core realgud:jdb-init gud realgud-ipdb
realgud:ipdb-track-m= ode realgud:ipdb-core realgud:ipdb-init
realgud-lang-python realgud-gub = realgud:gub-track-mode realgud:gub-core
realgud:gub-init realgud-gdb rea= lgud:gdb-track-mode realgud:gdb-init
realgud:gdb-core realgud-bashdb rea= lgud:bashdb-track-mode
realgud:bashdb-core realgud:bashdb-init realgud-l= ang-posix-shell
realgud:run realgud-track-mode realgud-backtrace-mode re= algud-track
realgud-shortkey realgud-menu realgud-eval realgud-cmds real= gud-send
realgud-window realgud-utils realgud-init realgud-file esh-var = esh-io
esh-cmd esh-opt esh-ext esh-proc esh-arg esh-groups eshell esh-mo= dule
esh-util esh-mode realgud-core realgud-reset realgud-buffer-helper<= br>realgud-buffer-backtrace realgud-buffer-command realgud-buffer-info
r= ealgud-regexp realgud-lochist the-org-mode-expansions org org-macro
org-= footnote org-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 ob-core ob-eval org-compat org-macs
org-loaddefs = cal-menu calendar cal-loaddefs realgud-bp
realgud-bp-image-data realgud-= loc realgud-buffer-source realgud-key
realgud-custom key realgud-follow = realgud-lang realgud-fringe
realgud-helper test-simple loc-changes load-= relative company avy
window-number thing-edit sr-speedbar semantic/db-mo= de semantic/db
semantic/idle semantic/ctxt semantic/sb semantic/sort sem= antic/format
semantic/tag-ls semantic/find semantic/util-modes semantic/= util semantic
semantic/tag semantic/lex semantic/fw mode-local find-func= ede/speedbar
ede/files ede ede/detect ede/base ede/auto ede/source eiei= o-base
eieio-speedbar speedbar sb-image ezimage dframe eieio-custom cede= t
indent-guide helm-gtags pulse ggtags ewoc helm-descbinds helm-mode
= helm-files rx image-dired image-mode tramp tramp-compat tramp-loaddefs
t= rampver ucs-normalize shell pcomplete parse-time format-spec dired-x
dir= ed-aux ffap helm-buffers helm-elscreen helm-tags helm-bookmark
helm-adap= tive helm-info info bookmark pp helm-locate helm-grep
helm-regexp helm-e= xternal helm-net xml url url-proxy url-privacy
url-expand url-methods ur= l-history url-cookie url-domsuf mailcap
helm-utils helm-help helm-types = helm helm-source eieio-compat
helm-multi-match helm-lib dired dired-load= defs helm-config
helm-autoloads helm-easymenu async-bytecomp flymake com= pile comint
ansi-color auto-complete-config auto-complete popup autopair=
fill-column-indicator js2-mode-expansions js2-mode etags xref projectjs-mode-expansions js html-mode-expansions sgml-mode subr-x dom json map<= br>seq cc-mode-expansions cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-= styles cc-align cc-engine cc-vars cc-defs yasnippet expand-region
text-m= ode-expansions er-basic-expansions thingatpt expand-region-core
expand-r= egion-custom undo-tree derived edmacro kmacro diff cl
smart-mode-line ad= vice rich-minority speck async bind-key easy-mmode
diminish misearch mul= ti-isearch add-log browse-url url-util url-parse
auth-source cl-seq eiei= o byte-opt bytecomp byte-compile cl-extra
help-mode cconv eieio-core cl-= macs gv eieio-loaddefs password-cache
url-vars server warnings which-fun= c imenu saveplace autorevert
filenotify hl-line elec-pair winner ring pa= ren time-date recentf
tree-widget wid-edit cl-loaddefs pcase cl-lib easy= menu mule-util tooltip
eldoc electric uniquify ediff-hook vc-hooks lisp-= float-type mwheel
dos-w32 ls-lisp disp-table term/w32-win w32-win w32-va= rs term/common-win
tool-bar dnd fontset image regexp-opt fringe tabulate= d-list replace
newcomment text-mode elisp-mode lisp-mode prog-mode regis= ter page
menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-= lock
font-lock syntax facemenu font-core term/tty-colors frame cl-generi= c
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet la= o
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czecheuropean ethiopic indian cyrillic chinese composite charscript
case-tab= le epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer
cl-prelo= aded nadvice loaddefs button faces cus-face macroexp files
text-properti= es overlay sha1 md5 base64 format env code-pages mule
custom widget hash= table-print-readable backquote w32notify w32 multi-tty
make-network-proc= ess emacs)

Memory information:
((conses 16 793703 34966)
=C2= =A0(symbols 56 60903 3)
=C2=A0(miscs 48 166 213)
=C2=A0(strings 32 13= 2076 15794)
=C2=A0(string-bytes 1 4760642)
=C2=A0(vectors 16 81947)=C2=A0(vector-slots 8 1290395 16246)
=C2=A0(floats 8 1646 412)
=C2= =A0(intervals 56 1557 50)
=C2=A0(buffers 976 17))


--001a1149231a8ce93a0545b0c528-- From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 10 03:23:21 2017 Received: (at 25408) by debbugs.gnu.org; 10 Jan 2017 08:23:21 +0000 Received: from localhost ([127.0.0.1]:48377 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cQriC-0000Km-Ux for submit@debbugs.gnu.org; Tue, 10 Jan 2017 03:23:21 -0500 Received: from mout.gmx.net ([212.227.17.22]:60618) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cQri9-0000KP-Vm for 25408@debbugs.gnu.org; Tue, 10 Jan 2017 03:23:18 -0500 Received: from [192.168.1.100] ([212.95.7.56]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MDV5t-1cF3Ka0i6P-00GosP; Tue, 10 Jan 2017 09:23:09 +0100 Message-ID: <587499E6.9030205@gmx.at> Date: Tue, 10 Jan 2017 09:23:02 +0100 From: martin rudalics MIME-Version: 1.0 To: Arthur Miller , 25408@debbugs.gnu.org Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:pURT+ppP0VcppulBDMsYB8ixNW0BYfRmzHCmZJIszRxnOzGQOQp o51LKbLNipWLvkRzw88ayECVoL98KYenV2peIWAyC2/Tn40l0f7mHNCImi2nbTi5HRbmCm4 guVKEbhuv3xE13tmyd1X+FaSoYSQw8byUdPks1zkipuGwiG8h/C29apwmgHmWvV5CpCmI+8 tEA0XkiStBd6c12+3NOJg== X-UI-Out-Filterresults: notjunk:1;V01:K0:ZlHDJYTk7XI=:3HsEsAXMG4s7drpqTxRcKh UCJ93OqJYLHMWGgVwoBLsNnmyq8X4IR2SwGZ8MPgcZNv8CqxYZYwJF7k9uq+BBrj22xIzkSJV +AmfhuFSmueL2opu0vcfH7PVKZ8PlVwctUmTtE02oF2vi1kJY1G22ritL5vCR60iEcGz3Pe5S 7390DzIZTS5q+YguxglV1hI9NmOV2ucFERD0szYI6ZMAptZnS38r+LuHlY5HCNLKpobslz5Zb 33bhniRKrfCoLHUzWlxDLmOm0OfPbCaCcU3vA/Mdc4Y2wTSMJ4QGWql1FWmf+HfjBSKxxot4I zXr5XuPrC2zAPLCqGgD2fxFLZJk9FgUd2YFq2Ap8DvzQvYUe7nN0ozbTGrLlbK9A0jesyDtNX XWdj1J7YwljA/0l9Yp9BUo2yoWnFDSmh/vh9ckLsAx2vIXRX7KVBEOkcVAzT5AnRzppaYnAgg dFE+wGA13PDPmyILo9GOlwVqQTv3o0w1Ts8e73e4hDqFkG+DTNU/HIae21Sm0zQ7JmXhoAMdx Ne+P2wNtOuLTqOWLwrtrMueWn0ZIALnzEESVuQgsicOp9Z5aAftawIYwM133Cp7ijfXqo0n0g tDI+DFvJVrCUb2/10PDyulaHVUnMYVzYMQKtXmbSBgDszR+ainc0F709g5WnkYYiggva/d8Q/ ktNBs7CWK2KKnHAelKFf9KCbI7eWA+55DxhETB+MneJOF+K+qJdmN81mpSpujHBGn6ZjeBFk0 swgW0mhmdSWZmTnq9LlS/wbnsKM8GVsxrfS+twVOwJpAheAjVC8rx7mAbCZZjVnGE2xvZk0Ab JM0ePpxFqRcs/iRNP7xWAsEBVp0KbPy7jlpachFaUbUGVVuk0zqaItkNyq4v5KyEINiRF6CQO 4xlOmP8e8xDEK2qjiJlXVmAyyUoax02FthfXbbTZWv30gONCRd5T9w8IuYN1oGEVGbFRGDT/P P6xuCilbMa/WZ/7t8/A9wPf8dYT9B642NMCG0y2VUwz6v62mfLXQaLOqvVcUmR1EnrrNFam6F nF+zfTnDbFOauBO+QFmgwmtF2g+3HfVQwfrCUhZe3M7vKqrS2tdUm9r+WphS16SbaA== X-Spam-Score: 2.2 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > I suggest either > to implement this in a "border-width" property when border width > is set to 0, or to implement a new variable/function that can be set in > init file, such as for example "no-frame-borders t". [...] Content analysis details: (2.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [212.95.7.56 listed in dnsbl.sorbs.net] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.17.22 listed in dnsbl.sorbs.net] -0.0 SPF_PASS SPF: sender matches SPF record -1.2 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.22 listed in wl.mailspike.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.17.22 listed in list.dnswl.org] X-Debbugs-Envelope-To: 25408 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.2 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > I suggest either > to implement this in a "border-width" property when border width > is set to 0, or to implement a new variable/function that can be set in > init file, such as for example "no-frame-borders t". [...] Content analysis details: (2.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.17.22 listed in dnsbl.sorbs.net] 3.6 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [212.95.7.56 listed in dnsbl.sorbs.net] -1.2 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.22 listed in wl.mailspike.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.17.22 listed in list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) -0.0 SPF_PASS SPF: sender matches SPF record > I suggest either > to implement this in a "border-width" property when border width > is set to 0, or to implement a new variable/function that can be set in > init file, such as for example "no-frame-borders t". I'm using a frame parameter "undecorated" for this. On Windows it is handled by the following function in w32fns.c: void x_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) { HWND hwnd = FRAME_W32_WINDOW (f); DWORD dwStyle = GetWindowLong (hwnd, GWL_STYLE); Lisp_Object border_width = Fcdr (Fassq (Qborder_width, f->param_alist)); block_input (); if (!NILP (new_value) && !FRAME_UNDECORATED (f)) { dwStyle = ((dwStyle & ~WS_THICKFRAME & ~WS_CAPTION) | ((NUMBERP (border_width) && (XINT (border_width) > 0)) ? WS_BORDER : false)); SetWindowLong (hwnd, GWL_STYLE, dwStyle); SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED); FRAME_UNDECORATED (f) = true; } else if (NILP (new_value) && FRAME_UNDECORATED (f)) { SetWindowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | WS_CAPTION | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU); SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED); FRAME_UNDECORATED (f) = false; } unblock_input (); } where FRAME_UNDECORATED (f) returns false if f is currently decorated. If the `border-width' parameter is 0 the frame gets no border, otherwise it gets the standard Windows thin-line border. > Care has to be taken to note that when removing caption bar and borders > it will be no longer possible to move and resize window unless user > have other means of performing those applications. You can use the `left', `top', `width' and `height' frame parameters for that. martin From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 10 12:07:32 2017 Received: (at 25408) by debbugs.gnu.org; 10 Jan 2017 17:07:32 +0000 Received: from localhost ([127.0.0.1]:49079 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cQztT-0006xm-SH for submit@debbugs.gnu.org; Tue, 10 Jan 2017 12:07:32 -0500 Received: from eggs.gnu.org ([208.118.235.92]:41608) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cQztT-0006xa-1O for 25408@debbugs.gnu.org; Tue, 10 Jan 2017 12:07:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cQztK-0007Z7-Nk for 25408@debbugs.gnu.org; Tue, 10 Jan 2017 12:07:25 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:33572) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cQztK-0007Z0-Ki; Tue, 10 Jan 2017 12:07:22 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2241 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cQztJ-00031p-R2; Tue, 10 Jan 2017 12:07:22 -0500 Date: Tue, 10 Jan 2017 19:07:20 +0200 Message-Id: <838tqietdj.fsf@gnu.org> From: Eli Zaretskii To: martin rudalics In-reply-to: <587499E6.9030205@gmx.at> (message from martin rudalics on Tue, 10 Jan 2017 09:23:02 +0100) Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -8.2 (--------) X-Debbugs-Envelope-To: 25408 Cc: arthur.miller.no1@gmail.com, 25408@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: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -8.2 (--------) > Date: Tue, 10 Jan 2017 09:23:02 +0100 > From: martin rudalics > > > I suggest either > > to implement this in a "border-width" property when border width > > is set to 0, or to implement a new variable/function that can be set in > > init file, such as for example "no-frame-borders t". > > I'm using a frame parameter "undecorated" for this. On Windows it is > handled by the following function in w32fns.c: > > void > x_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) I don't see this in the current sources. Is this your local change? If so, is there a matching implementation for 'undecorated' on X? Can both be added to Emacs? If there's only an implementation of 'undecorated' for MS-Windows, I suggest to adapt it such that the same effect is produced when border-width is set to zero. The border-width parameter is already supported on X, so we will have no problem with that. WDYT? From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 10 13:07:44 2017 Received: (at 25408) by debbugs.gnu.org; 10 Jan 2017 18:07:44 +0000 Received: from localhost ([127.0.0.1]:49113 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cR0pk-0001nP-0J for submit@debbugs.gnu.org; Tue, 10 Jan 2017 13:07:44 -0500 Received: from mout.gmx.net ([212.227.17.22]:57226) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cR0ph-0001nA-EW for 25408@debbugs.gnu.org; Tue, 10 Jan 2017 13:07:41 -0500 Received: from [192.168.1.101] ([212.95.7.52]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MFi1J-1cCQV61Dnh-00Ebmy; Tue, 10 Jan 2017 19:07:33 +0100 Message-ID: <587522DB.2050105@gmx.at> Date: Tue, 10 Jan 2017 19:07:23 +0100 From: martin rudalics MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> In-Reply-To: <838tqietdj.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:dtU92x8VhmepjB+nRU9bvqbAU5nRLxos2TdPuYtmuenX/rMz8yd rJVJ7Av/F1CaBN0rtDNH1DIqiUsxUjUg/5UsP/6aoD4GWeybUSQsgvhNbDBLTXDQZ2Mnwop AEDZgtQJfb1ibM9U2Skas/L2hTZ4dTtcORMki1n1/PuRRpRFF0NcaaeklxjYUo24uK1Niac IlpWjI3ifS/dPM7f0pLoA== X-UI-Out-Filterresults: notjunk:1;V01:K0:a9N4PX8iafw=:RFKWgQLJ8VjTR8o7IR1NCa jW+hn+v94c8CnMi5li3AZP2jITeQrczJW6Ldiewwam+JWqFhRaqrbfZ6KZ0QpQeryzBK5s/tZ wQGpPb5YZYzw/WGGBcRJ10b722Jj5ai+MgkhU84DX1OrYInHlDE4v3zuwpXlatr7lYlyTOvmR 3Q0JaHgdluTBn7G0M0GgNyQ3TlWevoMyHiUm23GIMpSUPoQi4WK5WkwFGbntFcNd6+O7lGNio Roi5GAAkuTnnXLTmCJQBe7Mg8lJf44Mj4tbYhiqnLmR97y3uohOUx4cf1MjceGoJDHUUl3YH8 tfzY3AMv2To2NQPJ/Pho6n8qEaRZ+zJ1JPCT9Tt4nyca4ijDiOkC67Dez3hR4VGwWaAaJKLJB 8Mza5PDLKwKetWiIZBU1HDds3piCvHq2mTedNmhbBXYP6e/soBTW+i/xUR0oEEmE1YgH4q2CW PJZaWffQZtDKygMGgWQKC10YHW6EsdyszlIkuz++y1KH85j/UpPvEGeV+pFd1DSaTuCiXZCXs +oXlXIy9H8sBBRZS2c8GDJByScjU5UDOA0CMVPzYLBYOrhWPnJUt6dVbtbGQClLk4YCBY9W+o pDfd0G/S+A8cOs9CyL6bDPmZQm02iDlYJ8PTpOkaSsmTWK7xRxJ6CxqL+pMepCMNGY102OVZu dqKJoudjug2YFTAPZSBeigW4ckmltdEDr9cNMtBdeibVo2NRBkulpRLffUr9UqwaV/t3BLAg+ 4Rm1yH+RB6Wt88zaMx8438H91bEXAPHkVtGNQcrf085IR4YtFfriIPi7yEfD1IyG+qp1yMRnf 8MZTQsedlmrbmU15hXb9TIDZdTvzWtU6VxxCjJtUg/BvWhsnj651utlqz0GG1D6vrcboDZwc8 1M562cwQSO0dXlR4OOEnsGdn+BPniVYQI5+yZd49cPxRJTrMw2MJKmYPvqOo3meJCgwQ7jCkB yoDqmD2B4WyKTOVrF4043+2n+kBsCK+bhmuD5+0TonwBKA9NE+npXdO2eLZ90Ik3CTJ5nAPvx UuCo3icqp/BWZqpS6H8NPG8SxNbX96zTW9Ug5YTzFaDirbSpyCUpGSlt0E2FyYo5IA== X-Spam-Score: 2.2 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > I don't see this in the current sources. Is this your local change? Yes. > If so, is there a matching implementation for 'undecorated' on X? Can > both be added to Emacs? [...] Content analysis details: (2.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.17.22 listed in dnsbl.sorbs.net] 3.6 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [212.95.7.52 listed in dnsbl.sorbs.net] -1.2 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.22 listed in wl.mailspike.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.17.22 listed in list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) -0.0 SPF_PASS SPF: sender matches SPF record X-Debbugs-Envelope-To: 25408 Cc: arthur.miller.no1@gmail.com, 25408@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: 2.2 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > I don't see this in the current sources. Is this your local change? Yes. > If so, is there a matching implementation for 'undecorated' on X? Can > both be added to Emacs? [...] Content analysis details: (2.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.17.22 listed in dnsbl.sorbs.net] 3.6 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [212.95.7.52 listed in dnsbl.sorbs.net] -1.2 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.22 listed in wl.mailspike.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.17.22 listed in list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) -0.0 SPF_PASS SPF: sender matches SPF record > I don't see this in the current sources. Is this your local change? Yes. > If so, is there a matching implementation for 'undecorated' on X? Can > both be added to Emacs? There is one for X and a separate one for GTK. All of them work here but I read that a few X window managers notoriously ignore them. BTW, the term "undecorated" is derived from gtk_window_set_decorated - just that our frames are by default decorated so I had to negate it. > If there's only an implementation of 'undecorated' for MS-Windows, I > suggest to adapt it such that the same effect is produced when > border-width is set to zero. The border-width parameter is already > supported on X, so we will have no problem with that. As mentioned before I process `border-width' specially on Windows - that is, I produce the one-pixel wide thin-line border if border-width is a positive number. X11 allows to specifiy an arbitrary border-width. So far I haven't been able to produce any border with GTK. But I have added an option to color the internal border which can then be used in a uniform manner on all frames. martin From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 10 13:28:04 2017 Received: (at 25408) by debbugs.gnu.org; 10 Jan 2017 18:28:04 +0000 Received: from localhost ([127.0.0.1]:49124 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cR19P-00043X-T6 for submit@debbugs.gnu.org; Tue, 10 Jan 2017 13:28:04 -0500 Received: from eggs.gnu.org ([208.118.235.92]:45840) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cR19O-00042z-Dv for 25408@debbugs.gnu.org; Tue, 10 Jan 2017 13:28:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cR19E-0002Xe-Q7 for 25408@debbugs.gnu.org; Tue, 10 Jan 2017 13:27:57 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:35952) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cR19E-0002XW-Mt; Tue, 10 Jan 2017 13:27:52 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2381 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cR19E-0006TN-05; Tue, 10 Jan 2017 13:27:52 -0500 Date: Tue, 10 Jan 2017 20:27:51 +0200 Message-Id: <831swaepnc.fsf@gnu.org> From: Eli Zaretskii To: martin rudalics In-reply-to: <587522DB.2050105@gmx.at> (message from martin rudalics on Tue, 10 Jan 2017 19:07:23 +0100) Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -8.2 (--------) X-Debbugs-Envelope-To: 25408 Cc: arthur.miller.no1@gmail.com, 25408@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: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -8.2 (--------) > Date: Tue, 10 Jan 2017 19:07:23 +0100 > From: martin rudalics > CC: arthur.miller.no1@gmail.com, 25408@debbugs.gnu.org > > > If so, is there a matching implementation for 'undecorated' on X? Can > > both be added to Emacs? > > There is one for X and a separate one for GTK. All of them work here > but I read that a few X window managers notoriously ignore them. Then I suggest to add this to Emacs. That some wm's ignore it is not a reason to avoid having the feature for those that don't ignore it. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 10 14:37:01 2017 Received: (at 25408) by debbugs.gnu.org; 10 Jan 2017 19:37:01 +0000 Received: from localhost ([127.0.0.1]:49162 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cR2E8-0005pT-PO for submit@debbugs.gnu.org; Tue, 10 Jan 2017 14:37:01 -0500 Received: from eggs.gnu.org ([208.118.235.92]:48423) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cR2E6-0005pF-VU for 25408@debbugs.gnu.org; Tue, 10 Jan 2017 14:36:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cR2E0-0000fs-QX for 25408@debbugs.gnu.org; Tue, 10 Jan 2017 14:36:53 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-3.2 required=5.0 tests=BAYES_20,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:38068) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cR2Dz-0000ev-7r; Tue, 10 Jan 2017 14:36:51 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cR2Dy-0000UC-Jp; Tue, 10 Jan 2017 14:36:50 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: Arthur Miller In-reply-to: (message from Arthur Miller on Mon, 9 Jan 2017 23:20:14 +0100) Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: Message-Id: Date: Tue, 10 Jan 2017 14:36:50 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -8.2 (--------) X-Debbugs-Envelope-To: 25408 Cc: 25408@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: , Reply-To: rms@gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -8.2 (--------) [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > I would like to be able to run Emacs without frame decorations on Win > OS. We call it "Losedows" or "Lose OS", because if you use it, you lose your freedom. We're glad if Emacs gives you a taste of freedom, but a taste is all it can give you. To escape from Microsoft's power, you need to stop using Losedows. Here's what Microsoft does with its unjust power: http://gnu.org/proprietary/malware-microsoft.html. Here's explaining what gives Microsoft that unjust power: http://gnu.org/philosophy/free-software-even-more-important.html. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 10 15:40:07 2017 Received: (at 25408) by debbugs.gnu.org; 10 Jan 2017 20:40:07 +0000 Received: from localhost ([127.0.0.1]:49185 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cR3DC-0007Ry-T1 for submit@debbugs.gnu.org; Tue, 10 Jan 2017 15:40:07 -0500 Received: from mout.kundenserver.de ([212.227.17.24]:56469) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cR3DB-0007RO-3p for 25408@debbugs.gnu.org; Tue, 10 Jan 2017 15:40:05 -0500 Received: from [172.27.121.52] ([130.132.173.246]) by mrelayeu.kundenserver.de (mreue104 [212.227.15.184]) with ESMTPSA (Nemesis) id 0LhNIm-1cnEoX2Ski-00mYHQ; Tue, 10 Jan 2017 21:39:57 +0100 Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: Eli Zaretskii , martin rudalics References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= Message-ID: Date: Tue, 10 Jan 2017 15:39:59 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <831swaepnc.fsf@gnu.org> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="bH4HVKlKoM89WWRxPSMb9kJ3J2M9u7PBw" X-Provags-ID: V03:K0:X4RTvdoWPr8cd2okEmQ79qkilvd4k5E9QLjw9l/J9t5d8pUXtOF HlKKbtUS+B9WUzFTWZ77m/yZIvZnH8cKpmKMw982JAtCdt+HOIo/YLVz3LBJ/V2Adu447qM TjYdXafzUBa0ufm2umvLSblbDeF7DJiMWVEvWGCu0UgeC0qYr+UQprtU5dv7UQBaY/lYxXS 5p/y1Nt/Hz8hoKPTFt1sg== X-UI-Out-Filterresults: notjunk:1;V01:K0:DPkit/qt7b8=:dZ3oFn+o/wIE6Ok1TwYcWi o70fcq3v/y8aTBQEKXyh34PpFKjT/BwbcrBrI4++Kj6BUdZyHbXEzzpSlhl2+9d9mZIdgYC5u 0xMw+JCcQvfabSEKz9oBNdtE4TS0vVMj6R0kDieClpMqH9W5Dqjzl2RcsiMHU+aZOllscp4Zx 3dGVxxUw8XMqdXRfyIC3B/xpI/1SzoorhjqmvepG2uHNArj+r8WlNQwDl5MhRyQKFMyhDFpZv vV482j/inLVFARPMws7+TXp1Tq0kPzsJ6GFZbqWK9rtPoaJXEJ/S1L9/5cRo5ajAtcqllyej2 7a7M7Bz3jHLy06ekaoaUiRxZtzEeH36vfZKJOYDF8JyilpB7dVof/b+C8w2YoEAgMGRfleS68 hgBzdbw3Fu8k5wU5wp3rdPkxhd6Grb6g72zSKUKbQ+EkqUyV6NQqK23Vn3sEVvMjr1ITJDRQ8 fjyQm78/ZnJcH6PsbSlBpBezcRJmT/FIvGmvc0ouNJtSZo4+jplJJ4xCDzJOdf3iuEUvc8VMC UcHq3p5jRUAfVhl530ALkl+dJc0hQ4fAYI3bHxOHmS01hmcbJfbJ2J7Ce/NjVNH5/z/VDsqO7 AZwOB7vGTWJtjJuOgP+KBF590/TjCINJIFid5HCEYojvO9IvAl5e16bTh+NRW+9YPmLF8m9HW YvRPuBFuePjNvkvS71+NNAYfYuLqsQbaNkJUPRSbHyDs/FIkI6ACXm9tXimbyMBv3/DM= X-Spam-Score: -0.2 (/) X-Debbugs-Envelope-To: 25408 Cc: arthur.miller.no1@gmail.com, 25408@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: -0.2 (/) This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --bH4HVKlKoM89WWRxPSMb9kJ3J2M9u7PBw Content-Type: multipart/mixed; boundary="MvPPQ0FJ1dmTi2mHPwecMfL60ge6H1BFj"; protected-headers="v1" From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= To: Eli Zaretskii , martin rudalics Cc: arthur.miller.no1@gmail.com, 25408@debbugs.gnu.org Message-ID: Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> In-Reply-To: <831swaepnc.fsf@gnu.org> --MvPPQ0FJ1dmTi2mHPwecMfL60ge6H1BFj Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable On 2017-01-10 13:27, Eli Zaretskii wrote: > Then I suggest to add this to Emacs. That some wm's ignore it is not > a reason to avoid having the feature for those that don't ignore it. Indeed, it would be wonderful! --MvPPQ0FJ1dmTi2mHPwecMfL60ge6H1BFj-- --bH4HVKlKoM89WWRxPSMb9kJ3J2M9u7PBw Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJYdUanAAoJEPqg+cTm90wj3OYQAK4ROMUO+vehRibPgZMNXlki SSdj7IHM8bIkguZUVrCMiVFseEyhzd/Wvpgp3Jqf6SiqGOk5JYR23dXAfTbHRVwI ZzoYZUiE8SAQekEaY7VqaD2JeZ2+HiCbPh8ljoi1/N18/bPbprH17v17KiqHbedC BFZqycW+R9m4ca3lKYeLsiL7o8YBuldjuQgMEEFTR+fcmep0KuXlHGGonEfHhLq0 K1LISuZmOTO07y+KdCIMUMWHEk9BCWvhYRj32ppOIANI9eVQRdi+68P+dw06H0Me sx5uV8t1Xp4U+E31nz4SbImBz2N+VmFm3CecyCdamgYHosJMzBXs2r4QmUfapzF4 2Hd5boOJlwK3y7KgPHqQginzRzoTHUpG0PQnHXErNEXLh2Yh/dnf17Sp+Q/+VAzR pKhHYgRKxeOas170uFpFSqvP9z3Hzk2QfreJS66gkH0qZBnpXpAr3YMnywmbKl+k oxjsvME/H9wbngygex9yA538x0aOdV4GOtcfgVlyVBB/aThtteNPMeSrFcimHHaX JlsfrQrjkW9v4gnYP4yV8Er+gdRK/JJHprjkjpEefZdrDdoNy1og37OEyoSUa+wL 5wukdrURC+MXsBQN6mCP+CPb7GkcuxpZp7ckjxhwgS2rvzAYOQUYlR0ze+/8nlXw Xkmi9MCrO+tmmDQOpbdl =tF8s -----END PGP SIGNATURE----- --bH4HVKlKoM89WWRxPSMb9kJ3J2M9u7PBw-- From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 11 02:08:52 2017 Received: (at 25408) by debbugs.gnu.org; 11 Jan 2017 07:08:52 +0000 Received: from localhost ([127.0.0.1]:49314 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRD1g-0005rH-A4 for submit@debbugs.gnu.org; Wed, 11 Jan 2017 02:08:52 -0500 Received: from mail-wm0-f44.google.com ([74.125.82.44]:36954) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRD1e-0005r5-H3 for 25408@debbugs.gnu.org; Wed, 11 Jan 2017 02:08:50 -0500 Received: by mail-wm0-f44.google.com with SMTP id c206so100985716wme.0 for <25408@debbugs.gnu.org>; Tue, 10 Jan 2017 23:08:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=61gYBroiXfkeJv9TzK65HOge6YzE8dqQVcKD4NnjveE=; b=S6tC+rPH+qcUk8ncqtJcJiCn60z8EfFr9ZujIVXiCZJFBqo83Kq6AYoITvolUWPqkm By1IO7la4irSRHHmiWYKvtcqwkvJsQEbLMNrjLfdKBS36rLfwhaMtB81eyfcFCx0u4vf 82+5rJoIYERoiZ+fHlVbFk4ux/2hOiZij+gcSepeYcHSh4u9SAbcK+/cKbM2lZ5HAAj4 KlXeliKo9HhVnv/mRi6ZXUAk6DB7v8YP6RD/NHDm4VtpUIRnMrw8g3mshMVIFshmnsyJ UolZTA362+hQupKnkA4i476Rm/bbyK7dyVc4ToTnP5YhxgUC3XEq5lOLAFu6skt6fWbq mHSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=61gYBroiXfkeJv9TzK65HOge6YzE8dqQVcKD4NnjveE=; b=ema61fQnrxMgsFtMBLYweakh1c84RjzZQ87Wa6vG/67SV8vsNBHpCsn+l9DERE1Dx4 tZczX04crmpxFq9bM5zI7DkAYlWt0RJz2L3eDz5HMMEdvh+/6wdDpHroH32Q/mCMnZsO grXv4A2l+iiILJvFOwgslPOqEMFT7abeXwW5sIIDSNicgIj+lTFRg1DyXzby7yPZO49q pzNti+NHgwddrIsEUam+7H5Tpa3pBOGW3w65iGWT792L5EFgzZtPH5tW+dwKrxHIzPRr HwYxWJfRUzL9SeINJYy/t6OvYFUIM60pr3Ya5JPlaRw8l19O/S7Vos6vPINi97VYsXzD v5Bw== X-Gm-Message-State: AIkVDXIgOs5eC/kshH38ToCqFUBgXC9TWsKHnl6XCVCKJQxYjMuxN0Oj3g2NtnL5SGl4+VzUiIqTVRKnN2RLDg== X-Received: by 10.223.136.36 with SMTP id d33mr4177972wrd.199.1484118524663; Tue, 10 Jan 2017 23:08:44 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.169.98 with HTTP; Tue, 10 Jan 2017 23:08:44 -0800 (PST) In-Reply-To: References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> From: Arthur Miller Date: Wed, 11 Jan 2017 08:08:44 +0100 Message-ID: Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= Content-Type: multipart/alternative; boundary=001a1149231a779b410545cc45c2 X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: 25408 Cc: martin rudalics , Eli Zaretskii , 25408@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: 0.7 (/) --001a1149231a779b410545cc45c2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable "We call it "Losedows" or "Lose OS", because if you use it, you lose your freedom. We're glad if Emacs gives you a taste of freedom, but a taste is all it can give you. To escape from Microsoft's power, you need to stop using Losedows." Haha :-) Indeed. I do run Arch Linux otherwise, but I do some consulting with programming databases and GUIs in access & spss and I also play some games occasionally, so I still need losedows. I know I could run it in wine and pass through vga, but I feel a bit too old for that :). This was a great excursion in Emacs src code. I added above mention method to my w32fns.c, added FRAME_DECORATED() macro to frame.h a boolean_bf undecorated :1, to frame struct, initiated it to false in "make_frame" added an entry to frame_parms: {"undecorated", SYMBOL_INDEX (Qundecorated)}, added connecction to w32_frame_parm_handlers[] to x_set_undecorated at same place where symbol is declared in frame_parms (last in the list), added an INLINE void fset_undecorated( ... ) to frame.h (not sure if it is needed), and now I can change my new param with lisp from emacs, but my connection seem never to be called. By the way, I think world is better without borders, so I have modified Martin's x_set_undecorated to void x_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) { HWND hwnd =3D FRAME_W32_WINDOW (f); DWORD dwStyle =3D GetWindowLong (hwnd, GWL_STYLE); /*Lisp_Object border_width =3D Fcdr (Fassq (Qborder_width, f->param_alist));*/ /*Lisp_Object undecorated =3D Fcdr (Fassq (Qundecorated, f->param_alist))= ;*/ block_input (); if (!NILP (new_value) && !FRAME_UNDECORATED (f)) { dwStyle =3D (dwStyle & ~WS_THICKFRAME & ~WS_CAPTION); SetWindowLong (hwnd, GWL_STYLE, dwStyle); SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED); FRAME_UNDECORATED (f) =3D true; } else if (NILP (new_value) && FRAME_UNDECORATED (f)) { SetWindowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | WS_CAPTION | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU); SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED); FRAME_UNDECORATED (f) =3D false; } unblock_input (); } So it should just switch on "undecorated" param and ignore borders (at least I hope). I am not sure where do I have to make change more to get it to work. 2017-01-10 21:39 GMT+01:00 Cl=C3=A9ment Pit--Claudel : > On 2017-01-10 13:27, Eli Zaretskii wrote: > > Then I suggest to add this to Emacs. That some wm's ignore it is not > > a reason to avoid having the feature for those that don't ignore it. > > Indeed, it would be wonderful! > > --001a1149231a779b410545cc45c2 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
"We call= it "Losedows" or "Lose OS", because if you use it, you= lose
your freedom.

We're glad if Emacs gives you a taste of freedom, but a taste is
all it can give you.=C2=A0 To escape from Microsoft's power, you need t= o
stop using Losedows."

Haha :-) Indeed.

I do= run Arch Linux otherwise, but I do some consulting with programming
da= tabases and GUIs in access & spss and I also play some games
occasi= onally, so I still need losedows. I know I could run it in wine and
pass through vga, but I feel a bit too old for that :).

This was a great excursion in Emacs src code. I added above me= ntion
method to my w32fns.c, added FRAME_DECORATED() macro to fram= e.h
a boolean_bf undecorated :1, to frame struct, initiated it to = false in "make_frame"
added an entry to frame_parms: {&q= uot;undecorated",=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 SYMBOL_INDEX (Q= undecorated)},
added connecction to w32_frame_parm_handlers[] to x= _set_undecorated at same
place where symbol is declared in frame_p= arms (last in the list), added an
INLINE void fset_undecorated( ... ) to= frame.h (not sure if it is needed), and now
I can change my new param = with lisp from emacs, but my connection seem
never to be call= ed.

By the way, I think world is better without borders,= so I have modified Martin's
x_set_undecorated to
void
x_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Ob= ject old_value)
{
=C2=A0 HWND hwnd =3D FRAME_W32_WINDOW (f);
=C2= =A0 DWORD dwStyle =3D GetWindowLong (hwnd, GWL_STYLE);
=C2=A0 /*Lisp_Obj= ect border_width =3D Fcdr (Fassq (Qborder_width, f->param_alist));*/
= =C2=A0 /*Lisp_Object undecorated =3D Fcdr (Fassq (Qundecorated, f->param= _alist));*/

=C2=A0 block_input ();
=C2=A0 if (!NILP (new_value) &= amp;& !FRAME_UNDECORATED (f))
=C2=A0=C2=A0=C2=A0 {
=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 dwStyle =3D (dwStyle & ~WS_THICKFRAME & ~WS_CAPT= ION);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetWindowLong (hwnd, GWL_STYLE, dwS= tyle);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetWindowPos (hwnd, HWND_TOP, 0, 0= , 0, 0,
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | SWP_NOMOVE= | SWP_NOZORDER | SWP_NOACTIVATE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= | SWP_FRAMECHANGED);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECORATED (= f) =3D true;
=C2=A0=C2=A0=C2=A0 }
=C2=A0 else if (NILP (new_value) &a= mp;& FRAME_UNDECORATED (f))
=C2=A0=C2=A0=C2=A0 {
=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 SetWindowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | W= S_CAPTION
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | WS_MAXIMIZEB= OX | WS_MINIMIZEBOX | WS_SYSMENU);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetWin= dowPos (hwnd, HWND_TOP, 0, 0, 0, 0,
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE
=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 | SWP_FRAMECHANGED);
=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 FRAME_UNDECORATED (f) =3D false;
=C2=A0=C2=A0=C2=A0 }
=C2= =A0 unblock_input ();
}

So it should just sw= itch on "undecorated" param and ignore borders (at least I hope).= I am not sure where do
I have to make change more to get it = to work.

2017-01-10 21:39 GMT+01:00 Cl=C3=A9ment Pit--Claudel <clement.p= it@gmail.com>:
On 2017-01-10 13:27, Eli Zaretskii wrote:
> Then I suggest to add this to Emacs.=C2=A0 That some wm's ignore i= t is not
> a reason to avoid having the feature for those that don't ignore i= t.

Indeed, it would be wonderful!


--001a1149231a779b410545cc45c2-- From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 11 02:24:35 2017 Received: (at 25408) by debbugs.gnu.org; 11 Jan 2017 07:24:35 +0000 Received: from localhost ([127.0.0.1]:49329 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRDGt-0006EJ-Ad for submit@debbugs.gnu.org; Wed, 11 Jan 2017 02:24:35 -0500 Received: from mail-wm0-f44.google.com ([74.125.82.44]:36386) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRDGr-0006E6-Qd for 25408@debbugs.gnu.org; Wed, 11 Jan 2017 02:24:34 -0500 Received: by mail-wm0-f44.google.com with SMTP id c85so149933132wmi.1 for <25408@debbugs.gnu.org>; Tue, 10 Jan 2017 23:24:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=YuPd5TBOYa7H2OpnGP3uT/zdTgeZhzlMoR4t8ROcrGQ=; b=GqI0sgCzasaZCoEMgBB+p4n0F+G5iTr8Riii90DrsrxU+dYjHMZjTPakUk24+660uF 1pwJ91ZF/DQjJVocEU4X8n9XCfmq7caQNG1A76sprnUE+XPxa5h3W4XSoI/+PxLyumej 5tXmX52LwfslLzF+DMApwNN52fYgUMGSr/fEXA2EAyl7R8zS/2mErSCu1ce9VRMpBF4B ILmQPtfd2p+C+plACKYkDKhBmEWPWz867WvBl8KdKXhESveYX8ANRHWJmWUBn4zQLk44 Nn5M9rd17W9BG5Dj6XGvGQsYog7pbIGFaBkgdmH6drLBph4j0vRlDBpDCo4RfH2ic44L uYNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=YuPd5TBOYa7H2OpnGP3uT/zdTgeZhzlMoR4t8ROcrGQ=; b=cl1j/yxJs1rJXlwVvmFNqIE0U3AdqCjKA4Ls/EfQSVT8WGWOmUIfIdz6PkWv+vgaut TeUVNoCz61LQoLWfP0n3/9HEFW6w1pWWGod0J+Nir8PQnygVyQqvgSn2n9wFuBxjp/75 0FoBD3v9wauQT6dQa3PezEk9qdmwTDbou9J5l/gynzWZ/RliXxCd6sWIAHAQ5t5gh1hv F3UqjZCoxFFVFK5kPKqMc41/TFRL1mfop1yX4D1gz0IGsmVu/xjjPKYpImPbmtIH+iK8 SrcGwIhw8P5f37RE6xuu0wqd/aIQejcqbG5dbovwzMbjp21fLtN32owgQq7IvlNh/8im 2zhQ== X-Gm-Message-State: AIkVDXL36Hj/d50h/K4LaLHyJqfzoIIh+uj88bVAsxlZz9rSP5fs9j68JbvzTiissXAEvU0K+U84ZtCgUpbunw== X-Received: by 10.223.136.36 with SMTP id d33mr4223681wrd.199.1484119468227; Tue, 10 Jan 2017 23:24:28 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.169.98 with HTTP; Tue, 10 Jan 2017 23:24:27 -0800 (PST) In-Reply-To: References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> From: Arthur Miller Date: Wed, 11 Jan 2017 08:24:27 +0100 Message-ID: Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= Content-Type: multipart/alternative; boundary=001a1149231ab543e10545cc7dc5 X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: 25408 Cc: martin rudalics , Eli Zaretskii , 25408@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: 0.7 (/) --001a1149231ab543e10545cc7dc5 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable I appologize, I was too fast to answer, I made a bad call from modify-frame-parameters when I tested it. It works like a charm as you say it in english. I have also changed the else-if statement in Martins method to else if (!NILP (new_value) && FRAME_UNDECORATED (f)) (check for !NILP) so I can switch back decorations. It works. Thanks all, it was great exercise to learn a bit of emacs internals and to make a simple hack. 2017-01-11 8:08 GMT+01:00 Arthur Miller : > "We call it "Losedows" or "Lose OS", because if you use it, you lose > your freedom. > > We're glad if Emacs gives you a taste of freedom, but a taste is > all it can give you. To escape from Microsoft's power, you need to > stop using Losedows." > > Haha :-) Indeed. > > I do run Arch Linux otherwise, but I do some consulting with programming > databases and GUIs in access & spss and I also play some games > occasionally, so I still need losedows. I know I could run it in wine and > pass through vga, but I feel a bit too old for that :). > > This was a great excursion in Emacs src code. I added above mention > method to my w32fns.c, added FRAME_DECORATED() macro to frame.h > a boolean_bf undecorated :1, to frame struct, initiated it to false in > "make_frame" > added an entry to frame_parms: {"undecorated", SYMBOL_INDEX > (Qundecorated)}, > added connecction to w32_frame_parm_handlers[] to x_set_undecorated at sa= me > place where symbol is declared in frame_parms (last in the list), added a= n > INLINE void fset_undecorated( ... ) to frame.h (not sure if it is needed)= , > and now > I can change my new param with lisp from emacs, but my connection seem > never to be called. > > By the way, I think world is better without borders, so I have modified > Martin's > x_set_undecorated to > > void > x_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Object > old_value) > { > HWND hwnd =3D FRAME_W32_WINDOW (f); > DWORD dwStyle =3D GetWindowLong (hwnd, GWL_STYLE); > /*Lisp_Object border_width =3D Fcdr (Fassq (Qborder_width, > f->param_alist));*/ > /*Lisp_Object undecorated =3D Fcdr (Fassq (Qundecorated, > f->param_alist));*/ > > block_input (); > if (!NILP (new_value) && !FRAME_UNDECORATED (f)) > { > dwStyle =3D (dwStyle & ~WS_THICKFRAME & ~WS_CAPTION); > SetWindowLong (hwnd, GWL_STYLE, dwStyle); > SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, > SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVA= TE > | SWP_FRAMECHANGED); > FRAME_UNDECORATED (f) =3D true; > } > else if (NILP (new_value) && FRAME_UNDECORATED (f)) > { > SetWindowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | WS_CAPTIO= N > | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU); > SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, > SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVA= TE > | SWP_FRAMECHANGED); > FRAME_UNDECORATED (f) =3D false; > } > unblock_input (); > } > > So it should just switch on "undecorated" param and ignore borders (at > least I hope). I am not sure where do > I have to make change more to get it to work. > > 2017-01-10 21:39 GMT+01:00 Cl=C3=A9ment Pit--Claudel : > >> On 2017-01-10 13:27, Eli Zaretskii wrote: >> > Then I suggest to add this to Emacs. That some wm's ignore it is not >> > a reason to avoid having the feature for those that don't ignore it. >> >> Indeed, it would be wonderful! >> >> > --001a1149231ab543e10545cc7dc5 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I appologize, I was too fast to answer, I m= ade a bad call from modify-frame-parameters
when I tested it. It works = like a charm as you say it in english. I have also changed
the els= e-if statement in Martins method to else if (!NILP (new_value) && F= RAME_UNDECORATED (f))
(check for !NILP) so I can switch back decor= ations. It works. Thanks all, it was great
exercise to learn a bi= t of emacs internals and to make a simple hack.

2017-01-11 8:08 GMT+01:00 Arthur Mi= ller <arthur.miller.no1@gmail.com>:
"We call it "Losedows" or "Lose= OS", because if you use it, you lose
your freedom.

We're glad if Emacs gives you a taste of freedom, but a taste is
all it can give you.=C2=A0 To escape from Microsoft's power, you need t= o
stop using Losedows."

Haha :-) Indeed.

I do run Arch Linux otherwise, but I do some consulting with programming=
databases and GUIs in access & spss and I also play some games occasionally, so I still need losedows. I know I could run it in wine and =
pass through vga, but I feel a bit too old for that :).
<= /div>

This was a great excursion in Emacs src code. I added a= bove mention
method to my w32fns.c, added FRAME_DECORATED() macro = to frame.h
a boolean_bf undecorated :1, to frame struct, initiated= it to false in "make_frame"
added an entry to frame_par= ms: {"undecorated",=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 SYMBOL_I= NDEX (Qundecorated)},
added connecction to w32_frame_parm_handlers= [] to x_set_undecorated at same
place where symbol is declared in = frame_parms (last in the list), added an
INLINE void fset_undecorated( .= .. ) to frame.h (not sure if it is needed), and now
I can change my new= param with lisp from emacs, but my connection seem
never to = be called.

By the way, I think world is better without b= orders, so I have modified Martin's
x_set_undecorated to =

void
x_set_undecorated (struct frame *f, Lisp_O= bject new_value, Lisp_Object old_value)
{
=C2= =A0 HWND hwnd =3D FRAME_W32_WINDOW (f);
=C2=A0 DWORD dwStyle =3D GetWind= owLong (hwnd, GWL_STYLE);
=C2=A0 /*Lisp_Object border_width =3D F= cdr (Fassq (Qborder_width, f->param_alist));*/
=C2=A0 /*Lisp_Object u= ndecorated =3D Fcdr (Fassq (Qundecorated, f->param_alist));*/

=C2=A0 block_input ();
=C2=A0 if (!NILP (new_value) &&= amp; !FRAME_UNDECORATED (f))
=C2=A0=C2=A0=C2=A0 {
=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 dwStyle =3D (dwStyle & ~WS_THICKFRAME & ~WS_CAPT= ION);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetWindowLong (hwn= d, GWL_STYLE, dwStyle);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetWindowPos (hwn= d, HWND_TOP, 0, 0, 0, 0,
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SWP_N= OSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE
=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 | SWP_FRAMECHANGED);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 F= RAME_UNDECORATED (f) =3D true;
=C2=A0=C2=A0=C2=A0 }
=C2=A0 else if (N= ILP (new_value) && FRAME_UNDECORATED (f))
=C2=A0=C2=A0=C2=A0 {=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetWindowLong (hwnd, GWL_STYLE, dwStyle | = WS_THICKFRAME | WS_CAPTION
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU);
=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0,
=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVA= TE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | SWP_FRAMECHANGED);
=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECORATED (f) =3D false;
=C2=A0=C2= =A0=C2=A0 }
=C2=A0 unblock_input ();
}

=
So it should just switch on "undecorated" param and ignore b= orders (at least I hope). I am not sure where do
I have to ma= ke change more to get it to work.

2017-01-10 21:39 GMT+01:00 = Cl=C3=A9ment Pit--Claudel <clement.pit@gmail.com>:
On 2017-01-10 13:27, Eli Zaretskii wrote= :
> Then I suggest to add this to Emacs.=C2=A0 That some wm's ignore i= t is not
> a reason to avoid having the feature for those that don't ignore i= t.

Indeed, it would be wonderful!



--001a1149231ab543e10545cc7dc5-- From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 11 02:48:40 2017 Received: (at 25408) by debbugs.gnu.org; 11 Jan 2017 07:48:40 +0000 Received: from localhost ([127.0.0.1]:49334 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRDeB-0006nD-E3 for submit@debbugs.gnu.org; Wed, 11 Jan 2017 02:48:39 -0500 Received: from mail-wm0-f47.google.com ([74.125.82.47]:38280) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRDe9-0006n0-Ot for 25408@debbugs.gnu.org; Wed, 11 Jan 2017 02:48:38 -0500 Received: by mail-wm0-f47.google.com with SMTP id r144so19523372wme.1 for <25408@debbugs.gnu.org>; Tue, 10 Jan 2017 23:48:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=JmCwO2cI/1n+kXpfCyIkY5vl/laXgIqHnhmiRhXq+1s=; b=PtkIq2iMiCqWl6sAK0nYqydxBrmCEzEOjtj395k7UffxGjU/q//LkxGVL0a88aJDMc XsqTV913gLTp78vCfXWgIfFT4OgXS4WFazJCpjh6PORAxiX/3laEiTgi3cD6REoHFk0j Z5UAMKV8GWJ65ADYCueDPhmeB+otE2J+a2xoU3EMokLv/J22TFyc/8LgFR6IoLu0nBUu zDKy2rd4DSDbF3fJgujPwBHNT436c9ei31x3L049tbf6QKreuBHhEc1VCnIl5DpcFKeD a/CI6GQPQMAqoAdRitpz49sDLZEPApM42NKCr7zAxZPcOwB7Tr1RIrmMxgZczlAyaxcJ rXOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=JmCwO2cI/1n+kXpfCyIkY5vl/laXgIqHnhmiRhXq+1s=; b=iz6TdpkWOKvEWoVcTOFcgLZ+it1dJ/IyAUVCx/Fz0RwD5HwiJk18FL1rJ3+LB5Vya1 96Nqs6puU93D/iNufyTjQFJVVk69WfzIjZr8oWxQAuRgQQDSdxe8OkUMA8ZWuuhVSmXo jrN8mZgV7n8ifFArrekFhaB00BXVaSRDSV7IuEoH86UD2paLHQ+4ezYCUJzmXO1dD731 77gvacYRUUq8ZTpYzzD5SfJrmiRA9qhpXkvcwD67kL8Myyr+EnNi2GcgVHcF6O4JhMsE I4QyTZUE7kMQBGD/s1JllH8N08w8MXF1CVapP5CkgyOF6u4QFRC3b/J9OJdup14zaCAr nZ5w== X-Gm-Message-State: AIkVDXLkgyQW7c3g7av8erm0IkMUNDlsBAT4/g2qXKLL8Ma8w+9xzs+GEwxG3mxIVYZLtyFWKRBv27OVD4yW4w== X-Received: by 10.28.138.79 with SMTP id m76mr3824199wmd.2.1484120912070; Tue, 10 Jan 2017 23:48:32 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.169.98 with HTTP; Tue, 10 Jan 2017 23:48:31 -0800 (PST) In-Reply-To: References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> From: Arthur Miller Date: Wed, 11 Jan 2017 08:48:31 +0100 Message-ID: Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= Content-Type: multipart/alternative; boundary=001a11443f12c48c0b0545ccd340 X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 25408 Cc: martin rudalics , Eli Zaretskii , 25408@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: 0.2 (/) --001a11443f12c48c0b0545ccd340 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable There is a slightly cosmetic issue with above function. When one switches back on decorations, the frame will not resize properly and minibuffer will be not visible. It's there but just covered by frame. Just resizing emacs framefixes it. Adding call to PostMessage(hwnd, WM_SIZE,0,0) in Martins function fixes it. void x_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) { HWND hwnd =3D FRAME_W32_WINDOW (f); DWORD dwStyle =3D GetWindowLong (hwnd, GWL_STYLE); /*Lisp_Object border_width =3D Fcdr (Fassq (Qborder_width, f->param_alist));*/ /*Lisp_Object undecorated =3D Fcdr (Fassq (Qundecorated, f->param_alist))= ;*/ block_input (); if (!NILP (new_value) && !FRAME_UNDECORATED (f)) { dwStyle =3D (dwStyle & ~WS_THICKFRAME & ~WS_CAPTION); SetWindowLong (hwnd, GWL_STYLE, dwStyle); SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED); FRAME_UNDECORATED (f) =3D true; } else if (!NILP (new_value) && FRAME_UNDECORATED (f)) { SetWindowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | WS_CAPTION | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU); SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED); PostMessage(hwnd, WM_SIZE,0,0); FRAME_UNDECORATED (f) =3D false; } unblock_input (); } 2017-01-11 8:24 GMT+01:00 Arthur Miller : > I appologize, I was too fast to answer, I made a bad call from > modify-frame-parameters > when I tested it. It works like a charm as you say it in english. I have > also changed > the else-if statement in Martins method to else if (!NILP (new_value) && > FRAME_UNDECORATED (f)) > (check for !NILP) so I can switch back decorations. It works. Thanks all, > it was great > exercise to learn a bit of emacs internals and to make a simple hack. > > 2017-01-11 8:08 GMT+01:00 Arthur Miller : > >> "We call it "Losedows" or "Lose OS", because if you use it, you lose >> your freedom. >> >> We're glad if Emacs gives you a taste of freedom, but a taste is >> all it can give you. To escape from Microsoft's power, you need to >> stop using Losedows." >> >> Haha :-) Indeed. >> >> I do run Arch Linux otherwise, but I do some consulting with programming >> databases and GUIs in access & spss and I also play some games >> occasionally, so I still need losedows. I know I could run it in wine an= d >> pass through vga, but I feel a bit too old for that :). >> >> This was a great excursion in Emacs src code. I added above mention >> method to my w32fns.c, added FRAME_DECORATED() macro to frame.h >> a boolean_bf undecorated :1, to frame struct, initiated it to false in >> "make_frame" >> added an entry to frame_parms: {"undecorated", SYMBOL_INDEX >> (Qundecorated)}, >> added connecction to w32_frame_parm_handlers[] to x_set_undecorated at >> same >> place where symbol is declared in frame_parms (last in the list), added = an >> INLINE void fset_undecorated( ... ) to frame.h (not sure if it is >> needed), and now >> I can change my new param with lisp from emacs, but my connection seem >> never to be called. >> >> By the way, I think world is better without borders, so I have modified >> Martin's >> x_set_undecorated to >> >> void >> x_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Object >> old_value) >> { >> HWND hwnd =3D FRAME_W32_WINDOW (f); >> DWORD dwStyle =3D GetWindowLong (hwnd, GWL_STYLE); >> /*Lisp_Object border_width =3D Fcdr (Fassq (Qborder_width, >> f->param_alist));*/ >> /*Lisp_Object undecorated =3D Fcdr (Fassq (Qundecorated, >> f->param_alist));*/ >> >> block_input (); >> if (!NILP (new_value) && !FRAME_UNDECORATED (f)) >> { >> dwStyle =3D (dwStyle & ~WS_THICKFRAME & ~WS_CAPTION); >> SetWindowLong (hwnd, GWL_STYLE, dwStyle); >> SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, >> SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | >> SWP_NOACTIVATE >> | SWP_FRAMECHANGED); >> FRAME_UNDECORATED (f) =3D true; >> } >> else if (NILP (new_value) && FRAME_UNDECORATED (f)) >> { >> SetWindowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | WS_CAPTI= ON >> | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU); >> SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, >> SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | >> SWP_NOACTIVATE >> | SWP_FRAMECHANGED); >> FRAME_UNDECORATED (f) =3D false; >> } >> unblock_input (); >> } >> >> So it should just switch on "undecorated" param and ignore borders (at >> least I hope). I am not sure where do >> I have to make change more to get it to work. >> >> 2017-01-10 21:39 GMT+01:00 Cl=C3=A9ment Pit--Claudel : >> >>> On 2017-01-10 13:27, Eli Zaretskii wrote: >>> > Then I suggest to add this to Emacs. That some wm's ignore it is not >>> > a reason to avoid having the feature for those that don't ignore it. >>> >>> Indeed, it would be wonderful! >>> >>> >> > --001a11443f12c48c0b0545ccd340 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
There is a slightly cosmetic issue with abo= ve function. When one switches back on decorations,
the frame will= not resize properly and minibuffer will be not visible. It's there but= just
covered by frame. Just resizing emacs framefixes it.

Addin= g call to PostMessage(hwnd, WM_SIZE,0,0) in Martins function fixes it.
<= /div>
void
x_set_undecorated (struct frame *= f, Lisp_Object new_value, Lisp_Object old_value)
{
=C2=A0 HWND hwnd =3D FRAME_W32_WINDOW (f);
=C2=A0 DWORD dw= Style =3D GetWindowLong (hwnd, GWL_STYLE);
=C2=A0 /*Lisp_Object b= order_width =3D Fcdr (Fassq (Qborder_width, f->param_alist));*/
=C2= =A0 /*Lisp_Object undecorated =3D Fcdr (Fassq (Qundecorated, f->param_al= ist));*/

=C2=A0 block_input ();
=C2=A0 i= f (!NILP (new_value) && !FRAME_UNDECORATED (f))
=C2=A0=C2=A0=C2= =A0 {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 dwStyle =3D (dwStyle & ~= WS_THICKFRAME & ~WS_CAPTION);
=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 SetWindowLong (hwnd, GWL_STYLE, dwStyle);
=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0,
=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | = SWP_NOACTIVATE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | SWP_FRAMECHANGE= D);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECORATED (f) =3D true;
= =C2=A0=C2=A0=C2=A0 }
=C2=A0 else if (!NILP (new_value) && FRAME_= UNDECORATED (f))
=C2=A0=C2=A0=C2=A0 {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = SetWindowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | WS_CAPTION
=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | WS_MAXIMIZEBOX | WS_MINIMIZEBO= X | WS_SYSMENU);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetWindowPos (hwnd, HWND= _TOP, 0, 0, 0, 0,
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | S= WP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 | SWP_FRAMECHANGED);
=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 PostMessage(hwnd, WM_SIZE,0,0);
= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECORATED (= f) =3D false;
=C2=A0=C2=A0=C2=A0 }
=C2=A0 unblock_input ();
}


2017-01-11 8:24 GMT+01:00 Arthur Miller <arthur.miller.no1@gmai= l.com>:
I appologize, I was too fast to answer, I made a bad call from= modify-frame-parameters
when I tested it. It works like a charm as you= say it in english. I have also changed
the else-if statement in M= artins method to else if (!NILP (new_value) && FRAME_UNDECORATED (f= ))
(check for !NILP) so I can switch back decorations. It works. T= hanks all, it was great
exercise to learn a bit of emacs internal= s and to make a simple hack.

2017-01-11 8:0= 8 GMT+01:00 Arthur Miller <arthur.miller.no1@gmail.com>:
"We call it "Losedows" or = "Lose OS", because if you use it, you lose
your freedom.

We're glad if Emacs gives you a taste of freedom, but a taste is
all it can give you.=C2=A0 To escape from Microsoft's power, you need t= o
stop using Losedows."

Haha :-) Indeed.

I do run Arch Linux otherwise, but I do some consulting with programming=
databases and GUIs in access & spss and I also play some games occasionally, so I still need losedows. I know I could run it in wine and =
pass through vga, but I feel a bit too old for that :).
<= /div>

This was a great excursion in Emacs src code. I added a= bove mention
method to my w32fns.c, added FRAME_DECORATED() macro = to frame.h
a boolean_bf undecorated :1, to frame struct, initiated= it to false in "make_frame"
added an entry to frame_par= ms: {"undecorated",=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 SYMBOL_I= NDEX (Qundecorated)},
added connecction to w32_frame_parm_handlers= [] to x_set_undecorated at same
place where symbol is declared in = frame_parms (last in the list), added an
INLINE void fset_undecorated( .= .. ) to frame.h (not sure if it is needed), and now
I can change my new= param with lisp from emacs, but my connection seem
never to = be called.

By the way, I think world is better without b= orders, so I have modified Martin's
x_set_undecorated to =

void
x_set_undecorated (struct frame *f, Lisp_Object new_v= alue, Lisp_Object old_value)
{
=C2=A0 HWND hwnd =3D FRAM= E_W32_WINDOW (f);
=C2=A0 DWORD dwStyle =3D GetWindowLong (hwnd, GWL_STYL= E);
=C2=A0 /*Lisp_Object border_width =3D Fcdr (Fassq (Qborder_wi= dth, f->param_alist));*/
=C2=A0 /*Lisp_Object undecorated =3D Fcdr (F= assq (Qundecorated, f->param_alist));*/

=C2=A0 block_input = ();
=C2=A0 if (!NILP (new_value) && !FRAME_UNDECORATED (f))
= =C2=A0=C2=A0=C2=A0 {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 dwStyle =3D (= dwStyle & ~WS_THICKFRAME & ~WS_CAPTION);
=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 SetWindowLong (hwnd, GWL_STYLE, dwStyle);
=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0,
=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP= _NOACTIVATE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | SWP_FRAMECHANGED);=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECORATED (f) =3D true;
=C2= =A0=C2=A0=C2=A0 }
=C2=A0 else if (NILP (new_value) && FRAME_UNDE= CORATED (f))
=C2=A0=C2=A0=C2=A0 {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetW= indowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | WS_CAPTION
=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | WS_MAXIMIZEBOX | WS_MINIMIZEBOX |= WS_SYSMENU);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetWindowPos (hwnd, HWND_TO= P, 0, 0, 0, 0,
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | SWP_= NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 | SWP_FRAMECHANGED);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECOR= ATED (f) =3D false;
=C2=A0=C2=A0=C2=A0 }
=C2=A0 unblock_input ();
= }

So it should just switch on "unde= corated" param and ignore borders (at least I hope). I am not sure whe= re do
I have to make change more to get it to work.

2017-01-10 21:39 GMT+01:00 Cl=C3=A9ment Pit--Claudel <clement.pit@gmail.com>:
On 2017-01-10 13:27, Eli Zaretskii wrote:
> Then I suggest to add this to Emacs.=C2=A0 That some wm's ignore i= t is not
> a reason to avoid having the feature for those that don't ignore i= t.

Indeed, it would be wonderful!




--001a11443f12c48c0b0545ccd340-- From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 11 02:50:25 2017 Received: (at 25408) by debbugs.gnu.org; 11 Jan 2017 07:50:25 +0000 Received: from localhost ([127.0.0.1]:49338 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRDft-0006q8-6T for submit@debbugs.gnu.org; Wed, 11 Jan 2017 02:50:25 -0500 Received: from mail-wj0-f172.google.com ([209.85.210.172]:34944) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRDfq-0006pu-Uz for 25408@debbugs.gnu.org; Wed, 11 Jan 2017 02:50:23 -0500 Received: by mail-wj0-f172.google.com with SMTP id i20so95535889wjn.2 for <25408@debbugs.gnu.org>; Tue, 10 Jan 2017 23:50:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=bxUfGi21tZUOEj/SbLD+yFJ53a1jUF6EdAi4mam50VY=; b=L6r6aqoHmV9gN0cBLpWA2OfV7YKLqIDVAAMkaghYjX2sk/NPz/zp1uj+ziylMRBqqh WjBAhUFK9pLD91zP7Xu6lNlanUAl6WLvvUhLvn2/W1lCpjCkbkSGDSLTmalxgBRTGpS+ J7sAsB3mousJwX+rFpKma+RvI4Q7iExrkDbKJDK2kK+35qGrGhwBDqd91FCGO3PkgY52 qAfEobq++rMvQvne8XjKG7ltMg743AP6hVZv1sY7Mgly8eL5VrJeK5A3JUtk8htwIt7s x7sfe6wh1dTuBUwjFMnUK9X7HDVyFnIYAoTW9x6B2+0ka6NV9bZYRPu1LlbgYsrJ+TBV J/cg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=bxUfGi21tZUOEj/SbLD+yFJ53a1jUF6EdAi4mam50VY=; b=ugnM3ae+4MSAaF6A5USUYaoG6RVl7wNom2SMX5lirkCaprdCcZO1GPQHOGXG32Lvpu m3VCelUj8e9F5o4iuorpeouxubAY3IY9YgFysUi+KNb8ZFJVhljvfV1km9e24ETAU+L0 ngqJXNBZXLSIg+VQqrYBQEOWHtYTJKqXNHJ6xEeePlLjiryqV3Btgmq5BwHpvtuC61bf BGDpM8IjgyNOf912T7TC2gA4hib/0A4TEMBN4P/hAj3XoKBPhXQaP1zQR8Rq3yxHynHC mVfvp5OXvW5+DD4gdD00AKJg51UMqkw1Hwqys+9XCxz+tOJxGUHvaRL0PJTwDya7s3lL Z8eA== X-Gm-Message-State: AIkVDXJKRcvpFauU8tZP6baZ6Xo8kfqCP0NPmwP3GSzCzR0XA2EKIlRSDSgaKeUBvwJMw9mIYDvSyxmawH8Eeg== X-Received: by 10.194.14.65 with SMTP id n1mr3821373wjc.80.1484121016869; Tue, 10 Jan 2017 23:50:16 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.169.98 with HTTP; Tue, 10 Jan 2017 23:50:16 -0800 (PST) In-Reply-To: References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> From: Arthur Miller Date: Wed, 11 Jan 2017 08:50:16 +0100 Message-ID: Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= Content-Type: multipart/alternative; boundary=047d7b6040b203ad240545ccda0c X-Spam-Score: -0.9 (/) X-Debbugs-Envelope-To: 25408 Cc: martin rudalics , Eli Zaretskii , 25408@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: -0.9 (/) --047d7b6040b203ad240545ccda0c Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Aha, my last message ended somehow in bad spot in message tree. I appologize for inconvenience. 2017-01-11 8:48 GMT+01:00 Arthur Miller : > There is a slightly cosmetic issue with above function. When one switches > back on decorations, > the frame will not resize properly and minibuffer will be not visible. > It's there but just > covered by frame. Just resizing emacs framefixes it. > > Adding call to PostMessage(hwnd, WM_SIZE,0,0) in Martins function fixes i= t. > > void > x_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Object > old_value) > { > HWND hwnd =3D FRAME_W32_WINDOW (f); > DWORD dwStyle =3D GetWindowLong (hwnd, GWL_STYLE); > /*Lisp_Object border_width =3D Fcdr (Fassq (Qborder_width, > f->param_alist));*/ > /*Lisp_Object undecorated =3D Fcdr (Fassq (Qundecorated, > f->param_alist));*/ > > block_input (); > if (!NILP (new_value) && !FRAME_UNDECORATED (f)) > { > dwStyle =3D (dwStyle & ~WS_THICKFRAME & ~WS_CAPTION); > SetWindowLong (hwnd, GWL_STYLE, dwStyle); > SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, > SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVA= TE > | SWP_FRAMECHANGED); > FRAME_UNDECORATED (f) =3D true; > } > else if (!NILP (new_value) && FRAME_UNDECORATED (f)) > { > SetWindowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | WS_CAPTIO= N > | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU); > SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, > SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVA= TE > | SWP_FRAMECHANGED); > PostMessage(hwnd, WM_SIZE,0,0); > FRAME_UNDECORATED (f) =3D false; > } > unblock_input (); > } > > > 2017-01-11 8:24 GMT+01:00 Arthur Miller : > >> I appologize, I was too fast to answer, I made a bad call from >> modify-frame-parameters >> when I tested it. It works like a charm as you say it in english. I have >> also changed >> the else-if statement in Martins method to else if (!NILP (new_value) && >> FRAME_UNDECORATED (f)) >> (check for !NILP) so I can switch back decorations. It works. Thanks all= , >> it was great >> exercise to learn a bit of emacs internals and to make a simple hack. >> >> 2017-01-11 8:08 GMT+01:00 Arthur Miller : >> >>> "We call it "Losedows" or "Lose OS", because if you use it, you lose >>> your freedom. >>> >>> We're glad if Emacs gives you a taste of freedom, but a taste is >>> all it can give you. To escape from Microsoft's power, you need to >>> stop using Losedows." >>> >>> Haha :-) Indeed. >>> >>> I do run Arch Linux otherwise, but I do some consulting with programmin= g >>> databases and GUIs in access & spss and I also play some games >>> occasionally, so I still need losedows. I know I could run it in wine >>> and >>> pass through vga, but I feel a bit too old for that :). >>> >>> This was a great excursion in Emacs src code. I added above mention >>> method to my w32fns.c, added FRAME_DECORATED() macro to frame.h >>> a boolean_bf undecorated :1, to frame struct, initiated it to false in >>> "make_frame" >>> added an entry to frame_parms: {"undecorated", SYMBOL_INDEX >>> (Qundecorated)}, >>> added connecction to w32_frame_parm_handlers[] to x_set_undecorated at >>> same >>> place where symbol is declared in frame_parms (last in the list), added >>> an >>> INLINE void fset_undecorated( ... ) to frame.h (not sure if it is >>> needed), and now >>> I can change my new param with lisp from emacs, but my connection seem >>> never to be called. >>> >>> By the way, I think world is better without borders, so I have modified >>> Martin's >>> x_set_undecorated to >>> >>> void >>> x_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Object >>> old_value) >>> { >>> HWND hwnd =3D FRAME_W32_WINDOW (f); >>> DWORD dwStyle =3D GetWindowLong (hwnd, GWL_STYLE); >>> /*Lisp_Object border_width =3D Fcdr (Fassq (Qborder_width, >>> f->param_alist));*/ >>> /*Lisp_Object undecorated =3D Fcdr (Fassq (Qundecorated, >>> f->param_alist));*/ >>> >>> block_input (); >>> if (!NILP (new_value) && !FRAME_UNDECORATED (f)) >>> { >>> dwStyle =3D (dwStyle & ~WS_THICKFRAME & ~WS_CAPTION); >>> SetWindowLong (hwnd, GWL_STYLE, dwStyle); >>> SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, >>> SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | >>> SWP_NOACTIVATE >>> | SWP_FRAMECHANGED); >>> FRAME_UNDECORATED (f) =3D true; >>> } >>> else if (NILP (new_value) && FRAME_UNDECORATED (f)) >>> { >>> SetWindowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | >>> WS_CAPTION >>> | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU); >>> SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, >>> SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | >>> SWP_NOACTIVATE >>> | SWP_FRAMECHANGED); >>> FRAME_UNDECORATED (f) =3D false; >>> } >>> unblock_input (); >>> } >>> >>> So it should just switch on "undecorated" param and ignore borders (at >>> least I hope). I am not sure where do >>> I have to make change more to get it to work. >>> >>> 2017-01-10 21:39 GMT+01:00 Cl=C3=A9ment Pit--Claudel : >>> >>>> On 2017-01-10 13:27, Eli Zaretskii wrote: >>>> > Then I suggest to add this to Emacs. That some wm's ignore it is no= t >>>> > a reason to avoid having the feature for those that don't ignore it. >>>> >>>> Indeed, it would be wonderful! >>>> >>>> >>> >> > --047d7b6040b203ad240545ccda0c Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Aha, my last message ended somehow in bad spot in mes= sage tree. I
appologize for inconvenience.

2017-01-11 8:48 GMT+01:00 Arth= ur Miller <arthur.miller.no1@gmail.com>:
There is a slightl= y cosmetic issue with above function. When one switches back on decorations= ,
the frame will not resize properly and minibuffer will be not vi= sible. It's there but just
covered by frame. Just resizing emacs fra= mefixes it.

Adding call to PostMessage(hwnd, WM_SIZE,0,0) in Martin= s function fixes it.

void
x_set_undecorated (struct frame *f, Lisp_Obj= ect new_value, Lisp_Object old_value)
{
=C2=A0 HWND hwnd =3D FRAME_W32_WINDOW (f);
=C2= =A0 DWORD dwStyle =3D GetWindowLong (hwnd, GWL_STYLE);
=C2=A0 /*L= isp_Object border_width =3D Fcdr (Fassq (Qborder_width, f->param_alist))= ;*/
=C2=A0 /*Lisp_Object undecorated =3D Fcdr (Fassq (Qundecorated, f-&g= t;param_alist));*/

= =C2=A0 block_input ();
=C2=A0 if (!NILP (new_value) && !FRAME_UN= DECORATED (f))
=C2=A0=C2=A0=C2=A0 {
=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 dwStyle =3D (dwStyle & ~WS_THICKFRAME & ~WS_CAPTION);
=
=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 SetWindowLong (hwnd, GWL_STYLE, dwStyle);
=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0,
= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | SWP_NOMOVE | SWP_NOZOR= DER | SWP_NOACTIVATE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | SWP_FRAME= CHANGED);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECORATED (f) =3D true;=
=C2=A0=C2=A0=C2=A0 }
=C2=A0 else if (!NILP (= new_value) && FRAME_UNDECORATED (f))
=C2= =A0=C2=A0=C2=A0 {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetWindowLong (hwnd, GW= L_STYLE, dwStyle | WS_THICKFRAME | WS_CAPTION
=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU);
= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0,=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | SWP_NOMOVE | SWP_NO= ZORDER | SWP_NOACTIVATE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | SWP_FR= AMECHANGED);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 PostMessage(hwnd, WM_SIZE,0,0);
<= /span>
= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECORATED (f) =3D false;
=C2=A0= =C2=A0=C2=A0 }
=C2=A0 unblock_input ();
}


2017-01-11 8:24 GMT+01:00 Arthur Miller <arthur.miller.no1@gmail.com>:
I appologize, I was too fast to answe= r, I made a bad call from modify-frame-parameters
when I tested it. It = works like a charm as you say it in english. I have also changed
t= he else-if statement in Martins method to else if (!NILP (new_value) &&= amp; FRAME_UNDECORATED (f))
(check for !NILP) so I can switch back= decorations. It works. Thanks all, it was great
exercise to lear= n a bit of emacs internals and to make a simple hack.
<= div class=3D"gmail_extra">
2017-01-11 8:08 GM= T+01:00 Arthur Miller <arthur.miller.no1@gmail.com>:
<= div>
"We call it "Losedows" or &quo= t;Lose OS", because if you use it, you lose
your freedom.

We're glad if Emacs gives you a taste of freedom, but a taste is
all it can give you.=C2=A0 To escape from Microsoft's power, you need t= o
stop using Losedows."

Haha :-) Indeed.

I do run Arch Linux otherwise, but I do some consulting with programming=
databases and GUIs in access & spss and I also play some games occasionally, so I still need losedows. I know I could run it in wine and =
pass through vga, but I feel a bit too old for that :).
<= /div>

This was a great excursion in Emacs src code. I added a= bove mention
method to my w32fns.c, added FRAME_DECORATED() macro = to frame.h
a boolean_bf undecorated :1, to frame struct, initiated= it to false in "make_frame"
added an entry to frame_par= ms: {"undecorated",=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 SYMBOL_I= NDEX (Qundecorated)},
added connecction to w32_frame_parm_handlers= [] to x_set_undecorated at same
place where symbol is declared in = frame_parms (last in the list), added an
INLINE void fset_undecorated( .= .. ) to frame.h (not sure if it is needed), and now
I can change my new= param with lisp from emacs, but my connection seem
never to = be called.

By the way, I think world is better without b= orders, so I have modified Martin's
x_set_undecorated to =

void
x_set_undecorated (struct frame *f, Lisp_Object new_v= alue, Lisp_Object old_value)
{
=C2=A0 HWND hwnd =3D FRAM= E_W32_WINDOW (f);
=C2=A0 DWORD dwStyle =3D GetWindowLong (hwnd, GWL_STYL= E);
=C2=A0 /*Lisp_Object border_width =3D Fcdr (Fassq (Qborder_wi= dth, f->param_alist));*/
=C2=A0 /*Lisp_Object undecorated =3D Fcdr (F= assq (Qundecorated, f->param_alist));*/

=C2=A0 block_input = ();
=C2=A0 if (!NILP (new_value) && !FRAME_UNDECORATED (f))
= =C2=A0=C2=A0=C2=A0 {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 dwStyle =3D (= dwStyle & ~WS_THICKFRAME & ~WS_CAPTION);
=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 SetWindowLong (hwnd, GWL_STYLE, dwStyle);
=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0,
=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP= _NOACTIVATE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | SWP_FRAMECHANGED);=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECORATED (f) =3D true;
=C2= =A0=C2=A0=C2=A0 }
=C2=A0 else if (NILP (new_value) && FRAME_UNDE= CORATED (f))
=C2=A0=C2=A0=C2=A0 {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetW= indowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | WS_CAPTION
=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | WS_MAXIMIZEBOX | WS_MINIMIZEBOX |= WS_SYSMENU);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetWindowPos (hwnd, HWND_TO= P, 0, 0, 0, 0,
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | SWP_= NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 | SWP_FRAMECHANGED);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECOR= ATED (f) =3D false;
=C2=A0=C2=A0=C2=A0 }
=C2=A0 unblock_input ();
= }

So it should just switch on "unde= corated" param and ignore borders (at least I hope). I am not sure whe= re do
I have to make change more to get it to work.

2017-01-10 21:3= 9 GMT+01:00 Cl=C3=A9ment Pit--Claudel <clement.pit@gmail.com>:
On 2017-01-10 13:27, Eli Zar= etskii wrote:
> Then I suggest to add this to Emacs.=C2=A0 That some wm's ignore i= t is not
> a reason to avoid having the feature for those that don't ignore i= t.

Indeed, it would be wonderful!





--047d7b6040b203ad240545ccda0c-- From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 11 03:15:12 2017 Received: (at 25408) by debbugs.gnu.org; 11 Jan 2017 08:15:12 +0000 Received: from localhost ([127.0.0.1]:49346 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRE3r-0007Ps-Q3 for submit@debbugs.gnu.org; Wed, 11 Jan 2017 03:15:12 -0500 Received: from mail-wm0-f46.google.com ([74.125.82.46]:35580) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRE3p-0007Pc-Sp for 25408@debbugs.gnu.org; Wed, 11 Jan 2017 03:15:10 -0500 Received: by mail-wm0-f46.google.com with SMTP id r126so5358459wmr.0 for <25408@debbugs.gnu.org>; Wed, 11 Jan 2017 00:15:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=Qb/4rKzIqAZapOMvpnVvr9hB+23THLa6CqCPJ/Yz0Uw=; b=iz7q4qP9l5W2jaHEZQlDnz/CrOOwhdANzk+rK3u9QlOm3Oq8YL4Ej3Q+jDwZh7t5Vo oepH3K94IXkDoRQoweTCuyskvcPifGWWBTL7vPGqknfZ+SAFnoVvYacp4UVJFbfnfeUY NvQhLqaeH40da65dP8F1GpKRJz245Ep9BzT42BGWmkCGdARf6IYPORUu5SiLfXyF8W5q +9FHsk4/8D6Yf1M16dn/qngHEIbB5orZyy9CeUNSuBdHPntqmcgspYel7ahZB/Y9QMzC PqWJfis27tlj6hOYfKjPOYhDYSx3Ze25rUW/3mUez2QGGjMzqHgsPHBJ3K1laMnA7eWj I2RQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=Qb/4rKzIqAZapOMvpnVvr9hB+23THLa6CqCPJ/Yz0Uw=; b=NWy9Ct+Up7l7HQRY0t97IK3bAguKMWujlIyFyB5eplViwf8YTJwyGw2qUMRpzVytrz mIXv+M7ppZIqMjhmZmLWCiQUIysic0NKNWeeRIs91xN+okviGJi0FEvIrPoSksaeUj4r WM4bzbiswEtnLOE9qthrA5g97lORqBQqHzhk4vlZzdonOEaP8MMR4wN+I2UFDTBo6haQ um7dOCkxQ83xMvDL0Q9b9iCoimx7mI5DSTUC4s38/nMkLegUarmD/DdzuoaBGVOMtinL qb1a4jNVzb3WogOYhfqFJ48wl48JKvnT7wNV/fetY8b0KjKS4wT9zLz9MYuwKNASCBFj 5xZQ== X-Gm-Message-State: AIkVDXJGQbBWPQzqH+Y4MMA6ieZ3nHKWmzByDVUBhutZbSL2qne2fsIKLPyrSDhprxEZ/vDaiPR0g8Yz0o72nw== X-Received: by 10.223.136.36 with SMTP id d33mr4361360wrd.199.1484122504140; Wed, 11 Jan 2017 00:15:04 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.169.98 with HTTP; Wed, 11 Jan 2017 00:15:03 -0800 (PST) In-Reply-To: References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> From: Arthur Miller Date: Wed, 11 Jan 2017 09:15:03 +0100 Message-ID: Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= Content-Type: multipart/alternative; boundary=001a1149231aa99c5b0545cd32e2 X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: 25408 Cc: martin rudalics , Eli Zaretskii , 25408@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: 0.7 (/) --001a1149231aa99c5b0545cd32e2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable I am beggin of pardon, but I found that sometimes, just sometimes, even switching decorations on leaves some cosmetic issues. I took a screenshot and upload it to imgur: http://imgur.com/a/kCW8j . It is same issue as with putting decorations on. Adding that PostMessage to send wm_size after the if-else statement solves it in all cases. 2017-01-11 8:50 GMT+01:00 Arthur Miller : > Aha, my last message ended somehow in bad spot in message tree. I > appologize for inconvenience. > > 2017-01-11 8:48 GMT+01:00 Arthur Miller : > >> There is a slightly cosmetic issue with above function. When one switche= s >> back on decorations, >> the frame will not resize properly and minibuffer will be not visible. >> It's there but just >> covered by frame. Just resizing emacs framefixes it. >> >> Adding call to PostMessage(hwnd, WM_SIZE,0,0) in Martins function fixes >> it. >> >> void >> x_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Object >> old_value) >> { >> HWND hwnd =3D FRAME_W32_WINDOW (f); >> DWORD dwStyle =3D GetWindowLong (hwnd, GWL_STYLE); >> /*Lisp_Object border_width =3D Fcdr (Fassq (Qborder_width, >> f->param_alist));*/ >> /*Lisp_Object undecorated =3D Fcdr (Fassq (Qundecorated, >> f->param_alist));*/ >> >> block_input (); >> if (!NILP (new_value) && !FRAME_UNDECORATED (f)) >> { >> dwStyle =3D (dwStyle & ~WS_THICKFRAME & ~WS_CAPTION); >> SetWindowLong (hwnd, GWL_STYLE, dwStyle); >> SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, >> SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | >> SWP_NOACTIVATE >> | SWP_FRAMECHANGED); >> FRAME_UNDECORATED (f) =3D true; >> } >> else if (!NILP (new_value) && FRAME_UNDECORATED (f)) >> { >> SetWindowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | WS_CAPTI= ON >> | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU); >> SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, >> SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | >> SWP_NOACTIVATE >> | SWP_FRAMECHANGED); >> PostMessage(hwnd, WM_SIZE,0,0); >> FRAME_UNDECORATED (f) =3D false; >> } >> unblock_input (); >> } >> >> >> 2017-01-11 8:24 GMT+01:00 Arthur Miller : >> >>> I appologize, I was too fast to answer, I made a bad call from >>> modify-frame-parameters >>> when I tested it. It works like a charm as you say it in english. I hav= e >>> also changed >>> the else-if statement in Martins method to else if (!NILP (new_value) &= & >>> FRAME_UNDECORATED (f)) >>> (check for !NILP) so I can switch back decorations. It works. Thanks >>> all, it was great >>> exercise to learn a bit of emacs internals and to make a simple hack. >>> >>> 2017-01-11 8:08 GMT+01:00 Arthur Miller : >>> >>>> "We call it "Losedows" or "Lose OS", because if you use it, you lose >>>> your freedom. >>>> >>>> We're glad if Emacs gives you a taste of freedom, but a taste is >>>> all it can give you. To escape from Microsoft's power, you need to >>>> stop using Losedows." >>>> >>>> Haha :-) Indeed. >>>> >>>> I do run Arch Linux otherwise, but I do some consulting with >>>> programming >>>> databases and GUIs in access & spss and I also play some games >>>> occasionally, so I still need losedows. I know I could run it in wine >>>> and >>>> pass through vga, but I feel a bit too old for that :). >>>> >>>> This was a great excursion in Emacs src code. I added above mention >>>> method to my w32fns.c, added FRAME_DECORATED() macro to frame.h >>>> a boolean_bf undecorated :1, to frame struct, initiated it to false in >>>> "make_frame" >>>> added an entry to frame_parms: {"undecorated", SYMBOL_INDEX >>>> (Qundecorated)}, >>>> added connecction to w32_frame_parm_handlers[] to x_set_undecorated at >>>> same >>>> place where symbol is declared in frame_parms (last in the list), adde= d >>>> an >>>> INLINE void fset_undecorated( ... ) to frame.h (not sure if it is >>>> needed), and now >>>> I can change my new param with lisp from emacs, but my connection seem >>>> never to be called. >>>> >>>> By the way, I think world is better without borders, so I have modifie= d >>>> Martin's >>>> x_set_undecorated to >>>> >>>> void >>>> x_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Object >>>> old_value) >>>> { >>>> HWND hwnd =3D FRAME_W32_WINDOW (f); >>>> DWORD dwStyle =3D GetWindowLong (hwnd, GWL_STYLE); >>>> /*Lisp_Object border_width =3D Fcdr (Fassq (Qborder_width, >>>> f->param_alist));*/ >>>> /*Lisp_Object undecorated =3D Fcdr (Fassq (Qundecorated, >>>> f->param_alist));*/ >>>> >>>> block_input (); >>>> if (!NILP (new_value) && !FRAME_UNDECORATED (f)) >>>> { >>>> dwStyle =3D (dwStyle & ~WS_THICKFRAME & ~WS_CAPTION); >>>> SetWindowLong (hwnd, GWL_STYLE, dwStyle); >>>> SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, >>>> SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | >>>> SWP_NOACTIVATE >>>> | SWP_FRAMECHANGED); >>>> FRAME_UNDECORATED (f) =3D true; >>>> } >>>> else if (NILP (new_value) && FRAME_UNDECORATED (f)) >>>> { >>>> SetWindowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | >>>> WS_CAPTION >>>> | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU); >>>> SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, >>>> SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | >>>> SWP_NOACTIVATE >>>> | SWP_FRAMECHANGED); >>>> FRAME_UNDECORATED (f) =3D false; >>>> } >>>> unblock_input (); >>>> } >>>> >>>> So it should just switch on "undecorated" param and ignore borders (at >>>> least I hope). I am not sure where do >>>> I have to make change more to get it to work. >>>> >>>> 2017-01-10 21:39 GMT+01:00 Cl=C3=A9ment Pit--Claudel >>>> : >>>> >>>>> On 2017-01-10 13:27, Eli Zaretskii wrote: >>>>> > Then I suggest to add this to Emacs. That some wm's ignore it is n= ot >>>>> > a reason to avoid having the feature for those that don't ignore it= . >>>>> >>>>> Indeed, it would be wonderful! >>>>> >>>>> >>>> >>> >> > --001a1149231aa99c5b0545cd32e2 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I am beggin of pardon, but I found that sometime= s, just sometimes, even switching
decorations on leaves some cosmetic i= ssues. I took a screenshot and upload it to
imgur: http://imgur.com/a/kCW8j . It is same issue as wi= th putting decorations on.
Adding that PostMessage to send w= m_size after the if-else statement solves it in
all cases.

2017= -01-11 8:50 GMT+01:00 Arthur Miller <arthur.miller.no1@gmail.com= >:
Ah= a, my last message ended somehow in bad spot in message tree. I
a= ppologize for inconvenience.

2017-01-11 8:4= 8 GMT+01:00 Arthur Miller <arthur.miller.no1@gmail.com>:
Th= ere is a slightly cosmetic issue with above function. When one switches bac= k on decorations,
the frame will not resize properly and minibuffe= r will be not visible. It's there but just
covered by frame. Just re= sizing emacs framefixes it.

Adding call to PostMessage(hwnd, WM_SIZ= E,0,0) in Martins function fixes it.

void
x_set_undecorated = (struct frame *f, Lisp_Object new_value, Lisp_Object old_value)
<= span class=3D"m_-831990385080963378m_-3985012240103285240gmail-im">{
=C2= =A0 HWND hwnd =3D FRAME_W32_WINDOW (f);
=C2=A0 DWORD dwStyle =3D GetWind= owLong (hwnd, GWL_STYLE);
=C2=A0 /*Lisp_Object border_width =3D F= cdr (Fassq (Qborder_width, f->param_alist));*/
=C2=A0 /*Lisp_Object u= ndecorated =3D Fcdr (Fassq (Qundecorated, f->param_alist));*/

=C2=A0 blo= ck_input ();
=C2=A0 if (!NILP (new_value) && !FRAME_UNDECORATED = (f))
=C2=A0=C2=A0=C2=A0 {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 dwSty= le =3D (dwStyle & ~WS_THICKFRAME & ~WS_CAPTION);
=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 SetWindowLong (hwnd, GWL_STYLE, dwStyle);
=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0,
= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | SWP_NOMOVE | SWP_NOZOR= DER | SWP_NOACTIVATE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | SWP_FRAME= CHANGED);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECORATED (f) =3D true;=
=C2=A0=C2=A0=C2=A0 }
=C2=A0 else if (!NILP (new_value) = && FRAME_UNDECORATED (f))
=C2=A0=C2=A0=C2=A0 {
= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetWindowLong (hwnd, GWL_STYLE, dwStyle | WS= _THICKFRAME | WS_CAPTION
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU);
=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0,
=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVA= TE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | SWP_FRAMECHANGED);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 PostMessage(hwnd, WM_SIZE,0,0);
<= /span>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECORATED (f) =3D false;=C2=A0=C2=A0=C2=A0 }
=C2=A0 unblock_input ();
}


= 2017-01-11 8:24 GMT+01:00 Arthur Miller <arthur.miller.no1@gmail= .com>:
I appologize, I was too fast to answer, I made a bad call from = modify-frame-parameters
when I tested it. It works like a charm as you = say it in english. I have also changed
the else-if statement in Ma= rtins method to else if (!NILP (new_value) && FRAME_UNDECORATED (f)= )
(check for !NILP) so I can switch back decorations. It works. Th= anks all, it was great
exercise to learn a bit of emacs internals= and to make a simple hack.

2017= -01-11 8:08 GMT+01:00 Arthur Miller <arthur.miller.no1@gmail.com= >:
"We call it "Losedows= " or "Lose OS", because if you use it, you lose
your freedom.

We're glad if Emacs gives you a taste of freedom, but a taste is
all it can give you.=C2=A0 To escape from Microsoft's power, you need t= o
stop using Losedows."

Haha :-) Indeed.

I do run Arch Linux otherwise, but I do some consulting with programming=
databases and GUIs in access & spss and I also play some games occasionally, so I still need losedows. I know I could run it in wine and =
pass through vga, but I feel a bit too old for that :).
<= /div>

This was a great excursion in Emacs src code. I added a= bove mention
method to my w32fns.c, added FRAME_DECORATED() macro = to frame.h
a boolean_bf undecorated :1, to frame struct, initiated= it to false in "make_frame"
added an entry to frame_par= ms: {"undecorated",=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 SYMBOL_I= NDEX (Qundecorated)},
added connecction to w32_frame_parm_handlers= [] to x_set_undecorated at same
place where symbol is declared in = frame_parms (last in the list), added an
INLINE void fset_undecorated( .= .. ) to frame.h (not sure if it is needed), and now
I can change my new= param with lisp from emacs, but my connection seem
never to = be called.

By the way, I think world is better without b= orders, so I have modified Martin's
x_set_undecorated to =

void
x_set_undecorated (struct frame *f, Lisp_Object new_v= alue, Lisp_Object old_value)
{
=C2=A0 HWND hwnd =3D FRAM= E_W32_WINDOW (f);
=C2=A0 DWORD dwStyle =3D GetWindowLong (hwnd, GWL_STYL= E);
=C2=A0 /*Lisp_Object border_width =3D Fcdr (Fassq (Qborder_wi= dth, f->param_alist));*/
=C2=A0 /*Lisp_Object undecorated =3D Fcdr (F= assq (Qundecorated, f->param_alist));*/

=C2=A0 block_input = ();
=C2=A0 if (!NILP (new_value) && !FRAME_UNDECORATED (f))
= =C2=A0=C2=A0=C2=A0 {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 dwStyle =3D (= dwStyle & ~WS_THICKFRAME & ~WS_CAPTION);
=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 SetWindowLong (hwnd, GWL_STYLE, dwStyle);
=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0,
=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP= _NOACTIVATE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | SWP_FRAMECHANGED);=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECORATED (f) =3D true;
=C2= =A0=C2=A0=C2=A0 }
=C2=A0 else if (NILP (new_value) && FRAME_UNDE= CORATED (f))
=C2=A0=C2=A0=C2=A0 {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetW= indowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | WS_CAPTION
=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | WS_MAXIMIZEBOX | WS_MINIMIZEBOX |= WS_SYSMENU);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetWindowPos (hwnd, HWND_TO= P, 0, 0, 0, 0,
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | SWP_= NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 | SWP_FRAMECHANGED);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECOR= ATED (f) =3D false;
=C2=A0=C2=A0=C2=A0 }
=C2=A0 unblock_input ();
= }

So it should just switch on "unde= corated" param and ignore borders (at least I hope). I am not sure whe= re do
I have to make change more to get it to work.

=
2017-01-10 21:39 GMT+01:00 Cl=C3=A9ment Pit--Cla= udel <clement.pit@gmail.com>:
On 2017-01-10 13:27, Eli Zaretskii wrote:
> Then I suggest to add this to Emacs.=C2=A0 That some wm's ignore i= t is not
> a reason to avoid having the feature for those that don't ignore i= t.

Indeed, it would be wonderful!






--001a1149231aa99c5b0545cd32e2-- From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 11 03:38:31 2017 Received: (at 25408) by debbugs.gnu.org; 11 Jan 2017 08:38:31 +0000 Received: from localhost ([127.0.0.1]:49351 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cREQR-0007zh-3I for submit@debbugs.gnu.org; Wed, 11 Jan 2017 03:38:31 -0500 Received: from mout.gmx.net ([212.227.15.19]:65029) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cREQP-0007zU-7u for 25408@debbugs.gnu.org; Wed, 11 Jan 2017 03:38:29 -0500 Received: from [192.168.1.100] ([212.95.7.20]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0LtZcC-1cYgY50uSy-010y47; Wed, 11 Jan 2017 09:38:21 +0100 Message-ID: <5875EEF3.4060908@gmx.at> Date: Wed, 11 Jan 2017 09:38:11 +0100 From: martin rudalics MIME-Version: 1.0 To: Arthur Miller , =?UTF-8?B?Q2zDqW1lbnQgUGk=?= =?UTF-8?B?dC0tQ2xhdWRlbA==?= Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:xp8dTbPjuglPwJ/VvYBSLVitM1n0Ccl0lE8b6WK4HTDo2xr13pv 6iyv9C49Aft87K3+7X2awxOX0/j0UKi3qfWJxR4zBMxr1RO57Db5OleNf2ryCQXnmAM4rr1 A1evZ30Lt6gxL/DVAjw1LaJt9y7+jUGG7iPo92uyNyBFOKEqkDT0bWAxCOxaWhUEb83IY/a yhpbxz+ngu6uQus/SoIBg== X-UI-Out-Filterresults: notjunk:1;V01:K0:wgeimrPg9xs=:bCwMnlNjBYfvj1rN7okMf5 +p7Uhq4klJrkDqp9LluUxJ+lOvlsMPMexwxKXgN2Pztg3Yadho7owtHktvVEHL5ZJw42gb6/y e0JvqiLQnXyMmZpNmzKmt3M6W9HRUfAav9LprYour+t+IX50uMz1fCZ/HjmXzeo8SEuA+rZwV XQ3P/YJOdqDnOYJAVKQ1MTnZZWuuilQm9CKQ0XMtKxzYZrRRM9JbD3Rl6Yf4rhSq67a5RCHCT 5GT6uGOp7DLVZwemNGeMt6vBuodaYlhhujknm4eI9zDYANwzFa/+DuDL7/J6LLzGj0oeJ2hj0 GWCud+QXGu/XEIydIsYGMIqQRwT5lSwlbl7CimkwSl6Uo9Irp++lftkm7fYqtH277g1kLoMcG Bbfp46awhtGGdYmQAen8hMHMrZjlSRi3qTycrNpfBifzG13N/Get8EAApyO/fy1rhzi7oJzxV kRIIyDYXdgWVnf28OJWxGhK4fbQUouDCkgQTcrg9/wkjv0v4VhUC64iRbRd1BADTPq0HMO1a5 BlDMRa6F8uLLI1EfxLsV0MQwsdEAWmjg0JOU5JpwSQhXM1fabg7DPv29ONuAlQ3B31SBrlOg0 A91P8mt/HY37e15943gP20Nek8k3F/8h0IwwcKSUipPTGqAcChpXyBbTl3u7dA9ZHbjPtLxSc W85p9U5tny+gq9l0FA/Hx56dQC7ipAhbWSVjLZIilwi4iJpjD7egX6rVx4ReGTy7I5TeJh0dC nztRD70EMZhwvBVHprLti+BVVFtovawoWnaPTjhN6qfqg2u8BLWpD6ZfRgy4zY7l7B9q70FUi A7GGIFa X-Spam-Score: 2.2 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > added an > INLINE void fset_undecorated( ... ) to frame.h (not sure if it is > needed It's only needed for Lisp_Object components. martin [...] Content analysis details: (2.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.15.19 listed in dnsbl.sorbs.net] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) 3.6 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [212.95.7.20 listed in dnsbl.sorbs.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.15.19 listed in list.dnswl.org] -1.2 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.15.19 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record X-Debbugs-Envelope-To: 25408 Cc: Eli Zaretskii , 25408@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: 2.2 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > added an > INLINE void fset_undecorated( ... ) to frame.h (not sure if it is > needed It's only needed for Lisp_Object components. martin [...] Content analysis details: (2.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.15.19 listed in dnsbl.sorbs.net] 3.6 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [212.95.7.20 listed in dnsbl.sorbs.net] -1.2 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.15.19 listed in wl.mailspike.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.15.19 listed in list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) -0.0 SPF_PASS SPF: sender matches SPF record > added an > INLINE void fset_undecorated( ... ) to frame.h (not sure if it is > needed It's only needed for Lisp_Object components. martin From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 11 03:39:34 2017 Received: (at 25408) by debbugs.gnu.org; 11 Jan 2017 08:39:34 +0000 Received: from localhost ([127.0.0.1]:49355 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRERS-00081N-An for submit@debbugs.gnu.org; Wed, 11 Jan 2017 03:39:34 -0500 Received: from mout.gmx.net ([212.227.15.15]:56252) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRERQ-00081A-KZ for 25408@debbugs.gnu.org; Wed, 11 Jan 2017 03:39:33 -0500 Received: from [192.168.1.100] ([212.95.7.20]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MQiVh-1c1Xdb0RbB-00U63s; Wed, 11 Jan 2017 09:39:26 +0100 Message-ID: <5875EF34.20507@gmx.at> Date: Wed, 11 Jan 2017 09:39:16 +0100 From: martin rudalics MIME-Version: 1.0 To: Arthur Miller , =?UTF-8?B?Q2zDqW1lbnQgUGk=?= =?UTF-8?B?dC0tQ2xhdWRlbA==?= Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:GSOQlnS2tO3LI0NkL/sSxjFgPmrNLHQO+loP3irh+6xIdOdd2gy MoLfyGMmzB9eJNJfUgwMPNGpqSNr7qGgxpWLcAVcjprSs8XkfMQk6I3n1nCA4gZHmprSO7U m4/2q5Wt5iJAWkK68zEbBPoNaNEHUa3AGJT8RmcCdQNjrZD/NAxd29uXl26WtNB1S5SC9DQ PwNvDgGuGR4jjo03CZDyg== X-UI-Out-Filterresults: notjunk:1;V01:K0:Gqp5iO4jaD8=:kCKS5Ysrv4GZPrW67VUDtz /x08pUL2LrJD3/sd3/gsHPc2usjQW112xZkXePvcRrc72a2JNQ/9/bK1U7n0JhBtwpjVrnVZW Ov4jGknCyoweD+Fa0vzQJsqqT5FHfy/9JNlXuMoOT08CbwFDqKnxbczm8XputnnkQbvn1WPb/ iyc0jdexlpbasNPXUk2h/33B5jHQqOHnG+SvdAJ/JliE4rWvpPRRKPmeBV7wWC96XQrPMyCJv d/YtCPhYuovq58w+6fPEGtnQptxd/VV9DZBOIPuflNE41FAnFsRsMCp2jho7KWx2za4Mz4bNq aY8IDKssHuVCKp/oilCV6exWbX5SPFUucqdmA4LwIE8GhF0bhQGdJtseg2ANi08s1VadlyHdD X6r6eR+Skfwe93lRqhlXmxVzd09/YW+oGuWdTubQcqKt7SgE/uIO8YXofNL96LTKFOWVhpvaA +RVt447U2kJCq02cOyDvyo5GdrNZYe/uG5GuTPJEZmJqCbvCaKyqhC/OSeT7G9dqd9YgKcl67 SnaEoPl2gCVOBErfpRQWa8ydNyuuf2rFQj5S7+/LRFOYY/Ur9Fz8ySJnvvzP2v5niR1chJMXH wc+38WO7XRfgDaGpZn1KVUHVloSkr+aKa8arTp6heGjNa0PET0YybUMKpfyhpGjJQvtERK8C5 FE31sXtQlHqriaTg5BIjW6zJeNhwHUYNdhAPfmIv1RqKQm34wu2c8IwSlTqMuWb/YH7ZWP8Ei 0YgicIha1YkDblvQ47ETT2kUnB2q/eQQC8qdwB4zpf6gMS/rz2ZuCB3bPr9wFj+Ms1aJUCQIX JMQTYEo X-Spam-Score: 2.2 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > There is a slightly cosmetic issue with above function. When one switches > back on decorations, > the frame will not resize properly and minibuffer will be not visible. It's > there but just > covered by frame. Just resizing emacs framefixes it. > > Adding call to PostMessage(hwnd, WM_SIZE, 0, 0) in Martins function fixes it. [...] Content analysis details: (2.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [212.95.7.20 listed in dnsbl.sorbs.net] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.15.15 listed in dnsbl.sorbs.net] -0.0 SPF_PASS SPF: sender matches SPF record -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.15.15 listed in list.dnswl.org] -1.2 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.15.15 listed in wl.mailspike.net] X-Debbugs-Envelope-To: 25408 Cc: Eli Zaretskii , 25408@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: 2.2 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > There is a slightly cosmetic issue with above function. When one switches > back on decorations, > the frame will not resize properly and minibuffer will be not visible. It's > there but just > covered by frame. Just resizing emacs framefixes it. > > Adding call to PostMessage(hwnd, WM_SIZE,0,0) in Martins function fixes it. [...] Content analysis details: (2.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.15.15 listed in dnsbl.sorbs.net] 3.6 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [212.95.7.20 listed in dnsbl.sorbs.net] -1.2 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.15.15 listed in wl.mailspike.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.15.15 listed in list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) -0.0 SPF_PASS SPF: sender matches SPF record > There is a slightly cosmetic issue with above function. When one switches > back on decorations, > the frame will not resize properly and minibuffer will be not visible. It's > there but just > covered by frame. Just resizing emacs framefixes it. > > Adding call to PostMessage(hwnd, WM_SIZE,0,0) in Martins function fixes it. This is not necessary here. And it would be strange since the idea is that the outer frame size remains unchanged. Hence, any problem would manifest itself already when you remove the borders by leaving parts of the display area reserved for the frame not redrawn. The image you posted in the message you sent just now seems to confirm that. But I'm testing this on Windows XP and have not yet pulled the recent multi-thread Emacs changes. martin From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 11 04:18:06 2017 Received: (at 25408) by debbugs.gnu.org; 11 Jan 2017 09:18:06 +0000 Received: from localhost ([127.0.0.1]:49372 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRF2k-0000UA-Lv for submit@debbugs.gnu.org; Wed, 11 Jan 2017 04:18:06 -0500 Received: from mail-wm0-f44.google.com ([74.125.82.44]:35525) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRF2j-0000Th-NI for 25408@debbugs.gnu.org; Wed, 11 Jan 2017 04:18:06 -0500 Received: by mail-wm0-f44.google.com with SMTP id r126so6791024wmr.0 for <25408@debbugs.gnu.org>; Wed, 11 Jan 2017 01:18:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=gaDWFP3pFSPok0JRbwQ5jTzz4Uhpuc1ylZnwA8flW+o=; b=DHYRo8BcrXTGmFS8rfSxwhkTotCADJuT7yN8cc42SjqdAtsP3BpJuaK5PkGts0jjQ5 L2Fsb9f11GdJNyd1+qLEL4XuxJ2yOKMgjZhC5vi5GgnC78bclK5oiQNod8SoKCInsJ8k lHYBMlk5OiAhnGXTahP0idyLYZ58ddHuPHyG3Ec9tIYd9kMvu13u9kh08LXnQyxFScc9 937HnnsNWTpoxUywNMAaV/9OTdjY3TQSwBtvMYzeUC7kcNJTXpgDl/Ke536Y7eDRr4xV hxM2lDXKBPh94R78NG0vkaYEd75nmAplNcHxh+CABJjWtgkgHQT2ra9Lbcq7xQUXzb+7 0P6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=gaDWFP3pFSPok0JRbwQ5jTzz4Uhpuc1ylZnwA8flW+o=; b=pYYTMbJhxDyP7qyCGro/Ll+PSQOMgdxdKnM3OdFbZhUWLWIsvExjzp8Hg4vsm0h/7O 1br17SI5mT7n7GXKbCGgXBUTORnkEOS6Nlt3UBVwZrLEFv33F8Ezet7hhgvOz+frtF4D L55Hvf0uP7LX6nvnQLmDogmRQVC6HI0Bn7Ehuwcdub3QZKDs0jPQANK8kyhLTC29pCxw 5hJXoqSwMC+DFrWCSuxLbQgBUxx2S0lGjPnoMz8cFqQXJannmyty9+B6aW2Bqq9SAUjZ HawI3YAYYI4iaag2nrem4YiApTL+BFzsCiClk4zcmeMcC/yr3/LXFe/J2mlIiKjzhvzN hGDQ== X-Gm-Message-State: AIkVDXI0vGQYjkfE9fGHQ/vQ3YjQHEJLJP3/YwwI39mR62botA/DD9m/ioAxVjPZpjq60ZFrd5NscFRvkwXnhg== X-Received: by 10.28.203.6 with SMTP id b6mr2242606wmg.2.1484126280024; Wed, 11 Jan 2017 01:18:00 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.169.98 with HTTP; Wed, 11 Jan 2017 01:17:59 -0800 (PST) In-Reply-To: <5875EF34.20507@gmx.at> References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> From: Arthur Miller Date: Wed, 11 Jan 2017 10:17:59 +0100 Message-ID: Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: martin rudalics Content-Type: multipart/alternative; boundary=94eb2c13146cb90b7e0545ce133f X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: 25408 Cc: 25408@debbugs.gnu.org, Eli Zaretskii , =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= 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: 0.7 (/) --94eb2c13146cb90b7e0545ce133f Content-Type: text/plain; charset=UTF-8 I took screenshot of just one version, it was problem with both on/off, at least on my machine. Just posting wm_size message after the change in your function solves issues in both cases for me. 2017-01-11 9:39 GMT+01:00 martin rudalics : > > There is a slightly cosmetic issue with above function. When one switches > > back on decorations, > > the frame will not resize properly and minibuffer will be not visible. > It's > > there but just > > covered by frame. Just resizing emacs framefixes it. > > > > Adding call to PostMessage(hwnd, WM_SIZE,0,0) in Martins function fixes > it. > > This is not necessary here. And it would be strange since the idea is > that the outer frame size remains unchanged. Hence, any problem would > manifest itself already when you remove the borders by leaving parts of > the display area reserved for the frame not redrawn. > > The image you posted in the message you sent just now seems to confirm > that. > > But I'm testing this on Windows XP and have not yet pulled the recent > multi-thread Emacs changes. > > martin > --94eb2c13146cb90b7e0545ce133f Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I took screenshot of just one version, it was problem= with both on/off, at least on my machine.

Just posting wm_siz= e message after the change in your function solves issues in both cases for= me.

201= 7-01-11 9:39 GMT+01:00 martin rudalics <rudalics@gmx.at>:
<= blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px= #ccc solid;padding-left:1ex">> There is a slightly cos= metic issue with above function. When one switches
> back on decorations,
> the frame will not resize properly and minibuffer will be not visible.= It's
> there but just
> covered by frame. Just resizing emacs framefixes it.
>
> Adding call to PostMessage(hwnd, WM_SIZE,0,0) in Martins function fixe= s it.

This is not necessary here.=C2=A0 And it would be strange since the idea is=
that the outer frame size remains unchanged.=C2=A0 Hence, any problem would=
manifest itself already when you remove the borders by leaving parts of
the display area reserved for the frame not redrawn.

The image you posted in the message you sent just now seems to confirm
that.

But I'm testing this on Windows XP and have not yet pulled the recent multi-thread Emacs changes.<= br>
martin

--94eb2c13146cb90b7e0545ce133f-- From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 11 05:20:36 2017 Received: (at 25408) by debbugs.gnu.org; 11 Jan 2017 10:20:37 +0000 Received: from localhost ([127.0.0.1]:49407 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRG1E-00020x-JN for submit@debbugs.gnu.org; Wed, 11 Jan 2017 05:20:36 -0500 Received: from mail-wm0-f52.google.com ([74.125.82.52]:38553) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRG1C-00020k-Ru for 25408@debbugs.gnu.org; Wed, 11 Jan 2017 05:20:35 -0500 Received: by mail-wm0-f52.google.com with SMTP id r144so23602747wme.1 for <25408@debbugs.gnu.org>; Wed, 11 Jan 2017 02:20:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=DMBSybFWdGR+OcP70BmYTPI23oB5uAEuWJDW/OC7cuM=; b=XJvSGrFXif7DMB6YCu8KcFQo3v5MVj3xvH48ZBoCN/7akZLlVWJviWqTXm/8LyCuZk jPt4lDo6vcMgrK3TELjUeEuyCL+ObNAZ74pROYCkZ59foo/aa0aIA5A5g4gjTC/8KOcX C/98xtPynJ+wJbZV8tJn0IcFOjiBELoGT9QGeo4QhdLSQaSVhluI23zQY+xt+6t/2/QE ciY5cGgMBhZZ6kYZIgnMlDHW6+gaMSkLxdhU0MYwkZZTKrY9kY2nwfisV5+AC+B1T2/9 it7oxc62tV1ymgUXLmuaJ/Z20yNWOycg2KE1GWMT74JXWJgnacj7H4GdrvNPITUIDHJ1 ia6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=DMBSybFWdGR+OcP70BmYTPI23oB5uAEuWJDW/OC7cuM=; b=mmo7Wq9chSZlRM7qOyFT6dL1h72urpFNmbwyG0hExKsZrxJ+Cz4uDb0T7nXgcv1qyn 5mgs1W3Oyxc/BHSXDurxZgjBZwC5XRa7vMW982UWdCPTUmaDYZzFD1EYHpelXUwyRXmI ESus0PNrxCTqYg3IuYQbCMaYo3NszMRVOkH1F7uW6DjYvITiHN1qYmkr513j0c0r/d2P bW6sPTUePCYDRAYKXPqJNeOtqDDeShlmMZ09rL7Pc0ti+r3W5yYwkwWbNCx2KX58x0c7 xGLMwHrXUCfFlviKkAPfhQ8WAJpXA0lnpS9TNd7on129Kmpl7iDoyicfDu/nF3NDgllu hmBQ== X-Gm-Message-State: AIkVDXKCvW28K4fzY7rZkqNX6+j+QDpzkn+/+UMum8V+6scu1jzYSdJ+OFGGaftf6oaATFVt3kv6jmTzuvwmfw== X-Received: by 10.28.203.6 with SMTP id b6mr2484241wmg.2.1484130029037; Wed, 11 Jan 2017 02:20:29 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.169.98 with HTTP; Wed, 11 Jan 2017 02:20:28 -0800 (PST) In-Reply-To: References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> From: Arthur Miller Date: Wed, 11 Jan 2017 11:20:28 +0100 Message-ID: Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: martin rudalics Content-Type: multipart/alternative; boundary=94eb2c13146c2e7ff10545cef30a X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 25408 Cc: 25408@debbugs.gnu.org, Eli Zaretskii , =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= 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: 0.2 (/) --94eb2c13146c2e7ff10545cef30a Content-Type: text/plain; charset=UTF-8 I have a small question: how do I make this take effect in my init file when I run in server/client mode? Seems like my client always insist on creating frames around emacs window, while when I run emacs "standalone" (for ex emacs --debug-init) it starts undecorated. I have tried following in my .emacs: (add-to-list 'default-frame-alist '(undecorated . 0)) (setq default-frame-alist '((undecorated . 0))) (setq initial-frame-alist '((undecorated . 0))) But that does not give any effect at all. I have following to switch off/on decorations interactively: (defvar decor 0) (defun toggle-frame-decor () (interactive) (progn (modify-frame-parameters (selected-frame) `((undecorated . ,'decor))) (if (= decor 0) (setq decor 1) (setq decor 0)))) (global-set-key [f9] 'toggle-frame-decor) If I place call to (toggle-frame-decor) in .emacs than it works for non-server mode, but not when I run emacsclient (which I do normally always). I tried to force loading .emacs when severs starts with -l ~/.emacs switch, but it didn't worked either. I admit I am just very uneducated about emacs & elisp and would really appreciate if a nice soul could help with my poor education. 2017-01-11 10:17 GMT+01:00 Arthur Miller : > I took screenshot of just one version, it was problem with both on/off, at > least on my machine. > > Just posting wm_size message after the change in your function solves > issues in both cases for me. > > 2017-01-11 9:39 GMT+01:00 martin rudalics : > >> > There is a slightly cosmetic issue with above function. When one >> switches >> > back on decorations, >> > the frame will not resize properly and minibuffer will be not visible. >> It's >> > there but just >> > covered by frame. Just resizing emacs framefixes it. >> > >> > Adding call to PostMessage(hwnd, WM_SIZE,0,0) in Martins function fixes >> it. >> >> This is not necessary here. And it would be strange since the idea is >> that the outer frame size remains unchanged. Hence, any problem would >> manifest itself already when you remove the borders by leaving parts of >> the display area reserved for the frame not redrawn. >> >> The image you posted in the message you sent just now seems to confirm >> that. >> >> But I'm testing this on Windows XP and have not yet pulled the recent >> multi-thread Emacs changes. >> >> martin >> > > --94eb2c13146c2e7ff10545cef30a Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I have a small question: how do I make= this take effect in my init file when I run in server/client mode?
Seems like my client always insist on creating frames around emacs w= indow, while when I run
emacs "standalone" (for ex emacs= --debug-init) it starts undecorated. I have tried following in my
.emacs:

(add-to-list 'default-frame-alist '(undecorated . 0= ))
(setq default-frame-alist '((undecorated . 0)))
(setq initial-= frame-alist '((undecorated . 0)))

But that does not g= ive any effect at all.

I have following to switch o= ff/on decorations interactively:

(defvar decor 0)
(defun tog= gle-frame-decor ()
=C2=A0 (interactive)
=C2=A0 (progn
=C2=A0=C2=A0= (modify-frame-parameters (selected-frame) `((undecorated . ,'decor)))<= br>=C2=A0=C2=A0 (if (=3D decor 0)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (= setq decor 1)
=C2=A0=C2=A0=C2=A0=C2=A0 (setq decor 0))))
(global-set-= key [f9] 'toggle-frame-decor)

If I place call to
=
(toggle-frame-decor)

in .emacs than it works f= or non-server mode, but not when I run emacsclient
(which I d= o normally always). I tried to force loading .emacs when severs starts
<= /div>
with -l ~/.emacs switch, but it didn't worked either.

=
I admit I am just very uneducated about emacs & elisp and wo= uld really appreciate if a nice
soul could help with my poor = education.

2017-01-11 10:17 GMT+01:00 Arthur Miller <arthur.miller= .no1@gmail.com>:
I took screenshot of just one version, it was problem with bo= th on/off, at least on my machine.

Just posting wm_size messag= e after the change in your function solves issues in both cases for me.
=
2017-01-11 9:39 GMT+01:00 martin rudalics <ruda= lics@gmx.at>:
> Th= ere is a slightly cosmetic issue with above function. When one switches
> back on decorations,
> the frame will not resize properly and minibuffer will be not visible.= It's
> there but just
> covered by frame. Just resizing emacs framefixes it.
>
> Adding call to PostMessage(hwnd, WM_SIZE,0,0) in Martins function fixe= s it.

This is not necessary here.=C2=A0 And it would be strange since the idea is=
that the outer frame size remains unchanged.=C2=A0 Hence, any problem would=
manifest itself already when you remove the borders by leaving parts of
the display area reserved for the frame not redrawn.

The image you posted in the message you sent just now seems to confirm
that.

But I'm testing this on Windows XP and have not yet pulled the recent multi-thread Emacs changes.

martin


--94eb2c13146c2e7ff10545cef30a-- From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 11 08:50:27 2017 Received: (at 25408) by debbugs.gnu.org; 11 Jan 2017 13:50:27 +0000 Received: from localhost ([127.0.0.1]:49480 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRJIJ-0000bS-BH for submit@debbugs.gnu.org; Wed, 11 Jan 2017 08:50:27 -0500 Received: from mail-lf0-f65.google.com ([209.85.215.65]:35085) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRJIH-0000bF-GL for 25408@debbugs.gnu.org; Wed, 11 Jan 2017 08:50:25 -0500 Received: by mail-lf0-f65.google.com with SMTP id v186so11481353lfa.2 for <25408@debbugs.gnu.org>; Wed, 11 Jan 2017 05:50:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:subject:message-id:importance:from:to:cc:mime-version; bh=eYDpBLzRBOdB9Na5u7kGjA1Ry4FUhdkhyIVGPUFbXPI=; b=Vr5l9bboMWefNfdjharjb8U5rfs0NcNNUWF/OBFVf6tEWTm1OE1kfFV7d7A95/unn4 seqViNqNx9ziC8LpAOGuOUFHZo6saTJkn78spsnMuA5gwCleKKZVBGfIo2WQfVZ0wQhy 6OcEi4DlXIJiwhskgChuBZbVApIEj9VFx17TWEdA5wIqirFzItbCikx/oEvy9T6rFU24 MAEIgEnA62BZHpcyKl9ndGVcEY+Y8E9eOENz05z43Nf9+zenuRWpq8lbdLvobQwd02Qj 6MrjIj96W1AP+EYn5EgIUk5jy6CuAgEjFwkpfbI5Q1Ww3FF0HOHYJjOSeoo4V4ZEKjBM 08Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:subject:message-id:importance:from:to:cc :mime-version; bh=eYDpBLzRBOdB9Na5u7kGjA1Ry4FUhdkhyIVGPUFbXPI=; b=rxivFDSmHS4tpva2b18UTcI6ZL9SLbvqJJ6tvT83xd2rDNg71GXkW99WUXpH55/f1m /WE/ez175L3bx5ty2KQtqRUiYem3T7DWNl7ZuzWAyY2NIytKNlgmIdd7RQg0fG1pGwqn +0OXJzaMfiklzu4tCtESRUEdewJb68FzUcJkSEXW5d2RagbvzcqsrHPXQ01KWXu2uyTX 7mviPeP8R0BohdLBf6JiUFKCaYiiZjpo3RLXvJDmEIflnDkus6+Xiivo3itpdMlaMlyQ 7qRIDfhoPRw/GmTm3KIVL49bYLZ76Hs0yF1fT0rSKGpXSq6sbpkZp1B5NF2VQuTJ2/Kf AVaw== X-Gm-Message-State: AIkVDXLlaeCEA+QyB/iODumawbIZVkZ6BC6oAVrqlN0k7ffaFckg7aJkofePpbY1z5ayng== X-Received: by 10.25.139.131 with SMTP id n125mr3399244lfd.20.1484142619438; Wed, 11 Jan 2017 05:50:19 -0800 (PST) Received: from [100.84.47.149] (host-95-195-207-149.mobileonline.telia.com. [95.195.207.149]) by smtp.gmail.com with ESMTPSA id f25sm1371201lji.26.2017.01.11.05.50.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Jan 2017 05:50:18 -0800 (PST) Date: Wed, 11 Jan 2017 14:50:15 +0100 Subject: SV: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) Message-ID: Importance: normal From: "arthur.miller.no1" To: martin rudalics , =?ISO-8859-1?Q?Cl=E9ment_Pit--Claudel?= MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="--_com.android.email_135930965330340" X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: 25408 Cc: Eli Zaretskii , 25408@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: 0.7 (/) ----_com.android.email_135930965330340 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CiAgICAKQnkgZnRoZSB3YXksIGlmIHlvdSB3YW50IG1lIEkgY2FuIHNlbmQgcGF0Y2ggd2l0aCBt eSBjaGFuZ2VzLCBidXQgSSBndWVzcyBNYXJ0aW4gd2lsbCBwcm92aWRlIGJldHRlciB3b3JraW5n IGNvZGUgdGhhbiBJLCBhbmQgSSBoYXZlIHNsaWdodGx5IGRpZmZlcmVudCBvcGluaW9uIGFib3V0 IGJvcmRlcnMgKEkgZG9uJ3QgY2FyZSBhYml1dCB0aGVtIGF0IGFsbCkuwqAKCgpTa2lja2F0IGZy w6VuIG1pbiBTYW1zdW5nLWVuaGV0CgotLS0tLS0tLSBPcmlnaW5hbG1lZGRlbGFuZGUgLS0tLS0t LS0KRnLDpW46IG1hcnRpbiBydWRhbGljcyA8cnVkYWxpY3NAZ214LmF0PiAKRGF0dW06IDIwMTct MDEtMTEgIDA5OjM5ICAoR01UKzAxOjAwKSAKVGlsbDogQXJ0aHVyIE1pbGxlciA8YXJ0aHVyLm1p bGxlci5ubzFAZ21haWwuY29tPiwgQ2zDqW1lbnQgUGl0LS1DbGF1ZGVsIDxjbGVtZW50LnBpdEBn bWFpbC5jb20+IApLb3BpYTogRWxpIFphcmV0c2tpaSA8ZWxpekBnbnUub3JnPiwgMjU0MDhAZGVi YnVncy5nbnUub3JnIApSdWJyaWs6IFJlOiBidWcjMjU0MDg6IFJlbW92ZSBEZWNvcmF0aW9ucyBB cm91bmQgRW1hY3MgRnJhbWUgKFdpbmRvd3MgT1MpIAoKID4gVGhlcmUgaXMgYSBzbGlnaHRseSBj b3NtZXRpYyBpc3N1ZSB3aXRoIGFib3ZlIGZ1bmN0aW9uLiBXaGVuIG9uZSBzd2l0Y2hlcwogPiBi YWNrIG9uIGRlY29yYXRpb25zLAogPiB0aGUgZnJhbWUgd2lsbCBub3QgcmVzaXplIHByb3Blcmx5 IGFuZCBtaW5pYnVmZmVyIHdpbGwgYmUgbm90IHZpc2libGUuIEl0J3MKID4gdGhlcmUgYnV0IGp1 c3QKID4gY292ZXJlZCBieSBmcmFtZS4gSnVzdCByZXNpemluZyBlbWFjcyBmcmFtZWZpeGVzIGl0 LgogPgogPiBBZGRpbmcgY2FsbCB0byBQb3N0TWVzc2FnZShod25kLCBXTV9TSVpFLDAsMCkgaW4g TWFydGlucyBmdW5jdGlvbiBmaXhlcyBpdC4KClRoaXMgaXMgbm90IG5lY2Vzc2FyeSBoZXJlLsKg IEFuZCBpdCB3b3VsZCBiZSBzdHJhbmdlIHNpbmNlIHRoZSBpZGVhIGlzCnRoYXQgdGhlIG91dGVy IGZyYW1lIHNpemUgcmVtYWlucyB1bmNoYW5nZWQuwqAgSGVuY2UsIGFueSBwcm9ibGVtIHdvdWxk Cm1hbmlmZXN0IGl0c2VsZiBhbHJlYWR5IHdoZW4geW91IHJlbW92ZSB0aGUgYm9yZGVycyBieSBs ZWF2aW5nIHBhcnRzIG9mCnRoZSBkaXNwbGF5IGFyZWEgcmVzZXJ2ZWQgZm9yIHRoZSBmcmFtZSBu b3QgcmVkcmF3bi4KClRoZSBpbWFnZSB5b3UgcG9zdGVkIGluIHRoZSBtZXNzYWdlIHlvdSBzZW50 IGp1c3Qgbm93IHNlZW1zIHRvIGNvbmZpcm0KdGhhdC4KCkJ1dCBJJ20gdGVzdGluZyB0aGlzIG9u IFdpbmRvd3MgWFAgYW5kIGhhdmUgbm90IHlldCBwdWxsZWQgdGhlIHJlY2VudAptdWx0aS10aHJl YWQgRW1hY3MgY2hhbmdlcy4KCm1hcnRpbgo= ----_com.android.email_135930965330340 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0 L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPjwvaGVhZD48Ym9keT4KICAgIAo8ZGl2PkJ5IGZ0aGUgd2F5 LCBpZiB5b3Ugd2FudCBtZSBJIGNhbiBzZW5kIHBhdGNoIHdpdGggbXkgY2hhbmdlcywgYnV0IEkg Z3Vlc3MgTWFydGluIHdpbGwgcHJvdmlkZSBiZXR0ZXIgd29ya2luZyBjb2RlIHRoYW4gSSwgYW5k IEkgaGF2ZSBzbGlnaHRseSBkaWZmZXJlbnQgb3BpbmlvbiBhYm91dCBib3JkZXJzIChJIGRvbid0 IGNhcmUgYWJpdXQgdGhlbSBhdCBhbGwpLiZuYnNwOzwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+ PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXYgaWQ9ImNvbXBvc2VyX3NpZ25hdHVyZSI+PGRp diBzdHlsZT0iZm9udC1zaXplOjg4JTtjb2xvcjojMzY0ZjY3IiBkaXI9ImF1dG8iPlNraWNrYXQg ZnLDpW4gbWluIFNhbXN1bmctZW5oZXQ8L2Rpdj48L2Rpdj48YnI+PGJyPi0tLS0tLS0tIE9yaWdp bmFsbWVkZGVsYW5kZSAtLS0tLS0tLTxicj5GcsOlbjogbWFydGluIHJ1ZGFsaWNzICZsdDtydWRh bGljc0BnbXguYXQmZ3Q7IDxicj5EYXR1bTogMjAxNy0wMS0xMSAgMDk6MzkgIChHTVQrMDE6MDAp IDxicj5UaWxsOiBBcnRodXIgTWlsbGVyICZsdDthcnRodXIubWlsbGVyLm5vMUBnbWFpbC5jb20m Z3Q7LCBDbMOpbWVudCBQaXQtLUNsYXVkZWwgJmx0O2NsZW1lbnQucGl0QGdtYWlsLmNvbSZndDsg PGJyPktvcGlhOiBFbGkgWmFyZXRza2lpICZsdDtlbGl6QGdudS5vcmcmZ3Q7LCAyNTQwOEBkZWJi dWdzLmdudS5vcmcgPGJyPlJ1YnJpazogUmU6IGJ1ZyMyNTQwODogUmVtb3ZlIERlY29yYXRpb25z IEFyb3VuZCBFbWFjcyBGcmFtZSAoV2luZG93cyBPUykgPGJyPjxicj4gJmd0OyBUaGVyZSBpcyBh IHNsaWdodGx5IGNvc21ldGljIGlzc3VlIHdpdGggYWJvdmUgZnVuY3Rpb24uIFdoZW4gb25lIHN3 aXRjaGVzPGJyPiAmZ3Q7IGJhY2sgb24gZGVjb3JhdGlvbnMsPGJyPiAmZ3Q7IHRoZSBmcmFtZSB3 aWxsIG5vdCByZXNpemUgcHJvcGVybHkgYW5kIG1pbmlidWZmZXIgd2lsbCBiZSBub3QgdmlzaWJs ZS4gSXQnczxicj4gJmd0OyB0aGVyZSBidXQganVzdDxicj4gJmd0OyBjb3ZlcmVkIGJ5IGZyYW1l LiBKdXN0IHJlc2l6aW5nIGVtYWNzIGZyYW1lZml4ZXMgaXQuPGJyPiAmZ3Q7PGJyPiAmZ3Q7IEFk ZGluZyBjYWxsIHRvIFBvc3RNZXNzYWdlKGh3bmQsIFdNX1NJWkUsMCwwKSBpbiBNYXJ0aW5zIGZ1 bmN0aW9uIGZpeGVzIGl0Ljxicj48YnI+VGhpcyBpcyBub3QgbmVjZXNzYXJ5IGhlcmUuJm5ic3A7 IEFuZCBpdCB3b3VsZCBiZSBzdHJhbmdlIHNpbmNlIHRoZSBpZGVhIGlzPGJyPnRoYXQgdGhlIG91 dGVyIGZyYW1lIHNpemUgcmVtYWlucyB1bmNoYW5nZWQuJm5ic3A7IEhlbmNlLCBhbnkgcHJvYmxl bSB3b3VsZDxicj5tYW5pZmVzdCBpdHNlbGYgYWxyZWFkeSB3aGVuIHlvdSByZW1vdmUgdGhlIGJv cmRlcnMgYnkgbGVhdmluZyBwYXJ0cyBvZjxicj50aGUgZGlzcGxheSBhcmVhIHJlc2VydmVkIGZv ciB0aGUgZnJhbWUgbm90IHJlZHJhd24uPGJyPjxicj5UaGUgaW1hZ2UgeW91IHBvc3RlZCBpbiB0 aGUgbWVzc2FnZSB5b3Ugc2VudCBqdXN0IG5vdyBzZWVtcyB0byBjb25maXJtPGJyPnRoYXQuPGJy Pjxicj5CdXQgSSdtIHRlc3RpbmcgdGhpcyBvbiBXaW5kb3dzIFhQIGFuZCBoYXZlIG5vdCB5ZXQg cHVsbGVkIHRoZSByZWNlbnQ8YnI+bXVsdGktdGhyZWFkIEVtYWNzIGNoYW5nZXMuPGJyPjxicj5t YXJ0aW48YnI+PC9ib2R5PjwvaHRtbD4= ----_com.android.email_135930965330340-- From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 11 08:55:50 2017 Received: (at 25408) by debbugs.gnu.org; 11 Jan 2017 13:55:50 +0000 Received: from localhost ([127.0.0.1]:49484 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRJNW-0000kn-0F for submit@debbugs.gnu.org; Wed, 11 Jan 2017 08:55:50 -0500 Received: from mout.gmx.net ([212.227.17.20]:52354) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRJNT-0000kM-2R for 25408@debbugs.gnu.org; Wed, 11 Jan 2017 08:55:47 -0500 Received: from [192.168.1.100] ([212.95.7.20]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0Mb8HX-1cBhMe2ea3-00Kj2m; Wed, 11 Jan 2017 14:55:39 +0100 Message-ID: <5876394F.8060507@gmx.at> Date: Wed, 11 Jan 2017 14:55:27 +0100 From: martin rudalics MIME-Version: 1.0 To: Arthur Miller Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:/2Z4ldkIkXOmifjps7x3Exoq7gQijHStaZfZ11FC+JNLLMXHXNV 8W2AurFEom2sXh7NqGj/kqbWxJRmHkpFdZaqeT4EcBbjId31xggzKAshHK1+vDrZOIz6ie1 LZoAs0zYz5nBl0mxy+tNvRAPnfCxnpvZUVWK6a+oaB0f0gGO9nbwIugDHtxPg4pynRCg6aP zMbXWQ4d6qj/aUDWecOBA== X-UI-Out-Filterresults: notjunk:1;V01:K0:se6BsxXz7IQ=:yaATaNrfmPvmPj3nb6NmtB 20LurSuiDXqUquCrzrnIgrWDDnLQl2NJppA9oOCm3o9quSArlbs9Gx6IIXtlzLiS/3jgKmdaV t4Y7NbnisVHjNJvgt41XackfLZXQ5NChy7KuB/4St1wgq1bQO9EgLkFrpJCyddFnRgSNu1OIA bBXIl8ttFQlupda1NngmEMrX5QQcNRywO3hYh+rd+9/2O+fGUEsHnd0BH0MCnKkWG2sKCUWQW iuyED+t9AATdQZqrtZ0GFDA5ZMnLw8lkv2TEqIdOVHeKcjlaiTNE7/3uw6h5aCrHON+Z2y4yV j38ZRLyPgGPbkVCNS20jaHAq7b46o3hR/U/wuB2YT5t72cAOaWjPpDC6tUYN8NmM/hqlLgBau 2HXUN+GWt2HEHAZCsEMCfSx8sSQiBQo/HcGTA3QVYOojnfoC6gRgLkuxz0bYr7wJG06FmmUDz ib/WtFqkgxNJZ7qFHyUdJr3/AU/c3KhBvtpYGnKsnBk1LWSw0g08Ln+lgfVva6OxfRIV+OIUs uznrc3DjBNHpkwcdRoeJU6fvqGxdqoCSWC3BftfAfvrmkpCHCtsg9auD3a1EU5e+Q4Ob/EbvD rFzkATIeOC+/yZIRhQc5UU0C9oKfjBwm+0P+Wf9AwwSOearSC0UdwxUHh6DdRTnY7Rt0uxcsk h3NUHdv2l45vqgbq2lhSjSnBDRJhJqFr+SzdFi65y29oMgTSZTBg/vVww+g6cZwdu5HQ8JsqJ casNGAP1Cg/BZUJGApFftibmdosZDPaS5JzaOksukvbLH8OZVcNhsffU2Mdc4YoQy72CzhR2Z K8cq13A X-Spam-Score: 2.2 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > (add-to-list 'default-frame-alist '(undecorated . 0)) > (setq default-frame-alist '((undecorated . 0))) > (setq initial-frame-alist '((undecorated . 0))) > > But that does not give any effect at all. [...] Content analysis details: (2.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) 3.6 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [212.95.7.20 listed in dnsbl.sorbs.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.17.20 listed in list.dnswl.org] 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.17.20 listed in dnsbl.sorbs.net] -1.2 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.20 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record X-Debbugs-Envelope-To: 25408 Cc: 25408@debbugs.gnu.org, Eli Zaretskii , =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.2 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > (add-to-list 'default-frame-alist '(undecorated . 0)) > (setq default-frame-alist '((undecorated . 0))) > (setq initial-frame-alist '((undecorated . 0))) > > But that does not give any effect at all. [...] Content analysis details: (2.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.17.20 listed in dnsbl.sorbs.net] 3.6 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [212.95.7.20 listed in dnsbl.sorbs.net] -1.2 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.20 listed in wl.mailspike.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.17.20 listed in list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) -0.0 SPF_PASS SPF: sender matches SPF record > (add-to-list 'default-frame-alist '(undecorated . 0)) > (setq default-frame-alist '((undecorated . 0))) > (setq initial-frame-alist '((undecorated . 0))) > > But that does not give any effect at all. "0" is a quite misleading value ;-) See below. But I think I understand what happens. In fact, I haven't told you the whole story: In Fx_create_frame I do additionally tem =3D x_get_arg (dpyinfo, parameters, Qundecorated, NULL, NULL, RES_TYPE_BOOLEAN); FRAME_UNDECORATED (f) =3D !NILP (tem) && !EQ (tem, Qunbound); store_frame_param (f, Qundecorated, FRAME_UNDECORATED (f) ? Qt : Qnil)= ; somewhere _before_ w32_window (f, window_prompting, minibuffer_only) gets called. And in w32_createwindow I have else if (FRAME_UNDECORATED (f)) { f->output_data.w32->dwStyle =3D ~WS_THICKFRAME & ~WS_CAPTION; /* If we want a thin border, specify it here. */ if (NUMBERP (border_width) && (XINT (border_width) > 0)) f->output_data.w32->dwStyle =3D f->output_data.w32->dwStyle | WS_BORDER; } before any other f->output_data.w32->dwStyle assignment and certainly before the FRAME_W32_WINDOW (f) =3D hwnd =3D CreateWindow (EMACS_CLASS, f->namebuf, f->output_data.w32->dwStyle, ... call. Just make sure that any time you set f->output_data.w32->dwStyle you don't overrule a previous assignment. (I haven't sent you a patch because I have completely redesigned the assignments to this component and it probably would distract more than provide any help.) This way (add-to-list 'default-frame-alist '(undecorated . t)) (setq default-frame-alist '((undecorated . t))) (setq initial-frame-alist '((undecorated . t))) should all work. BTW, you can also do f->output_data.w32->dwStyle =3D WS_POPUP; because the only thing Windows forbids in this context is to set WS_POPUP for an existing overlapped window (IIRC). > (defvar decor 0) > (defun toggle-frame-decor () > (interactive) > (progn > (modify-frame-parameters (selected-frame) `((undecorated . ,'decor= ))) You likely mean (modify-frame-parameters (selected-frame) `((undecorated . ,decor))= ) here. And probably you want to do the following calculation > (if (=3D decor 0) > (setq decor 1) > (setq decor 0)))) before calling =E2=80=98modify-frame-parameters=E2=80=99 so the latter wi= ll see the new value. But even this won't work because you want to toggle beween nil and non-nil so (devfar decor nil) and (setq decor (not decor)) are more appropriate. martin From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 11 08:57:52 2017 Received: (at 25408) by debbugs.gnu.org; 11 Jan 2017 13:57:52 +0000 Received: from localhost ([127.0.0.1]:49488 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRJPU-0000ob-CA for submit@debbugs.gnu.org; Wed, 11 Jan 2017 08:57:52 -0500 Received: from mout.gmx.net ([212.227.17.22]:62721) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRJPS-0000oL-7k for 25408@debbugs.gnu.org; Wed, 11 Jan 2017 08:57:50 -0500 Received: from [192.168.1.100] ([212.95.7.20]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0M2XkX-1ciIKG0CyD-00sOVn; Wed, 11 Jan 2017 14:57:41 +0100 Message-ID: <587639CA.10006@gmx.at> Date: Wed, 11 Jan 2017 14:57:30 +0100 From: martin rudalics MIME-Version: 1.0 To: "arthur.miller.no1" , =?UTF-8?B?Q2zDqW1l?= =?UTF-8?B?bnQgUGl0LS1DbGF1ZGVs?= Subject: Re: SV: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:lgeLaQHVInZfG2KwKU5BE3TYQ2JNtl+MFMo3/yLsA9nlqnLJhhM BcIneKwzAV06HySwa8FoQNRLEwcHcpJVCFe9MYUsT+f/vsrUWbDV4ffduDb7OZ9fAlonhX6 io5BU8FukgaVu2oPbJD+lJ9s4vecexzPTk/eG6NBpBBXPjH5esYxiZRbWBUQehVxDeI0G6F Z7UJrR7EsPNCi9xziHyvQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:JyO3nwwZlYE=:v8GZpyfxwCC8kfyXdu195G kUmG8cE5PaOZ3x90kIpE5zY1Kw9qp/QDGuxqzc9hI8BXS+GQt82zEf+UPJj9vJZHG4pljYZIJ ZJHZvMwRHGtX5FdTXCPBwOPy5FiWbirq9dBiRGjRZCfxzNLT0EMKC1UjJ0zjrVnLeyQ/ei+b/ XQk9AOViyXogtU4kXnXIejKiVynYvMezRfmTIrOHAVc+Ze8tCYBZ06pe3h8v/uwWhK0c1rjk6 scER7cGOc1L/FzMpTcdZI7hLtXxOJl/j1OBPmf/ZgDyJEEq4d3VEO+cNzuOBVnFFD2mkXhI5q Rs1cQ8hHQ+ob9Bc3RzopIWjj/HN+8mJiJ4gwc4kJ2MBmn3wI9gY73+uNJN5uEYwkcUIvHqCNO uC6ihSUeA3xIsdBxU0sXs4KPuNg76UmhLEk/gdjaFI8ed8Os0enxPaab3ET2aFWI60pUBhk5l +kSei9+55OKofoElNkVKweY7VeyrUWMCvRQVYeR50o8BZ17LGjWtbdaMBbSf2EmSOeh+GWyF3 yY3Zs9DRW4Z6a+5EStrMTAVia6KMuUtKAX+3MAb/1Qa38RDI3+hiswPanjeIPs8Nb3sAJ5Azm bS8utusuuJmVTMMtGo4hXoOwcH38APdcVt7qJkiTPXYASgpvrQFnOvwScLOGPVv4ObUR5HqLp a3kC4k8WZ4NBgAZyKmRYJ0rydcv0bCowu/2RmLdvjxcHHGOFgReWZ1dPdsupsTmzOic7z/qmR shkVE8uLJUnaBEzXjBWJyblM+uoP8WNQYTdIQc3/XKt3ryPNgnar/wZtr9wghO5+vla2KHaEC O5apPjIq2mc13yvG6Jn4lmcgb0YJ3zjw2xdEim1noXpCWIamPn7kVONSfCBH7qChjSI1fZwwi 4ZxBclpfEIPjEL0Oac/oVaSr/n4nVKc4b+/+1vF8H621jgP3FQoRcgkYotx4o1YTSYe4zb3ik xJ2Wo/Qww/i2iUI0T7hdnh2Gh4SEhF2/qe2BIyiOkkhP3Xb6VquVchLLItDdQa2zemlEQD1w4 tWfBWrWnXAsu/Yx5pyFuzKc4zgiIRS4LNBEpoTvp0VHPtwsklzMk4wFse4yke4NBxw== X-Spam-Score: 2.2 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > By fthe way, if you want me I can send patch with my changes, but I > guess Martin will provide better working code than I, and I have > slightly different opinion about borders (I don't care abiut them at > all). [...] Content analysis details: (2.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.17.22 listed in dnsbl.sorbs.net] 3.6 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [212.95.7.20 listed in dnsbl.sorbs.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.17.22 listed in list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) -0.0 SPF_PASS SPF: sender matches SPF record -1.2 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.22 listed in wl.mailspike.net] X-Debbugs-Envelope-To: 25408 Cc: Eli Zaretskii , 25408@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: 2.2 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > By fthe way, if you want me I can send patch with my changes, but I > guess Martin will provide better working code than I, and I have > slightly different opinion about borders (I don't care abiut them at > all). [...] Content analysis details: (2.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.17.22 listed in dnsbl.sorbs.net] 3.6 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [212.95.7.20 listed in dnsbl.sorbs.net] -1.2 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.22 listed in wl.mailspike.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.17.22 listed in list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) -0.0 SPF_PASS SPF: sender matches SPF record > By fthe way, if you want me I can send patch with my changes, but I > guess Martin will provide better working code than I, and I have > slightly different opinion about borders (I don't care abiut them at > all). To not get a border, set the frame parameter `border-width' to zero. martin From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 11 10:00:14 2017 Received: (at 25408) by debbugs.gnu.org; 11 Jan 2017 15:00:14 +0000 Received: from localhost ([127.0.0.1]:50026 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRKNq-0002px-A3 for submit@debbugs.gnu.org; Wed, 11 Jan 2017 10:00:14 -0500 Received: from mail-lf0-f67.google.com ([209.85.215.67]:33088) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRKNl-0002oq-MU for 25408@debbugs.gnu.org; Wed, 11 Jan 2017 10:00:13 -0500 Received: by mail-lf0-f67.google.com with SMTP id k62so15059431lfg.0 for <25408@debbugs.gnu.org>; Wed, 11 Jan 2017 07:00:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:subject:message-id:importance:from:to:cc:mime-version; bh=bVheXYET0r3dZdjmzz7biKBS+PQAESi4t3cpWpvCkM4=; b=Dld1ZbtokFNcN+TtepeUsQNIHzV0K1u9LK4OPzVB2qwxzAXt8gYwyfUY6LhpRJtrux l6zbnYRQfyf/7kFE6NghhlZnLIwpMj/0Q9r8PJPCMReYEqhwSKm4iOFu3lzJMh6ipLm1 g+pgNT+M/4nmFmpxEqv3mxT+Lw+szFv6/+ii7E7bJ7ZNAyQnBvsiMTh5Lva493PlPGau 7/cwb4plodVq8NPqiZUd+9Xfq6KnGA66OtTCZ94bUctzitD3juCqWoK5ZscVH3HUc8R0 VVOpoys+6f450PtjmAJIm36WAAbPaHt1ULSB/X+GuuLcBIG+u79lTiTyUF1OnShBwolG Wsbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:subject:message-id:importance:from:to:cc :mime-version; bh=bVheXYET0r3dZdjmzz7biKBS+PQAESi4t3cpWpvCkM4=; b=Nl2/hUTGuAnffUTMF1prJT59DGbkwq+lp3RYmnQDW0PDmYihMIphNGFSJka/Ycxfwf TBXmcQTkfVXFRMqK+SpIOJ8EsT+jwQY716UtGvOZ96lVZuTGx5g9M0yPrbDMUgZi0txc rtAXEM/m4VX9Zya0a7Ug78Y1biEZMDeiqmR4nsFxEEhYbTjXs+FtHIVX6pxJ8GxB/ypC cG+JQ4irokAGd0bQ/aMHm4d12EzGWNKX2hBYey5h22WZzTcucbZW84VTp5HFXOCljPHP 41XpZJ/Bnr/j9QPhJu+z9xVplWfOLlvjSqIpbYrJOX7PhlYTz88B4CD8mtS9py2f+enW zqjg== X-Gm-Message-State: AIkVDXL0TeQ10RMxCxuFOgJbc+7yaolfxUvJja+Qp1OBky7MZW+UVc8OG1Nf/uBqEmu4Pw== X-Received: by 10.25.234.15 with SMTP id i15mr3427804lfh.25.1484146803470; Wed, 11 Jan 2017 07:00:03 -0800 (PST) Received: from [100.84.47.149] (host-95-195-207-149.mobileonline.telia.com. [95.195.207.149]) by smtp.gmail.com with ESMTPSA id 26sm1427612ljo.24.2017.01.11.07.00.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Jan 2017 07:00:02 -0800 (PST) Date: Wed, 11 Jan 2017 15:59:59 +0100 Subject: SV: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) Message-ID: Importance: normal From: "arthur.miller.no1" To: martin rudalics MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="--_com.android.email_145445069537610" X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: 25408 Cc: 25408@debbugs.gnu.org, Eli Zaretskii , =?ISO-8859-1?Q?Cl=E9ment_Pit--Claudel?= 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: 0.7 (/) ----_com.android.email_145445069537610 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CiAgICAKQWhhIHRoYW5rcyBmb3IgY2xhcmlmaWNhdGlvbnMuIEkgZGlkbid0IGRpdmUgZW5vdWdo IGludG8gc3JjIHNvIEkgbWlzc2VkIHRob3NlIG90aGVyIGZ1bmNyaW9ucyBjYWxsZWQgYmVmb3Jl IGEgZnJhbWUgaXMgbWFkZS4KSSBoYWQgZnJvbSBiZWdpbm5pZyBuaWwgYW5kIHQgYXMgdmFsdWVz IGZvciBteSBkZWNvciB2YXIsIGJ1dCBJIHJlYWxpemVkIEkgY291bGQgdXNlIDEgYW5kIDAgdG9v IHNvIEkgZGlkIDopLiBJdCB3b3JrcyBmaW5lIHRvIHN3aXRjaCBpdCBvZmYvb24gbWFudWFsbHku CkkgYW0gYXdheSBmcm9tIGhvbWUgdW50aWxsIGZyaWRheSBzbyBpdCB3aWxsIGhhdmUgdG8gd2Fp dCBiZWZvcmUgSSBjYW4gcGxheSBtb3JlIHdpdGggZW1hY3MuIEFsc28gaWYgeW91IGdvaW5nIHRv IG1lcmdlIHlvdXIgY29kZSBpbnRvIG1hc3RlciBvbiBnaXQgc29vbiwgdGhlbiBJIHdpbGwgcHJv YmFibHkgYWJhbmRvbiBteSBjaGFuZ2VzIGFuZCB1c2UgeW91cnMgOikuClNraWNrYXQgZnLDpW4g bWluIFNhbXN1bmctZW5oZXQKCi0tLS0tLS0tIE9yaWdpbmFsbWVkZGVsYW5kZSAtLS0tLS0tLQpG csOlbjogbWFydGluIHJ1ZGFsaWNzIDxydWRhbGljc0BnbXguYXQ+IApEYXR1bTogMjAxNy0wMS0x MSAgMTQ6NTUgIChHTVQrMDE6MDApIApUaWxsOiBBcnRodXIgTWlsbGVyIDxhcnRodXIubWlsbGVy Lm5vMUBnbWFpbC5jb20+IApLb3BpYTogQ2zDqW1lbnQgUGl0LS1DbGF1ZGVsIDxjbGVtZW50LnBp dEBnbWFpbC5jb20+LCBFbGkgWmFyZXRza2lpIDxlbGl6QGdudS5vcmc+LCAyNTQwOEBkZWJidWdz LmdudS5vcmcgClJ1YnJpazogUmU6IGJ1ZyMyNTQwODogUmVtb3ZlIERlY29yYXRpb25zIEFyb3Vu ZCBFbWFjcyBGcmFtZSAoV2luZG93cyBPUykgCgogPiAoYWRkLXRvLWxpc3QgJ2RlZmF1bHQtZnJh bWUtYWxpc3QgJyh1bmRlY29yYXRlZCAuIDApKQogPiAoc2V0cSBkZWZhdWx0LWZyYW1lLWFsaXN0 ICcoKHVuZGVjb3JhdGVkIC4gMCkpKQogPiAoc2V0cSBpbml0aWFsLWZyYW1lLWFsaXN0ICcoKHVu ZGVjb3JhdGVkIC4gMCkpKQogPgogPiBCdXQgdGhhdCBkb2VzIG5vdCBnaXZlIGFueSBlZmZlY3Qg YXQgYWxsLgoKIjAiIGlzIGEgcXVpdGUgbWlzbGVhZGluZyB2YWx1ZSA7LSkgU2VlIGJlbG93LgoK QnV0IEkgdGhpbmsgSSB1bmRlcnN0YW5kIHdoYXQgaGFwcGVucy7CoCBJbiBmYWN0LCBJIGhhdmVu J3QgdG9sZCB5b3UgdGhlCndob2xlIHN0b3J5OiBJbiBGeF9jcmVhdGVfZnJhbWUgSSBkbyBhZGRp dGlvbmFsbHkKCsKgwqAgdGVtID0geF9nZXRfYXJnIChkcHlpbmZvLCBwYXJhbWV0ZXJzLCBRdW5k ZWNvcmF0ZWQsIE5VTEwsIE5VTEwsCgkJwqDCoMKgwqDCoMKgIFJFU19UWVBFX0JPT0xFQU4pOwrC oMKgIEZSQU1FX1VOREVDT1JBVEVEIChmKSA9ICFOSUxQICh0ZW0pICYmICFFUSAodGVtLCBRdW5i b3VuZCk7CsKgwqAgc3RvcmVfZnJhbWVfcGFyYW0gKGYsIFF1bmRlY29yYXRlZCwgRlJBTUVfVU5E RUNPUkFURUQgKGYpID8gUXQgOiBRbmlsKTsKCnNvbWV3aGVyZSBfYmVmb3JlXyB3MzJfd2luZG93 IChmLCB3aW5kb3dfcHJvbXB0aW5nLCBtaW5pYnVmZmVyX29ubHkpCmdldHMgY2FsbGVkLsKgIEFu ZCBpbiB3MzJfY3JlYXRld2luZG93IEkgaGF2ZQoKwqDCoCBlbHNlIGlmIChGUkFNRV9VTkRFQ09S QVRFRCAoZikpCsKgwqDCoMKgIHsKwqDCoMKgwqDCoMKgIGYtPm91dHB1dF9kYXRhLnczMi0+ZHdT dHlsZSA9IH5XU19USElDS0ZSQU1FICYgfldTX0NBUFRJT047CgrCoMKgwqDCoMKgwqAgLyogSWYg d2Ugd2FudCBhIHRoaW4gYm9yZGVyLCBzcGVjaWZ5IGl0IGhlcmUuwqAgKi8KwqDCoMKgwqDCoMKg IGlmIChOVU1CRVJQIChib3JkZXJfd2lkdGgpICYmIChYSU5UIChib3JkZXJfd2lkdGgpID4gMCkp CglmLT5vdXRwdXRfZGF0YS53MzItPmR3U3R5bGUgPQoJwqAgZi0+b3V0cHV0X2RhdGEudzMyLT5k d1N0eWxlIHwgV1NfQk9SREVSOwrCoMKgwqDCoCB9CgpiZWZvcmUgYW55IG90aGVyIGYtPm91dHB1 dF9kYXRhLnczMi0+ZHdTdHlsZSBhc3NpZ25tZW50IGFuZCBjZXJ0YWlubHkKYmVmb3JlIHRoZQoK wqDCoCBGUkFNRV9XMzJfV0lORE9XIChmKSA9IGh3bmQKwqDCoMKgwqAgPSBDcmVhdGVXaW5kb3cg KEVNQUNTX0NMQVNTLAoJCcKgwqDCoCBmLT5uYW1lYnVmLAoJCcKgwqDCoCBmLT5vdXRwdXRfZGF0 YS53MzItPmR3U3R5bGUsCgkJwqDCoMKgIC4uLgoKY2FsbC7CoCBKdXN0IG1ha2Ugc3VyZSB0aGF0 IGFueSB0aW1lIHlvdSBzZXQgZi0+b3V0cHV0X2RhdGEudzMyLT5kd1N0eWxlCnlvdSBkb24ndCBv dmVycnVsZSBhIHByZXZpb3VzIGFzc2lnbm1lbnQuwqAgKEkgaGF2ZW4ndCBzZW50IHlvdSBhIHBh dGNoCmJlY2F1c2UgSSBoYXZlIGNvbXBsZXRlbHkgcmVkZXNpZ25lZCB0aGUgYXNzaWdubWVudHMg dG8gdGhpcyBjb21wb25lbnQKYW5kIGl0IHByb2JhYmx5IHdvdWxkIGRpc3RyYWN0IG1vcmUgdGhh biBwcm92aWRlIGFueSBoZWxwLinCoCBUaGlzIHdheQoKKGFkZC10by1saXN0ICdkZWZhdWx0LWZy YW1lLWFsaXN0ICcodW5kZWNvcmF0ZWQgLiB0KSkKKHNldHEgZGVmYXVsdC1mcmFtZS1hbGlzdCAn KCh1bmRlY29yYXRlZCAuIHQpKSkKKHNldHEgaW5pdGlhbC1mcmFtZS1hbGlzdCAnKCh1bmRlY29y YXRlZCAuIHQpKSkKCnNob3VsZCBhbGwgd29yay4KCkJUVywgeW91IGNhbiBhbHNvIGRvCgrCoMKg wqDCoMKgwqAgZi0+b3V0cHV0X2RhdGEudzMyLT5kd1N0eWxlID0gV1NfUE9QVVA7CgpiZWNhdXNl IHRoZSBvbmx5IHRoaW5nIFdpbmRvd3MgZm9yYmlkcyBpbiB0aGlzIGNvbnRleHQgaXMgdG8gc2V0 CldTX1BPUFVQIGZvciBhbiBleGlzdGluZyBvdmVybGFwcGVkIHdpbmRvdyAoSUlSQykuCgogPiAo ZGVmdmFyIGRlY29yIDApCiA+IChkZWZ1biB0b2dnbGUtZnJhbWUtZGVjb3IgKCkKID7CoMKgwqAg KGludGVyYWN0aXZlKQogPsKgwqDCoCAocHJvZ24KID7CoMKgwqDCoCAobW9kaWZ5LWZyYW1lLXBh cmFtZXRlcnMgKHNlbGVjdGVkLWZyYW1lKSBgKCh1bmRlY29yYXRlZCAuICwnZGVjb3IpKSkKCllv dSBsaWtlbHkgbWVhbgoKwqDCoMKgwqDCoCAobW9kaWZ5LWZyYW1lLXBhcmFtZXRlcnMgKHNlbGVj dGVkLWZyYW1lKSBgKCh1bmRlY29yYXRlZCAuICxkZWNvcikpKQoKaGVyZS7CoCBBbmQgcHJvYmFi bHkgeW91IHdhbnQgdG8gZG8gdGhlIGZvbGxvd2luZyBjYWxjdWxhdGlvbgoKID7CoMKgwqDCoCAo aWYgKD0gZGVjb3IgMCkKID7CoMKgwqDCoMKgwqDCoMKgIChzZXRxIGRlY29yIDEpCiA+wqDCoMKg wqDCoMKgIChzZXRxIGRlY29yIDApKSkpCgpiZWZvcmUgY2FsbGluZyDigJhtb2RpZnktZnJhbWUt cGFyYW1ldGVyc+KAmSBzbyB0aGUgbGF0dGVyIHdpbGwgc2VlIHRoZSBuZXcKdmFsdWUuwqAgQnV0 IGV2ZW4gdGhpcyB3b24ndCB3b3JrIGJlY2F1c2UgeW91IHdhbnQgdG8gdG9nZ2xlIGJld2VlbiBu aWwKYW5kIG5vbi1uaWwgc28KCihkZXZmYXIgZGVjb3IgbmlsKQoKYW5kCgooc2V0cSBkZWNvciAo bm90IGRlY29yKSkKCmFyZSBtb3JlIGFwcHJvcHJpYXRlLgoKbWFydGluCgo= ----_com.android.email_145445069537610 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0 L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPjwvaGVhZD48Ym9keT4KICAgIAo8ZGl2PkFoYSB0aGFua3Mg Zm9yIGNsYXJpZmljYXRpb25zLiBJIGRpZG4ndCBkaXZlIGVub3VnaCBpbnRvIHNyYyBzbyBJIG1p c3NlZCB0aG9zZSBvdGhlciBmdW5jcmlvbnMgY2FsbGVkIGJlZm9yZSBhIGZyYW1lIGlzIG1hZGUu PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5JIGhhZCBmcm9tIGJlZ2lubmlnIG5pbCBhbmQgdCBh cyB2YWx1ZXMgZm9yIG15IGRlY29yIHZhciwgYnV0IEkgcmVhbGl6ZWQgSSBjb3VsZCB1c2UgMSBh bmQgMCB0b28gc28gSSBkaWQgOikuIEl0IHdvcmtzIGZpbmUgdG8gc3dpdGNoIGl0IG9mZi9vbiBt YW51YWxseS48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkkgYW0gYXdheSBmcm9tIGhvbWUgdW50 aWxsIGZyaWRheSBzbyBpdCB3aWxsIGhhdmUgdG8gd2FpdCBiZWZvcmUgSSBjYW4gcGxheSBtb3Jl IHdpdGggZW1hY3MuIEFsc28gaWYgeW91IGdvaW5nIHRvIG1lcmdlIHlvdXIgY29kZSBpbnRvIG1h c3RlciBvbiBnaXQgc29vbiwgdGhlbiBJIHdpbGwgcHJvYmFibHkgYWJhbmRvbiBteSBjaGFuZ2Vz IGFuZCB1c2UgeW91cnMgOikuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdiBpZD0iY29tcG9zZXJf c2lnbmF0dXJlIj48ZGl2IHN0eWxlPSJmb250LXNpemU6ODglO2NvbG9yOiMzNjRmNjciIGRpcj0i YXV0byI+U2tpY2thdCBmcsOlbiBtaW4gU2Ftc3VuZy1lbmhldDwvZGl2PjwvZGl2Pjxicj48YnI+ LS0tLS0tLS0gT3JpZ2luYWxtZWRkZWxhbmRlIC0tLS0tLS0tPGJyPkZyw6VuOiBtYXJ0aW4gcnVk YWxpY3MgJmx0O3J1ZGFsaWNzQGdteC5hdCZndDsgPGJyPkRhdHVtOiAyMDE3LTAxLTExICAxNDo1 NSAgKEdNVCswMTowMCkgPGJyPlRpbGw6IEFydGh1ciBNaWxsZXIgJmx0O2FydGh1ci5taWxsZXIu bm8xQGdtYWlsLmNvbSZndDsgPGJyPktvcGlhOiBDbMOpbWVudCBQaXQtLUNsYXVkZWwgJmx0O2Ns ZW1lbnQucGl0QGdtYWlsLmNvbSZndDssIEVsaSBaYXJldHNraWkgJmx0O2VsaXpAZ251Lm9yZyZn dDssIDI1NDA4QGRlYmJ1Z3MuZ251Lm9yZyA8YnI+UnVicmlrOiBSZTogYnVnIzI1NDA4OiBSZW1v dmUgRGVjb3JhdGlvbnMgQXJvdW5kIEVtYWNzIEZyYW1lIChXaW5kb3dzIE9TKSA8YnI+PGJyPiAm Z3Q7IChhZGQtdG8tbGlzdCAnZGVmYXVsdC1mcmFtZS1hbGlzdCAnKHVuZGVjb3JhdGVkIC4gMCkp PGJyPiAmZ3Q7IChzZXRxIGRlZmF1bHQtZnJhbWUtYWxpc3QgJygodW5kZWNvcmF0ZWQgLiAwKSkp PGJyPiAmZ3Q7IChzZXRxIGluaXRpYWwtZnJhbWUtYWxpc3QgJygodW5kZWNvcmF0ZWQgLiAwKSkp PGJyPiAmZ3Q7PGJyPiAmZ3Q7IEJ1dCB0aGF0IGRvZXMgbm90IGdpdmUgYW55IGVmZmVjdCBhdCBh bGwuPGJyPjxicj4iMCIgaXMgYSBxdWl0ZSBtaXNsZWFkaW5nIHZhbHVlIDstKSBTZWUgYmVsb3cu PGJyPjxicj5CdXQgSSB0aGluayBJIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zLiZuYnNwOyBJbiBm YWN0LCBJIGhhdmVuJ3QgdG9sZCB5b3UgdGhlPGJyPndob2xlIHN0b3J5OiBJbiBGeF9jcmVhdGVf ZnJhbWUgSSBkbyBhZGRpdGlvbmFsbHk8YnI+PGJyPiZuYnNwOyZuYnNwOyB0ZW0gPSB4X2dldF9h cmcgKGRweWluZm8sIHBhcmFtZXRlcnMsIFF1bmRlY29yYXRlZCwgTlVMTCwgTlVMTCw8YnI+CQkm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgUkVTX1RZUEVfQk9PTEVBTik7PGJy PiZuYnNwOyZuYnNwOyBGUkFNRV9VTkRFQ09SQVRFRCAoZikgPSAhTklMUCAodGVtKSAmYW1wOyZh bXA7ICFFUSAodGVtLCBRdW5ib3VuZCk7PGJyPiZuYnNwOyZuYnNwOyBzdG9yZV9mcmFtZV9wYXJh bSAoZiwgUXVuZGVjb3JhdGVkLCBGUkFNRV9VTkRFQ09SQVRFRCAoZikgPyBRdCA6IFFuaWwpOzxi cj48YnI+c29tZXdoZXJlIF9iZWZvcmVfIHczMl93aW5kb3cgKGYsIHdpbmRvd19wcm9tcHRpbmcs IG1pbmlidWZmZXJfb25seSk8YnI+Z2V0cyBjYWxsZWQuJm5ic3A7IEFuZCBpbiB3MzJfY3JlYXRl d2luZG93IEkgaGF2ZTxicj48YnI+Jm5ic3A7Jm5ic3A7IGVsc2UgaWYgKEZSQU1FX1VOREVDT1JB VEVEIChmKSk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHs8YnI+Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGYtJmd0O291dHB1dF9kYXRhLnczMi0mZ3Q7ZHdTdHlsZSA9 IH5XU19USElDS0ZSQU1FICZhbXA7IH5XU19DQVBUSU9OOzxicj48YnI+Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IC8qIElmIHdlIHdhbnQgYSB0aGluIGJvcmRlciwgc3BlY2lm eSBpdCBoZXJlLiZuYnNwOyAqLzxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgaWYgKE5VTUJFUlAgKGJvcmRlcl93aWR0aCkgJmFtcDsmYW1wOyAoWElOVCAoYm9yZGVyX3dp ZHRoKSAmZ3Q7IDApKTxicj4JZi0mZ3Q7b3V0cHV0X2RhdGEudzMyLSZndDtkd1N0eWxlID08YnI+ CSZuYnNwOyBmLSZndDtvdXRwdXRfZGF0YS53MzItJmd0O2R3U3R5bGUgfCBXU19CT1JERVI7PGJy PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPjxicj5iZWZvcmUgYW55IG90aGVyIGYtJmd0 O291dHB1dF9kYXRhLnczMi0mZ3Q7ZHdTdHlsZSBhc3NpZ25tZW50IGFuZCBjZXJ0YWlubHk8YnI+ YmVmb3JlIHRoZTxicj48YnI+Jm5ic3A7Jm5ic3A7IEZSQU1FX1czMl9XSU5ET1cgKGYpID0gaHdu ZDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPSBDcmVhdGVXaW5kb3cgKEVNQUNTX0NMQVNT LDxicj4JCSZuYnNwOyZuYnNwOyZuYnNwOyBmLSZndDtuYW1lYnVmLDxicj4JCSZuYnNwOyZuYnNw OyZuYnNwOyBmLSZndDtvdXRwdXRfZGF0YS53MzItJmd0O2R3U3R5bGUsPGJyPgkJJm5ic3A7Jm5i c3A7Jm5ic3A7IC4uLjxicj48YnI+Y2FsbC4mbmJzcDsgSnVzdCBtYWtlIHN1cmUgdGhhdCBhbnkg dGltZSB5b3Ugc2V0IGYtJmd0O291dHB1dF9kYXRhLnczMi0mZ3Q7ZHdTdHlsZTxicj55b3UgZG9u J3Qgb3ZlcnJ1bGUgYSBwcmV2aW91cyBhc3NpZ25tZW50LiZuYnNwOyAoSSBoYXZlbid0IHNlbnQg eW91IGEgcGF0Y2g8YnI+YmVjYXVzZSBJIGhhdmUgY29tcGxldGVseSByZWRlc2lnbmVkIHRoZSBh c3NpZ25tZW50cyB0byB0aGlzIGNvbXBvbmVudDxicj5hbmQgaXQgcHJvYmFibHkgd291bGQgZGlz dHJhY3QgbW9yZSB0aGFuIHByb3ZpZGUgYW55IGhlbHAuKSZuYnNwOyBUaGlzIHdheTxicj48YnI+ KGFkZC10by1saXN0ICdkZWZhdWx0LWZyYW1lLWFsaXN0ICcodW5kZWNvcmF0ZWQgLiB0KSk8YnI+ KHNldHEgZGVmYXVsdC1mcmFtZS1hbGlzdCAnKCh1bmRlY29yYXRlZCAuIHQpKSk8YnI+KHNldHEg aW5pdGlhbC1mcmFtZS1hbGlzdCAnKCh1bmRlY29yYXRlZCAuIHQpKSk8YnI+PGJyPnNob3VsZCBh bGwgd29yay48YnI+PGJyPkJUVywgeW91IGNhbiBhbHNvIGRvPGJyPjxicj4mbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgZi0mZ3Q7b3V0cHV0X2RhdGEudzMyLSZndDtkd1N0eWxl ID0gV1NfUE9QVVA7PGJyPjxicj5iZWNhdXNlIHRoZSBvbmx5IHRoaW5nIFdpbmRvd3MgZm9yYmlk cyBpbiB0aGlzIGNvbnRleHQgaXMgdG8gc2V0PGJyPldTX1BPUFVQIGZvciBhbiBleGlzdGluZyBv dmVybGFwcGVkIHdpbmRvdyAoSUlSQykuPGJyPjxicj4gJmd0OyAoZGVmdmFyIGRlY29yIDApPGJy PiAmZ3Q7IChkZWZ1biB0b2dnbGUtZnJhbWUtZGVjb3IgKCk8YnI+ICZndDsmbmJzcDsmbmJzcDsm bmJzcDsgKGludGVyYWN0aXZlKTxicj4gJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyAocHJvZ248YnI+ ICZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKG1vZGlmeS1mcmFtZS1wYXJhbWV0ZXJzIChz ZWxlY3RlZC1mcmFtZSkgYCgodW5kZWNvcmF0ZWQgLiAsJ2RlY29yKSkpPGJyPjxicj5Zb3UgbGlr ZWx5IG1lYW48YnI+PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAobW9kaWZ5LWZy YW1lLXBhcmFtZXRlcnMgKHNlbGVjdGVkLWZyYW1lKSBgKCh1bmRlY29yYXRlZCAuICxkZWNvcikp KTxicj48YnI+aGVyZS4mbmJzcDsgQW5kIHByb2JhYmx5IHlvdSB3YW50IHRvIGRvIHRoZSBmb2xs b3dpbmcgY2FsY3VsYXRpb248YnI+PGJyPiAmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IChp ZiAoPSBkZWNvciAwKTxicj4gJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyAoc2V0cSBkZWNvciAxKTxicj4gJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyAoc2V0cSBkZWNvciAwKSkpKTxicj48YnI+YmVmb3JlIGNhbGxpbmcg 4oCYbW9kaWZ5LWZyYW1lLXBhcmFtZXRlcnPigJkgc28gdGhlIGxhdHRlciB3aWxsIHNlZSB0aGUg bmV3PGJyPnZhbHVlLiZuYnNwOyBCdXQgZXZlbiB0aGlzIHdvbid0IHdvcmsgYmVjYXVzZSB5b3Ug d2FudCB0byB0b2dnbGUgYmV3ZWVuIG5pbDxicj5hbmQgbm9uLW5pbCBzbzxicj48YnI+KGRldmZh ciBkZWNvciBuaWwpPGJyPjxicj5hbmQ8YnI+PGJyPihzZXRxIGRlY29yIChub3QgZGVjb3IpKTxi cj48YnI+YXJlIG1vcmUgYXBwcm9wcmlhdGUuPGJyPjxicj5tYXJ0aW48YnI+PGJyPjwvYm9keT48 L2h0bWw+ ----_com.android.email_145445069537610-- From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 11 11:39:43 2017 Received: (at 25408) by debbugs.gnu.org; 11 Jan 2017 16:39:43 +0000 Received: from localhost ([127.0.0.1]:50091 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRLw7-0007MI-0v for submit@debbugs.gnu.org; Wed, 11 Jan 2017 11:39:43 -0500 Received: from eggs.gnu.org ([208.118.235.92]:58302) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRLw5-0007Ly-Ox for 25408@debbugs.gnu.org; Wed, 11 Jan 2017 11:39:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRLvz-0002JD-AY for 25408@debbugs.gnu.org; Wed, 11 Jan 2017 11:39:36 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:53146) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRLvu-0002Dl-UH; Wed, 11 Jan 2017 11:39:30 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1cRLvt-00051W-Vd; Wed, 11 Jan 2017 11:39:30 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: Arthur Miller In-reply-to: (message from Arthur Miller on Wed, 11 Jan 2017 08:08:44 +0100) Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> Message-Id: Date: Wed, 11 Jan 2017 11:39:29 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -8.2 (--------) X-Debbugs-Envelope-To: 25408 Cc: 25408@debbugs.gnu.org, clement.pit@gmail.com 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: , Reply-To: rms@gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -8.2 (--------) [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > I do run Arch Linux otherwise, but I do some consulting with programming > databases and GUIs in access & spss and I also play some games > occasionally, so I still need losedows. 1. If I were you, I would stop doing those jobs and stop running those games, for my freedom's sake. Not only is Losedows proprietary, but also Access, SPSS and those games. Each one of them does injustice to whoever runs it. See https://gnu.org/philosophy/free-software-even-more-important.html. 2. The name "Arch Linux" is a misnomer. It is a variant of the GNU/Linux system, so in fairness it should be called "Arch GNU/Linux". We can't make them fix that mistake, but we can choose to not to repeat it -- so let's call it "Arch GNU/Linux". 3. That distro is not entirely free software. See https://gnu.org/distros. 4. Thanks for helping development of GNU Emacs. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 07 00:29:00 2017 Received: (at 25408) by debbugs.gnu.org; 7 Feb 2017 05:29:00 +0000 Received: from localhost ([127.0.0.1]:58237 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cayKp-0002mw-Vf for submit@debbugs.gnu.org; Tue, 07 Feb 2017 00:29:00 -0500 Received: from mout.kundenserver.de ([212.227.17.24]:54142) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cayKo-0002mi-Uh for 25408@debbugs.gnu.org; Tue, 07 Feb 2017 00:28:59 -0500 Received: from [18.189.127.106] ([18.189.127.106]) by mrelayeu.kundenserver.de (mreue103 [212.227.15.184]) with ESMTPSA (Nemesis) id 0MbK2G-1ctbgF0em4-00IjY7; Tue, 07 Feb 2017 06:28:51 +0100 Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: martin rudalics , Arthur Miller References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= Message-ID: <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> Date: Tue, 7 Feb 2017 00:28:38 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <5875EF34.20507@gmx.at> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="gUWSo6OErI4UN7JOA5TVJEl1uG8BurVHG" X-Provags-ID: V03:K0:UJCcaT/yocEX65FmNOvebxp8G7wx7QXyOd4oQcRijUiyTbvySzR hEsu57QgmPthEjEpbDWesjIv6AkCQFYHUeWVRL4dJ+xq6nODsJA5klAitPNdJYZfulof3kh HKOQpk5XGkDytjjmgCj1QHB5RqJQFAoRHG8K2d/o9Nm+uabapkj8iq+duvmYflPm3RBUIba qscczqcwyp7PqTShi/fJQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:NsSJQANXB+0=:QodUP5It3WhW5eEFo5Z8PX yPhGQX0JcJTRxTsAr7QOIEAEfRLd9BbmXZwiXSOdlATHzjMYvVZJU7OuZKAP0QtfjdRa/SYtE lglO1zcUC+F0ApaSXYmyvfCh65BJaJmlAgun2ayRmXcpecUOfvsmqx73m9KWNhHb7lPGimZh/ 313IyFtV683P6ndCFmFZDxZTAJ1f1NzDQW/ZebBfNcAzWG1CFbJgtxQTdun2Wbv7mrA1EBYiH EDpgSdfPGzzc3y6Xp/iPOqAR/sZGZLhvBAbLFJNQciOg32/RWKUxPia3mlfQ9Tc4MYykxpTQr VbeWnc3xyzCcGiSudKxh863ZFaYs/uSCtxVb2DdcLaZvZ2l8VBAkSypyvAH7Bc2L19DQw1X4c Jn88mfk31wh5AZQxqKiRwihAwhdizTFs3UWF2eaGpMtz30jVAuOeE2UsWFqBA4m5JUiPkNgbZ RjbjcPBOgWjbKs0KJSNZP7gKtvsNF9kKpaYeivF8UO5xr2+Ij7b8yeI+9mk166JE01esQS8OD LpeJ03mbXpvmBXk1O6+aGeLHTYQtYDrjbOsHl8SiakFonC+ZBIa9zV8ASyEawwgs4FPsztk3C /oi3bIF8/e0jEShdAbIoN1Y75AR6Yik0oQRtHbf0KHFaOD4Oc9AXWU3ku2wOJD0qr3+upCGEI WdM1jZyNl8f/1CtTSf2uyGGxpLf9BeCvoPcXRnBQHKTVROeMdXGoigp3rBqj1IEB+9Y0= X-Spam-Score: -0.4 (/) X-Debbugs-Envelope-To: 25408 Cc: Eli Zaretskii , 25408@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: -0.4 (/) This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --gUWSo6OErI4UN7JOA5TVJEl1uG8BurVHG Content-Type: multipart/mixed; boundary="WTU8NbG6PETAqJ2U48hskGn0SBM708DJd"; protected-headers="v1" From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= To: martin rudalics , Arthur Miller Cc: Eli Zaretskii , 25408@debbugs.gnu.org Message-ID: <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> In-Reply-To: <5875EF34.20507@gmx.at> --WTU8NbG6PETAqJ2U48hskGn0SBM708DJd Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 2017-01-11 03:39, martin rudalics wrote: > But I'm testing this on Windows XP and have not yet pulled the recent > multi-thread Emacs changes. Hey Martin, Are your changes available in a branch of the repo? I'd be very happy to= test them, and some modes like company-mode would benefit significantly = (I tried to tackle this in "Could x-show-tip be reimplemented in Elisp? H= ow does one create borderless frames from Elisp?" a while ago). Thanks a lot! Cl=C3=A9ment. --WTU8NbG6PETAqJ2U48hskGn0SBM708DJd-- --gUWSo6OErI4UN7JOA5TVJEl1uG8BurVHG Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJYmVsGAAoJEPqg+cTm90wjUcUP/RhxfEJQUZ+pjbskF+n1Jm8R RRZFBKEJ0FT9pFxstiK6T+Ql6+i45jzDe5WGeomwmQ+Mwy5yrzHXQ6lvUUV7MMk/ xdKrfWU9aS0vBGS7xRuDaxwyDn/GHPJRiVNveCF2/3f3HUQjt0YYEXYsW8qtd+te 12SNtR+LMECA22YoYDy//I5Z8SRtplOuo6yx55d7XX5ILzvq8P6AG6wijWYJ0f1S 97SnhErfOz9KT7Y+BSlcRf80p4hteR2Z70Jpec2GoC3C4lGQGa4e3ixmtnys/xLQ mJuhpGocwoMc6uzHgD4ohfYPbmXz44eU4Leo3kmwyYQps6178QfvIRjkPu6vrHQD D/U/OCkZ5+nNEIIMiUPc/Bb9V37X5/fPrsHUS38A8uCEnrDwRPgO8qXhVM/+fIfR Lrmapc8IuRwHptdz0rsM0lhJWSJqvVF238/n5ShS2lF8TTFYd7EbWI0uVfMzJBqf qBRP83p3tmJrOFlrURCQVk/W81wv2YfQQBKEc/buC3Ye56h8fXUe9RMhwWxQPGiM F8N9dqbjjY+DRWV5FGaLrlVIrUVmjSQzuLpM+hc9O1gvIF3hCV3jPbFIzqaxJi7u ODhfuR8HOpvd1eMT25XMBLZbZlzuQwpFIM1wCxcfaM1XmCAtiBMb0M7hL8xe02K0 ZE37nOqxuapc8+upBQNm =s9N1 -----END PGP SIGNATURE----- --gUWSo6OErI4UN7JOA5TVJEl1uG8BurVHG-- From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 07 01:53:53 2017 Received: (at 25408) by debbugs.gnu.org; 7 Feb 2017 06:53:53 +0000 Received: from localhost ([127.0.0.1]:58257 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cazey-0004sf-P7 for submit@debbugs.gnu.org; Tue, 07 Feb 2017 01:53:52 -0500 Received: from mout.gmx.net ([212.227.17.20]:64844) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cazew-0004sB-9v for 25408@debbugs.gnu.org; Tue, 07 Feb 2017 01:53:50 -0500 Received: from [192.168.1.100] ([213.162.68.71]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0LsxuQ-1cQZCu15r8-012cCW; Tue, 07 Feb 2017 07:53:42 +0100 Message-ID: <58996EED.6030601@gmx.at> Date: Tue, 07 Feb 2017 07:53:33 +0100 From: martin rudalics MIME-Version: 1.0 To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= , Arthur Miller Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> In-Reply-To: <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:1t95FZYoEwbbS4oq1HB5rPfKfr2F1VhIGNbwH9L6facERJ/TQi9 o1aNtnKJrJOniwMnEcfBXiPCSVaTo6nz2mb+ipdN3WNYn+HK1vkLhL97U1IvOA86Uz7himZ /fFLOHU/4LBLWS4boT3Rne4DS8KQcGoLFD1cY5SZGbPQnYRovNsqlNSCISYBUu7yX/LXP90 AWSnDfU/0+3kbAwksMuCQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:znFpnqgteT0=:bJ2fFcMh3NiaRRmArxtddL OgzQf24H7Vf7+N/I72djELX6HKqtTU8DkEGnT8eSyv1ETZi/9jVAoKjmUuXRBe5U18QxsFwzE 9J+ANGEBC0W+73QSVaVppXkakEowHEwqhsCtKEhcCZPI69HGZB5vh38rb4y/6MHE6HNiuEnrZ neP1s/5GHk7F9lwItER5jSvw9RvaarsVEMtC7OLJldaM/KcPbA9G5GrS2WZZV3bjw4GySK+2x v9dJmelRgwXh7ElLe6vKx/pxDWBiQvPxoFkuKVasHk/nbbzuERjv7Iri/DVcn8iNdUCxHxfog 37yhzAldNYGYsmxSgOtmc34WmGRDz/ELFYSZR6hM0HimyXTni0R9m3Uuq0k+kkzkaIOc3HOuj POAFXqQEsZ8TJqz1p5UmcT8rBh/4WYl4sNihuEFoJ9JyBYaxfVn0+zusfG+q9Hv2tODQz7kTJ qhRl7r/0le4QnQJan0N8W42oIMhrmU5M7SphLq0qNcLai/KNc25dUuoyXvENdkYdNxh+CMksI s2zJDLbvOEZcHE3DSUY72Bk54Sh66rn8xi3VP4Ol+F/o4NU0wcZCBIW1O0o07UFhEQ21weVPK Hts5iFoZqp0xPVZpchd//2WRnRLDWZgzvPqv7p8gX86meXnnZ5ktZHtIBvxvUHYmfLce75zU0 fBDtBKRkXhd0HLbqlXkT4s001IKlcLIlAyEOggxmaDPMKaNaq+CM0nX0O/VKfqrCPnJwTBOCR tJMJEM6/d/pVXn0OVSZlilgIUPkOK+i9XhaKII5rltY8cuuco8mCAsWsukEJHP2M7sQjFA0V5 UStiuQ49tPiRn6w+6TS5F8roN6uRA== X-Spam-Score: 1.7 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > Are your changes available in a branch of the repo? No. But I hope that I can post a patch by the end of this week. > I'd be very happy > to test them, and some modes like company-mode would benefit > significantly (I tried to tackle this in "Could x-show-tip be > reimplemented in Elisp? How does one create borderless frames from > Elisp?" a while ago). [...] Content analysis details: (1.7 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.17.20 listed in dnsbl.sorbs.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.17.20 listed in list.dnswl.org] -1.9 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.20 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) 3.8 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [213.162.68.71 listed in dnsbl.sorbs.net] X-Debbugs-Envelope-To: 25408 Cc: Eli Zaretskii , 25408@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 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > Are your changes available in a branch of the repo? No. But I hope that I can post a patch by the end of this week. > I'd be very happy > to test them, and some modes like company-mode would benefit > significantly (I tried to tackle this in "Could x-show-tip be > reimplemented in Elisp? How does one create borderless frames from > Elisp?" a while ago). [...] Content analysis details: (1.7 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.9 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.20 listed in wl.mailspike.net] 3.8 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [213.162.68.71 listed in dnsbl.sorbs.net] 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.17.20 listed in dnsbl.sorbs.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.17.20 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) > Are your changes available in a branch of the repo? No. But I hope that I can post a patch by the end of this week. > I'd be very happy > to test them, and some modes like company-mode would benefit > significantly (I tried to tackle this in "Could x-show-tip be > reimplemented in Elisp? How does one create borderless frames from > Elisp?" a while ago). Creating borderless frames and giving them back their border is fairly trivial. The greater problem is how to synchronize the behavior of such a frame with that of another one (moving, sizing, focusing, restacking and the like) and do that consistently across our windows systems. I've practically solved all these problems but am not yet sure whether the issue I found in "A GTK-only problem when making frames invisible" could have a detrimental impact. martin From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 07 08:06:12 2017 Received: (at 25408) by debbugs.gnu.org; 7 Feb 2017 13:06:12 +0000 Received: from localhost ([127.0.0.1]:58398 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cb5TH-0006lR-Rm for submit@debbugs.gnu.org; Tue, 07 Feb 2017 08:06:12 -0500 Received: from mout.kundenserver.de ([217.72.192.75]:50189) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cb5TG-0006lB-Bo for 25408@debbugs.gnu.org; Tue, 07 Feb 2017 08:06:10 -0500 Received: from [18.189.127.106] ([18.189.127.106]) by mrelayeu.kundenserver.de (mreue102 [212.227.15.184]) with ESMTPSA (Nemesis) id 0LkPdb-1bzpq52lvH-00cPoA; Tue, 07 Feb 2017 14:06:02 +0100 Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: martin rudalics , Arthur Miller References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= Message-ID: <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> Date: Tue, 7 Feb 2017 08:05:55 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <58996EED.6030601@gmx.at> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="iPUKVmPpFN7pR8CD5e0rEAngabOAO39V4" X-Provags-ID: V03:K0:hkOWYGjz/51/q24ay24CTuYRoMO5Bkw26fLvpg9LKU7qpICTZD/ R9c6VWr/VE2slP5UfLe1OZ5tZm5O4hwseykkq97i6l8wlmAE1NthQfv+0MV17IHxOFPiurB v2cZG79/0HUCf2C4zTApHW7liIARb1j3HZ2cmTe3gPCz1ZWd1+AoFgH7fjVfICnhvF7vQzb CWbz7xdIIQbv1Syzz+RHA== X-UI-Out-Filterresults: notjunk:1;V01:K0:m4VYBXL4RrM=:t5U3i6uZCVU8tgrtDKWNf7 ojK/hVyqQ6ODu515dhY2aybPkYD5XtYr4eaoukQtmxj38bGI4fo6leUgUp3d403k9ogNqJ8rm d72aepY/9/Ist1x2Ji9ObVBVr7Z0vPH+8lIM5yGiavaf3IMi+C4HtREoE9yX+IjXnrBP06nv1 HMNqxeHZwWWPVIWJ/3p1Pi4XLtEA42Gf9N2+u8a3rEwiG7Xo1N2hN8qlEaa+nLKjNaycHfK6g VgnTWHeMexka3yyzkwlpMmpDnpox2sguhO7CeoScybNS4FpJL4DWryCd+Pz/9JpP4JFniFSuS fmRBDXbKvQa+dKNB84Guqfiw7bv0GO96Qs/gjDUkycGNC6dt0hyPS8h9btTEUB9dqWydeSZel YIKbCCXZ8h6BbZkFWjJIPMfq0b5o8hEGbfu2DgHgmmPjO4X3Jlo8PSP2UYip/eevbFAQCmwpE XbwC7GPmEaQ0im8l6kn/aFGM4zAyytLUVdrO7s1RJ/P0qpwJlv6sivQVn0MAM498G7raY/u3o iNCo0K8zG8fecfzatek9zJcphvTl+HEm9xc0KIy4dUSZmLWwQdK88XCvQR7J8q0EOvxIuryI3 dVDMeSl3uuDgBBfiCBkajJkO3gMLYkHS+UKCh/2+OLqqPXy/782/jcXHPmWviPCoBPYQzB4Ln 0fwuujQVMgHRo3X1P5gWcfZFWpBwfL5yTLuA5sipuur3Na6BFlYFy+Wnp2y/Awd2lfKE= X-Spam-Score: -0.9 (/) X-Debbugs-Envelope-To: 25408 Cc: Eli Zaretskii , 25408@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: -0.9 (/) This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --iPUKVmPpFN7pR8CD5e0rEAngabOAO39V4 Content-Type: multipart/mixed; boundary="jkgcODtdFK6CSFJ6R8QhIKGKrRlFQXJFN"; protected-headers="v1" From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= To: martin rudalics , Arthur Miller Cc: Eli Zaretskii , 25408@debbugs.gnu.org Message-ID: <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> In-Reply-To: <58996EED.6030601@gmx.at> --jkgcODtdFK6CSFJ6R8QhIKGKrRlFQXJFN Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 2017-02-07 01:53, martin rudalics wrote: >> Are your changes available in a branch of the repo? >=20 > No. But I hope that I can post a patch by the end of this week. Great, thanks a lot! >> I'd be very happy >> to test them, and some modes like company-mode would benefit >> significantly (I tried to tackle this in "Could x-show-tip be >> reimplemented in Elisp? How does one create borderless frames from >> Elisp?" a while ago). >=20 > Creating borderless frames and giving them back their border is fairly > trivial. The greater problem is how to synchronize the behavior of suc= h > a frame with that of another one (moving, sizing, focusing, restacking > and the like) and do that consistently across our windows systems. >=20 > I've practically solved all these problems but am not yet sure whether > the issue I found in "A GTK-only problem when making frames invisible" > could have a detrimental impact. Ok; thanks for the clarification! I'm excited about this feature :) --jkgcODtdFK6CSFJ6R8QhIKGKrRlFQXJFN-- --iPUKVmPpFN7pR8CD5e0rEAngabOAO39V4 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJYmcY4AAoJEPqg+cTm90wjtdcP/2Jorkt03RJFn5f6fN1XrsLQ Jqrb37Iaa6s7sEf3qmM/ca6Mv6K33cfqhLMmIfb2EpJYIDw5LIz9xw6IXxxxv+qW FETgocgu1oFvB92e1yP9bsjkZUgtrkhi+L9A1vIV1O71dSq3c6gqS1oRcD0HPKF9 7n8ZhezaiIGFB/bMLLZNxR5IEBsxdBM2GSSMgN+pwl+OJwyQexE+yOc4QYKU7gOH J1j4oBCg4pEG/TgA02xQ/EecUSBwlNwnMFFHmtTPIHHailDXM6ZDN66D00TTwt6A MdcsciOpqlxkGRum3ON0GtydBeXUWxzoc/TKlr1WIuIx9rpM7Jr4LLGmjqWTvonL T9pZNU8SSARf/CPq3aE2nnLKLUHJYbABi3Oe47YTOb6UME9AqS2itpQ8o9ODDXql SMItj34V28U10d36Pq0JGjytLbXeUcKN2zjvuDt8TSqcvLWlt4OJd1vojQ8t22S8 oOsMi/8x0gTAym6DrvKeJhQwfpCeW2H8TRjYr9NuNRJvCe8AcfwzFyYGNcivHIy0 AiJwa+hYgF3jFz93U+59At6wTX5usvzBhxclcqPOjnYSFPakSvRPxC7w63Ow95cH t+vxAi7PbqIJctwKFFEOkg98Ri9T8OPxaLpIp4sJP5fzwHCT54WxB1e7uMuZpp1R AljMGep6Bioa5onsTilw =oRuB -----END PGP SIGNATURE----- --iPUKVmPpFN7pR8CD5e0rEAngabOAO39V4-- From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 11 09:27:55 2017 Received: (at 25408) by debbugs.gnu.org; 11 Feb 2017 14:27:56 +0000 Received: from localhost ([127.0.0.1]:35414 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ccYeZ-0003Os-R9 for submit@debbugs.gnu.org; Sat, 11 Feb 2017 09:27:55 -0500 Received: from mout.gmx.net ([212.227.17.21]:61177) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ccYeY-0003Oc-2K for 25408@debbugs.gnu.org; Sat, 11 Feb 2017 09:27:54 -0500 Received: from [192.168.1.101] ([213.162.68.10]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MYbFe-1cy5dj2wN8-00VTwA; Sat, 11 Feb 2017 15:27:46 +0100 Message-ID: <589F1F58.1050807@gmx.at> Date: Sat, 11 Feb 2017 15:27:36 +0100 From: martin rudalics MIME-Version: 1.0 To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= , Arthur Miller Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> In-Reply-To: <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> Content-Type: multipart/mixed; boundary="------------040005020303090802000704" X-Provags-ID: V03:K0:Y3scLBy/6NJ60hH9jt4JUSQiZVZni96JaRzLMSTZ4RQUsCA1eHO mOq/MAe+M9vtA9zY/JF5WMgvbaV1UAjb9hWVu1MWcKfh8SX4VS589kyGNIQzrDPvGtmMJrM 6QU1M3ANx+D/61Jd+7+3zhxxeiVwJhEH9GectGGnx6oGj3I1MSaSYpJdFvwDUB08Twy3nYB OZkYY6CHEV0r2STJ6/LfQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:Pj3XWH9e1Vc=:QbaxmC4yakqptIGNp5YglS AwI/r/CIul1wqOsfRnUskgHpuLHupyvS/Paaadh43uSAB9X+UkrmE7/gg8Hkh52cUQGrvt+m9 G8c5LHkLg7CyNTOSXdT1S7VYbV0fpbqbGH/5f+YtX+I+5nr18JcMedo9p/qvBtHuYH/jbbiQa PtuCiewjMDoetQQQfSYNxd1et5BQw45lm3+ThOFs6CUZmInK9hy/ffiWogNQ9rh+R/49yT53y wHgyv9OyGQDD/NRkZB1hWHhKtaV4u4FLwU5lsuBpF41+YLtL0F9JltEzkSSzrQdPSoWxtGrWr 6tT/T/U+o/aGJLIavCZ4pYn09+Q26KXxEldcbhuk6EL//VsDH9MDGD+vFlL35HnTKnbYKKAlM 7anRdJNB9LXLt0vVtIMHZ0P0Ggfdla9NFnG3BJ5zXe4PwrxR5u4/jdk48WkT1dnXHGbsnZAcn Dr9ZN+uDaMtoUZyidMTPRxhXt2b6cdD9TtMkXWbHw3/On7oJDixajEXlsi8lqCIIoQP0x6uYX L+ltyJJFcYm2kSiW/TtbE0LmigQPD1t9vFujMtoj1eZn9OuLE+NMUTQyhPyppj6kfqz7qEQSe X1ZZdStfGMXodU24VYIHwCIvcXhek0WGiWwyhTDTgGDZUm4zUEfvjQFqBNPLo3vAdC2HMRbhs xMsMBHJOAyvubcYjgrbf0sJ4IYK5loR48dGNtvTqBNcLd5dxmKcNkucIsKUAG3hKyNc9fWbDo 0/zcp0rxAmZnHa+5fzx4QnTk+4xwKklDuT2TgIqAwnNMUlGOeMUGKPbF+rw= X-Debbugs-Envelope-To: 25408 Cc: Eli Zaretskii , 25408@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. --------------040005020303090802000704 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable >>> Are your changes available in a branch of the repo? >> >> No. But I hope that I can post a patch by the end of this week. > > Great, thanks a lot! If you are on GNU/Linux or Windows then please apply the attached patch synch-frames.diff to your current version of master and rebuild. If you succeeded doing that, start emacs -Q and continue reading. To remove a frame's decorations, use the frame parameter `undecorated' as in (set-frame-parameter nil 'undecorated t) To give that frame back its decorations use (set-frame-parameter nil 'undecorated nil) To make a new frame undecorated use (make-frame '((undecorated . t))) To make frames undecorated by default add something like (custom-set-variables '(default-frame-alist '((undecorated . t)))) to your .emacs. If everything works as intended and your only interest was to make frames without decorations, you can finish reading here. If you didn't succeed removing a frame's decorations and you are on GNU/Linux, you're window manager probably doesn't honor the Motif window manager hints. Please post the types of your build and window manager. At the very least we can provide a list of the window managers that don't comply. Windows users might experience problems on anything past XP, I've only tested it there. Usually, the position of a frame's native rectangle doesn't change when adding/removing decorations. If you want to change it, use the `left' and `top' frame parameters. If you think you need to remove/add individual parts of the decorations (titlebar, buttons, external borders) post your wishes here. Some window managers might be able to do that. The rest of this text is concerned with describing additional features. If some of them don't work on your system, please tell me, usually they need a compliant window manager as well. A first group of parameters is concerned with focusing/switching to certain frames. To make a frame not show up on the taskbar use the frame parameter `skip-taskbar' as in (set-frame-parameter nil 'skip-taskbar t) This should remove your frame's icon from the taskbar and also disable the - functionality to switch to that frame. On some systems (notably Windows) iconifying such a frame may "roll in" its window at the bottom of the desktop. To make a new frame not receive focus initially or when deiconified, use the frame parameter `no-focus-on-map' as in (make-frame '((no-focus-on-map . t))) Usually this works but if you are using a focus follows mouse policy you might have to specify the `no-accept-focus' parameter as well as in (make-frame '((no-focus-on-map . t) (no-accept-focus . t))) The `no-accept-focus' parameter, if non-nil, tries to never give the frame focus in a "soft" way. Development might not be entirely complete in this area. If you want to avoid that C-x 5 o switches to a specific frame, set that frame's `no-other-frame' parameter as in (set-frame-parameter nil 'no-other-frame t) Using a clever combination of the `skip-taskbar', `no-focus-on-map', `no-accept-focus' and `no-other-frame' you might be able to make a completely catatonic frame which you can kill only with your task manager. If you want to make sure that a specific frame is deleted whenever another frame is deleted use the `delete-before' parameter. This avoids confusing Emacs as, for example, when putting `delete-frame' on `delete-frame-functions'. To make a frame as small as possible use the `min-width' and `min-height' parameters. Evaluating (let ((frame (make-frame `((tool-bar-lines . 0) (menu-bar-lines . 0) (vertical-scroll-bars . nil) (horizontal-scroll-bars . nil) (minibuffer . ,(minibuffer-window (selected-frame))) (left-fringe . 0) (right-fringe . 0) (background-color . "yellow") (undecorated . t) (border-width . 0) (width . 1) (height . 1) (left . ,(frame-parameter nil 'left)) (top . ,(frame-parameter nil 'top)) (min-width . 0) (min-height . 0) (delete-before . ,(selected-frame))))) (buffer (get-buffer-create "*x*"))) (set-window-buffer (frame-root-window frame) buffer) (with-current-buffer buffer (setq mode-line-format nil))) should give you a blinking cursor at the top left corner of your selected frame. The `mouse-wheel-frame' allows to specify mouse wheel scroll transparency wrt the frame below this one. Use it as in (make-frame `((undecorated . t) (no-accept-focus . t) (mouse-wheel-frame . ,(selected-frame)) (left . ,(/ (frame-pixel-width) 4)) (top . ,(/ (frame-pixel-height) 4)) (width . ,(/ (frame-width) 2)) (height . ,(/ (frame-height) 2)))) Mouse wheel scrolling the window in the new frame should now scroll the underlying window of the initial frame instead. I'm not sure whether I will implement mouse click (aka "hit") transparency in a similar way. A second group of parameters/functions is concerned with maintaining and investigating the stacking order of frames. The `z-group' parameter allows to put a frame in a separate group above or (not on Windows) below all other frames that are not in the same group. For example (set-frame-parameter nil 'z-group 'above) will make your frame (semi-)permanently appear above all other windows on your desktop (including the task bar). The implementation of this parameter is not entirely complete yet, it's easily possible that I will replace it by a simple function. My window manager apparently removes this property when the frame is iconified so I cannot always rely on it. Also a frame with this parameter equalling `above' currently appears above dialogue windows (to select files or fonts). This will be fixed soon but I'm not yet sure how. `frame-restack' already is a function. To test it try to play around with the following forms: (setq sframe (selected-frame)) (setq nframe (make-frame)) (frame-restack nframe sframe) (frame-restack sframe nframe) (frame-restack nframe sframe t) (frame-restack sframe nframe t) The function `frame-list-z-order' returns a list of your frames in the stacking order of your display - bottommost first. A final group of parameters/functions is concerned with making child frames. To make a frame a child frame of an existing frame you can use something like (set-frame-parameter nil 'parent-frame frame) where `frame' must be a live frame. This should work as in the following form (make-frame `((parent-frame . ,(selected-frame)) (undecorated . t) (no-accept-focus . t) (mouse-wheel-frame . ,(selected-frame)) (left . ,(/ (frame-pixel-width) 4)) (top . ,(/ (frame-pixel-height) 4)) (width . ,(/ (frame-width) 2)) (height . ,(/ (frame-height) 2)))) Note that child frames automatically move and (de-)iconify together with their parent frame without any further intervention from Emacs. Moreover they are clipped automatically at the borders of their parent. For normal (non-child) frames there's a new hook `move-frame-functions' called after a frame was moved so you can also synchronize the movements of two top-level frames. Child frames are not listed by `frame-list' but are listed by `frame-list-z-order'. `frame-child-frames' lists all child frames of a specific frame. On GTK neither child frames nor undecorated frames can get a border. If you want a unified-looking border on any system you can use the new face `internal-border' and set the frame parameter =E2=80=98internal-border-wi= dth=E2=80=99 to some non-zero value for any such frame. If the functions/parameters described here work sufficiently well, I'll post a number of toy algorithms that show how to synchronize two frames in a way that always shows one frame at a specified position on top of the other. The current version comes without info and frameset support. I hope that Juanma can help me with the latter. martin --------------040005020303090802000704 Content-Type: text/plain; charset=windows-1252; name="synch-frames.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="synch-frames.diff" ZGlmZiAtLWdpdCBhL2xpc3AvY3VzLXN0YXJ0LmVsIGIvbGlzcC9jdXMtc3RhcnQuZWwKaW5k ZXggNTFjNDNjNy4uYTUwN2UzMCAxMDA2NDQKLS0tIGEvbGlzcC9jdXMtc3RhcnQuZWwKKysr IGIvbGlzcC9jdXMtc3RhcnQuZWwKQEAgLTI4Niw3ICsyODYsMTEgQEAgbWluaWJ1ZmZlci1w cm9tcHQtcHJvcGVydGllcy0tc2V0dGVyCiAJICAgICA7OyBmbnMuYwogCSAgICAgKHVzZS1k aWFsb2ctYm94IG1lbnUgYm9vbGVhbiAiMjEuMSIpCiAJICAgICAodXNlLWZpbGUtZGlhbG9n IG1lbnUgYm9vbGVhbiAiMjIuMSIpCi0JICAgICAoZm9jdXMtZm9sbG93cy1tb3VzZSBmcmFt ZXMgYm9vbGVhbiAiMjAuMyIpCisJICAgICAoZm9jdXMtZm9sbG93cy1tb3VzZQorICAgICAg ICAgICAgICBmcmFtZXMgKGNob2ljZQorICAgICAgICAgICAgICAgICAgICAgIChjb25zdCA6 dGFnICJPZmYgKG5pbCkiIDp2YWx1ZSBuaWwpCisgICAgICAgICAgICAgICAgICAgICAgKGNv bnN0IDp0YWcgIk9uICh0KSIgOnZhbHVlIHQpCisgICAgICAgICAgICAgICAgICAgICAgKGNv bnN0IDp0YWcgIkF1dG8tcmFpc2UiIDp2YWx1ZSBhdXRvLXJhaXNlKSkgIjI2LjEiKQogCSAg ICAgOzsgZm9udHNldC5jCiAJICAgICA7OyBGSVhNRSBuaWwgaXMgdGhlIGluaXRpYWwgdmFs dWUsIGZvbnRzZXQuZWwgc2V0cXMgaXQuCiAJICAgICAodmVydGljYWwtY2VudGVyaW5nLWZv bnQtcmVnZXhwIGRpc3BsYXkKZGlmZiAtLWdpdCBhL2xpc3AvZmFjZXMuZWwgYi9saXNwL2Zh Y2VzLmVsCmluZGV4IGQ0ZjJmMDguLjU0ZWIyOTQgMTAwNjQ0Ci0tLSBhL2xpc3AvZmFjZXMu ZWwKKysrIGIvbGlzcC9mYWNlcy5lbApAQCAtMjYyNiw2ICsyNjI2LDEzIEBAIHdpbmRvdy1k aXZpZGVyLWxhc3QtcGl4ZWwKICAgOmdyb3VwICd3aW5kb3ctZGl2aWRlcgogICA6Z3JvdXAg J2Jhc2ljLWZhY2VzKQoKKyhkZWZmYWNlIGludGVybmFsLWJvcmRlcgorICAgICcoKHQgbmls KSkKKyAgIkJhc2ljIGZhY2UgZm9yIHRoZSBpbnRlcm5hbCBib3JkZXIuIgorICA6dmVyc2lv biAiMjYuMSIKKyAgOmdyb3VwICdmcmFtZXMKKyAgOmdyb3VwICdiYXNpYy1mYWNlcykKKwog KGRlZmZhY2UgbWluaWJ1ZmZlci1wcm9tcHQKICAgJygoKChiYWNrZ3JvdW5kIGRhcmspKSA6 Zm9yZWdyb3VuZCAiY3lhbiIpCiAgICAgOzsgRG9uJ3QgdXNlIGJsdWUgYmVjYXVzZSBtYW55 IHVzZXJzIG9mIHRoZSBNUy1ET1MgcG9ydCBjdXN0b21pemUKZGlmZiAtLWdpdCBhL2xpc3Av ZnJhbWUuZWwgYi9saXNwL2ZyYW1lLmVsCmluZGV4IDBhMzViNzEuLjIwMmE4ZDEgMTAwNjQ0 Ci0tLSBhL2xpc3AvZnJhbWUuZWwKKysrIGIvbGlzcC9mcmFtZS5lbApAQCAtMTE1LDE1ICsx MTUsMTkgQEAgbWluaWJ1ZmZlci1mcmFtZS1hbGlzdAogKGRlZnVuIGhhbmRsZS1kZWxldGUt ZnJhbWUgKGV2ZW50KQogICAiSGFuZGxlIGRlbGV0ZS1mcmFtZSBldmVudHMgZnJvbSB0aGUg WCBzZXJ2ZXIuIgogICAoaW50ZXJhY3RpdmUgImUiKQotICAobGV0ICgoZnJhbWUgKHBvc24t d2luZG93IChldmVudC1zdGFydCBldmVudCkpKQotCShpIDApCi0JKHRhaWwgKGZyYW1lLWxp c3QpKSkKLSAgICAod2hpbGUgdGFpbAotICAgICAgKGFuZCAoZnJhbWUtdmlzaWJsZS1wIChj YXIgdGFpbCkpCi0JICAgKG5vdCAoZXEgKGNhciB0YWlsKSBmcmFtZSkpCi0JICAoc2V0cSBp ICgxKyBpKSkpCi0gICAgICAoc2V0cSB0YWlsIChjZHIgdGFpbCkpKQotICAgIChpZiAoPiBp IDApCisgIChsZXQqICgoZnJhbWUgKHBvc24td2luZG93IChldmVudC1zdGFydCBldmVudCkp KSkKKyAgICAoaWYgKGNhdGNoICdvdGhlci1mcmFtZQorICAgICAgICAgIChkb2xpc3QgKGZy YW1lLTEgKGZyYW1lLWxpc3QpKQorICAgICAgICAgICAgOzsgQSB2YWxpZCAib3RoZXIiIGZy YW1lIGlzIHZpc2libGUsIG93bnMgaXRzIG1pbmlidWZmZXIKKyAgICAgICAgICAgIDs7IHdp bmRvdywgaGFzIGl0cyBgZGVsZXRlLWJlZm9yZScgcGFyYW1ldGVyIHVuc2V0IGFuZCBpcwor ICAgICAgICAgICAgOzsgbm90IGEgY2hpbGQgZnJhbWUuCisgICAgICAgICAgICAod2hlbiAo YW5kIChub3QgKGVxIGZyYW1lLTEgZnJhbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAo ZnJhbWUtdmlzaWJsZS1wIGZyYW1lLTEpCisgICAgICAgICAgICAgICAgICAgICAgICh3aW5k b3ctbGl2ZS1wIChtaW5pYnVmZmVyLXdpbmRvdyBmcmFtZS0xKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgKGVxICh3aW5kb3ctZnJhbWUgKG1pbmlidWZmZXItd2luZG93IGZyYW1lLTEp KSBmcmFtZS0xKQorICAgICAgICAgICAgICAgICAgICAgICAobm90IChjZHIgKGZyYW1lLXBh cmFtZXRlciBmcmFtZS0xICdwYXJlbnQtZnJhbWUpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgKG5vdCAoZnJhbWUtcGFyYW1ldGVyIGZyYW1lLTEgJ2RlbGV0ZS1iZWZvcmUpKSkKKyAg ICAgICAgICAgICAgKHRocm93ICdvdGhlci1mcmFtZSB0KSkpKQogCShkZWxldGUtZnJhbWUg ZnJhbWUgdCkKICAgICAgIDs7IEdpbGRlYUB4Lm9yZyBzYXlzIGl0IGlzIG9rIHRvIGFzayBx dWVzdGlvbnMgYmVmb3JlIHRlcm1pbmF0aW5nLgogICAgICAgKHNhdmUtYnVmZmVycy1raWxs LWVtYWNzKSkpKQpAQCAtMTQ0LDYgKzE0OCwxMyBAQCBoYW5kbGUtZm9jdXMtb3V0CiBUaGlz IGZ1bmN0aW9uIHJ1bnMgdGhlIGhvb2sgYGZvY3VzLW91dC1ob29rJy4iCiAgIChpbnRlcmFj dGl2ZSAiZSIpCiAgIChydW4taG9va3MgJ2ZvY3VzLW91dC1ob29rKSkKKworKGRlZnVuIGhh bmRsZS1tb3ZlLWZyYW1lIChldmVudCkKKyAgIkhhbmRsZSBhIG1vdmUtZnJhbWUgZXZlbnQu CitUaGlzIGZ1bmN0aW9uIHJ1bnMgdGhlIGFibm9ybWFsIGhvb2sgYG1vdmUtZnJhbWUtZnVu Y3Rpb25zJy4iCisgIChpbnRlcmFjdGl2ZSAiZSIpCisgIChsZXQgKChmcmFtZSAocG9zbi13 aW5kb3cgKGV2ZW50LXN0YXJ0IGV2ZW50KSkpKQorICAgIChydW4taG9vay13aXRoLWFyZ3Mg J21vdmUtZnJhbWUtZnVuY3Rpb25zIGZyYW1lKSkpCiAMCiA7Ozs7IEFycmFuZ2VtZW50IG9m IGZyYW1lcyBhdCBzdGFydHVwCgpAQCAtODI3LDIxICs4MzgsMjQgQEAgb3RoZXItZnJhbWUK IFRoaXMgY29tbWFuZCBzZWxlY3RzIHRoZSBmcmFtZSBBUkcgc3RlcHMgYXdheSBpbiB0aGF0 IG9yZGVyLgogQSBuZWdhdGl2ZSBBUkcgbW92ZXMgaW4gdGhlIG9wcG9zaXRlIG9yZGVyLgoK LVRvIG1ha2UgdGhpcyBjb21tYW5kIHdvcmsgcHJvcGVybHksIHlvdSBtdXN0IHRlbGwgRW1h Y3MKLWhvdyB0aGUgc3lzdGVtIChvciB0aGUgd2luZG93IG1hbmFnZXIpIGdlbmVyYWxseSBo YW5kbGVzCi1mb2N1cy1zd2l0Y2hpbmcgYmV0d2VlbiB3aW5kb3dzLiAgSWYgbW92aW5nIHRo ZSBtb3VzZSBvbnRvIGEgd2luZG93Ci1zZWxlY3RzIGl0IChnaXZlcyBpdCBmb2N1cyksIHNl dCBgZm9jdXMtZm9sbG93cy1tb3VzZScgdG8gdC4KLU90aGVyd2lzZSwgdGhhdCB2YXJpYWJs ZSBzaG91bGQgYmUgbmlsLiIKK1RvIG1ha2UgdGhpcyBjb21tYW5kIHdvcmsgcHJvcGVybHks IHlvdSBtdXN0IHRlbGwgRW1hY3MgaG93IHRoZQorc3lzdGVtIChvciB0aGUgd2luZG93IG1h bmFnZXIpIGdlbmVyYWxseSBoYW5kbGVzIGZvY3VzLXN3aXRjaGluZworYmV0d2VlbiB3aW5k b3dzLiAgSWYgbW92aW5nIHRoZSBtb3VzZSBvbnRvIGEgd2luZG93IHNlbGVjdHMKK2l0IChn aXZlcyBpdCBmb2N1cyksIHNldCBgZm9jdXMtZm9sbG93cy1tb3VzZScgdG8gdC4gIE90aGVy d2lzZSwKK3RoYXQgdmFyaWFibGUgc2hvdWxkIGJlIG5pbC4iCiAgIChpbnRlcmFjdGl2ZSAi cCIpCi0gIChsZXQgKChmcmFtZSAoc2VsZWN0ZWQtZnJhbWUpKSkKKyAgKGxldCAoKHNmcmFt ZSAoc2VsZWN0ZWQtZnJhbWUpKQorICAgICAgICAoZnJhbWUgKHNlbGVjdGVkLWZyYW1lKSkp CiAgICAgKHdoaWxlICg+IGFyZyAwKQogICAgICAgKHNldHEgZnJhbWUgKG5leHQtZnJhbWUg ZnJhbWUpKQotICAgICAgKHdoaWxlIChub3QgKGVxIChmcmFtZS12aXNpYmxlLXAgZnJhbWUp IHQpKQorICAgICAgKHdoaWxlIChhbmQgKG5vdCAoZXEgZnJhbWUgc2ZyYW1lKSkKKyAgICAg ICAgICAgICAgICAgIChub3QgKGVxIChmcmFtZS12aXNpYmxlLXAgZnJhbWUpIHQpKSkKIAko c2V0cSBmcmFtZSAobmV4dC1mcmFtZSBmcmFtZSkpKQogICAgICAgKHNldHEgYXJnICgxLSBh cmcpKSkKICAgICAod2hpbGUgKDwgYXJnIDApCiAgICAgICAoc2V0cSBmcmFtZSAocHJldmlv dXMtZnJhbWUgZnJhbWUpKQotICAgICAgKHdoaWxlIChub3QgKGVxIChmcmFtZS12aXNpYmxl LXAgZnJhbWUpIHQpKQorICAgICAgKHdoaWxlIChhbmQgKG5vdCAoZXEgZnJhbWUgc2ZyYW1l KSkKKyAgICAgICAgICAgICAgICAgIChub3QgKGVxIChmcmFtZS12aXNpYmxlLXAgZnJhbWUp IHQpKSkKIAkoc2V0cSBmcmFtZSAocHJldmlvdXMtZnJhbWUgZnJhbWUpKSkKICAgICAgIChz ZXRxIGFyZyAoMSsgYXJnKSkpCiAgICAgKHNlbGVjdC1mcmFtZS1zZXQtaW5wdXQtZm9jdXMg ZnJhbWUpKSkKQEAgLTE0ODMsNiArMTQ5Nyw1NiBAQCBmcmFtZS1tb25pdG9yLWF0dHJpYnV0 ZXMKIAkgICBmb3IgZnJhbWVzID0gKGNkciAoYXNzcSAnZnJhbWVzIGF0dHJpYnV0ZXMpKQog CSAgIGlmIChtZW1xIGZyYW1lIGZyYW1lcykgcmV0dXJuIGF0dHJpYnV0ZXMpKQoKKyhkZWNs YXJlLWZ1bmN0aW9uIHgtZnJhbWUtbGlzdC16LW9yZGVyICJ4Zm5zLmMiICgmb3B0aW9uYWwg ZGlzcGxheSkpCisoZGVjbGFyZS1mdW5jdGlvbiB3MzItZnJhbWUtbGlzdC16LW9yZGVyICJ3 MzJmbnMuYyIgKCZvcHRpb25hbCBkaXNwbGF5KSkKKworKGRlZnVuIGZyYW1lLWxpc3Qtei1v cmRlciAoJm9wdGlvbmFsIGRpc3BsYXkpCisgICJSZXR1cm4gbGlzdCBvZiBFbWFjcycgZnJh bWVzLCBpbiBaIChzdGFja2luZykgb3JkZXIuCitUaGUgb3B0aW9uYWwgYXJndW1lbnQgRElT UExBWSBzcGVjaWZpZXMgd2hpY2ggZGlzcGxheSB0byBwb2xsLgorRElTUExBWSBzaG91bGQg YmUgZWl0aGVyIGEgZnJhbWUgb3IgYSBkaXNwbGF5IG5hbWUgKGEgc3RyaW5nKS4KK0lmIG9t aXR0ZWQgb3IgbmlsLCB0aGF0IHN0YW5kcyBmb3IgdGhlIHNlbGVjdGVkIGZyYW1lJ3MgZGlz cGxheS4KKworRnJhbWVzIGFyZSBsaXN0ZWQgZnJvbSBib3R0b21tb3N0IChmaXJzdCkgdG8g dG9wbW9zdCAobGFzdCkuCitDaGlsZCBmcmFtZXMgYXBwZWFyIHJpZ2h0IGFmdGVyIHRoZWly IHBhcmVudCBmcmFtZS4gIFJldHVybiBuaWwKK2lmIERJU1BMQVkgY29udGFpbnMgbm8gRW1h Y3MgZnJhbWUuIgorICAobGV0ICgoZnJhbWUtdHlwZSAoZnJhbWVwLW9uLWRpc3BsYXkgZGlz cGxheSkpKQorICAgIChjb25kCisgICAgICgoZXEgZnJhbWUtdHlwZSAneCkKKyAgICAgICh4 LWZyYW1lLWxpc3Qtei1vcmRlciBkaXNwbGF5KSkKKyAgICAgKChlcSBmcmFtZS10eXBlICd3 MzIpCisgICAgICAodzMyLWZyYW1lLWxpc3Qtei1vcmRlciBkaXNwbGF5KSkpKSkKKworKGRl Y2xhcmUtZnVuY3Rpb24geC1mcmFtZS1yZXN0YWNrICJ4Zm5zLmMiIChmcmFtZTEgZnJhbWUy ICZvcHRpb25hbCBhYm92ZSkpCisoZGVjbGFyZS1mdW5jdGlvbiB3MzItZnJhbWUtcmVzdGFj ayAidzMyZm5zLmMiIChmcmFtZTEgZnJhbWUyICZvcHRpb25hbCBhYm92ZSkpCisKKyhkZWZ1 biBmcmFtZS1yZXN0YWNrIChmcmFtZTEgZnJhbWUyICZvcHRpb25hbCBhYm92ZSkKKyAgIlJl c3RhY2sgRlJBTUUxIGJlbG93IEZSQU1FMi4KK1RoaXMgaW1wbGllcyB0aGF0IGlmIGJvdGgg ZnJhbWVzIGFyZSB2aXNpYmxlIGFuZCB0aGUgZGlzcGxheQorYXJlYXMgb2YgdGhlc2UgZnJh bWVzIG92ZXJsYXAsIEZSQU1FMiB3aWxsIChwYXJ0aWFsbHkpIG9ic2N1cmUKK0ZSQU1FMS4g IElmIHRoZSBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBBQk9WRSBpcyBub24tbmlsLCByZXN0 YWNrCitGUkFNRTEgYWJvdmUgRlJBTUUyLiAgVGhpcyBtZWFucyB0aGF0IGlmIGJvdGggZnJh bWVzIGFyZSB2aXNpYmxlCithbmQgdGhlIGRpc3BsYXkgYXJlYXMgb2YgdGhlc2UgZnJhbWVz IG92ZXJsYXAsIEZSQU1FMSB3aWxsCitcKHBhcnRpYWxseSkgb2JzY3VyZSBGUkFNRTIuCisK K1RoaXMgbWF5IGJlIHRob3VnaHQgb2YgYXMgYW4gYXRvbWljIGFjdGlvbiBwZXJmb3JtZWQg aW4gdHdvCitzdGVwczogVGhlIGZpcnN0IHN0ZXAgcmVtb3ZlcyBGUkFNRTEncyB3aW5kb3ct c3lzdGVtIHdpbmRvdyBmcm9tCit0aGUgZGlzcGxheS4gIFRoZSBzZWNvbmQgc3RlcCByZWlu c2VydHMgRlJBTUUxJ3Mgd2luZG93CitiZWxvdyAoYWJvdmUgaWYgQUJPVkUgaXMgdHJ1ZSkg dGhhdCBvZiBGUkFNRTIuICBIZW5jZSB0aGUKK3Bvc2l0aW9uIG9mIEZSQU1FMiBpbiBpdHMg ZGlzcGxheSdzIFogXChzdGFja2luZykgb3JkZXIgcmVsYXRpdmUKK3RvIGFsbCBvdGhlciBm cmFtZXMgZXhjbHVkaW5nIEZSQU1FMSByZW1haW5zIHVuYWx0ZXJlZC4KKworU29tZSB3aW5k b3cgbWFuYWdlcnMgbWF5IHJlZnVzZSB0byByZXN0YWNrIHdpbmRvd3MuICIKKyAgKGlmIChh bmQgKGZyYW1lLWxpdmUtcCBmcmFtZTEpCisgICAgICAgICAgIChmcmFtZS1saXZlLXAgZnJh bWUyKQorICAgICAgICAgICAoZXF1YWwgKGZyYW1lLXBhcmFtZXRlciBmcmFtZTEgJ2Rpc3Bs YXkpCisgICAgICAgICAgICAgICAgICAoZnJhbWUtcGFyYW1ldGVyIGZyYW1lMiAnZGlzcGxh eSkpKQorICAgICAgKGxldCAoKGZyYW1lLXR5cGUgKGZyYW1lcC1vbi1kaXNwbGF5IGZyYW1l MSkpKQorICAgICAgICAoY29uZAorICAgICAgICAgKChlcSBmcmFtZS10eXBlICd4KQorICAg ICAgICAgICh4LWZyYW1lLXJlc3RhY2sgZnJhbWUxIGZyYW1lMiBhYm92ZSkpCisgICAgICAg ICAoKGVxIGZyYW1lLXR5cGUgJ3czMikKKyAgICAgICAgICAodzMyLWZyYW1lLXJlc3RhY2sg ZnJhbWUxIGZyYW1lMiBhYm92ZSkpKSkKKyAgICAoZXJyb3IgIkNhbm5vdCByZXN0YWNrIGZy YW1lcyIpKSkKIAwKIDs7OzsgRnJhbWUvZGlzcGxheSBjYXBhYmlsaXRpZXMuCgpAQCAtMTg3 Nyw4ICsxOTQxLDggQEAgZnJhbWUtZ2VvbS1zcGVjLWNvbnMKIChkZWZ1biBkZWxldGUtb3Ro ZXItZnJhbWVzICgmb3B0aW9uYWwgZnJhbWUpCiAgICJEZWxldGUgYWxsIGZyYW1lcyBvbiBG UkFNRSdzIHRlcm1pbmFsLCBleGNlcHQgRlJBTUUuCiBJZiBGUkFNRSB1c2VzIGFub3RoZXIg ZnJhbWUncyBtaW5pYnVmZmVyLCB0aGUgbWluaWJ1ZmZlciBmcmFtZSBpcwotbGVmdCB1bnRv dWNoZWQuICBGUkFNRSBtdXN0IGJlIGEgbGl2ZSBmcmFtZSBhbmQgZGVmYXVsdHMgdG8gdGhl Ci1zZWxlY3RlZCBvbmUuIgorbGVmdCB1bnRvdWNoZWQuICBEbyBub3QgZGVsZXRlIGFueSBv ZiBGUkFNRSdzIGNoaWxkIGZyYW1lcy4KK0ZSQU1FIG11c3QgYmUgYSBsaXZlIGZyYW1lIGFu ZCBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgb25lLiIKICAgKGludGVyYWN0aXZlKQogICAo c2V0cSBmcmFtZSAod2luZG93LW5vcm1hbGl6ZS1mcmFtZSBmcmFtZSkpCiAgIChsZXQgKCht aW5pYnVmZmVyLWZyYW1lICh3aW5kb3ctZnJhbWUgKG1pbmlidWZmZXItd2luZG93IGZyYW1l KSkpCkBAIC0xODg3LDE0ICsxOTUxLDE2IEBAIGRlbGV0ZS1vdGhlci1mcmFtZXMKICAgICA7 OyBJbiBhIGZpcnN0IHJvdW5kIGNvbnNpZGVyIG1pbmlidWZmZXItbGVzcyBmcmFtZXMgb25s eS4KICAgICAod2hpbGUgKG5vdCAoZXEgdGhpcyBmcmFtZSkpCiAgICAgICAoc2V0cSBuZXh0 IChuZXh0LWZyYW1lIHRoaXMgdCkpCi0gICAgICAodW5sZXNzIChlcSAod2luZG93LWZyYW1l IChtaW5pYnVmZmVyLXdpbmRvdyB0aGlzKSkgdGhpcykKKyAgICAgICh1bmxlc3MgKG9yIChl cSAod2luZG93LWZyYW1lIChtaW5pYnVmZmVyLXdpbmRvdyB0aGlzKSkgdGhpcykKKyAgICAg ICAgICAgICAgICAgIChlcSAoZnJhbWUtcGFyYW1ldGVyIHRoaXMgJ3BhcmVudC1mcmFtZSkg ZnJhbWUpKQogICAgICAgICAoZGVsZXRlLWZyYW1lIHRoaXMpKQogICAgICAgKHNldHEgdGhp cyBuZXh0KSkKICAgICA7OyBJbiBhIHNlY29uZCByb3VuZCBjb25zaWRlciBhbGwgcmVtYWlu aW5nIGZyYW1lcy4KICAgICAoc2V0cSB0aGlzIChuZXh0LWZyYW1lIGZyYW1lIHQpKQogICAg ICh3aGlsZSAobm90IChlcSB0aGlzIGZyYW1lKSkKICAgICAgIChzZXRxIG5leHQgKG5leHQt ZnJhbWUgdGhpcyB0KSkKLSAgICAgICh1bmxlc3MgKGVxIHRoaXMgbWluaWJ1ZmZlci1mcmFt ZSkKKyAgICAgICh1bmxlc3MgKG9yIChlcSB0aGlzIG1pbmlidWZmZXItZnJhbWUpCisgICAg ICAgICAgICAgICAgICAoZXEgKGZyYW1lLXBhcmFtZXRlciB0aGlzICdwYXJlbnQtZnJhbWUp IGZyYW1lKSkKICAgICAgICAgKGRlbGV0ZS1mcmFtZSB0aGlzKSkKICAgICAgIChzZXRxIHRo aXMgbmV4dCkpKSkKCmRpZmYgLS1naXQgYS9saXNwL213aGVlbC5lbCBiL2xpc3AvbXdoZWVs LmVsCmluZGV4IGVhZWI4MzEuLmVlODk0YjAgMTAwNjQ0Ci0tLSBhL2xpc3AvbXdoZWVsLmVs CisrKyBiL2xpc3AvbXdoZWVsLmVsCkBAIC0xOTAsMTcgKzE5MCwzOSBAQCBtd2hlZWwtc2Ny b2xsCiBUaGlzIHNob3VsZCBiZSBib3VuZCBvbmx5IHRvIG1vdXNlIGJ1dHRvbnMgNCBhbmQg NSBvbiBub24tV2luZG93cwogc3lzdGVtcy4iCiAgIChpbnRlcmFjdGl2ZSAobGlzdCBsYXN0 LWlucHV0LWV2ZW50KSkKLSAgKGxldCogKChjdXJ3aW4gKGlmIG1vdXNlLXdoZWVsLWZvbGxv dy1tb3VzZQotICAgICAgICAgICAgICAgICAgICAgKHByb2cxCi0gICAgICAgICAgICAgICAg ICAgICAgICAgKHNlbGVjdGVkLXdpbmRvdykKLSAgICAgICAgICAgICAgICAgICAgICAgKHNl bGVjdC13aW5kb3cgKG13aGVlbC1ldmVudC13aW5kb3cgZXZlbnQpKSkpKQotCSAoYnVmZmVy ICh3aW5kb3ctYnVmZmVyIGN1cndpbikpCi0JIChvcG9pbnQgKHdpdGgtY3VycmVudC1idWZm ZXIgYnVmZmVyCi0JCSAgICh3aGVuIChlcSAoY2FyLXNhZmUgdHJhbnNpZW50LW1hcmstbW9k ZSkgJ29ubHkpCi0JCSAgICAgKHBvaW50KSkpKQorICAobGV0KiAoKHNlbGVjdGVkLXdpbmRv dyAoc2VsZWN0ZWQtd2luZG93KSkKKyAgICAgICAgIChzY3JvbGwtd2luZG93CisgICAgICAg ICAgKG9yIChjYXRjaCAnZm91bmQKKyAgICAgICAgICAgICAgICAobGV0KiAoKHdpbmRvdyAo aWYgbW91c2Utd2hlZWwtZm9sbG93LW1vdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChtd2hlZWwtZXZlbnQtd2luZG93IGV2ZW50KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkLXdpbmRvdykpKQorICAgICAgICAgICAgICAg ICAgICAgICAoZnJhbWUgKHdoZW4gKHdpbmRvdy1saXZlLXAgd2luZG93KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZnJhbWUtcGFyYW1ldGVyCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAod2luZG93LWZyYW1lIHdpbmRvdykgJ21vdXNlLXdoZWVs LWZyYW1lKSkpKQorICAgICAgICAgICAgICAgICAgKHdoZW4gKGZyYW1lLWxpdmUtcCBmcmFt ZSkKKyAgICAgICAgICAgICAgICAgICAgKGxldCogKChwb3MgKG1vdXNlLWFic29sdXRlLXBp eGVsLXBvc2l0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb3MteCAoY2Fy IHBvcykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9zLXkgKGNkciBwb3MpKSkK KyAgICAgICAgICAgICAgICAgICAgICAod2Fsay13aW5kb3ctdHJlZQorICAgICAgICAgICAg ICAgICAgICAgICAobGFtYmRhICh3aW5kb3ctMSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAobGV0ICgoZWRnZXMgKHdpbmRvdy1lZGdlcyB3aW5kb3ctMSBuaWwgdCB0KSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoYW5kICg8PSAobnRoIDAgZWRnZXMpIHBv cy14KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPD0gcG9zLXgg KG50aCAyIGVkZ2VzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KDw9IChudGggMSBlZGdlcykgcG9zLXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICg8PSBwb3MteSAobnRoIDMgZWRnZXMpKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHRocm93ICdmb3VuZCB3aW5kb3ctMSkpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgZnJhbWUgbmlsIHQpKSkpKQorICAgICAgICAgICAgICAobXdoZWVsLWV2ZW50 LXdpbmRvdyBldmVudCkpKQorCSAob2xkLXBvaW50CisgICAgICAgICAgKGFuZCAoZXEgc2Ny b2xsLXdpbmRvdyBzZWxlY3RlZC13aW5kb3cpCisJICAgICAgIChlcSAoY2FyLXNhZmUgdHJh bnNpZW50LW1hcmstbW9kZSkgJ29ubHkpCisJICAgICAgICh3aW5kb3ctcG9pbnQpKSkKICAg ICAgICAgIChtb2RzCiAJICAoZGVscSAnY2xpY2sgKGRlbHEgJ2RvdWJsZSAoZGVscSAndHJp cGxlIChldmVudC1tb2RpZmllcnMgZXZlbnQpKSkpKQogICAgICAgICAgKGFtdCAoYXNzb2Mg bW9kcyBtb3VzZS13aGVlbC1zY3JvbGwtYW1vdW50KSkpCisgICAgKHVubGVzcyAoZXEgc2Ny b2xsLXdpbmRvdyBzZWxlY3RlZC13aW5kb3cpCisgICAgICA7OyBNYXJrIHdpbmRvdyB0byBi ZSBzY3JvbGxlZCBmb3IgcmVkaXNwbGF5LgorICAgICAgKHNlbGVjdC13aW5kb3cgc2Nyb2xs LXdpbmRvdyAnbWFyay1mb3ItcmVkaXNwbGF5KSkKICAgICA7OyBFeHRyYWN0IHRoZSBhY3R1 YWwgYW1vdW50IG9yIGZpbmQgdGhlIGVsZW1lbnQgdGhhdCBoYXMgbm8gbW9kaWZpZXJzLgog ICAgIChpZiBhbXQgKHNldHEgYW10IChjZHIgYW10KSkKICAgICAgIChsZXQgKChsaXN0LWVs dCBtb3VzZS13aGVlbC1zY3JvbGwtYW1vdW50KSkKQEAgLTIzMiwxOCArMjU0LDE4IEBAIG13 aGVlbC1zY3JvbGwKICAgICAgICAgICAgICAgICAgICA7OyBNYWtlIHN1cmUgd2UgZG8gaW5k ZWVkIHNjcm9sbCB0byB0aGUgZW5kIG9mIHRoZSBidWZmZXIuCiAgICAgICAgICAgICAgICAg ICAgKGVuZC1vZi1idWZmZXIgKHdoaWxlIHQgKGZ1bmNhbGwgbXdoZWVsLXNjcm9sbC11cC1m dW5jdGlvbikpKSkpCiAJCSh0IChlcnJvciAiQmFkIGJpbmRpbmcgaW4gbXdoZWVsLXNjcm9s bCIpKSkpCi0gICAgICAoaWYgY3Vyd2luIChzZWxlY3Qtd2luZG93IGN1cndpbikpKQotICAg IDs7IElmIHRoZXJlIGlzIGEgdGVtcG9yYXJpbHkgYWN0aXZlIHJlZ2lvbiwgZGVhY3RpdmF0 ZSBpdCBpZgotICAgIDs7IHNjcm9sbGluZyBtb3ZlcyBwb2ludC4KLSAgICAod2hlbiBvcG9p bnQKLSAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlcgotCSh3aGVuICgvPSBvcG9p bnQgKHBvaW50KSkKLQkgIDs7IENhbGwgYGRlYWN0aXZhdGUtbWFyaycgYXQgdGhlIG9yaWdp bmFsIHBvc2l0aW9uLCBzbyB0aGF0Ci0JICA7OyB0aGUgb3JpZ2luYWwgcmVnaW9uIGlzIHNh dmVkIHRvIHRoZSBYIHNlbGVjdGlvbi4KLQkgIChsZXQgKChuZXdwb2ludCAocG9pbnQpKSkK LQkgICAgKGdvdG8tY2hhciBvcG9pbnQpCi0JICAgIChkZWFjdGl2YXRlLW1hcmspCi0JICAg IChnb3RvLWNoYXIgbmV3cG9pbnQpKSkpKSkKKyAgICAgIChpZiAoZXEgc2Nyb2xsLXdpbmRv dyBzZWxlY3RlZC13aW5kb3cpCisJICA7OyBJZiB0aGVyZSBpcyBhIHRlbXBvcmFyaWx5IGFj dGl2ZSByZWdpb24sIGRlYWN0aXZhdGUgaXQgaWYKKwkgIDs7IHNjcm9sbGluZyBtb3ZlZCBw b2ludC4KKwkgICh3aGVuIChhbmQgb2xkLXBvaW50ICgvPSBvbGQtcG9pbnQgKHdpbmRvdy1w b2ludCkpKQorCSAgICA7OyBDYWxsIGBkZWFjdGl2YXRlLW1hcmsnIGF0IHRoZSBvcmlnaW5h bCBwb3NpdGlvbiwgc28gdGhhdAorCSAgICA7OyB0aGUgb3JpZ2luYWwgcmVnaW9uIGlzIHNh dmVkIHRvIHRoZSBYIHNlbGVjdGlvbi4KKwkgICAgKGxldCAoKG5ldy1wb2ludCAod2luZG93 LXBvaW50KSkpCisJICAgICAgKGdvdG8tY2hhciBvbGQtcG9pbnQpCisJICAgICAgKGRlYWN0 aXZhdGUtbWFyaykKKwkgICAgICAoZ290by1jaGFyIG5ldy1wb2ludCkpKQorCShzZWxlY3Qt d2luZG93IHNlbGVjdGVkLXdpbmRvdyB0KSkpKQorCiAgICh3aGVuIChhbmQgbW91c2Utd2hl ZWwtY2xpY2stZXZlbnQgbW91c2Utd2hlZWwtaW5oaWJpdC1jbGljay10aW1lKQogICAgIChp ZiBtd2hlZWwtaW5oaWJpdC1jbGljay1ldmVudC10aW1lcgogCShjYW5jZWwtdGltZXIgbXdo ZWVsLWluaGliaXQtY2xpY2stZXZlbnQtdGltZXIpCmRpZmYgLS1naXQgYS9saXNwL3Njcm9s bC1iYXIuZWwgYi9saXNwL3Njcm9sbC1iYXIuZWwKaW5kZXggNTI5MGE3Yi4uNTgzNTI3NCAx MDA2NDQKLS0tIGEvbGlzcC9zY3JvbGwtYmFyLmVsCisrKyBiL2xpc3Avc2Nyb2xsLWJhci5l bApAQCAtMjgxLDcgKzI4MSw3IEBAIHNjcm9sbC1iYXItZHJhZwogICAgICh3aXRoLWN1cnJl bnQtYnVmZmVyICh3aW5kb3ctYnVmZmVyIHdpbmRvdykKICAgICAgIChzZXRxIGJlZm9yZS1z Y3JvbGwgcG9pbnQtYmVmb3JlLXNjcm9sbCkpCiAgICAgKHNhdmUtc2VsZWN0ZWQtd2luZG93 Ci0gICAgICAoc2VsZWN0LXdpbmRvdyB3aW5kb3cpCisgICAgICAoc2VsZWN0LXdpbmRvdyB3 aW5kb3cgJ21hcmstZm9yLXJlZGlzcGxheSkKICAgICAgIChzZXRxIGJlZm9yZS1zY3JvbGwK IAkgICAgKG9yIGJlZm9yZS1zY3JvbGwgKHBvaW50KSkpKQogICAgIChzY3JvbGwtYmFyLWRy YWctMSBldmVudCkKQEAgLTMyNiw3ICszMjYsNyBAQCBzY3JvbGwtYmFyLWhvcml6b250YWwt ZHJhZwogICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyICh3aW5kb3ctYnVmZmVyIHdpbmRvdykK ICAgICAgIChzZXRxIGJlZm9yZS1zY3JvbGwgcG9pbnQtYmVmb3JlLXNjcm9sbCkpCiAgICAg KHNhdmUtc2VsZWN0ZWQtd2luZG93Ci0gICAgICAoc2VsZWN0LXdpbmRvdyB3aW5kb3cpCisg ICAgICAoc2VsZWN0LXdpbmRvdyB3aW5kb3cgJ21hcmstZm9yLXJlZGlzcGxheSkKICAgICAg IChzZXRxIGJlZm9yZS1zY3JvbGwKIAkgICAgKG9yIGJlZm9yZS1zY3JvbGwgKHBvaW50KSkp KQogICAgIChzY3JvbGwtYmFyLWhvcml6b250YWwtZHJhZy0xIGV2ZW50KQpAQCAtMzU2LDcg KzM1Niw3IEBAIHNjcm9sbC1iYXItc2Nyb2xsLWRvd24KICAgICAodW53aW5kLXByb3RlY3QK IAkoc2F2ZS1zZWxlY3RlZC13aW5kb3cKIAkgIChsZXQgKChwb3J0aW9uLXdob2xlIChudGgg MiBlbmQtcG9zaXRpb24pKSkKLQkgICAgKHNlbGVjdC13aW5kb3cgd2luZG93KQorCSAgICAo c2VsZWN0LXdpbmRvdyB3aW5kb3cgJ21hcmstZm9yLXJlZGlzcGxheSkKIAkgICAgKHNldHEg YmVmb3JlLXNjcm9sbAogCQkgIChvciBiZWZvcmUtc2Nyb2xsIChwb2ludCkpKQogCSAgICAo c2Nyb2xsLWRvd24KQEAgLTM3Nyw3ICszNzcsNyBAQCBzY3JvbGwtYmFyLXNjcm9sbC11cAog ICAgICh1bndpbmQtcHJvdGVjdAogCShzYXZlLXNlbGVjdGVkLXdpbmRvdwogCSAgKGxldCAo KHBvcnRpb24td2hvbGUgKG50aCAyIGVuZC1wb3NpdGlvbikpKQotCSAgICAoc2VsZWN0LXdp bmRvdyB3aW5kb3cpCisJICAgIChzZWxlY3Qtd2luZG93IHdpbmRvdyAnbWFyay1mb3ItcmVk aXNwbGF5KQogCSAgICAoc2V0cSBiZWZvcmUtc2Nyb2xsCiAJCSAgKG9yIGJlZm9yZS1zY3Jv bGwgKHBvaW50KSkpCiAJICAgIChzY3JvbGwtdXAKQEAgLTQwMiw3ICs0MDIsNyBAQCBzY3Jv bGwtYmFyLXRvb2xraXQtc2Nyb2xsCiAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAod2lu ZG93LWJ1ZmZlciB3aW5kb3cpCiAJKHNldHEgYmVmb3JlLXNjcm9sbCBwb2ludC1iZWZvcmUt c2Nyb2xsKSkKICAgICAgIChzYXZlLXNlbGVjdGVkLXdpbmRvdwotCShzZWxlY3Qtd2luZG93 IHdpbmRvdykKKwkoc2VsZWN0LXdpbmRvdyB3aW5kb3cgJ21hcmstZm9yLXJlZGlzcGxheSkK IAkoc2V0cSBiZWZvcmUtc2Nyb2xsIChvciBiZWZvcmUtc2Nyb2xsIChwb2ludCkpKQogCShj b25kCiAJICgoZXEgcGFydCAnYWJvdmUtaGFuZGxlKQpAQCAtNDQ5LDcgKzQ0OSw3IEBAIHNj cm9sbC1iYXItdG9vbGtpdC1ob3Jpem9udGFsLXNjcm9sbAogICAgICAgKHdpdGgtY3VycmVu dC1idWZmZXIgKHdpbmRvdy1idWZmZXIgd2luZG93KQogCShzZXRxIGJlZm9yZS1zY3JvbGwg cG9pbnQtYmVmb3JlLXNjcm9sbCkpCiAgICAgICAoc2F2ZS1zZWxlY3RlZC13aW5kb3cKLQko c2VsZWN0LXdpbmRvdyB3aW5kb3cpCisJKHNlbGVjdC13aW5kb3cgd2luZG93ICdtYXJrLWZv ci1yZWRpc3BsYXkpCiAJKHNldHEgYmVmb3JlLXNjcm9sbCAob3IgYmVmb3JlLXNjcm9sbCAo cG9pbnQpKSkKIAkoY29uZAogCSAoKGVxIHBhcnQgJ2JlZm9yZS1oYW5kbGUpCmRpZmYgLS1n aXQgYS9saXNwL3dpbmRvdy5lbCBiL2xpc3Avd2luZG93LmVsCmluZGV4IDM1OGQ3YmMuLjli MWZmM2EgMTAwNjQ0Ci0tLSBhL2xpc3Avd2luZG93LmVsCisrKyBiL2xpc3Avd2luZG93LmVs CkBAIC0xNTMzLDcgKzE1MzMsNyBAQCB3aW5kb3ctbWluLXNpemUKICAgICh3aW5kb3ctbm9y bWFsaXplLXdpbmRvdyB3aW5kb3cpIGhvcml6b250YWwgaWdub3JlIHBpeGVsd2lzZSkpCgog KGRlZnVuIHdpbmRvdy0tbWluLXNpemUtaWdub3JlLXAgKHdpbmRvdyBpZ25vcmUpCi0gICJS ZXR1cm4gbm9uLW5pbCBpZiBJR05PUkUgc2F5cyB0byBpZ25vcmUgaGVpZ2h0IHJlc3RyaWN0 aW9ucyBmb3IgV0lORE9XLiIKKyAgIlJldHVybiBub24tbmlsIGlmIElHTk9SRSBzYXlzIHRv IGlnbm9yZSBzaXplIHJlc3RyaWN0aW9ucyBmb3IgV0lORE9XLiIKICAgKGlmICh3aW5kb3ct dmFsaWQtcCBpZ25vcmUpCiAgICAgICAoZXEgd2luZG93IGlnbm9yZSkKICAgICAobm90ICht ZW1xIGlnbm9yZSAnKG5pbCBwcmVzZXJ2ZWQpKSkpKQpAQCAtODI3Miw2ICs4MjcyLDE2NSBA QCBzaHJpbmstd2luZG93LWlmLWxhcmdlci10aGFuLWJ1ZmZlcgogICAod2hlbiAoYW5kICh3 aW5kb3ctY29tYmluZWQtcCB3aW5kb3cpCiAJICAgICAocG9zLXZpc2libGUtaW4td2luZG93 LXAgKHBvaW50LW1pbikgd2luZG93KSkKICAgICAoZml0LXdpbmRvdy10by1idWZmZXIgd2lu ZG93ICh3aW5kb3ctdG90YWwtaGVpZ2h0IHdpbmRvdykpKSkKKworKGRlZnVuIHdpbmRvdy1s YXJnZXN0LWVtcHR5LXJlY3RhbmdsZS0tbWF4aW11bXMtMSAocXVhZCBtYXhpbXVtcykKKyAg KGNvbmQKKyAgICgobnVsbCBtYXhpbXVtcykKKyAgICAobGlzdCBxdWFkKSkKKyAgICgoPiAo Y2FyIHF1YWQpIChjYWFyIG1heGltdW1zKSkKKyAgICAoY29ucyBxdWFkIG1heGltdW1zKSkK KyAgICh0CisgICAgKGNvbnMgKGNhciBtYXhpbXVtcykKKwkgICh3aW5kb3ctbGFyZ2VzdC1l bXB0eS1yZWN0YW5nbGUtLW1heGltdW1zLTEgcXVhZCAoY2RyIG1heGltdW1zKSkpKSkpCisK KyhkZWZ1biB3aW5kb3ctbGFyZ2VzdC1lbXB0eS1yZWN0YW5nbGUtLW1heGltdW1zIChxdWFk IG1heGltdW1zIGNvdW50KQorICAoc2V0cSBtYXhpbXVtcyAod2luZG93LWxhcmdlc3QtZW1w dHktcmVjdGFuZ2xlLS1tYXhpbXVtcy0xIHF1YWQgbWF4aW11bXMpKQorICAoaWYgKD4gKGxl bmd0aCBtYXhpbXVtcykgY291bnQpCisgICAgICAobmJ1dGxhc3QgbWF4aW11bXMpCisgICAg bWF4aW11bXMpKQorCisoZGVmdW4gd2luZG93LWxhcmdlc3QtZW1wdHktcmVjdGFuZ2xlLS1k aXNqb2ludC1tYXhpbXVtcyAobWF4aW11bXMgY291bnQpCisgIChzZXRxIG1heGltdW1zIChz b3J0IG1heGltdW1zIChsYW1iZGEgKHggeSkgKD4gKGNhciB4KSAoY2FyIHkpKSkpKQorICAo bGV0ICgobmV3LWxlbmd0aCAwKQorCW5ldy1tYXhpbXVtcykKKyAgICAod2hpbGUgKGFuZCBt YXhpbXVtcyAoPCBuZXctbGVuZ3RoIGNvdW50KSkKKyAgICAgIChsZXQqICgobWF4aW11bSAo Y2FyIG1heGltdW1zKSkKKwkgICAgIChhdCAobnRoIDIgbWF4aW11bSkpCisJICAgICAodG8g KG50aCAzIG1heGltdW0pKSkKKwkoY2F0Y2ggJ2Ryb3AKKwkgIChkb2xpc3QgKG5ldy1tYXhp bXVtIG5ldy1tYXhpbXVtcykKKwkgICAgKGxldCAoKG5ldy1hdCAobnRoIDIgbmV3LW1heGlt dW0pKQorCQkgIChuZXctdG8gKG50aCAzIG5ldy1tYXhpbXVtKSkpCisJICAgICAgKHdoZW4g KGlmICg8IGF0IG5ldy1hdCkgKD4gdG8gbmV3LWF0KSAoPCBhdCBuZXctdG8pKQorCQk7OyBJ bnRlcnNlY3Rpb24gLT4gZHJvcC4KKwkJKHRocm93ICdkcm9wIG5pbCkpKSkKKwkgIChzZXRx IG5ldy1tYXhpbXVtcyAoY29ucyBtYXhpbXVtIG5ldy1tYXhpbXVtcykpCisJICAoc2V0cSBu ZXctbGVuZ3RoICgxKyBuZXctbGVuZ3RoKSkpCisJKHNldHEgbWF4aW11bXMgKGNkciBtYXhp bXVtcykpKSkKKworICAgIChucmV2ZXJzZSBuZXctbWF4aW11bXMpKSkKKworKGRlZnVuIHdp bmRvdy1sYXJnZXN0LWVtcHR5LXJlY3RhbmdsZSAoJm9wdGlvbmFsIHdpbmRvdyBjb3VudCBt aW4td2lkdGggbWluLWhlaWdodCBwb3NpdGlvbnMgbGVmdCkKKyAgIlJldHVybiBsYXJnZXN0 IGVtcHR5IHJlY3RhbmdsZSBpbiBXSU5ET1cuCitXSU5ET1cgbXVzdCBiZSBsaXZlIHdpbmRv dyBhbmQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4KKworVGhlIHJldHVybiB2YWx1 ZSBpcyBhIHRyaXBsZSBvZiB0aGUgd2lkdGggYW5kIHRoZSBzdGFydCBhbmQgZW5kCitZLWNv b3JkaW5hdGVzIG9mIHRoZSBsYXJnZXN0IHJlY3RhbmdsZSB0aGF0IGNhbiBiZSBpbnNjcmli ZWQgaW50bwordGhlIGVtcHR5IHNwYWNlICh0aGUgc3BhY2Ugbm90IGRpc3BsYXlpbmcgYW55 IHRleHQpIG9mIFdJTkRPVy4KK1RoZSByZXR1cm4gdmFsdWUgaXMgbmlsIGlmIHRoZSBjdXJy ZW50IGdseXBoIG1hdHJpeCBvZiBXSU5ET1cgaXMKK25vdCB1cC10by1kYXRlLgorCitPcHRp b25hbCBhcmd1bWVudCBDT1VOVCwgaWYgbm9uLW5pbCwgc3BlY2lmaWVzIHRoZSBtYXhpbXVt IG51bWJlcgorb2YgcmVjdGFuZ2xlcyB0byByZXR1cm4uICBUaGlzIG1lYW5zIHRoYXQgdGhl IHJldHVybiB2YWx1ZSBpcyBhCitsaXN0IG9mIHRyaXBsZXMgc3BlY2lmeWluZyByZWN0YW5n bGVzIHdpdGggdGhlIGxhcmdlc3QgcmVjdGFuZ2xlCitmaXJzdC4gIENPVU5UIGNhbiBiZSBh bHNvIGEgY29ucyBjZWxsIHdob3NlIGNhciBzcGVjaWZpZXMgdGhlCitudW1iZXIgb2YgcmVj dGFuZ2xlcyB0byByZXR1cm4gYW5kIHdob3NlIGNkciwgaWYgbm9uLW5pbCwgc3RhdGVzCit0 aGF0IGFsbCByZWN0YW5nbGVzIHJldHVybmVkIG11c3QgYmUgZGlzam9pbnQuCisKK05vdGUg dGhhdCB0aGUgcmlnaHQgZWRnZSBvZiBhbnkgcmVjdGFuZ2xlIHJldHVybmVkIGJ5IHRoaXMK K2Z1bmN0aW9uIGlzIHRoZSByaWdodCBlZGdlIG9mIFdJTkRPVyAodGhlIGxlZnQgZWRnZSBp ZiBpdHMgYnVmZmVyCitkaXNwbGF5cyBSVEwgdGV4dCkuCisKK09wdGlvbmFsIGFyZ3VtZW50 cyBNSU4tV0lEVEggYW5kIE1JTi1IRUlHSFQsIGlmIG5vbi1uaWwsIHNwZWNpZnkKK3RoZSBt aW5pbXVtIHdpZHRoIGFuZCBoZWlnaHQgb2YgYW55IHJlY3RhbmdsZSByZXR1cm5lZC4KKwor T3B0aW9uYWwgYXJndW1lbnQgUE9TSVRJT05TLCBpZiBub24tbmlsLCBpcyBhIGNvbnMgY2Vs bCB3aG9zZSBjYXIKK3NwZWNpZmllcyB0aGUgdXBwZXJtb3N0IGFuZCB3aG9zZSBjZHIgc3Bl Y2lmaWVzIHRoZSBsb3dlcm1vc3QKK3BpeGVsIHBvc2l0aW9uIHRoYXQgbXVzdCBiZSBjb3Zl cmVkIGJ5IGFueSByZWN0YW5nbGUgcmV0dXJuZWQuCitOb3RlIHRoYXQgcG9zaXRpb25zIGFy ZSBjb3VudGVkIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0IGFyZWEKK29mIFdJTkRPVy4K KworT3B0aW9uYWwgYXJndW1lbnQgTEVGVCwgaWYgbm9uLW5pbCwgbWVhbnMgdG8gcmV0dXJu IHZhbHVlcyBzdWl0YWJsZSBmb3IKK2J1ZmZlcnMgZGlzcGxheWluZyByaWdodCB0byBsZWZ0 IHRleHQuIgorICA7OyBQcm9jZXNzIGxpbmVzIGFzIHJldHVybmVkIGJ5IOKAmHdpbmRvdy1s aW5lcy1waXhlbC1kaW1lbnNpb25z4oCZLgorICA7OyBTVEFDSyBpcyBhIHN0YWNrIHRoYXQg Y29udGFpbnMgcm93cyB0aGF0IGhhdmUgdG8gYmUgcHJvY2Vzc2VkIHlldC4KKyAgKGxldCog KCh3aW5kb3cgKHdpbmRvdy1ub3JtYWxpemUtd2luZG93IHdpbmRvdyB0KSkKKwkgKGRpc2pv aW50IChhbmQgKGNvbnNwIGNvdW50KSAoY2RyIGNvdW50KSkpCisJIChjb3VudCAob3IgKGFu ZCAobnVtYmVycCBjb3VudCkgY291bnQpCisJCSAgICAoYW5kIChjb25zcCBjb3VudCkgKG51 bWJlcnAgKGNhciBjb3VudCkpIChjYXIgY291bnQpKSkpCisJIChyb3dzICh3aW5kb3ctbGlu ZXMtcGl4ZWwtZGltZW5zaW9ucyB3aW5kb3cgbmlsIG5pbCB0IHQgbGVmdCkpCisJIChyb3dz LWF0IDApCisJIChtYXgtc2l6ZSAwKQorCSByb3cgc3RhY2sgc3RhY2stYXQgc3RhY2stdG8K KwkgdG9wIHRvcC13aWR0aCB0b3AtYXQgdG9wLXRvIHRvcC1zaXplCisJIG1heC13aWR0aCBt YXgtYXQgbWF4LXRvIG1heGltdW1zKQorICAgIDs7IFJPV1MtQVQgaXMgdGhlIHBvc2l0aW9u IHdoZXJlIHRoZSBmaXJzdCBlbGVtZW50IG9mIFJPV1Mgc3RhcnRzLgorICAgIDs7IFNUQUNL LUFUIGlzIHRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgZmlyc3QgZWxlbWVudCBvZiBTVEFDSyBz dGFydHMuCisgICAgKHdoaWxlIHJvd3MKKyAgICAgIChzZXRxIHJvdyAoY2FyIHJvd3MpKQor ICAgICAgKGlmIChvciAobm90IHN0YWNrKSAoPj0gKGNhciByb3cpIChjYWFyIHN0YWNrKSkp CisJICAocHJvZ24KKwkgICAgKHVubGVzcyBzdGFjaworCSAgICAgIChzZXRxIHN0YWNrLWF0 IHJvd3MtYXQpKQorCSAgICAoc2V0cSBzdGFjayAoY29ucyByb3cgc3RhY2spKQorCSAgICA7 OyBTZXQgUk9XUy1BVCB0byB3aGVyZSB0aGUgZmlyc3QgZWxlbWVudCBvZiBST1dTIGVuZHMK KwkgICAgOzsgd2hpY2gsIGFmdGVyIHBvcHBpbmcgUk9XLCBtYWtlcyBpdCB0aGUgc3RhcnQg cG9zaXRpb24gb2YKKwkgICAgOzsgdGhlIG5leHQgUk9XLgorCSAgICAoc2V0cSByb3dzLWF0 IChjZHIgcm93KSkKKwkgICAgKHNldHEgcm93cyAoY2RyIHJvd3MpKSkKKwkoc2V0cSB0b3Ag KGNhciBzdGFjaykpCisJKHNldHEgc3RhY2sgKGNkciBzdGFjaykpCisJKHNldHEgdG9wLXdp ZHRoIChjYXIgdG9wKSkKKwkoc2V0cSB0b3AtYXQgKGlmIHN0YWNrIChjZGFyIHN0YWNrKSBz dGFjay1hdCkpCisJKHNldHEgdG9wLXRvIChjZHIgdG9wKSkKKwkoc2V0cSB0b3Atc2l6ZSAo KiB0b3Atd2lkdGggKC0gdG9wLXRvIHRvcC1hdCkpKQorCSh1bmxlc3MgKG9yIChhbmQgbWlu LXdpZHRoICg8IHRvcC13aWR0aCBtaW4td2lkdGgpKQorCQkgICAgKGFuZCBtaW4taGVpZ2h0 ICg8ICgtIHRvcC10byB0b3AtYXQpIG1pbi1oZWlnaHQpKQorCQkgICAgKGFuZCBwb3NpdGlv bnMKKwkJCSAob3IgKD4gdG9wLWF0IChjYXIgcG9zaXRpb25zKSkKKwkJCSAgICAgKDwgdG9w LXRvIChjZHIgcG9zaXRpb25zKSkpKSkKKwkgIChpZiBjb3VudAorCSAgICAgIChpZiBkaXNq b2ludAorCQkgIChzZXRxIG1heGltdW1zIChjb25zIChsaXN0IHRvcC1zaXplIHRvcC13aWR0 aCB0b3AtYXQgdG9wLXRvKQorCQkJCSAgICAgICBtYXhpbXVtcykpCisJCShzZXRxIG1heGlt dW1zICh3aW5kb3ctbGFyZ2VzdC1lbXB0eS1yZWN0YW5nbGUtLW1heGltdW1zCisJCQkJKGxp c3QgdG9wLXNpemUgdG9wLXdpZHRoIHRvcC1hdCB0b3AtdG8pCisJCQkJbWF4aW11bXMgY291 bnQpKSkKKwkgICAgKHdoZW4gKD4gdG9wLXNpemUgbWF4LXNpemUpCisJICAgICAgKHNldHEg bWF4LXNpemUgdG9wLXNpemUpCisJICAgICAgKHNldHEgbWF4LXdpZHRoIHRvcC13aWR0aCkK KwkgICAgICAoc2V0cSBtYXgtYXQgdG9wLWF0KQorCSAgICAgIChzZXRxIG1heC10byB0b3At dG8pKSkpCisJKGlmIChhbmQgc3RhY2sgKD4gKGNhYXIgc3RhY2spIChjYXIgcm93KSkpCisJ ICAgIDs7IEhhdmUgbmV3IHRvcCBlbGVtZW50IG9mIHN0YWNrIGluY2x1ZGUgb2xkIHRvcC4K KwkgICAgKHNldHEgc3RhY2sgKGNvbnMgKGNvbnMgKGNhYXIgc3RhY2spIChjZHIgdG9wKSkg KGNkciBzdGFjaykpKQorCSAgOzsgTW92ZSByb3dzLWF0IGJhY2t3YXJkcyB0byB0b3AtYXQu CisJICAoc2V0cSByb3dzLWF0IHRvcC1hdCkpKSkKKworICAgICh3aGVuIHN0YWNrCisgICAg ICA7OyBTVEFDSy1UTyBpcyB0aGUgcG9zaXRpb24gd2hlcmUgdGhlIHN0YWNrIGVuZHMuCisg ICAgICAoc2V0cSBzdGFjay10byAoY2RhciBzdGFjaykpCisgICAgICAod2hpbGUgc3RhY2sK Kwkoc2V0cSB0b3AgKGNhciBzdGFjaykpCisJKHNldHEgc3RhY2sgKGNkciBzdGFjaykpCisJ KHNldHEgdG9wLXdpZHRoIChjYXIgdG9wKSkKKwkoc2V0cSB0b3AtYXQgKGlmIHN0YWNrIChj ZGFyIHN0YWNrKSBzdGFjay1hdCkpCisJKHNldHEgdG9wLXNpemUgKCogdG9wLXdpZHRoICgt IHN0YWNrLXRvIHRvcC1hdCkpKQorCSh1bmxlc3MgKG9yIChhbmQgbWluLXdpZHRoICg8IHRv cC13aWR0aCBtaW4td2lkdGgpKQorCQkgICAgKGFuZCBtaW4taGVpZ2h0ICg8ICgtIHN0YWNr LXRvIHRvcC1hdCkgbWluLWhlaWdodCkpCisJCSAgICAoYW5kIHBvc2l0aW9ucworCQkJIChv ciAoPiB0b3AtYXQgKGNhciBwb3NpdGlvbnMpKQorCQkJICAgICAoPCBzdGFjay10byAoY2Ry IHBvc2l0aW9ucykpKSkpCisJICAoaWYgY291bnQKKwkgICAgICAoaWYgZGlzam9pbnQKKwkJ ICAoc2V0cSBtYXhpbXVtcyAoY29ucyAobGlzdCB0b3Atc2l6ZSB0b3Atd2lkdGggdG9wLWF0 IHN0YWNrLXRvKQorCQkJCSAgICAgICBtYXhpbXVtcykpCisJCShzZXRxIG1heGltdW1zICh3 aW5kb3ctbGFyZ2VzdC1lbXB0eS1yZWN0YW5nbGUtLW1heGltdW1zCisJCQkJKGxpc3QgdG9w LXNpemUgdG9wLXdpZHRoIHRvcC1hdCBzdGFjay10bykKKwkJCQltYXhpbXVtcyBjb3VudCkp KQorCSAgICAod2hlbiAoPiB0b3Atc2l6ZSBtYXgtc2l6ZSkKKwkgICAgICAoc2V0cSBtYXgt c2l6ZSB0b3Atc2l6ZSkKKwkgICAgICAoc2V0cSBtYXgtd2lkdGggdG9wLXdpZHRoKQorCSAg ICAgIChzZXRxIG1heC1hdCB0b3AtYXQpCisJICAgICAgKHNldHEgbWF4LXRvIHN0YWNrLXRv KSkpKSkpCisKKyAgICAoY29uZAorICAgICAobWF4aW11bXMKKyAgICAgIChpZiBkaXNqb2lu dAorCSAgKHdpbmRvdy1sYXJnZXN0LWVtcHR5LXJlY3RhbmdsZS0tZGlzam9pbnQtbWF4aW11 bXMgbWF4aW11bXMgY291bnQpCisJbWF4aW11bXMpKQorICAgICAoKD4gbWF4LXNpemUgMCkK KyAgICAgIChsaXN0IG1heC13aWR0aCBtYXgtYXQgbWF4LXRvIG1heC1zaXplKSkpKSkKIAwK IChkZWZ1biBraWxsLWJ1ZmZlci1hbmQtd2luZG93ICgpCiAgICJLaWxsIHRoZSBjdXJyZW50 IGJ1ZmZlciBhbmQgZGVsZXRlIHRoZSBzZWxlY3RlZCB3aW5kb3cuIgpAQCAtODc2NCw4ICs4 OTIzLDExIEBAIG1vdXNlLWF1dG9zZWxlY3Qtd2luZG93LXNlbGVjdAogCQkoZXF1YWwgKG1v dXNlLXBvc2l0aW9uKSBtb3VzZS1hdXRvc2VsZWN0LXdpbmRvdy1wb3NpdGlvbi0xKSkpCiAg ICAgICAgOzsgRGVsYXllZCBhdXRvc2VsZWN0aW9uIHdhcyB0ZW1wb3JhcmlseSBzdXNwZW5k ZWQsIHJlZW5hYmxlIGl0LgogICAgICAgIChtb3VzZS1hdXRvc2VsZWN0LXdpbmRvdy1zdGFy dCBtb3VzZS1wb3NpdGlvbikpCi0gICAgICAoKGFuZCB3aW5kb3cgKG5vdCAoZXEgd2luZG93 IChzZWxlY3RlZC13aW5kb3cpKSkKLQkgICAgKG9yIChub3QgKG51bWJlcnAgbW91c2UtYXV0 b3NlbGVjdC13aW5kb3cpKQorICAgICAgKChhbmQgd2luZG93CisJICAgIChvciAoYW5kIChu b3QgKG51bWJlcnAgbW91c2UtYXV0b3NlbGVjdC13aW5kb3cpKQorICAgICAgICAgICAgICAg ICAgICAgOzsgTW92ZWQgaGVyZSB0byBhbGxvdyBhdXRvc2VsZWN0aW9uIG9mIHdpbmRvdyBp bgorICAgICAgICAgICAgICAgICAgICAgOzsgY2hpbGQgZnJhbWVzLgorICAgICAgICAgICAg ICAgICAgICAgKG5vdCAoZXEgd2luZG93IChzZWxlY3RlZC13aW5kb3cpKSkpCiAJCShhbmQg KD49IG1vdXNlLWF1dG9zZWxlY3Qtd2luZG93IDApCiAJCSAgICAgOzsgSWYgYG1vdXNlLWF1 dG9zZWxlY3Qtd2luZG93JyBpcyBub24tbmVnYXRpdmUsCiAJCSAgICAgOzsgc2VsZWN0IHdp bmRvdyBpZiBpdCdzIHRoZSBzYW1lIGFzIGJlZm9yZS4KQEAgLTg3OTMsNyArODk1NSwxMSBA QCBtb3VzZS1hdXRvc2VsZWN0LXdpbmRvdy1zZWxlY3QKIAkgKHNldHEgdW5yZWFkLWNvbW1h bmQtZXZlbnRzCiAJICAgICAgIChjb25zIChsaXN0ICdzZWxlY3Qtd2luZG93IChsaXN0IHdp bmRvdykpCiAJCSAgICAgdW5yZWFkLWNvbW1hbmQtZXZlbnRzKSkpKQotICAgICAgKChvciAo YW5kIHdpbmRvdyAoZXEgd2luZG93IChzZWxlY3RlZC13aW5kb3cpKSkKKyAgICAgICgob3Ig KG5vdCB3aW5kb3cpCisgICAgICAgICAgIDs7IFRoZSBmb2xsb3dpbmcgd2FzIGNvbW1lbnRl ZCBvdXQgdG8gYWxsb3cgYXV0b3NlbGVjdGlvbiBvZgorICAgICAgICAgICA7OyBjaGlsZCB3 aW5kb3dzLgorCisgICAgICAgICAgIDs7ICAoYW5kIHdpbmRvdyAoZXEgd2luZG93IChzZWxl Y3RlZC13aW5kb3cpKSkKIAkgICAobm90IChudW1iZXJwIG1vdXNlLWF1dG9zZWxlY3Qtd2lu ZG93KSkKIAkgICAoZXF1YWwgbW91c2UtcG9zaXRpb24gbW91c2UtYXV0b3NlbGVjdC13aW5k b3ctcG9zaXRpb24pKQogICAgICAgIDs7IE1vdXNlIHBvc2l0aW9uIGhhcyBlaXRoZXIgc3Rh YmlsaXplZCBpbiB0aGUgc2VsZWN0ZWQgd2luZG93IG9yIGF0CkBAIC04ODA3LDkgKzg5NzMs MTMgQEAgbW91c2UtYXV0b3NlbGVjdC13aW5kb3ctc2VsZWN0CiAoZGVmdW4gaGFuZGxlLXNl bGVjdC13aW5kb3cgKGV2ZW50KQogICAiSGFuZGxlIHNlbGVjdC13aW5kb3cgZXZlbnRzLiIK ICAgKGludGVyYWN0aXZlICJeZSIpCi0gIChsZXQgKCh3aW5kb3cgKHBvc24td2luZG93IChl dmVudC1zdGFydCBldmVudCkpKSkKKyAgKGxldCogKCh3aW5kb3cgKHBvc24td2luZG93IChl dmVudC1zdGFydCBldmVudCkpKQorCSAoZnJhbWUgKHdpbmRvdy1mcmFtZSB3aW5kb3cpKSkK ICAgICAodW5sZXNzIChvciAobm90ICh3aW5kb3ctbGl2ZS1wIHdpbmRvdykpCi0JCTs7IERv bid0IHN3aXRjaCBpZiB3ZSdyZSBjdXJyZW50bHkgaW4gdGhlIG1pbmlidWZmZXIuCisgICAg ICAgICAgICAgICAgOzsgRG9uJ3Qgc3dpdGNoIHRvIGEgYG5vLWFjY2VwdC1mb2N1cycgZnJh bWUuCisgICAgICAgICAgICAgICAgKGFuZCAobm90IChlcSBmcmFtZSAoc2VsZWN0ZWQtZnJh bWUpKSkKKyAgICAgICAgICAgICAgICAgICAgIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ25v LWFjY2VwdC1mb2N1cykpCisgICAgICAgICAgICAgICAgOzsgRG9uJ3Qgc3dpdGNoIGlmIHdl J3JlIGN1cnJlbnRseSBpbiB0aGUgbWluaWJ1ZmZlci4KIAkJOzsgVGhpcyB0cmllcyB0byB3 b3JrIGFyb3VuZCBwcm9ibGVtcyB3aGVyZSB0aGUKIAkJOzsgbWluaWJ1ZmZlciBnZXRzIHVu c2VsZWN0ZWQgdW5leHBlY3RlZGx5LCBhbmQgd2hlcmUKIAkJOzsgeW91IHRoZW4gaGF2ZSB0 byBtb3ZlIHlvdXIgbW91c2UgYWxsIHRoZSB3YXkgZG93biB0bwpAQCAtODgzOCw2ICs5MDA4 LDExIEBAIGhhbmRsZS1zZWxlY3Qtd2luZG93CiAJKHJ1bi1ob29rcyAnbW91c2UtbGVhdmUt YnVmZmVyLWhvb2spKQogICAgICAgOzsgQ2xlYXIgZWNobyBhcmVhLgogICAgICAgKG1lc3Nh Z2UgbmlsKQorICAgICAgKHdoZW4gKGVxIGZvY3VzLWZvbGxvd3MtbW91c2UgJ2F1dG8tcmFp c2UpCisgICAgICAgIChyYWlzZS1mcmFtZSBmcmFtZSkpCisgICAgICA7OyBFbnN1cmUsIGlm IHBvc3NpYmxlLCB0aGF0IEZSQU1FIGdldHMgaW5wdXQgZm9jdXMuCisgICAgICAod2hlbiAo bWVtcSAod2luZG93LXN5c3RlbSBmcmFtZSkgJyh4IHczMiBucykpCisJKHgtZm9jdXMtZnJh bWUgZnJhbWUpKQogICAgICAgKHNlbGVjdC13aW5kb3cgd2luZG93KSkpKQoKIChkZWZ1biB0 cnVuY2F0ZWQtcGFydGlhbC13aWR0aC13aW5kb3ctcCAoJm9wdGlvbmFsIHdpbmRvdykKZGlm ZiAtLWdpdCBhL3NyYy9kaXNwZXh0ZXJuLmggYi9zcmMvZGlzcGV4dGVybi5oCmluZGV4IGUw MzA2MTguLjNmMzE2NmQgMTAwNjQ0Ci0tLSBhL3NyYy9kaXNwZXh0ZXJuLmgKKysrIGIvc3Jj L2Rpc3BleHRlcm4uaApAQCAtMTc4NCw2ICsxNzg0LDcgQEAgZW51bSBmYWNlX2lkCiAgIFdJ TkRPV19ESVZJREVSX0ZBQ0VfSUQsCiAgIFdJTkRPV19ESVZJREVSX0ZJUlNUX1BJWEVMX0ZB Q0VfSUQsCiAgIFdJTkRPV19ESVZJREVSX0xBU1RfUElYRUxfRkFDRV9JRCwKKyAgSU5URVJO QUxfQk9SREVSX0ZBQ0VfSUQsCiAgIEJBU0lDX0ZBQ0VfSURfU0VOVElORUwKIH07CgpkaWZm IC0tZ2l0IGEvc3JjL2ZyYW1lLmMgYi9zcmMvZnJhbWUuYwppbmRleCBkMGY2NTNmLi42N2Zj MWZmIDEwMDY0NAotLS0gYS9zcmMvZnJhbWUuYworKysgYi9zcmMvZnJhbWUuYwpAQCAtMzI0 LDExICszMjQsNTEgQEAgc3RydWN0IGZyYW1lICoKICAgcmV0dXJuIG1ha2VfbnVtYmVyICgw KTsKIH0KCisvKioKKyAqIGZyYW1lX3dpbmRvd3NfbWluX3NpemU6CisgKgorICogUmV0dXJu IHRoZSBtaW5pbXVtIG51bWJlciBvZiBsaW5lcyAoY29sdW1ucyBpZiBIT1JJWk9OVEFMIGlz IG5vbi1uaWwpCisgKiBvZiBGUkFNRS4gIElmIFBJWEVMV0lTRSBpcyBub24tbmlsLCByZXR1 cm4gdGhlIG1pbmltdW0gaGVpZ2h0ICh3aWR0aCkKKyAqIGluIHBpeGVscy4KKyAqCisgKiBU aGlzIHZhbHVlIGlzIGNhbGN1bGF0ZWQgYnkgdGhlIGZ1bmN0aW9uIGBmcmFtZS13aW5kb3dz LW1pbi1zaXplJyBpbgorICogd2luZG93LmVsIHVubGVzcyB0aGUgYG1pbi1oZWlnaHQnIChg bWluLXdpZHRoJyBpZiBIT1JJWk9OVEFMIGlzCisgKiBub24tbmlsKSBwYXJhbWV0ZXIgb2Yg RlJBTUUgaXMgbm9uLW5pbCB0aHVzIGV4cGxpY2l0bHkgc3BlY2lmeWluZyB0aGUKKyAqIHZh bHVlIHRvIGJlIHJldHVybmVkLiAgSW4gdGhhdCBsYXR0ZXIgY2FzZSBJR05PUkUgaXMgaWdu b3JlZC4KKyAqCisgKiBJZiBgZnJhbWUtd2luZG93cy1taW4tc2l6ZScgaXMgY2FsbGVkLCBp dCB3aWxsIG1ha2Ugc3VyZSB0aGF0IHRoZQorICogcmV0dXJuIHZhbHVlIGFjY29tb2RhdGVz IGFsbCB3aW5kb3dzIG9mIEZSQU1FIHJlc3BlY3RpbmcgdGhlIHZhbHVlcworICogb2YgYHdp bmRvdy1taW4taGVpZ2h0JyAoYHdpbmRvdy1taW4td2lkdGgnIGlmIEhPUklaT05UQUwgaXMg bm9uLW5pbCkuCisgKiBXaXRoIElHTk9SRSBub24tbmlsIHRoZSB2YWx1ZXMgb2YgdGhlc2Ug dmFyaWFibGVzIGFyZSBpZ25vcmVkLgorICoKKyAqIEluIGVpdGhlciBjYXNlIG5ldmVyIHJl dHVybiBhIHZhbHVlIGxlc3MgdGhhbiAxLgorICovCiBzdGF0aWMgaW50CiBmcmFtZV93aW5k b3dzX21pbl9zaXplIChMaXNwX09iamVjdCBmcmFtZSwgTGlzcF9PYmplY3QgaG9yaXpvbnRh bCwKIAkJCUxpc3BfT2JqZWN0IGlnbm9yZSwgTGlzcF9PYmplY3QgcGl4ZWx3aXNlKQogewot ICByZXR1cm4gWElOVCAoY2FsbDQgKFFmcmFtZV93aW5kb3dzX21pbl9zaXplLCBmcmFtZSwg aG9yaXpvbnRhbCwKKyAgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FIChmcmFtZSk7CisgIExp c3BfT2JqZWN0IHBhcl9zaXplOworCisgIGlmICgoIU5JTFAgKGhvcml6b250YWwpCisgICAg ICAgJiYgTlVNQkVSUCAocGFyX3NpemUgPSBnZXRfZnJhbWVfcGFyYW0gKGYsIFFtaW5fd2lk dGgpKSkKKyAgICAgIHx8IChOSUxQIChob3Jpem9udGFsKQorCSAgJiYgTlVNQkVSUCAocGFy X3NpemUgPSBnZXRfZnJhbWVfcGFyYW0gKGYsIFFtaW5faGVpZ2h0KSkpKQorICAgIHsKKyAg ICAgIGludCBtaW5fc2l6ZSA9IFhJTlQgKHBhcl9zaXplKTsKKworICAgICAgLyogRG9uJ3Qg YWxsb3cgcGhhbnRvbSBmcmFtZXMuICAqLworICAgICAgaWYgKG1pbl9zaXplIDwgMSkKKwlt aW5fc2l6ZSA9IDE7CisKKyAgICAgIHJldHVybiAoTklMUCAocGl4ZWx3aXNlKQorCSAgICAg ID8gbWluX3NpemUKKwkgICAgICA6IG1pbl9zaXplICogKE5JTFAgKGhvcml6b250YWwpCisJ CQkgICAgPyBGUkFNRV9MSU5FX0hFSUdIVCAoZikKKwkJCSAgICA6IEZSQU1FX0NPTFVNTl9X SURUSCAoZikpKTsKKyAgICB9CisgIGVsc2UKKyAgICByZXR1cm4gWElOVCAoY2FsbDQgKFFm cmFtZV93aW5kb3dzX21pbl9zaXplLCBmcmFtZSwgaG9yaXpvbnRhbCwKIAkJICAgICAgaWdu b3JlLCBwaXhlbHdpc2UpKTsKIH0KCkBAIC02NDMsNiArNjgzLDEzIEBAIHN0cnVjdCBmcmFt ZSAqCiAgIGYtPnZlcnRpY2FsX3Njcm9sbF9iYXJfdHlwZSA9IHZlcnRpY2FsX3Njcm9sbF9i YXJfbm9uZTsKICAgZi0+aG9yaXpvbnRhbF9zY3JvbGxfYmFycyA9IGZhbHNlOwogICBmLT53 YW50X2Z1bGxzY3JlZW4gPSBGVUxMU0NSRUVOX05PTkU7CisjaWYgISBkZWZpbmVkIChIQVZF X05TKQorICBmLT51bmRlY29yYXRlZCA9IGZhbHNlOworICBmLT5za2lwX3Rhc2tiYXIgPSBm YWxzZTsKKyAgZi0+bm9fZm9jdXNfb25fbWFwID0gZmFsc2U7CisgIGYtPm5vX2FjY2VwdF9m b2N1cyA9IGZhbHNlOworICBmLT56X2dyb3VwID0gel9ncm91cF9ub25lOworI2VuZGlmCiAj aWYgISBkZWZpbmVkIChVU0VfR1RLKSAmJiAhIGRlZmluZWQgKEhBVkVfTlMpCiAgIGYtPmxh c3RfdG9vbF9iYXJfaXRlbSA9IC0xOwogI2VuZGlmCkBAIC0xMjUzLDEyICsxMzAwLDE1IEBA IG9mIHRoZW0gKHRoZSBzZWxlY3RlZCB0ZXJtaW5hbCBmcmFtZSkgaXMgYWN0dWFsbHkgZGlz cGxheWVkLgogdG8gdGhhdCBmcmFtZS4gICovKQogICAoTGlzcF9PYmplY3QgZXZlbnQpCiB7 CisgIExpc3BfT2JqZWN0IHZhbHVlOworCiAgIC8qIFByZXNlcnZlIHByZWZpeCBhcmcgdGhh dCB0aGUgY29tbWFuZCBsb29wIGp1c3QgY2xlYXJlZC4gICovCiAgIGtzZXRfcHJlZml4X2Fy ZyAoY3VycmVudF9rYm9hcmQsIFZjdXJyZW50X3ByZWZpeF9hcmcpOwogICBydW5faG9vayAo UW1vdXNlX2xlYXZlX2J1ZmZlcl9ob29rKTsKICAgLyogYHN3aXRjaC1mcmFtZScgaW1wbGll cyBhIGZvY3VzIGluLiAgKi8KKyAgdmFsdWUgPSBkb19zd2l0Y2hfZnJhbWUgKGV2ZW50LCAw LCAwLCBRbmlsKTsKICAgY2FsbDEgKGludGVybiAoImhhbmRsZS1mb2N1cy1pbiIpLCBldmVu dCk7Ci0gIHJldHVybiBkb19zd2l0Y2hfZnJhbWUgKGV2ZW50LCAwLCAwLCBRbmlsKTsKKyAg cmV0dXJuIHZhbHVlOwogfQoKIERFRlVOICgic2VsZWN0ZWQtZnJhbWUiLCBGc2VsZWN0ZWRf ZnJhbWUsIFNzZWxlY3RlZF9mcmFtZSwgMCwgMCwgMCwKQEAgLTEyNzAsMTYgKzEzMjAsNDgg QEAgb2YgdGhlbSAodGhlIHNlbGVjdGVkIHRlcm1pbmFsIGZyYW1lKSBpcyBhY3R1YWxseSBk aXNwbGF5ZWQuCiAMCiBERUZVTiAoImZyYW1lLWxpc3QiLCBGZnJhbWVfbGlzdCwgU2ZyYW1l X2xpc3QsCiAgICAgICAgMCwgMCwgMCwKLSAgICAgICBkb2M6IC8qIFJldHVybiBhIGxpc3Qg b2YgYWxsIGxpdmUgZnJhbWVzLiAgKi8pCisgICAgICAgZG9jOiAvKiBSZXR1cm4gYSBsaXN0 IG9mIGFsbCBsaXZlIGZyYW1lcy4KK0NoaWxkIGZyYW1lcyBhcmUgbm90IGluY2x1ZGVkLiAg Ki8pCiAgICh2b2lkKQogewotICBMaXNwX09iamVjdCBmcmFtZXM7Ci0gIGZyYW1lcyA9IEZj b3B5X3NlcXVlbmNlIChWZnJhbWVfbGlzdCk7CiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVN Ci0gIGlmIChGUkFNRVAgKHRpcF9mcmFtZSkpCi0gICAgZnJhbWVzID0gRmRlbHEgKHRpcF9m cmFtZSwgZnJhbWVzKTsKKyAgTGlzcF9PYmplY3QgbGlzdCA9IFFuaWwsIGZyYW1lcywgZnJh bWU7CisgIHN0cnVjdCBmcmFtZSAqZjsKKworICBGT1JfRUFDSF9GUkFNRSAoZnJhbWVzLCBm cmFtZSkKKyAgICB7CisgICAgICBmID0gWEZSQU1FIChmcmFtZSk7CisgICAgICBpZiAoIUZS QU1FX1BBUkVOVF9GUkFNRSAoZikKKwkgICYmIE5JTFAgKEZmcmFtZV9wYXJhbWV0ZXIgKGZy YW1lLCBRdG9vbHRpcCkpKQorCWxpc3QgPSBGY29ucyAoZnJhbWUsIGxpc3QpOworICAgIH0K KyAgLyogZnJhbWUtbGlzdCBhbHdheXMgcmV0dXJuZWQgZnJhbWVzIGluIHJldmVyc2UgY2hy b25vbG9naWNhbCBvcmRlciwKKyAgICAgaS5lLiwgd2l0aCB0aGUgbW9zdCByZWNlbnRseSBj cmVhdGVkIGZyYW1lIGZpcnN0LiAgS2VlcCB0aGF0LiAgKi8KKyAgcmV0dXJuIEZucmV2ZXJz ZSAobGlzdCk7CisjZWxzZSAvKiAhSEFWRV9XSU5ET1dfU1lTVEVNICovCisgIHJldHVybiBG Y29weV9zZXF1ZW5jZSAoVmZyYW1lX2xpc3QpOwogI2VuZGlmCi0gIHJldHVybiBmcmFtZXM7 Cit9CisKK0RFRlVOICgiZnJhbWUtY2hpbGQtZnJhbWVzIiwgRmZyYW1lX2NoaWxkX2ZyYW1l cywgU2ZyYW1lX2NoaWxkX2ZyYW1lcywKKyAgICAgICAwLCAxLCAwLAorICAgICAgIGRvYzog LyogUmV0dXJuIGEgbGlzdCBvZiBhbGwgY2hpbGQgZnJhbWVzIG9mIHRoZSBzcGVjaWZpZWQg RlJBTUUuCitGUkFNRSBuaWwgb3Igb21pdHRlZCBtZWFucyB0aGUgc2VsZWN0ZWQgZnJhbWUu ICAqLykKKyAgKExpc3BfT2JqZWN0IGZyYW1lKQoreworI2lmIGRlZmluZWQgKEhBVkVfV0lO RE9XX1NZU1RFTSkgJiYgIWRlZmluZWQgKEhBVkVfTlMpCisgIHN0cnVjdCBmcmFtZSAqZiA9 IGRlY29kZV9hbnlfZnJhbWUgKGZyYW1lKTsKKworICBYU0VURlJBTUUgKGZyYW1lLCBmKTsK KyAgTGlzcF9PYmplY3QgbGlzdCA9IFFuaWwsIGZyYW1lcywgZnJhbWUxOworCisgIEZPUl9F QUNIX0ZSQU1FIChmcmFtZXMsIGZyYW1lMSkKKyAgICBpZiAoRlJBTUVfUEFSRU5UX0ZSQU1F IChYRlJBTUUgKGZyYW1lMSkpID09IGYpCisgICAgICBsaXN0ID0gRmNvbnMgKGZyYW1lMSwg bGlzdCk7CisgIHJldHVybiBGbnJldmVyc2UgKGxpc3QpOworI2Vsc2UgLyogIUhBVkVfV0lO RE9XX1NZU1RFTSBvciBIQVZFX05TICovCisgIHJldHVybiBRbmlsOworI2VuZGlmIC8qIEhB VkVfV0lORE9XX1NZU1RFTSBhbmQgbm90IEhBVkVfTlMgKi8KIH0KCiAvKiBSZXR1cm4gQ0FO RElEQVRFIGlmIGl0IGNhbiBiZSB1c2VkIGFzICdvdGhlci10aGFuLUZSQU1FJyBmcmFtZSBv biB0aGUKQEAgLTEzMDIsNyArMTM4NCw5IEBAIG9mIHRoZW0gKHRoZSBzZWxlY3RlZCB0ZXJt aW5hbCBmcmFtZSkgaXMgYWN0dWFsbHkgZGlzcGxheWVkLgogICAgICAgfHwgKEZSQU1FX1RF Uk1DQVBfUCAoYykgJiYgRlJBTUVfVEVSTUNBUF9QIChmKQogCSAgJiYgRlJBTUVfVFRZIChj KSA9PSBGUkFNRV9UVFkgKGYpKSkKICAgICB7Ci0gICAgICBpZiAoTklMUCAobWluaWJ1Zikp CisgICAgICBpZiAoIU5JTFAgKGdldF9mcmFtZV9wYXJhbSAoYywgUW5vX290aGVyX2ZyYW1l KSkpCisJcmV0dXJuIFFuaWw7CisgICAgICBlbHNlIGlmIChOSUxQIChtaW5pYnVmKSkKIAl7 CiAJICBpZiAoIUZSQU1FX01JTklCVUZfT05MWV9QIChjKSkKIAkgICAgcmV0dXJuIGNhbmRp ZGF0ZTsKQEAgLTE0NDAsMzUgKzE1MjQsNjUgQEAgb2YgdGhlbSAodGhlIHNlbGVjdGVkIHRl cm1pbmFsIGZyYW1lKSBpcyBhY3R1YWxseSBkaXNwbGF5ZWQuCiAgIHJldHVybiBmcmFtZTsK IH0KIAwKLS8qIFJldHVybiAxIGlmIGl0IGlzIG9rIHRvIGRlbGV0ZSBmcmFtZSBGOwotICAg MCBpZiBhbGwgZnJhbWVzIGFzaWRlIGZyb20gRiBhcmUgaW52aXNpYmxlLgotICAgKEV4Y2Vw dGlvbjogaWYgRiBpcyB0aGUgdGVybWluYWwgZnJhbWUsIGFuZCB3ZSBhcmUgdXNpbmcgWCwg cmV0dXJuIDEuKSAgKi8KKy8qKgorICogb3RoZXJfZnJhbWVzOgorICoKKyAqIFJldHVybiB0 cnVlIGlmIHRoZXJlIGV4aXN0cyBhdCBsZWFzdCBvbmUgdmlzaWJsZSBvciBpY29uaWZpZWQg ZnJhbWUKKyAqIGJ1dCBGLiAgUmV0dXJuIGZhbHNlIG90aGVyd2lzZS4KKyAqCisgKiBBbHdh eXMgcmV0dXJuIGZhbHNlIHdoZW4gYWxsIHJlbWFpbmluZyBmcmFtZXMgYXJlIGVpdGhlciB0 b29sdGlwIG9yCisgKiBjaGlsZCBmcmFtZXMgb3IgZnJhbWVzIHdpdGggYSBub24tbmlsIGBk ZWxldGUtYmVmb3JlJyBwYXJhbWV0ZXIuICBJZgorICogSU5WSVNJQkxFIGlzIGZhbHNlLCBh bHNvIHJldHVybiBmYWxzZSB3aGVuIHRoZSBtaW5pYnVmZmVyIHdpbmRvdyBvZgorICogYWxs IHJlbWFpbmluZyBmcmFtZXMgaXMgb24gRi4KKworICogSWYgRiBpcyB0aGUgdGVybWluYWwg ZnJhbWUgYW5kIHdlIGFyZSB1c2luZyBYLCByZXR1cm4gdHJ1ZSBpZiBhdAorICogbGVhc3Qg b25lIFggZnJhbWUgZXhpc3RzLiAgKi8KK3N0YXRpYyBib29sCitvdGhlcl9mcmFtZXMgKHN0 cnVjdCBmcmFtZSAqZiwgYm9vbCBpbnZpc2libGUpCit7CisgIExpc3BfT2JqZWN0IGZyYW1l cywgZnJhbWUsIGZyYW1lMTsKKyAgc3RydWN0IGZyYW1lICpmMTsKKyAgTGlzcF9PYmplY3Qg bWluaWJ1ZmZlcl93aW5kb3cgPSBGUkFNRV9NSU5JQlVGX1dJTkRPVyAoZik7Cgotc3RhdGlj IGludAotb3RoZXJfdmlzaWJsZV9mcmFtZXMgKHN0cnVjdCBmcmFtZSAqZikKLXsKLSAgTGlz cF9PYmplY3QgZnJhbWVzLCB0aGlzOworICBYU0VURlJBTUUgKGZyYW1lLCBmKTsKKyAgaWYg KFdJTkRPV1AgKG1pbmlidWZmZXJfd2luZG93KQorICAgICAgJiYgIUVRIChmcmFtZSwgV0lO RE9XX0ZSQU1FIChYV0lORE9XIChtaW5pYnVmZmVyX3dpbmRvdykpKSkKKyAgICBtaW5pYnVm ZmVyX3dpbmRvdyA9IFFuaWw7CgotICBGT1JfRUFDSF9GUkFNRSAoZnJhbWVzLCB0aGlzKQor ICBGT1JfRUFDSF9GUkFNRSAoZnJhbWVzLCBmcmFtZTEpCiAgICAgewotICAgICAgaWYgKGYg PT0gWEZSQU1FICh0aGlzKSkKLQljb250aW51ZTsKLQotICAgICAgLyogVmVyaWZ5IHRoYXQg d2UgY2FuIHN0aWxsIHRhbGsgdG8gdGhlIGZyYW1lJ3MgWCB3aW5kb3csCi0JIGFuZCBub3Rl IGFueSByZWNlbnQgY2hhbmdlIGluIHZpc2liaWxpdHkuICAqLworICAgICAgZjEgPSBYRlJB TUUgKGZyYW1lMSk7CisgICAgICBpZiAoZiAhPSBmMSkKKwl7CisJICAvKiBWZXJpZnkgdGhh dCB3ZSBjYW4gc3RpbGwgdGFsayB0byB0aGUgZnJhbWUncyBYIHdpbmRvdywgYW5kCisJICAg ICBub3RlIGFueSByZWNlbnQgY2hhbmdlIGluIHZpc2liaWxpdHkuICAqLwogI2lmZGVmIEhB VkVfWF9XSU5ET1dTCi0gICAgICBpZiAoRlJBTUVfV0lORE9XX1AgKFhGUkFNRSAodGhpcykp KQotCXhfc3luYyAoWEZSQU1FICh0aGlzKSk7CisJICBpZiAoRlJBTUVfV0lORE9XX1AgKGYx KSkKKwkgICAgeF9zeW5jIChmMSk7CiAjZW5kaWYKLQotICAgICAgaWYgKEZSQU1FX1ZJU0lC TEVfUCAoWEZSQU1FICh0aGlzKSkKLQkgIHx8IEZSQU1FX0lDT05JRklFRF9QIChYRlJBTUUg KHRoaXMpKQotCSAgLyogQWxsb3cgZGVsZXRpbmcgdGhlIHRlcm1pbmFsIGZyYW1lIHdoZW4g YXQgbGVhc3Qgb25lIFgKLQkgICAgIGZyYW1lIGV4aXN0cy4gICovCi0JICB8fCAoRlJBTUVf V0lORE9XX1AgKFhGUkFNRSAodGhpcykpICYmICFGUkFNRV9XSU5ET1dfUCAoZikpKQotCXJl dHVybiAxOworCSAgaWYgKE5JTFAgKEZmcmFtZV9wYXJhbWV0ZXIgKGZyYW1lMSwgUXRvb2x0 aXApKQorCSAgICAgIC8qIFRvb2x0aXBzIGFuZCBjaGlsZCBmcmFtZXMgZG9uJ3QgY291bnQu ICAqLworCSAgICAgICYmICFGUkFNRV9QQVJFTlRfRlJBTUUgKGYxKQorCSAgICAgIC8qIEZy YW1lcyB3aXRoIGEgbm9uLW5pbCBgZGVsZXRlLWJlZm9yZScgcGFyYW1ldGVyIGRvbid0CisJ CSBjb3VudCAtIGVpdGhlciB0aGV5IGRlcGVuZCBvbiB1cyBvciB0aGV5IGRlcGVuZCBvbiBh CisJCSBmcmFtZSB0aGF0IHdlIHdpbGwgaGF2ZSB0byBmaW5kIHJpZ2h0IGhlcmUuICAqLwor CSAgICAgICYmIE5JTFAgKGdldF9mcmFtZV9wYXJhbSAoZjEsIFFkZWxldGVfYmVmb3JlKSkK KwkgICAgICAvKiBGcmFtZXMgd2hvc2UgbWluaWJ1ZmZlciB3aW5kb3cgaXMgb24gRiBkb24n dCBjb3VudAorCQkgdW5sZXNzIElOVklTSUJMRSBpcyBzZXQgLSBpbiB0aGF0IGNhc2UgRiBp cyBlaXRoZXIgbWFkZQorCQkgaW52aXNpYmxlIGFuZCBtYXkgYmUgYXV0b3JhaXNlZCBmcm9t IHN1Y2ggYSBmcmFtZSBvcgorCQkgdGhlIEZPUkNFIGFyZ3VtZW50IG9mIGRlbGV0ZV9mcmFt ZSB3YXMgbm9uLW5pbC4gICovCisJICAgICAgJiYgKGludmlzaWJsZSB8fCBOSUxQIChtaW5p YnVmZmVyX3dpbmRvdykKKwkJICB8fCAhRVEgKEZSQU1FX01JTklCVUZfV0lORE9XIChmMSks IG1pbmlidWZmZXJfd2luZG93KSkKKwkgICAgICAvKiBBdCBsZWFzdCBvbmUgdmlzaWJsZS9p Y29uaWZpZWQgZnJhbWUgbXVzdCByZW1haW4uICAqLworCSAgICAgICYmIChGUkFNRV9WSVNJ QkxFX1AgKGYxKSB8fCBGUkFNRV9JQ09OSUZJRURfUCAoZjEpCisJCSAgLyogQWxsb3cgZGVs ZXRpbmcgdGhlIHRlcm1pbmFsIGZyYW1lIHdoZW4gYXQgbGVhc3Qgb25lCisJCSAgICAgWCBm cmFtZSBleGlzdHMuICAqLworCQkgIHx8IChGUkFNRV9XSU5ET1dfUCAoZjEpICYmICFGUkFN RV9XSU5ET1dfUCAoZikpKSkKKwkgICAgcmV0dXJuIHRydWU7CisJfQogICAgIH0KLSAgcmV0 dXJuIDA7CisKKyAgcmV0dXJuIGZhbHNlOwogfQoKIC8qIE1ha2Ugc3VyZSB0aGF0IG1pbmli dWZfd2luZG93IGRvZXNuJ3QgcmVmZXIgdG8gRlJBTUUncyBtaW5pYnVmZmVyCkBAIC0xNTE3 LDUzICsxNjMxLDY1IEBAIG9mIHRoZW0gKHRoZSBzZWxlY3RlZCB0ZXJtaW5hbCBmcmFtZSkg aXMgYWN0dWFsbHkgZGlzcGxheWVkLgogfQoKCi0vKiBEZWxldGUgRlJBTUUuICBXaGVuIEZP UkNFIGVxdWFscyBRbm9lbGlzcCwgZGVsZXRlIEZSQU1FCi0gIHVuY29uZGl0aW9uYWxseS4g IHhfY29ubmVjdGlvbl9jbG9zZWQgYW5kIGRlbGV0ZV90ZXJtaW5hbCB1c2UKLSAgdGhpcy4g IEFueSBvdGhlciB2YWx1ZSBvZiBGT1JDRSBpbXBsZW1lbnRzIHRoZSBzZW1hbnRpY3MKLSAg ZGVzY3JpYmVkIGZvciBGZGVsZXRlX2ZyYW1lLiAgKi8KKy8qKgorICogZGVsZXRlX2ZyYW1l OgorICoKKyAqIERlbGV0ZSBGUkFNRS4gIFdoZW4gRk9SQ0UgZXF1YWxzIFFub2VsaXNwLCBk ZWxldGUgRlJBTUUKKyAqIHVuY29uZGl0aW9uYWxseS4gIHhfY29ubmVjdGlvbl9jbG9zZWQg YW5kIGRlbGV0ZV90ZXJtaW5hbCB1c2UgdGhpcy4KKyAqIEFueSBvdGhlciB2YWx1ZSBvZiBG T1JDRSBpbXBsZW1lbnRzIHRoZSBzZW1hbnRpY3MgZGVzY3JpYmVkIGZvcgorICogRmRlbGV0 ZV9mcmFtZS4gICovCiBMaXNwX09iamVjdAogZGVsZXRlX2ZyYW1lIChMaXNwX09iamVjdCBm cmFtZSwgTGlzcF9PYmplY3QgZm9yY2UpCiB7CiAgIHN0cnVjdCBmcmFtZSAqZiA9IGRlY29k ZV9hbnlfZnJhbWUgKGZyYW1lKTsKICAgc3RydWN0IGZyYW1lICpzZjsKICAgc3RydWN0IGti b2FyZCAqa2I7Ci0KKyAgTGlzcF9PYmplY3QgZnJhbWVzLCBmcmFtZTE7CiAgIGludCBtaW5p YnVmZmVyX3NlbGVjdGVkLCBpc190b29sdGlwX2ZyYW1lOworICBib29sIG5vY2hpbGQgPSAh RlJBTUVfUEFSRU5UX0ZSQU1FIChmKTsKCi0gIGlmICghIEZSQU1FX0xJVkVfUCAoZikpCisg IGlmICghRlJBTUVfTElWRV9QIChmKSkKICAgICByZXR1cm4gUW5pbDsKLQotICBpZiAoTklM UCAoZm9yY2UpICYmICFvdGhlcl92aXNpYmxlX2ZyYW1lcyAoZikpCi0gICAgZXJyb3IgKCJB dHRlbXB0IHRvIGRlbGV0ZSB0aGUgc29sZSB2aXNpYmxlIG9yIGljb25pZmllZCBmcmFtZSIp OwotCi0gIC8qIHhfY29ubmVjdGlvbl9jbG9zZWQgbXVzdCBoYXZlIHNldCBGT1JDRSB0byBg bm9lbGlzcCcgaW4gb3JkZXIKLSAgICAgdG8gZGVsZXRlIHRoZSBsYXN0IGZyYW1lLCBpZiBp dCBpcyBnb25lLiAgKi8KLSAgaWYgKE5JTFAgKFhDRFIgKFZmcmFtZV9saXN0KSkgJiYgIUVR IChmb3JjZSwgUW5vZWxpc3ApKQotICAgIGVycm9yICgiQXR0ZW1wdCB0byBkZWxldGUgdGhl IG9ubHkgZnJhbWUiKTsKKyAgZWxzZSBpZiAoIUVRIChmb3JjZSwgUW5vZWxpc3ApICYmICFv dGhlcl9mcmFtZXMgKGYsICFOSUxQIChmb3JjZSkpKQorICAgIHsKKyAgICAgIGlmIChOSUxQ IChmb3JjZSkpCisJZXJyb3IgKCJBdHRlbXB0IHRvIGRlbGV0ZSB0aGUgc29sZSB2aXNpYmxl IG9yIGljb25pZmllZCBmcmFtZSIpOworICAgICAgZWxzZQorCWVycm9yICgiQXR0ZW1wdCB0 byBkZWxldGUgdGhlIG9ubHkgZnJhbWUiKTsKKyAgICB9CgogICBYU0VURlJBTUUgKGZyYW1l LCBmKTsKCisgIC8qIFNvZnRseSBkZWxldGUgYWxsIGZyYW1lcyB3aXRoIHRoaXMgZnJhbWUg YXMgdGhlaXIgcGFyZW50IGZyYW1lIG9yCisgICAgIGFzIHRoZWlyIGBkZWxldGUtYmVmb3Jl JyBmcmFtZSBwYXJhbWV0ZXIgdmFsdWUuICAqLworICBGT1JfRUFDSF9GUkFNRSAoZnJhbWVz LCBmcmFtZTEpCisgICAgaWYgKEZSQU1FX1BBUkVOVF9GUkFNRSAoWEZSQU1FIChmcmFtZTEp KSA9PSBmCisJLyogUHJvY2VzcyBgZGVsZXRlLWJlZm9yZScgcGFyYW1ldGVyIGlmZiBGUkFN RSBpcyBub3QgYSBjaGlsZAorCSAgIGZyYW1lLiAgVGhpcyBhdm9pZHMgdGhhdCB3ZSBlbnRl ciBhbiBpbmZpbml0ZSBjaGFpbiBvZiBtaXhlZAorCSAgIGRlcGVuZGVuY2llcy4gICovCisJ fHwgKG5vY2hpbGQKKwkgICAgJiYgRVEgKGdldF9mcmFtZV9wYXJhbSAoWEZSQU1FIChmcmFt ZTEpLCBRZGVsZXRlX2JlZm9yZSksIGZyYW1lKSkpCisgICAgICBkZWxldGVfZnJhbWUgKGZy YW1lMSwgUW5pbCk7CisKICAgLyogRG9lcyB0aGlzIGZyYW1lIGhhdmUgYSBtaW5pYnVmZmVy LCBhbmQgaXMgaXQgdGhlIHN1cnJvZ2F0ZQogICAgICBtaW5pYnVmZmVyIGZvciBhbnkgb3Ro ZXIgZnJhbWU/ICAqLwogICBpZiAoRlJBTUVfSEFTX01JTklCVUZfUCAoZikpCiAgICAgewot ICAgICAgTGlzcF9PYmplY3QgZnJhbWVzLCB0aGlzOwotCi0gICAgICBGT1JfRUFDSF9GUkFN RSAoZnJhbWVzLCB0aGlzKQorICAgICAgRk9SX0VBQ0hfRlJBTUUgKGZyYW1lcywgZnJhbWUx KQogCXsKIAkgIExpc3BfT2JqZWN0IGZtaW5pdzsKCi0JICBpZiAoRVEgKHRoaXMsIGZyYW1l KSkKKwkgIGlmIChFUSAoZnJhbWUxLCBmcmFtZSkpCiAJICAgIGNvbnRpbnVlOwoKLQkgIGZt aW5pdyA9IEZSQU1FX01JTklCVUZfV0lORE9XIChYRlJBTUUgKHRoaXMpKTsKKwkgIGZtaW5p dyA9IEZSQU1FX01JTklCVUZfV0lORE9XIChYRlJBTUUgKGZyYW1lMSkpOwoKIAkgIGlmIChX SU5ET1dQIChmbWluaXcpICYmIEVRIChmcmFtZSwgV0lORE9XX0ZSQU1FIChYV0lORE9XIChm bWluaXcpKSkpCiAJICAgIHsKIAkgICAgICAvKiBJZiB3ZSBNVVNUIGRlbGV0ZSB0aGlzIGZy YW1lLCBkZWxldGUgdGhlIG90aGVyIGZpcnN0LgogCQkgQnV0IGRvIHRoaXMgb25seSBpZiBG T1JDRSBlcXVhbHMgYG5vZWxpc3AnLiAgKi8KIAkgICAgICBpZiAoRVEgKGZvcmNlLCBRbm9l bGlzcCkpCi0JCWRlbGV0ZV9mcmFtZSAodGhpcywgUW5vZWxpc3ApOworCQlkZWxldGVfZnJh bWUgKGZyYW1lMSwgUW5vZWxpc3ApOwogCSAgICAgIGVsc2UKIAkJZXJyb3IgKCJBdHRlbXB0 IHRvIGRlbGV0ZSBhIHN1cnJvZ2F0ZSBtaW5pYnVmZmVyIGZyYW1lIik7CiAJICAgIH0KQEAg LTE1OTIsMjAgKzE3MTgsMjYgQEAgb2YgdGhlbSAodGhlIHNlbGVjdGVkIHRlcm1pbmFsIGZy YW1lKSBpcyBhY3R1YWxseSBkaXNwbGF5ZWQuCiAgICAgICBzYWZlX2NhbGwyIChRcnVuX2hv b2tfd2l0aF9hcmdzLCBRZGVsZXRlX2ZyYW1lX2Z1bmN0aW9ucywgZnJhbWUpOwogICAgIH0K Ci0gIC8qIFRoZSBob29rIG1heSBzb21ldGltZXMgKGluZGlyZWN0bHkpIGNhdXNlIHRoZSBm cmFtZSB0byBiZSBkZWxldGVkLiAgKi8KLSAgaWYgKCEgRlJBTUVfTElWRV9QIChmKSkKKyAg LyogZGVsZXRlX2ZyYW1lX2Z1bmN0aW9ucyBtYXkgaGF2ZSBkZWxldGVkIGFueSBmcmFtZSwg aW5jbHVkaW5nIHRoaXMKKyAgICAgb25lLiAgKi8KKyAgaWYgKCFGUkFNRV9MSVZFX1AgKGYp KQogICAgIHJldHVybiBRbmlsOworICBlbHNlIGlmICghRVEgKGZvcmNlLCBRbm9lbGlzcCkg JiYgIW90aGVyX2ZyYW1lcyAoZiwgIU5JTFAgKGZvcmNlKSkpCisgICAgeworICAgICAgaWYg KE5JTFAgKGZvcmNlKSkKKwllcnJvciAoIkF0dGVtcHQgdG8gZGVsZXRlIHRoZSBzb2xlIHZp c2libGUgb3IgaWNvbmlmaWVkIGZyYW1lIik7CisgICAgICBlbHNlCisJZXJyb3IgKCJBdHRl bXB0IHRvIGRlbGV0ZSB0aGUgb25seSBmcmFtZSIpOworICAgIH0KCiAgIC8qIEF0IHRoaXMg cG9pbnQsIHdlIGFyZSBjb21taXR0ZWQgdG8gZGVsZXRpbmcgdGhlIGZyYW1lLgogICAgICBU aGVyZSBpcyBubyBtb3JlIGNoYW5jZSBmb3IgZXJyb3JzIHRvIHByZXZlbnQgaXQuICAqLwot CiAgIG1pbmlidWZmZXJfc2VsZWN0ZWQgPSBFUSAobWluaWJ1Zl93aW5kb3csIHNlbGVjdGVk X3dpbmRvdyk7CiAgIHNmID0gU0VMRUNURURfRlJBTUUgKCk7CiAgIC8qIERvbid0IGxldCB0 aGUgZnJhbWUgcmVtYWluIHNlbGVjdGVkLiAgKi8KICAgaWYgKGYgPT0gc2YpCiAgICAgewog ICAgICAgTGlzcF9PYmplY3QgdGFpbDsKLSAgICAgIExpc3BfT2JqZWN0IGZyYW1lMSA9IFFu aWw7CgogICAgICAgLyogTG9vayBmb3IgYW5vdGhlciB2aXNpYmxlIGZyYW1lIG9uIHRoZSBz YW1lIHRlcm1pbmFsLgogCSBEbyBub3QgY2FsbCBuZXh0X2ZyYW1lIGhlcmUgYmVjYXVzZSBp dCBtYXkgbG9vcCBmb3JldmVyLgpAQCAtMTcwOSw4ICsxODQxLDYgQEAgb2YgdGhlbSAodGhl IHNlbGVjdGVkIHRlcm1pbmFsIGZyYW1lKSBpcyBhY3R1YWxseSBkaXNwbGF5ZWQuCiAgICAg IHByb21pc2UgdGhhdCB0aGUgdGVybWluYWwgb2YgdGhlIGZyYW1lIG11c3QgYmUgdmFsaWQg dW50aWwgd2UKICAgICAgaGF2ZSBjYWxsZWQgdGhlIHdpbmRvdy1zeXN0ZW0tZGVwZW5kZW50 IGZyYW1lIGRlc3RydWN0aW9uCiAgICAgIHJvdXRpbmUuICAqLwotCi0KICAgewogICAgIHN0 cnVjdCB0ZXJtaW5hbCAqdGVybWluYWw7CiAgICAgYmxvY2tfaW5wdXQgKCk7CkBAIC0xNzQ3 LDE2ICsxODc3LDE1IEBAIG9mIHRoZW0gKHRoZSBzZWxlY3RlZCB0ZXJtaW5hbCBmcmFtZSkg aXMgYWN0dWFsbHkgZGlzcGxheWVkLgogICAgICBhbm90aGVyIG9uZS4gICovCiAgIGlmIChm ID09IGxhc3Rfbm9ubWluaWJ1Zl9mcmFtZSkKICAgICB7Ci0gICAgICBMaXNwX09iamVjdCBm cmFtZXMsIHRoaXM7Ci0KICAgICAgIGxhc3Rfbm9ubWluaWJ1Zl9mcmFtZSA9IDA7CgotICAg ICAgRk9SX0VBQ0hfRlJBTUUgKGZyYW1lcywgdGhpcykKKyAgICAgIEZPUl9FQUNIX0ZSQU1F IChmcmFtZXMsIGZyYW1lMSkKIAl7Ci0JICBmID0gWEZSQU1FICh0aGlzKTsKLQkgIGlmICgh RlJBTUVfTUlOSUJVRl9PTkxZX1AgKGYpKQorCSAgc3RydWN0IGZyYW1lICpmMSA9IFhGUkFN RSAoZnJhbWUxKTsKKworCSAgaWYgKCFGUkFNRV9NSU5JQlVGX09OTFlfUCAoZjEpKQogCSAg ICB7Ci0JICAgICAgbGFzdF9ub25taW5pYnVmX2ZyYW1lID0gZjsKKwkgICAgICBsYXN0X25v bm1pbmlidWZfZnJhbWUgPSBmMTsKIAkgICAgICBicmVhazsKIAkgICAgfQogCX0KQEAgLTE3 NjYsMTMgKzE4OTUsMTIgQEAgb2YgdGhlbSAodGhlIHNlbGVjdGVkIHRlcm1pbmFsIGZyYW1l KSBpcyBhY3R1YWxseSBkaXNwbGF5ZWQuCiAgICAgIHNpbmdsZS1rYm9hcmQgc3RhdGUgaWYg d2UncmUgaW4gaXQgZm9yIHRoaXMga2JvYXJkLiAgKi8KICAgaWYgKGtiICE9IE5VTEwpCiAg ICAgewotICAgICAgTGlzcF9PYmplY3QgZnJhbWVzLCB0aGlzOwogICAgICAgLyogU29tZSBm cmFtZSB3ZSBmb3VuZCBvbiB0aGUgc2FtZSBrYm9hcmQsIG9yIG5pbCBpZiB0aGVyZSBhcmUg bm9uZS4gICovCiAgICAgICBMaXNwX09iamVjdCBmcmFtZV9vbl9zYW1lX2tib2FyZCA9IFFu aWw7CgotICAgICAgRk9SX0VBQ0hfRlJBTUUgKGZyYW1lcywgdGhpcykKLQlpZiAoa2IgPT0g RlJBTUVfS0JPQVJEIChYRlJBTUUgKHRoaXMpKSkKLQkgIGZyYW1lX29uX3NhbWVfa2JvYXJk ID0gdGhpczsKKyAgICAgIEZPUl9FQUNIX0ZSQU1FIChmcmFtZXMsIGZyYW1lMSkKKwlpZiAo a2IgPT0gRlJBTUVfS0JPQVJEIChYRlJBTUUgKGZyYW1lMSkpKQorCSAgZnJhbWVfb25fc2Ft ZV9rYm9hcmQgPSBmcmFtZTE7CgogICAgICAgaWYgKE5JTFAgKGZyYW1lX29uX3NhbWVfa2Jv YXJkKSkKIAlub3Rfc2luZ2xlX2tib2FyZF9zdGF0ZSAoa2IpOwpAQCAtMTc4NCwyOSArMTkx MiwyNyBAQCBvZiB0aGVtICh0aGUgc2VsZWN0ZWQgdGVybWluYWwgZnJhbWUpIGlzIGFjdHVh bGx5IGRpc3BsYXllZC4KICAgICAgZnJhbWVzIHdpdGggb3RoZXIgd2luZG93cy4gICovCiAg IGlmIChrYiAhPSBOVUxMICYmIEVRIChmcmFtZSwgS1ZBUiAoa2IsIFZkZWZhdWx0X21pbmli dWZmZXJfZnJhbWUpKSkKICAgICB7Ci0gICAgICBMaXNwX09iamVjdCBmcmFtZXMsIHRoaXM7 Ci0KICAgICAgIC8qIFRoZSBsYXN0IGZyYW1lIHdlIHNhdyB3aXRoIGEgbWluaWJ1ZmZlciwg bWluaWJ1ZmZlci1vbmx5IG9yIG5vdC4gICovCiAgICAgICBMaXNwX09iamVjdCBmcmFtZV93 aXRoX21pbmlidWYgPSBRbmlsOwogICAgICAgLyogU29tZSBmcmFtZSB3ZSBmb3VuZCBvbiB0 aGUgc2FtZSBrYm9hcmQsIG9yIG5pbCBpZiB0aGVyZSBhcmUgbm9uZS4gICovCiAgICAgICBM aXNwX09iamVjdCBmcmFtZV9vbl9zYW1lX2tib2FyZCA9IFFuaWw7CgotICAgICAgRk9SX0VB Q0hfRlJBTUUgKGZyYW1lcywgdGhpcykKKyAgICAgIEZPUl9FQUNIX0ZSQU1FIChmcmFtZXMs IGZyYW1lMSkKIAl7Ci0JICBzdHJ1Y3QgZnJhbWUgKmYxID0gWEZSQU1FICh0aGlzKTsKKwkg IHN0cnVjdCBmcmFtZSAqZjEgPSBYRlJBTUUgKGZyYW1lMSk7CgogCSAgLyogQ29uc2lkZXIg b25seSBmcmFtZXMgb24gdGhlIHNhbWUga2JvYXJkCiAJICAgICBhbmQgb25seSB0aG9zZSB3 aXRoIG1pbmlidWZmZXJzLiAgKi8KIAkgIGlmIChrYiA9PSBGUkFNRV9LQk9BUkQgKGYxKQog CSAgICAgICYmIEZSQU1FX0hBU19NSU5JQlVGX1AgKGYxKSkKIAkgICAgewotCSAgICAgIGZy YW1lX3dpdGhfbWluaWJ1ZiA9IHRoaXM7CisJICAgICAgZnJhbWVfd2l0aF9taW5pYnVmID0g ZnJhbWUxOwogCSAgICAgIGlmIChGUkFNRV9NSU5JQlVGX09OTFlfUCAoZjEpKQogCQlicmVh azsKIAkgICAgfQoKIAkgIGlmIChrYiA9PSBGUkFNRV9LQk9BUkQgKGYxKSkKLQkgICAgZnJh bWVfb25fc2FtZV9rYm9hcmQgPSB0aGlzOworCSAgICBmcmFtZV9vbl9zYW1lX2tib2FyZCA9 IGZyYW1lMTsKIAl9CgogICAgICAgaWYgKCFOSUxQIChmcmFtZV9vbl9zYW1lX2tib2FyZCkp CkBAIC0yMTE5LDcgKzIyNDUsNyBAQCBvZiB0aGVtICh0aGUgc2VsZWN0ZWQgdGVybWluYWwg ZnJhbWUpIGlzIGFjdHVhbGx5IGRpc3BsYXllZC4KIHsKICAgc3RydWN0IGZyYW1lICpmID0g ZGVjb2RlX2xpdmVfZnJhbWUgKGZyYW1lKTsKCi0gIGlmIChOSUxQIChmb3JjZSkgJiYgIW90 aGVyX3Zpc2libGVfZnJhbWVzIChmKSkKKyAgaWYgKE5JTFAgKGZvcmNlKSAmJiAhb3RoZXJf ZnJhbWVzIChmLCB0cnVlKSkKICAgICBlcnJvciAoIkF0dGVtcHQgdG8gbWFrZSBpbnZpc2li bGUgdGhlIHNvbGUgdmlzaWJsZSBvciBpY29uaWZpZWQgZnJhbWUiKTsKCiAgIC8qIERvbid0 IGFsbG93IG1pbmlidWZfd2luZG93IHRvIHJlbWFpbiBvbiBhbiBpbnZpc2libGUgZnJhbWUu ICAqLwpAQCAtMjQ1Nyw5ICsyNTgzLDM5IEBAIG9mIHRoZW0gKHRoZSBzZWxlY3RlZCB0ZXJt aW5hbCBmcmFtZSkgaXMgYWN0dWFsbHkgZGlzcGxheWVkLgogCX0KICAgICB9CgorICAvKiBD aGVjayB0aGVzZSBwYXJhbWV0ZXJzIGZvciBjaXJjdWxhciBkZXBlbmRlbnkuICBUaGlzIGRv ZXMgbm90IGNoZWNrCisgICAgIGZvciBpbnRlcmRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZXNl IHByb3BlcnRpZXMuICBIZW5jZSB5b3UgY2FuCisgICAgIHN0aWxsIGNyZWF0ZSBjaXJjdWxh ciBkZXBlbmRlbmNpZXMgd2l0aCBkaWZmZXJlbnQgcHJvcGVydGllcywgZm9yCisgICAgIGV4 YW1wbGUgYSBjaGFpbiBvZiBmcmFtZXMgRjEtPkYyLT4uLi5GbiBzdWNoIHRoYXQgRjEgaXMg YW4gYW5jZXN0b3IKKyAgICAgZnJhbWUgb2YgRm4gYW5kIHRodXMgY2Fubm90IGJlIGRlbGV0 ZWQgYmVmb3JlIEZuIGFuZCBhIHNlY29uZCBjaGFpbgorICAgICBGbi0+Rm4tMS0+Li4uRjEg c3VjaCB0aGF0IEZuIGNhbm5vdCBiZSBkZWxldGVkIGJlZm9yZSBGMS4gICovCisgIGVsc2Ug aWYgKEVRIChwcm9wLCBRcGFyZW50X2ZyYW1lKSB8fCBFUSAocHJvcCwgUWRlbGV0ZV9iZWZv cmUpKQorICAgIHsKKyAgICAgIExpc3BfT2JqZWN0IG9sZHZhbCA9IEZjZHIgKEZhc3NxIChw cm9wLCBmLT5wYXJhbV9hbGlzdCkpOworCisgICAgICBpZiAoIUVRIChvbGR2YWwsIHZhbCkg JiYgIU5JTFAgKHZhbCkpCisJeworCSAgTGlzcF9PYmplY3QgZnJhbWU7CisJICBMaXNwX09i amVjdCBmcmFtZTEgPSB2YWw7CisKKwkgIGlmICghRlJBTUVQIChmcmFtZTEpIHx8ICFGUkFN RV9MSVZFX1AgKFhGUkFNRSAoZnJhbWUxKSkpCisJICAgIGVycm9yICgiSW52YWxpZCBgJXMn IGZyYW1lIHBhcmFtZXRlciIsCisJCSAgIFNTREFUQSAoU1lNQk9MX05BTUUgKHByb3ApKSk7 CisKKwkgIFhTRVRGUkFNRSAoZnJhbWUsIGYpOworCisJICB3aGlsZSAoRlJBTUVQIChmcmFt ZTEpICYmIEZSQU1FX0xJVkVfUCAoWEZSQU1FIChmcmFtZTEpKSkKKwkgICAgaWYgKEVRIChm cmFtZTEsIGZyYW1lKSkKKwkgICAgICBlcnJvciAoIkNpcmN1bGFyIHNwZWNpZmljYXRpb24g b2YgYCVzJyBmcmFtZSBwYXJhbWV0ZXIiLAorCQkgICAgIFNTREFUQSAoU1lNQk9MX05BTUUg KHByb3ApKSk7CisJICAgIGVsc2UKKwkgICAgICBmcmFtZTEgPSBnZXRfZnJhbWVfcGFyYW0g KFhGUkFNRSAoZnJhbWUxKSwgcHJvcCk7CisJfQorICAgIH0KKwogICAvKiBUaGUgYnVmZmVy LWxpc3QgcGFyYW1ldGVycyBhcmUgc3RvcmVkIGluIGEgc3BlY2lhbCBwbGFjZSBhbmQgbm90 CiAgICAgIGluIHRoZSBhbGlzdC4gIEFsbCBidWZmZXJzIG11c3QgYmUgbGl2ZS4gICovCi0g IGlmIChFUSAocHJvcCwgUWJ1ZmZlcl9saXN0KSkKKyAgZWxzZSBpZiAoRVEgKHByb3AsIFFi dWZmZXJfbGlzdCkpCiAgICAgewogICAgICAgTGlzcF9PYmplY3QgbGlzdCA9IFFuaWw7CiAg ICAgICBmb3IgKDsgQ09OU1AgKHZhbCk7IHZhbCA9IFhDRFIgKHZhbCkpCkBAIC0yNDY4LDcg KzI2MjQsNyBAQCBvZiB0aGVtICh0aGUgc2VsZWN0ZWQgdGVybWluYWwgZnJhbWUpIGlzIGFj dHVhbGx5IGRpc3BsYXllZC4KICAgICAgIGZzZXRfYnVmZmVyX2xpc3QgKGYsIEZucmV2ZXJz ZSAobGlzdCkpOwogICAgICAgcmV0dXJuOwogICAgIH0KLSAgaWYgKEVRIChwcm9wLCBRYnVy aWVkX2J1ZmZlcl9saXN0KSkKKyAgZWxzZSBpZiAoRVEgKHByb3AsIFFidXJpZWRfYnVmZmVy X2xpc3QpKQogICAgIHsKICAgICAgIExpc3BfT2JqZWN0IGxpc3QgPSBRbmlsOwogICAgICAg Zm9yICg7IENPTlNQICh2YWwpOyB2YWwgPSBYQ0RSICh2YWwpKQpAQCAtMzA5OSw2ICszMjU1 LDEyIEBAIHN0cnVjdCBmcmFtZV9wYXJtX3RhYmxlIHsKICAgeyJzdGlja3kiLAkJCVNZTUJP TF9JTkRFWCAoUXN0aWNreSl9LAogICB7InRvb2wtYmFyLXBvc2l0aW9uIiwJCVNZTUJPTF9J TkRFWCAoUXRvb2xfYmFyX3Bvc2l0aW9uKX0sCiAgIHsiaW5oaWJpdC1kb3VibGUtYnVmZmVy aW5nIiwgIFNZTUJPTF9JTkRFWCAoUWluaGliaXRfZG91YmxlX2J1ZmZlcmluZyl9LAorICB7 InVuZGVjb3JhdGVkIiwJCVNZTUJPTF9JTkRFWCAoUXVuZGVjb3JhdGVkKX0sCisgIHsicGFy ZW50LWZyYW1lIiwJCVNZTUJPTF9JTkRFWCAoUXBhcmVudF9mcmFtZSl9LAorICB7InNraXAt dGFza2JhciIsCQlTWU1CT0xfSU5ERVggKFFza2lwX3Rhc2tiYXIpfSwKKyAgeyJuby1mb2N1 cy1vbi1tYXAiLAkJU1lNQk9MX0lOREVYIChRbm9fZm9jdXNfb25fbWFwKX0sCisgIHsibm8t YWNjZXB0LWZvY3VzIiwJCVNZTUJPTF9JTkRFWCAoUW5vX2FjY2VwdF9mb2N1cyl9LAorICB7 InotZ3JvdXAiLAkJCVNZTUJPTF9JTkRFWCAoUXpfZ3JvdXApfSwKIH07CgogI2lmZGVmIEhB VkVfV0lORE9XX1NZU1RFTQpAQCAtNDg4Niw2ICs1MDQ4LDEzIEBAIG9yIGEgbGlzdCAoLSBO KSBtZWFuaW5nIC1OIHBpeGVscyByZWxhdGl2ZSB0byBib3R0b20vcmlnaHQgY29ybmVyLgog ICBERUZTWU0gKFFoZWlnaHQsICJoZWlnaHQiKTsKICAgREVGU1lNIChRaWNvbiwgImljb24i KTsKICAgREVGU1lNIChRbWluaWJ1ZmZlciwgIm1pbmlidWZmZXIiKTsKKyAgREVGU1lNIChR dW5kZWNvcmF0ZWQsICJ1bmRlY29yYXRlZCIpOworICBERUZTWU0gKFFwYXJlbnRfZnJhbWUs ICJwYXJlbnQtZnJhbWUiKTsKKyAgREVGU1lNIChRc2tpcF90YXNrYmFyLCAic2tpcC10YXNr YmFyIik7CisgIERFRlNZTSAoUW5vX2ZvY3VzX29uX21hcCwgIm5vLWZvY3VzLW9uLW1hcCIp OworICBERUZTWU0gKFFub19hY2NlcHRfZm9jdXMsICJuby1hY2NlcHQtZm9jdXMiKTsKKyAg REVGU1lNIChRel9ncm91cCwgInotZ3JvdXAiKTsKKyAgREVGU1lNIChRZGVsZXRlX2JlZm9y ZSwgImRlbGV0ZS1iZWZvcmUiKTsKICAgREVGU1lNIChRbW9kZWxpbmUsICJtb2RlbGluZSIp OwogICBERUZTWU0gKFFvbmx5LCAib25seSIpOwogICBERUZTWU0gKFFub25lLCAibm9uZSIp OwpAQCAtNTAxNyw2ICs1MTg2LDExIEBAIG9yIGEgbGlzdCAoLSBOKSBtZWFuaW5nIC1OIHBp eGVscyByZWxhdGl2ZSB0byBib3R0b20vcmlnaHQgY29ybmVyLgogICBERUZTWU0gKFF2aXNp YmlsaXR5LCAidmlzaWJpbGl0eSIpOwogICBERUZTWU0gKFF3YWl0X2Zvcl93bSwgIndhaXQt Zm9yLXdtIik7CiAgIERFRlNZTSAoUWluaGliaXRfZG91YmxlX2J1ZmZlcmluZywgImluaGli aXQtZG91YmxlLWJ1ZmZlcmluZyIpOworICBERUZTWU0gKFFub19vdGhlcl9mcmFtZSwgIm5v LW90aGVyLWZyYW1lIik7CisgIERFRlNZTSAoUWJlbG93LCAiYmVsb3ciKTsKKyAgREVGU1lN IChRbWluX3dpZHRoLCAibWluLXdpZHRoIik7CisgIERFRlNZTSAoUW1pbl9oZWlnaHQsICJt aW4taGVpZ2h0Iik7CisgIERFRlNZTSAoUW1vdXNlX3doZWVsX2ZyYW1lLCAibW91c2Utd2hl ZWwtZnJhbWUiKTsKCiAgIHsKICAgICBpbnQgaTsKQEAgLTUxMzMsNiArNTMwNywxMSBAQCBl dmVuIGlmIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciBpcyBzaG93biAoaS5lLiBvdmVyc2Nyb2xs aW5nKS4KICAgICAgICAgICAgICAgIGRvYzogLyogTm9ybWFsIGhvb2sgcnVuIHdoZW4gYSBm cmFtZSBsb3NlcyBpbnB1dCBmb2N1cy4gICovKTsKICAgVmZvY3VzX291dF9ob29rID0gUW5p bDsKCisgIERFRlZBUl9MSVNQICgibW92ZS1mcmFtZS1mdW5jdGlvbnMiLCBWbW92ZV9mcmFt ZV9mdW5jdGlvbnMsCisgICAgICAgICAgICAgICBkb2M6IC8qIEZ1bmN0aW9ucyBydW4gYWZ0 ZXIgYSBmcmFtZSB3YXMgbW92ZWQuCitUaGUgZnVuY3Rpb25zIGFyZSBydW4gd2l0aCBvbmUg YXJnLCB0aGUgZnJhbWUgdGhhdCBtb3ZlZC4gICovKTsKKyAgVm1vdmVfZnJhbWVfZnVuY3Rp b25zID0gUW5pbDsKKwogICBERUZWQVJfTElTUCAoImRlbGV0ZS1mcmFtZS1mdW5jdGlvbnMi LCBWZGVsZXRlX2ZyYW1lX2Z1bmN0aW9ucywKIAkgICAgICAgZG9jOiAvKiBGdW5jdGlvbnMg cnVuIGJlZm9yZSBkZWxldGluZyBhIGZyYW1lLgogVGhlIGZ1bmN0aW9ucyBhcmUgcnVuIHdp dGggb25lIGFyZywgdGhlIGZyYW1lIHRvIGJlIGRlbGV0ZWQuCkBAIC01MTc5LDEyICs1MzU4 LDUxIEBAIGVpdGhlciBjdXN0b21pemUgaXQgKHNlZSB0aGUgaW5mbyBub2RlIGBFYXN5IEN1 c3RvbWl6YXRpb24nKQoKIFRoaXMgdmFyaWFibGUgaXMgbG9jYWwgdG8gdGhlIGN1cnJlbnQg dGVybWluYWwgYW5kIGNhbm5vdCBiZSBidWZmZXItbG9jYWwuICAqLyk7CgotICBERUZWQVJf Qk9PTCAoImZvY3VzLWZvbGxvd3MtbW91c2UiLCBmb2N1c19mb2xsb3dzX21vdXNlLAorICBE RUZWQVJfTElTUCAoImZvY3VzLWZvbGxvd3MtbW91c2UiLCBmb2N1c19mb2xsb3dzX21vdXNl LAogCSAgICAgICBkb2M6IC8qIE5vbi1uaWwgaWYgd2luZG93IHN5c3RlbSBjaGFuZ2VzIGZv Y3VzIHdoZW4geW91IG1vdmUgdGhlIG1vdXNlLgogWW91IHNob3VsZCBzZXQgdGhpcyB2YXJp YWJsZSB0byB0ZWxsIEVtYWNzIGhvdyB5b3VyIHdpbmRvdyBtYW5hZ2VyCiBoYW5kbGVzIGZv Y3VzLCBzaW5jZSB0aGVyZSBpcyBubyB3YXkgaW4gZ2VuZXJhbCBmb3IgRW1hY3MgdG8gZmlu ZCBvdXQKLWF1dG9tYXRpY2FsbHkuICBTZWUgYWxzbyBgbW91c2UtYXV0b3NlbGVjdC13aW5k b3cnLiAgKi8pOwotICBmb2N1c19mb2xsb3dzX21vdXNlID0gMDsKK2F1dG9tYXRpY2FsbHku CisKK1RoZXJlIGFyZSB0aHJlZSBtZWFuaW5nZnVsIHZhbHVlczoKKworLSBUaGUgZGVmYXVs dCBuaWwgc2hvdWxkIGJlIHVzZWQgd2hlbiB5b3VyIHdpbmRvdyBtYW5hZ2VyIGZvbGxvd3Mg YQorICAiY2xpY2stdG8tZm9jdXMiIHBvbGljeSB3aGVyZSB5b3UgaGF2ZSB0byBjbGljayB0 aGUgbW91c2UgaW5zaWRlIG9mIGEKKyAgZnJhbWUgaW4gb3JkZXIgZm9yIHRoYXQgZnJhbWUg dG8gZ2V0IGZvY3VzLgorCistIFRoZSB2YWx1ZSB0IHNob3VsZCBiZSB1c2VkIHdoZW4geW91 ciB3aW5kb3cgbWFuYWdlciBoYXMgdGhlIGZvY3VzCisgIGF1dG9tYXRpY2FsbHkgZm9sbG93 IHRoZSBwb3NpdGlvbiBvZiB0aGUgbW91c2UgcG9pbnRlciBidXQgYSB3aW5kb3cKKyAgdGhh dCBnYWlucyBmb2N1cyBpcyBub3QgcmFpc2VkIGF1dG9tYXRpY2FsbHkuCisKKy0gVGhlIHZh bHVlIGBhdXRvLXJhaXNlJyBzaG91bGQgYmUgdXNlZCB3aGVuIHlvdXIgd2luZG93IG1hbmFn ZXIgaGFzIHRoZQorICBmb2N1cyBhdXRvbWF0aWNhbGx5IGZvbGxvdyB0aGUgcG9zaXRpb24g b2YgdGhlIG1vdXNlIHBvaW50ZXIgYW5kIGEKKyAgd2luZG93IHRoYXQgZ2FpbnMgZm9jdXMg aXMgcmFpc2VkIGF1dG9tYXRpY2FsbHkuCisKK0lmIHRoaXMgb3B0aW9uIGlzIG5vbi1uaWws IEVtYWNzIG1vdmVzIHRoZSBtb3VzZSBwb2ludGVyIHRvIHRoZSBmcmFtZQorc2VsZWN0ZWQg YnkgYHNlbGVjdC1mcmFtZS1zZXQtaW5wdXQtZm9jdXMnLiAgVGhpcyBmdW5jdGlvbiBpcyB1 c2VkIGJ5IGEKK251bWJlciBvZiBjb21tYW5kcyBsaWtlLCBmb3IgZXhhbXBsZSwgYG90aGVy LWZyYW1lJyBhbmQgYHBvcC10by1idWZmZXInLgorSWYgdGhpcyBvcHRpb24gaXMgbmlsIGFu ZCB5b3VyIGZvY3VzIGZvbGxvd3MgbW91c2Ugd2luZG93IG1hbmFnZXIgZG9lcworbm90IGF1 dG9ub21vdXNseSBtb3ZlIHRoZSBtb3VzZSBwb2ludGVyIHRvIHRoZSBuZXdseSBzZWxlY3Rl ZCBmcmFtZSwgdGhlCitwcmV2aW91c2x5IHNlbGVjdGVkIHdpbmRvdyBtYW5hZ2VyIHdpbmRv dyBtaWdodCBnZXQgcmVzZWxlY3RlZCBpbnN0ZWFkCitpbW1lZGlhdGVseS4KKworVGhlIGRp c3RpbmN0aW9uIGJldHdlZW4gdGhlIHZhbHVlcyB0IGFuZCBgYXV0by1yYWlzZScgaXMgbm90 IG5lZWRlZCBmb3IKKyJub3JtYWwiIGZyYW1lcyBiZWNhdXNlIHRoZSB3aW5kb3cgbWFuYWdl ciB0YWtlcyBjYXJlIG9mIHJhaXNpbmcgdGhlbS4KK1NldHRpbmcgdGhpcyB0byDigJhhdXRv LXJhaXNl4oCZIHdpbGwsIGhvd2V2ZXIsIG92ZXJyaWRlIHRoZSBzdGFuZGFyZAorYmVoYXZp b3Igb2YgYSB3aW5kb3cgbWFuYWdlciB0aGF0IGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgcmFp c2UgdGhlIGZyYW1lCit0aGF0IGdldHMgZm9jdXMuICBTZXR0aW5nIHRoaXMgdG8gYGF1dG8t cmFpc2UnIGlzIGFsc28gbmVjZXNzYXJ5IHRvCithdXRvbWF0aWNhbGx5IHJhaXNlIGNoaWxk IGZyYW1lcyB3aGljaCBhcmUgdXN1YWxseSBsZWZ0IGFsb25lIGJ5IHRoZQord2luZG93IG1h bmFnZXIuCisKK05vdGUgdGhhdCB0aGlzIG9wdGlvbiBkb2VzIG5vdCBkaXN0aW5ndWlzaCAi c2xvcHB5IiBmb2N1cyAod2hlcmUgdGhlCitmcmFtZSB0aGF0IHByZXZpb3VzbHkgaGFkIGZv Y3VzIHJldGFpbnMgZm9jdXMgYXMgbG9uZyBhcyB0aGUgbW91c2UKK3BvaW50ZXIgZG9lcyBu b3QgbW92ZSBpbnRvIGFub3RoZXIgd2luZG93IG1hbmFnZXIgd2luZG93KSBmcm9tICJzdHJp Y3QiCitmb2N1cyAod2hlcmUgYSBmcmFtZSBpbW1lZGlhdGVseSBsb3NlcyBmb2N1cyB3aGVu IGl0J3MgbGVmdCBieSB0aGUgbW91c2UKK3BvaW50ZXIpLgorCitJbiBvcmRlciB0byBleHRl bmQgYSAiZm9jdXMgZm9sbG93cyBtb3VzZSIgcG9saWN5IHRvIGluZGl2aWR1YWwgRW1hY3MK K3dpbmRvd3MsIGN1c3RvbWl6ZSB0aGUgdmFyaWFibGUgYG1vdXNlLWF1dG9zZWxlY3Qtd2lu ZG93Jy4gICovKTsKKyAgZm9jdXNfZm9sbG93c19tb3VzZSA9IFFuaWw7CgogICBERUZWQVJf Qk9PTCAoImZyYW1lLXJlc2l6ZS1waXhlbHdpc2UiLCBmcmFtZV9yZXNpemVfcGl4ZWx3aXNl LAogCSAgICAgICBkb2M6IC8qIE5vbi1uaWwgbWVhbnMgcmVzaXplIGZyYW1lcyBwaXhlbHdp c2UuCkBAIC01Mjg2LDYgKzU1MDQsNyBAQCBUaGlzIHZhcmlhYmxlIGlzIGVmZmVjdGl2ZSBv bmx5IHdpdGggdGhlIFggdG9vbGtpdCAoYW5kIHRoZXJlIG9ubHkgd2hlbgogICBkZWZzdWJy ICgmU3NlbGVjdF9mcmFtZSk7CiAgIGRlZnN1YnIgKCZTc2VsZWN0ZWRfZnJhbWUpOwogICBk ZWZzdWJyICgmU2ZyYW1lX2xpc3QpOworICBkZWZzdWJyICgmU2ZyYW1lX2NoaWxkX2ZyYW1l cyk7CiAgIGRlZnN1YnIgKCZTbmV4dF9mcmFtZSk7CiAgIGRlZnN1YnIgKCZTcHJldmlvdXNf ZnJhbWUpOwogICBkZWZzdWJyICgmU2xhc3Rfbm9ubWluaWJ1Zl9mcmFtZSk7CmRpZmYgLS1n aXQgYS9zcmMvZnJhbWUuaCBiL3NyYy9mcmFtZS5oCmluZGV4IDczMzEzNTIuLmE1MTk4YmMg MTAwNjQ0Ci0tLSBhL3NyYy9mcmFtZS5oCisrKyBiL3NyYy9mcmFtZS5oCkBAIC00NSw2ICs0 NSwxMiBAQCBlbnVtIGZ1bGxzY3JlZW5fdHlwZQogI2VuZGlmCiB9OwoKK2VudW0gel9ncm91 cAoreworICB6X2dyb3VwX25vbmUsCisgIHpfZ3JvdXBfYWJvdmUsCisgIHpfZ3JvdXBfYmVs b3csCit9OwogI2VuZGlmIC8qIEhBVkVfV0lORE9XX1NZU1RFTSAqLwoKIC8qIFRoZSBzdHJ1 Y3R1cmUgcmVwcmVzZW50aW5nIGEgZnJhbWUuICAqLwpAQCAtNjgsNiArNzQsMTEgQEAgc3Ry dWN0IGZyYW1lCiAgICAgIFVzdWFsbHkgaXQgaXMgbmlsLiAgKi8KICAgTGlzcF9PYmplY3Qg dGl0bGU7CgorI2lmIGRlZmluZWQgKEhBVkVfV0lORE9XX1NZU1RFTSkgJiYgIWRlZmluZWQg KEhBVkVfTlMpCisgIC8qIFRoaXMgZnJhbWUncyBwYXJlbnQgZnJhbWUsIGlmIGl0IGhhcyBv bmUuICAqLworICBMaXNwX09iamVjdCBwYXJlbnRfZnJhbWU7CisjZW5kaWYgLyogSEFWRV9X SU5ET1dfU1lTVEVNIGFuZCBub3QgSEFWRV9OUyAqLworCiAgIC8qIFRoZSBmcmFtZSB3aGlj aCBzaG91bGQgcmVjZWl2ZSBrZXlzdHJva2VzIHRoYXQgb2NjdXIgaW4gdGhpcwogICAgICBm cmFtZSwgb3IgbmlsIGlmIHRoZXkgc2hvdWxkIGdvIHRvIHRoZSBmcmFtZSBpdHNlbGYuICBU aGlzIGlzCiAgICAgIHVzdWFsbHkgbmlsLCBidXQgaWYgdGhlIGZyYW1lIGlzIG1pbmlidWZm ZXJsZXNzLCB3ZSBjYW4gdXNlIHRoaXMKQEAgLTMyMCw2ICszMzEsMjUgQEAgc3RydWN0IGZy YW1lCiAgIGJvb2xfYmYgaG9yaXpvbnRhbF9zY3JvbGxfYmFycyA6IDE7CiAjZW5kaWYgLyog SEFWRV9XSU5ET1dfU1lTVEVNICovCgorI2lmIGRlZmluZWQgKEhBVkVfV0lORE9XX1NZU1RF TSkgJiYgIWRlZmluZWQgKEhBVkVfTlMpCisgIC8qIFRydWUgaWYgdGhpcyBpcyBhbiB1bmRl Y29yYXRlZCBmcmFtZS4gICovCisgIGJvb2xfYmYgdW5kZWNvcmF0ZWQgOiAxOworCisgIC8q IE5vbnplcm8gaWYgdGhpcyBmcmFtZSdzIGljb24gc2hvdWxkIG5vdCBhcHBlYXIgb24gaXRz IGRpc3BsYXkncyB0YXNrYmFyLiAgKi8KKyAgYm9vbF9iZiBza2lwX3Rhc2tiYXIgOiAxOwor CisgIC8qIE5vbnplcm8gaWYgdGhpcyBmcmFtZSdzIHdpbmRvdyBGJ3MgWCB3aW5kb3cgZG9l cyBub3Qgd2FudCB0bworICAgICByZWNlaXZlIGlucHV0IGZvY3VzIHdoZW4gaXQgaXMgbWFw cGVkLiAgKi8KKyAgYm9vbF9iZiBub19mb2N1c19vbl9tYXAgOiAxOworCisgIC8qIE5vbnpl cm8gaWYgdGhpcyBmcmFtZSdzIHdpbmRvdyBkb2VzIG5vdCB3YW50IHRvIHJlY2VpdmUgaW5w dXQgZm9jdXMKKyAgICAgdmlhIG1vdXNlIGNsaWNrcyBvciBieSBtb3ZpbmcgdGhlIG1vdXNl IGludG8gaXQuICAqLworICBib29sX2JmIG5vX2FjY2VwdF9mb2N1cyA6IDE7CisKKyAgLyog VGhlIHotZ3JvdXAgdGhpcyBmcmFtZSdzIHdpbmRvdyBiZWxvbmdzIHRvLiAqLworICBFTlVN X0JGICh6X2dyb3VwKSB6X2dyb3VwIDogMjsKKyNlbmRpZiAvKiBIQVZFX1dJTkRPV19TWVNU RU0gYW5kIG5vdCBIQVZFX05TICovCisKICAgLyogV2hldGhlciBuZXdfaGVpZ2h0IGFuZCBu ZXdfd2lkdGggc2hhbGwgYmUgaW50ZXJwcmV0ZWQKICAgICAgaW4gcGl4ZWxzLiAgKi8KICAg Ym9vbF9iZiBuZXdfcGl4ZWx3aXNlIDogMTsKQEAgLTUzNCw2ICs1NjQsMTMgQEAgc3RydWN0 IGZyYW1lCiB7CiAgIGYtPmZhY2VfYWxpc3QgPSB2YWw7CiB9CisjaWYgZGVmaW5lZCAoSEFW RV9XSU5ET1dfU1lTVEVNKSAmJiAhZGVmaW5lZCAoSEFWRV9OUykKK0lOTElORSB2b2lkCitm c2V0X3BhcmVudF9mcmFtZSAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCB2YWwpCit7 CisgIGYtPnBhcmVudF9mcmFtZSA9IHZhbDsKK30KKyNlbmRpZgogSU5MSU5FIHZvaWQKIGZz ZXRfZm9jdXNfZnJhbWUgKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmplY3QgdmFsKQogewpA QCAtODUwLDcgKzg4Nyw2IEBAIHN0cnVjdCBmcmFtZQogI2RlZmluZSBGUkFNRV9GT0NVU19G UkFNRShmKSBmLT5mb2N1c19mcmFtZQoKICNpZmRlZiBIQVZFX1dJTkRPV19TWVNURU0KLQog LyogVGhpcyBmcmFtZSBzbG90IHNheXMgd2hldGhlciBzY3JvbGwgYmFycyBhcmUgY3VycmVu dGx5IGVuYWJsZWQgZm9yIGZyYW1lIEYsCiAgICBhbmQgd2hpY2ggc2lkZSB0aGV5IGFyZSBv bi4gICovCiAjZGVmaW5lIEZSQU1FX1ZFUlRJQ0FMX1NDUk9MTF9CQVJfVFlQRShmKSAoKGYp LT52ZXJ0aWNhbF9zY3JvbGxfYmFyX3R5cGUpCkBAIC04NjAsMTcgKzg5NiwzOSBAQCBzdHJ1 Y3QgZnJhbWUKICAgKChmKS0+dmVydGljYWxfc2Nyb2xsX2Jhcl90eXBlID09IHZlcnRpY2Fs X3Njcm9sbF9iYXJfbGVmdCkKICNkZWZpbmUgRlJBTUVfSEFTX1ZFUlRJQ0FMX1NDUk9MTF9C QVJTX09OX1JJR0hUKGYpIFwKICAgKChmKS0+dmVydGljYWxfc2Nyb2xsX2Jhcl90eXBlID09 IHZlcnRpY2FsX3Njcm9sbF9iYXJfcmlnaHQpCi0KICNlbHNlIC8qIG5vdCBIQVZFX1dJTkRP V19TWVNURU0gKi8KLQogLyogSWYgdGhlcmUgaXMgbm8gd2luZG93IHN5c3RlbSwgdGhlcmUg YXJlIG5vIHNjcm9sbCBiYXJzLiAgKi8KICNkZWZpbmUgRlJBTUVfVkVSVElDQUxfU0NST0xM X0JBUl9UWVBFKGYpICgodm9pZCkgZiwgdmVydGljYWxfc2Nyb2xsX2Jhcl9ub25lKQogI2Rl ZmluZSBGUkFNRV9IQVNfVkVSVElDQUxfU0NST0xMX0JBUlMoZikgKCh2b2lkKSBmLCAwKQog I2RlZmluZSBGUkFNRV9IQVNfVkVSVElDQUxfU0NST0xMX0JBUlNfT05fTEVGVChmKSAoKHZv aWQpIGYsIDApCiAjZGVmaW5lIEZSQU1FX0hBU19WRVJUSUNBTF9TQ1JPTExfQkFSU19PTl9S SUdIVChmKSAoKHZvaWQpIGYsIDApCi0KICNlbmRpZiAvKiBIQVZFX1dJTkRPV19TWVNURU0g Ki8KCisjaWYgZGVmaW5lZCAoSEFWRV9XSU5ET1dfU1lTVEVNKSAmJiAhZGVmaW5lZCAoSEFW RV9OUykKKyNkZWZpbmUgRlJBTUVfVU5ERUNPUkFURUQoZikgKChmKS0+dW5kZWNvcmF0ZWQp CisjZGVmaW5lIEZSQU1FX1BBUkVOVF9GUkFNRShmKQkJCVwKKyAgKE5JTFAgKChmKS0+cGFy ZW50X2ZyYW1lKQkJCVwKKyAgID8gTlVMTAkJCQkJXAorICAgOiBYRlJBTUUgKChmKS0+cGFy ZW50X2ZyYW1lKSkKKyNkZWZpbmUgRlJBTUVfU0tJUF9UQVNLQkFSKGYpICgoZiktPnNraXBf dGFza2JhcikKKyNkZWZpbmUgRlJBTUVfTk9fRk9DVVNfT05fTUFQKGYpICgoZiktPm5vX2Zv Y3VzX29uX21hcCkKKyNkZWZpbmUgRlJBTUVfTk9fQUNDRVBUX0ZPQ1VTKGYpICgoZiktPm5v X2FjY2VwdF9mb2N1cykKKyNkZWZpbmUgRlJBTUVfWl9HUk9VUChmKSAoKGYpLT56X2dyb3Vw KQorI2RlZmluZSBGUkFNRV9aX0dST1VQX05PTkUoZikgKChmKS0+el9ncm91cCA9PSB6X2dy b3VwX25vbmUpCisjZGVmaW5lIEZSQU1FX1pfR1JPVVBfQUJPVkUoZikgKChmKS0+el9ncm91 cCA9PSB6X2dyb3VwX2Fib3ZlKQorI2RlZmluZSBGUkFNRV9aX0dST1VQX0JFTE9XKGYpICgo ZiktPnpfZ3JvdXAgPT0gel9ncm91cF9iZWxvdykKKyNlbHNlIC8qIG5vdCBIQVZFX1dJTkRP V19TWVNURU0gb3IgSEFWRV9OUyAqLworI2RlZmluZSBGUkFNRV9VTkRFQ09SQVRFRChmKSAo KHZvaWQpIGYsIDApCisjZGVmaW5lIEZSQU1FX1BBUkVOVF9GUkFNRShmKSAoKHZvaWQpIGYs IE5VTEwpCisjZGVmaW5lIEZSQU1FX1NLSVBfVEFTS0JBUihmKSAoKHZvaWQpIGYsIDApCisj ZGVmaW5lIEZSQU1FX05PX0ZPQ1VTX09OX01BUChmKSAoKHZvaWQpIGYsIDApCisjZGVmaW5l IEZSQU1FX05PX0FDQ0VQVF9GT0NVUyhmKSAoKHZvaWQpIGYsIDApCisjZGVmaW5lIEZSQU1F X1pfR1JPVVAoZikgKCh2b2lkKSBmLCB6X2dyb3VwX25vbmUpCisjZGVmaW5lIEZSQU1FX1pf R1JPVVBfTk9ORShmKSAoKHZvaWQpIGYsIHRydWUpCisjZGVmaW5lIEZSQU1FX1pfR1JPVVBf QUJPVkUoZikgKCh2b2lkKSBmLCBmYWxzZSkKKyNkZWZpbmUgRlJBTUVfWl9HUk9VUF9CRUxP VyhmKSAoKHZvaWQpIGYsIGZhbHNlKQorI2VuZGlmIC8qIEhBVkVfV0lORE9XX1NZU1RFTSBh bmQgbm90IEhBVkVfTlMgKi8KKwogLyogV2hldGhlciBob3Jpem9udGFsIHNjcm9sbCBiYXJz IGFyZSBjdXJyZW50bHkgZW5hYmxlZCBmb3IgZnJhbWUgRi4gICovCiAjaWYgVVNFX0hPUkla T05UQUxfU0NST0xMX0JBUlMKICNkZWZpbmUgRlJBTUVfSEFTX0hPUklaT05UQUxfU0NST0xM X0JBUlMoZikgXApAQCAtMTAzNyw3ICsxMDk1LDggQEAgc3RydWN0IGZyYW1lCiAgICBsb29w IHdpbGwgc2V0IEZSQU1FX1ZBUiwgYSBMaXNwX09iamVjdCwgdG8gZWFjaCBmcmFtZSBpbgog ICAgVmZyYW1lX2xpc3QgaW4gc3VjY2Vzc2lvbiBhbmQgZXhlY3V0ZSB0aGUgc3RhdGVtZW50 LiAgTElTVF9WQVIKICAgIHNob3VsZCBiZSBhIExpc3BfT2JqZWN0IHRvbzsgaXQgaXMgdXNl ZCB0byBpdGVyYXRlIHRocm91Z2ggdGhlCi0gICBWZnJhbWVfbGlzdC4KKyAgIFZmcmFtZV9s aXN0LiAgTm90ZSB0aGF0IHRoaXMgbWFjcm8gd2Fsa3Mgb3ZlciBjaGlsZCBmcmFtZXMgYW5k CisgICB0aGUgdG9vbHRpcCBmcmFtZSBhcyB3ZWxsLgoKICAgIFRoaXMgbWFjcm8gaXMgYSBo b2xkb3ZlciBmcm9tIGEgdGltZSB3aGVuIG11bHRpcGxlIGZyYW1lcyB3ZXJlbid0IGFsd2F5 cwogICAgc3VwcG9ydGVkLiAgQW4gYWx0ZXJuYXRlIGRlZmluaXRpb24gb2YgdGhlIG1hY3Jv IHdvdWxkIGV4cGFuZCB0bwpAQCAtMTIxNyw3ICsxMjc2LDcgQEAgZXh0ZXJuIHZvaWQgZnJh bWVfc2l6ZV9oaXN0b3J5X2FkZCAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCBmdW5f c3ltYm9sLAogICByZXR1cm4gZnJhbWVfZGltZW5zaW9uIChmLT5pbnRlcm5hbF9ib3JkZXJf d2lkdGgpOwogfQoKLS8qIFBpeGVsLXNpemUgb2Ygd2luZG93IGJvcmRlciBsaW5lcyAqLwor LyogUGl4ZWwtc2l6ZSBvZiB3aW5kb3cgZGl2aWRlciBsaW5lcyAqLwogSU5MSU5FIGludAog RlJBTUVfUklHSFRfRElWSURFUl9XSURUSCAoc3RydWN0IGZyYW1lICpmKQogewpkaWZmIC0t Z2l0IGEvc3JjL2d0a3V0aWwuYyBiL3NyYy9ndGt1dGlsLmMKaW5kZXggYjAyODI1NC4uOWI1 NDViMyAxMDA2NDQKLS0tIGEvc3JjL2d0a3V0aWwuYworKysgYi9zcmMvZ3RrdXRpbC5jCkBA IC04MTMsMzAgKzgxMyw2IEBAIHN0cnVjdCB4Z19mcmFtZV90Yl9pbmZvCiAgICAgfQogfQoK LS8qIENsZWFyIHVuZGVyIGludGVybmFsIGJvcmRlciBpZiBhbnkuICBBcyB3ZSB1c2UgYSBt aXggb2YgR3RrKyBhbmQgWCBjYWxscwotICAgYW5kIHVzZSBhIEd0a0ZpeGVkIHdpZGdldCwg dGhpcyBkb2Vzbid0IGhhcHBlbiBhdXRvbWF0aWNhbGx5LiAgKi8KLQotdm9pZAoteGdfY2xl YXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyIChzdHJ1Y3QgZnJhbWUgKmYpCi17Ci0gIGlmIChG UkFNRV9JTlRFUk5BTF9CT1JERVJfV0lEVEggKGYpID4gMCkKLSAgICB7Ci0gICAgICB4X2Ns ZWFyX2FyZWEgKGYsIDAsIDAsCi0JCSAgICBGUkFNRV9QSVhFTF9XSURUSCAoZiksIEZSQU1F X0lOVEVSTkFMX0JPUkRFUl9XSURUSCAoZikpOwotCi0gICAgICB4X2NsZWFyX2FyZWEgKGYs IDAsIDAsCi0JCSAgICBGUkFNRV9JTlRFUk5BTF9CT1JERVJfV0lEVEggKGYpLCBGUkFNRV9Q SVhFTF9IRUlHSFQgKGYpKTsKLQotICAgICAgeF9jbGVhcl9hcmVhIChmLCAwLAotCQkgICAg RlJBTUVfUElYRUxfSEVJR0hUIChmKSAtIEZSQU1FX0lOVEVSTkFMX0JPUkRFUl9XSURUSCAo ZiksCi0JCSAgICBGUkFNRV9QSVhFTF9XSURUSCAoZiksIEZSQU1FX0lOVEVSTkFMX0JPUkRF Ul9XSURUSCAoZikpOwotCi0gICAgICB4X2NsZWFyX2FyZWEgKGYsCi0JCSAgICBGUkFNRV9Q SVhFTF9XSURUSCAoZikgLSBGUkFNRV9JTlRFUk5BTF9CT1JERVJfV0lEVEggKGYpLAotCQkg ICAgMCwgRlJBTUVfSU5URVJOQUxfQk9SREVSX1dJRFRIIChmKSwgRlJBTUVfUElYRUxfSEVJ R0hUIChmKSk7Ci0gICAgfQotfQotCiBzdGF0aWMgaW50CiB4Z19nZXRfZ2RrX3NjYWxlICh2 b2lkKQogewpAQCAtODgzLDcgKzg1OSw3IEBAIHN0cnVjdCB4Z19mcmFtZV90Yl9pbmZvCiAg ICAgICB8fCBwaXhlbHdpZHRoICE9IEZSQU1FX1BJWEVMX1dJRFRIIChmKQogICAgICAgfHwg cGl4ZWxoZWlnaHQgIT0gRlJBTUVfUElYRUxfSEVJR0hUIChmKSkKICAgICB7Ci0gICAgICB4 Z19jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIgKGYpOworICAgICAgeF9jbGVhcl91bmRl cl9pbnRlcm5hbF9ib3JkZXIgKGYpOwogICAgICAgY2hhbmdlX2ZyYW1lX3NpemUgKGYsIHdp ZHRoLCBoZWlnaHQsIDAsIDEsIDAsIDEpOwogICAgICAgU0VUX0ZSQU1FX0dBUkJBR0VEIChm KTsKICAgICAgIGNhbmNlbF9tb3VzZV9mYWNlIChmKTsKQEAgLTkxMSw3ICs4ODcsNyBAQCBz dHJ1Y3QgeGdfZnJhbWVfdGJfaW5mbwogCQkgICAgICAgJmd3aWR0aCwgJmdoZWlnaHQpOwoK ICAgLyogRG8gdGhpcyBiZWZvcmUgcmVzaXplLCBhcyB3ZSBkb24ndCBrbm93IHlldCBpZiB3 ZSB3aWxsIGJlIHJlc2l6ZWQuICAqLwotICB4Z19jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3Jk ZXIgKGYpOworICB4X2NsZWFyX3VuZGVyX2ludGVybmFsX2JvcmRlciAoZik7CgogICBpZiAo RlJBTUVfVklTSUJMRV9QIChmKSkKICAgICB7CkBAIC0xMTc4LDcgKzExNTQsMTQgQEAgc3Ry dWN0IHhnX2ZyYW1lX3RiX2luZm8KICAgZWxzZSBpZiAoISBOSUxQIChmLT5uYW1lKSkKICAg ICB0aXRsZSA9IFNTREFUQSAoRU5DT0RFX1VURl84IChmLT5uYW1lKSk7CgotICBpZiAodGl0 bGUpIGd0a193aW5kb3dfc2V0X3RpdGxlIChHVEtfV0lORE9XICh3dG9wKSwgdGl0bGUpOwor ICBpZiAodGl0bGUpCisgICAgZ3RrX3dpbmRvd19zZXRfdGl0bGUgKEdUS19XSU5ET1cgKHd0 b3ApLCB0aXRsZSk7CisKKyAgaWYgKEZSQU1FX1VOREVDT1JBVEVEIChmKSkKKyAgICB7Cisg ICAgICBndGtfd2luZG93X3NldF9kZWNvcmF0ZWQgKEdUS19XSU5ET1cgKHd0b3ApLCBGQUxT RSk7CisgICAgICBzdG9yZV9mcmFtZV9wYXJhbSAoZiwgUXVuZGVjb3JhdGVkLCBRdCk7Cisg ICAgfQoKICAgRlJBTUVfR1RLX09VVEVSX1dJREdFVCAoZikgPSB3dG9wOwogICBGUkFNRV9H VEtfV0lER0VUIChmKSA9IHdmaXhlZDsKQEAgLTEzMzQsNyArMTMxNyw5IEBAIHN0cnVjdCB4 Z19mcmFtZV90Yl9pbmZvCiAgIC8qIERvbid0IHNldCBzaXplIGhpbnRzIGR1cmluZyBpbml0 aWFsaXphdGlvbjsgdGhhdCBhcHBhcmVudGx5IGxlYWRzCiAgICAgIHRvIGEgcmFjZSBjb25k aXRpb24uICBTZWUgdGhlIHRocmVhZCBhdAogICAgICBodHRwOi8vbGlzdHMuZ251Lm9yZy9h cmNoaXZlL2h0bWwvZW1hY3MtZGV2ZWwvMjAwOC0xMC9tc2cwMDAzMy5odG1sICAqLwotICBp ZiAoTklMUCAoVmFmdGVyX2luaXRfdGltZSkgfHwgIUZSQU1FX0dUS19PVVRFUl9XSURHRVQg KGYpKQorICBpZiAoTklMUCAoVmFmdGVyX2luaXRfdGltZSkKKyAgICAgIHx8ICFGUkFNRV9H VEtfT1VURVJfV0lER0VUIChmKQorICAgICAgfHwgRlJBTUVfUEFSRU5UX0ZSQU1FIChmKSkK ICAgICByZXR1cm47CgogICBYU0VURlJBTUUgKGZyYW1lLCBmKTsKQEAgLTE0NjAsNiArMTQ0 NSw4NiBAQCBzdHJ1Y3QgeGdfZnJhbWVfdGJfaW5mbwogICAgIH0KIH0KCisvKiBDaGFuZ2Ug dGhlIGZyYW1lJ3MgZGVjb3JhdGlvbiAodGl0bGUgYmFyICsgcmVzaXplIGJvcmRlcnMpLiAg VGhpcworICAgbWlnaHQgbm90IHdvcmsgd2l0aCBhbGwgd2luZG93IG1hbmFnZXJzLiAgKi8K K3ZvaWQKK3hnX3NldF91bmRlY29yYXRlZCAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVj dCB1bmRlY29yYXRlZCkKK3sKKyAgaWYgKEZSQU1FX0dUS19XSURHRVQgKGYpKQorICAgIHsK KyAgICAgIGJsb2NrX2lucHV0ICgpOworICAgICAgZ3RrX3dpbmRvd19zZXRfZGVjb3JhdGVk IChHVEtfV0lORE9XIChGUkFNRV9HVEtfT1VURVJfV0lER0VUIChmKSksCisJCQkJTklMUCAo dW5kZWNvcmF0ZWQpID8gVFJVRSA6IEZBTFNFKTsKKyAgICAgIHVuYmxvY2tfaW5wdXQgKCk7 CisgICAgfQorfQorCisKKy8qIFJlc3RhY2sgRjEgYmVsb3cgRjIsIGFib3ZlIGlmIEFCT1ZF X0ZMQUcgaXMgdHJ1ZS4gIFRoaXMgbWlnaHQgbm90CisgICB3b3JrIHdpdGggYWxsIHdpbmRv dyBtYW5hZ2Vycy4gICovCit2b2lkCit4Z19mcmFtZV9yZXN0YWNrIChzdHJ1Y3QgZnJhbWUg KmYxLCBzdHJ1Y3QgZnJhbWUgKmYyLCBib29sIGFib3ZlX2ZsYWcpCit7CisgIGJsb2NrX2lu cHV0ICgpOworICBpZiAoRlJBTUVfR1RLX09VVEVSX1dJREdFVCAoZjEpICYmIEZSQU1FX0dU S19PVVRFUl9XSURHRVQgKGYyKSkKKyAgICB7CisgICAgICBHZGtXaW5kb3cgKmd3aW4xID0g Z3RrX3dpZGdldF9nZXRfd2luZG93IChGUkFNRV9HVEtfT1VURVJfV0lER0VUIChmMSkpOwor ICAgICAgR2RrV2luZG93ICpnd2luMiA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyAoRlJBTUVf R1RLX09VVEVSX1dJREdFVCAoZjIpKTsKKyAgICAgIExpc3BfT2JqZWN0IGZyYW1lMSwgZnJh bWUyOworCisgICAgICBYU0VURlJBTUUgKGZyYW1lMSwgZjEpOworICAgICAgWFNFVEZSQU1F IChmcmFtZTIsIGYyKTsKKworICAgICAgZ2RrX3dpbmRvd19yZXN0YWNrIChnd2luMSwgZ3dp bjIsIGFib3ZlX2ZsYWcpOworICAgICAgeF9zeW5jIChmMSk7CisgICAgfQorICB1bmJsb2Nr X2lucHV0ICgpOworfQorCisKKy8qIERvbid0IHNob3cgZnJhbWUgaW4gdGFza2JhciwgZG9u J3QgQUxULVRBQiB0byBpdC4gICovCit2b2lkCit4Z19zZXRfc2tpcF90YXNrYmFyIChzdHJ1 Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IHNraXBfdGFza2JhcikKK3sKKyAgYmxvY2tfaW5w dXQgKCk7CisgIGlmIChGUkFNRV9HVEtfV0lER0VUIChmKSkKKyAgICBnZGtfd2luZG93X3Nl dF9za2lwX3Rhc2tiYXJfaGludAorICAgICAgKGd0a193aWRnZXRfZ2V0X3dpbmRvdyAoRlJB TUVfR1RLX09VVEVSX1dJREdFVCAoZikpLAorICAgICAgIE5JTFAgKHNraXBfdGFza2Jhcikg PyBGQUxTRSA6IFRSVUUpOworICB1bmJsb2NrX2lucHV0ICgpOworfQorCisKKy8qIERvbid0 IGdpdmUgZnJhbWUgZm9jdXMuICAqLwordm9pZAoreGdfc2V0X25vX2ZvY3VzX29uX21hcCAo c3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCBub19mb2N1c19vbl9tYXApCit7CisgIGJs b2NrX2lucHV0ICgpOworICBpZiAoRlJBTUVfR1RLX1dJREdFVCAoZikpCisgICAgeworICAg ICAgR3RrV2luZG93ICpnd2luID0gR1RLX1dJTkRPVyAoRlJBTUVfR1RLX09VVEVSX1dJREdF VCAoZikpOworICAgICAgZ2Jvb2xlYW4gZ25vX2ZvY3VzX29uX21hcCA9IE5JTFAgKG5vX2Zv Y3VzX29uX21hcCkgPyBUUlVFIDogRkFMU0U7CisKKyAgICAgIGd0a193aW5kb3dfc2V0X2Zv Y3VzX29uX21hcCAoZ3dpbiwgZ25vX2ZvY3VzX29uX21hcCk7CisgICAgfQorICB1bmJsb2Nr X2lucHV0ICgpOworfQorCisKK3ZvaWQKK3hnX3NldF9ub19hY2NlcHRfZm9jdXMgKHN0cnVj dCBmcmFtZSAqZiwgTGlzcF9PYmplY3Qgbm9fYWNjZXB0X2ZvY3VzKQoreworICBibG9ja19p bnB1dCAoKTsKKyAgaWYgKEZSQU1FX0dUS19XSURHRVQgKGYpKQorICAgIHsKKyAgICAgIEd0 a1dpbmRvdyAqZ3dpbiA9IEdUS19XSU5ET1cgKEZSQU1FX0dUS19PVVRFUl9XSURHRVQgKGYp KTsKKyAgICAgIGdib29sZWFuIGdub19hY2NlcHRfZm9jdXMgPSBOSUxQIChub19hY2NlcHRf Zm9jdXMpID8gVFJVRSA6IEZBTFNFOworCisgICAgICBndGtfd2luZG93X3NldF9hY2NlcHRf Zm9jdXMgKGd3aW4sIGdub19hY2NlcHRfZm9jdXMpOworICAgIH0KKyAgdW5ibG9ja19pbnB1 dCAoKTsKK30KKwoKIC8qIFNldCB0aGUgZnJhbWUgaWNvbiB0byBJQ09OX1BJWE1BUC9NQVNL LiAgVGhpcyBtdXN0IGJlIGRvbmUgd2l0aCBHVEsKICAgIGZ1bmN0aW9ucyBzbyBHVEsgZG9l cyBub3Qgb3ZlcndyaXRlIHRoZSBpY29uLiAgKi8KQEAgLTM3NDAsNiArMzgwNSw3IEBAIHN0 cnVjdCB4Z19kaWFsb2dfZGF0YQogICAgICAgR3RrV2lkZ2V0ICp3cGFyZW50ID0gZ3RrX3dp ZGdldF9nZXRfcGFyZW50ICh3c2Nyb2xsKTsKICAgICAgIGdpbnQgbXNsOwogICAgICAgaW50 IHNjYWxlID0geGdfZ2V0X2dka19zY2FsZSAoKTsKKyAgICAgIGJvb2wgaGlkZGVuOwoKICAg ICAgIHRvcCAvPSBzY2FsZTsKICAgICAgIGxlZnQgLz0gc2NhbGU7CkBAIC0zNzY0LDYgKzM4 MzAsNyBAQCBzdHJ1Y3QgeGdfZGlhbG9nX2RhdGEKICAgICAgICAgICAgICB0aGUgaGVpZ2h0 IGlzIGxlc3MgdGhhbiB0aGUgbWluIHNpemUuICAqLwogICAgICAgICAgIGd0a193aWRnZXRf aGlkZSAod3BhcmVudCk7CiAgICAgICAgICAgZ3RrX3dpZGdldF9oaWRlICh3c2Nyb2xsKTsK KwkgIGhpZGRlbiA9IHRydWU7CiAgICAgICAgIH0KICAgICAgIGVsc2UKICAgICAgICAgewpA QCAtMzc3OCw2ICszODQ1LDE1IEBAIHN0cnVjdCB4Z19kaWFsb2dfZGF0YQogICAgICAgICAg IHhfY2xlYXJfYXJlYSAoZiwgb2xkeCwgb2xkeSwgb2xkdywgb2xkaCk7CiAgICAgICAgIH0K CisgICAgICBpZiAoIWhpZGRlbikKKwl7CisJICBHdGtXaWRnZXQgKnNjcm9sbGJhciA9IHhn X2dldF93aWRnZXRfZnJvbV9tYXAgKHNjcm9sbGJhcl9pZCk7CisJICBHdGtXaWRnZXQgKndl Ym94ID0gZ3RrX3dpZGdldF9nZXRfcGFyZW50IChzY3JvbGxiYXIpOworCisJICAvKiBEb24n dCBvYnNjdXJlIGFueSBjaGlsZCBmcmFtZXMuICAqLworCSAgWExvd2VyV2luZG93IChGUkFN RV9YX0RJU1BMQVkgKGYpLCBHVEtfV0lER0VUX1RPX1hfV0lOICh3ZWJveCkpOworCX0KKwog ICAgICAgLyogR1RLIGRvZXMgbm90IHJlZHJhdyB1bnRpbCB0aGUgbWFpbiBsb29wIGlzIGVu dGVyZWQgYWdhaW4sIGJ1dAogICAgICAgICAgaWYgdGhlcmUgYXJlIG5vIFggZXZlbnRzIHBl bmRpbmcgd2Ugd2lsbCBub3QgZW50ZXIgaXQuICBTbyB3ZSBzeW5jCiAgICAgICAgICBoZXJl IHRvIGdldCBzb21lIGV2ZW50cy4gICovCkBAIC0zODQzLDYgKzM5MTksMTUgQEAgc3RydWN0 IHhnX2RpYWxvZ19kYXRhCiAgICAgICAgICBpZiB0aGVyZSBhcmUgbm8gWCBldmVudHMgcGVu ZGluZyB3ZSB3aWxsIG5vdCBlbnRlciBpdC4gIFNvIHdlIHN5bmMKICAgICAgICAgIGhlcmUg dG8gZ2V0IHNvbWUgZXZlbnRzLiAgKi8KCisgICAgICB7CisJR3RrV2lkZ2V0ICpzY3JvbGxi YXIgPQorCSAgeGdfZ2V0X3dpZGdldF9mcm9tX21hcCAoc2Nyb2xsYmFyX2lkKTsKKwlHdGtX aWRnZXQgKndlYm94ID0gZ3RrX3dpZGdldF9nZXRfcGFyZW50IChzY3JvbGxiYXIpOworCisJ LyogRG9uJ3Qgb2JzY3VyZSBhbnkgY2hpbGQgZnJhbWVzLiAgKi8KKwlYTG93ZXJXaW5kb3cg KEZSQU1FX1hfRElTUExBWSAoZiksIEdUS19XSURHRVRfVE9fWF9XSU4gKHdlYm94KSk7Cisg ICAgICB9CisKICAgICAgIHhfc3luYyAoZik7CiAgICAgICBTRVRfRlJBTUVfR0FSQkFHRUQg KGYpOwogICAgICAgY2FuY2VsX21vdXNlX2ZhY2UgKGYpOwpkaWZmIC0tZ2l0IGEvc3JjL2d0 a3V0aWwuaCBiL3NyYy9ndGt1dGlsLmgKaW5kZXggZDY3YTdiYy4uMTJjOGQ2OCAxMDA2NDQK LS0tIGEvc3JjL2d0a3V0aWwuaAorKysgYi9zcmMvZ3RrdXRpbC5oCkBAIC0xNTAsNyArMTUw LDYgQEAgZXh0ZXJuIHZvaWQgeGdfc2V0X3Rvb2xraXRfaG9yaXpvbnRhbF9zY3JvbGxfYmFy X3RodW1iIChzdHJ1Y3Qgc2Nyb2xsX2JhciAqYmFyLAogZXh0ZXJuIHZvaWQgZnJlZV9mcmFt ZV90b29sX2JhciAoc3RydWN0IGZyYW1lICpmKTsKIGV4dGVybiB2b2lkIHhnX2NoYW5nZV90 b29sYmFyX3Bvc2l0aW9uIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IHBvcyk7Cgot ZXh0ZXJuIHZvaWQgeGdfY2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyIChzdHJ1Y3QgZnJh bWUgKmYpOwogZXh0ZXJuIHZvaWQgeGdfZnJhbWVfcmVzaXplZCAoc3RydWN0IGZyYW1lICpm LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBpeGVsd2lkdGgsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGl4ZWxoZWlnaHQpOwpAQCAtMTcyLDYg KzE3MSwxMiBAQCBleHRlcm4gdm9pZCB4Z19zZXRfZnJhbWVfaWNvbiAoc3RydWN0IGZyYW1l ICpmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBpeG1hcCBpY29uX3BpeG1h cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaXhtYXAgaWNvbl9tYXNrKTsK CitleHRlcm4gdm9pZCB4Z19zZXRfdW5kZWNvcmF0ZWQgKHN0cnVjdCBmcmFtZSAqZiwgTGlz cF9PYmplY3QgdW5kZWNvcmF0ZWQpOworZXh0ZXJuIHZvaWQgeGdfZnJhbWVfcmVzdGFjayAo c3RydWN0IGZyYW1lICpmMSwgc3RydWN0IGZyYW1lICpmMiwgYm9vbCBhYm92ZSk7CitleHRl cm4gdm9pZCB4Z19zZXRfc2tpcF90YXNrYmFyIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2Jq ZWN0IHNraXBfdGFza2Jhcik7CitleHRlcm4gdm9pZCB4Z19zZXRfbm9fZm9jdXNfb25fbWFw IChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IG5vX2ZvY3VzX29uX21hcCk7CitleHRl cm4gdm9pZCB4Z19zZXRfbm9fYWNjZXB0X2ZvY3VzIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3Bf T2JqZWN0IG5vX2FjY2VwdF9mb2N1cyk7CisKIGV4dGVybiBib29sIHhnX3ByZXBhcmVfdG9v bHRpcCAoc3RydWN0IGZyYW1lICpmLAogCQkJCUxpc3BfT2JqZWN0IHN0cmluZywKIAkJCQlp bnQgKndpZHRoLApkaWZmIC0tZ2l0IGEvc3JjL2tleWJvYXJkLmMgYi9zcmMva2V5Ym9hcmQu YwppbmRleCBlZDhlNzFmLi42ZjNlYjA5IDEwMDY0NAotLS0gYS9zcmMva2V5Ym9hcmQuYwor KysgYi9zcmMva2V5Ym9hcmQuYwpAQCAtNDA1Niw2ICs0MDU2LDE0IEBAIHN0YXRpYyBMaXNw X09iamVjdCBrYmRfYnVmZmVyX2dldF9ldmVudCAoS0JPQVJEICoqa2JwLCBib29sICp1c2Vk X21vdXNlX21lbnUsCiAJICBrYmRfZmV0Y2hfcHRyID0gZXZlbnQgKyAxOwogCX0KICNlbmRp ZgorI2lmIGRlZmluZWQgKEhBVkVfWDExKSB8fCBkZWZpbmVkIChIQVZFX05UR1VJKQorICAg ICAgZWxzZSBpZiAoZXZlbnQtPmtpbmQgPT0gTU9WRV9GUkFNRV9FVkVOVCkKKwl7CisJICAv KiBNYWtlIGFuIGV2ZW50IChtb3ZlLWZyYW1lIChGUkFNRSkpLiAgKi8KKwkgIG9iaiA9IGxp c3QyIChRbW92ZV9mcmFtZSwgbGlzdDEgKGV2ZW50LT5pZS5mcmFtZV9vcl93aW5kb3cpKTsK KwkgIGtiZF9mZXRjaF9wdHIgPSBldmVudCArIDE7CisJfQorI2VuZGlmCiAjaWZkZWYgSEFW RV9YV0lER0VUUwogICAgICAgZWxzZSBpZiAoZXZlbnQtPmtpbmQgPT0gWFdJREdFVF9FVkVO VCkKIAl7CkBAIC0xMDk3Miw2ICsxMDk4MCw3IEBAIHN0cnVjdCBldmVudF9oZWFkCgogICB7 U1lNQk9MX0lOREVYIChRZm9jdXNfaW4pLCAgICAgICAgICAgIFNZTUJPTF9JTkRFWCAoUWZv Y3VzX2luKX0sCiAgIHtTWU1CT0xfSU5ERVggKFFmb2N1c19vdXQpLCAgICAgICAgICAgU1lN Qk9MX0lOREVYIChRZm9jdXNfb3V0KX0sCisgIHtTWU1CT0xfSU5ERVggKFFtb3ZlX2ZyYW1l KSwgICAgICAgICAgU1lNQk9MX0lOREVYIChRbW92ZV9mcmFtZSl9LAogICB7U1lNQk9MX0lO REVYIChRZGVsZXRlX2ZyYW1lKSwgICAgICAgIFNZTUJPTF9JTkRFWCAoUWRlbGV0ZV9mcmFt ZSl9LAogICB7U1lNQk9MX0lOREVYIChRaWNvbmlmeV9mcmFtZSksICAgICAgIFNZTUJPTF9J TkRFWCAoUWljb25pZnlfZnJhbWUpfSwKICAge1NZTUJPTF9JTkRFWCAoUW1ha2VfZnJhbWVf dmlzaWJsZSksICBTWU1CT0xfSU5ERVggKFFtYWtlX2ZyYW1lX3Zpc2libGUpfSwKQEAgLTEx MTQ0LDYgKzExMTUzLDcgQEAgc3RydWN0IGV2ZW50X2hlYWQKICAgREVGU1lNIChRc3dpdGNo X2ZyYW1lLCAic3dpdGNoLWZyYW1lIik7CiAgIERFRlNZTSAoUWZvY3VzX2luLCAiZm9jdXMt aW4iKTsKICAgREVGU1lNIChRZm9jdXNfb3V0LCAiZm9jdXMtb3V0Iik7CisgIERFRlNZTSAo UW1vdmVfZnJhbWUsICJtb3ZlLWZyYW1lIik7CiAgIERFRlNZTSAoUWRlbGV0ZV9mcmFtZSwg ImRlbGV0ZS1mcmFtZSIpOwogICBERUZTWU0gKFFpY29uaWZ5X2ZyYW1lLCAiaWNvbmlmeS1m cmFtZSIpOwogICBERUZTWU0gKFFtYWtlX2ZyYW1lX3Zpc2libGUsICJtYWtlLWZyYW1lLXZp c2libGUiKTsKQEAgLTExODkwLDYgKzExOTAwLDggQEAgc2h1dGRvd24gd2hlbiBFbWFjcyBy ZWNlaXZlcyBhIGZhdGFsIHNpZ25hbCAoZS5nLiwgYSBjcmFzaCkuCiAJCQkgICAgImhhbmRs ZS1mb2N1cy1pbiIpOwogICBpbml0aWFsX2RlZmluZV9saXNweV9rZXkgKFZzcGVjaWFsX2V2 ZW50X21hcCwgImZvY3VzLW91dCIsCiAJCQkgICAgImhhbmRsZS1mb2N1cy1vdXQiKTsKKyAg aW5pdGlhbF9kZWZpbmVfbGlzcHlfa2V5IChWc3BlY2lhbF9ldmVudF9tYXAsICJtb3ZlLWZy YW1lIiwKKwkJCSAgICAiaGFuZGxlLW1vdmUtZnJhbWUiKTsKIH0KCiAvKiBNYXJrIHRoZSBw b2ludGVycyBpbiB0aGUga2JvYXJkIG9iamVjdHMuCmRpZmYgLS1naXQgYS9zcmMvbnNmbnMu bSBiL3NyYy9uc2Zucy5tCmluZGV4IGE3MDk5MzUuLjkxMjQ5M2UgMTAwNjQ0Ci0tLSBhL3Ny Yy9uc2Zucy5tCisrKyBiL3NyYy9uc2Zucy5tCkBAIC05NzIsNiArOTcyLDEyIEBAIFR1cm4g dGhlIGlucHV0IG1lbnUgKGFuIE5TTWVudSkgaW50byBhIGxpc3AgbGlzdCBmb3IgdHJhY2tp bmcgb24gbGlzcCBzaWRlCiAgIDAsIC8qIHhfc2V0X3N0aWNreSAqLwogICAwLCAvKiB4X3Nl dF90b29sX2Jhcl9wb3NpdGlvbiAqLwogICAwLCAvKiB4X3NldF9pbmhpYml0X2RvdWJsZV9i dWZmZXJpbmcgKi8KKyAgMCwgLyogeF9zZXRfdW5kZWNvcmF0ZWQgKi8KKyAgMCwgLyogeF9z ZXRfcGFyZW50X2ZyYW1lICovCisgIDAsIC8qIHhfc2V0X3NraXBfdGFza2JhciAqLworICAw LCAvKiB4X3NldF9ub19mb2N1c19vbl9tYXAgKi8KKyAgMCwgLyogeF9zZXRfbm9fYWNjZXB0 X2ZvY3VzICovCisgIDAsIC8qIHhfc2V0X3pfZ3JvdXAgKi8KIH07CgoKQEAgLTEyNDgsNiAr MTI1NCwxMiBAQCBUdXJuIHRoZSBpbnB1dCBtZW51IChhbiBOU01lbnUpIGludG8gYSBsaXNw IGxpc3QgZm9yIHRyYWNraW5nIG9uIGxpc3Agc2lkZQogICBpbml0X2ZyYW1lX2ZhY2VzIChm KTsKCiAgIC8qIFJlYWQgY29tbWVudCBhYm91dCB0aGlzIGNvZGUgaW4gY29ycmVzcG9uZGlu ZyBwbGFjZSBpbiB4Zm5zLmMuICAqLworICB0ZW0gPSB4X2dldF9hcmcgKGRweWluZm8sIHBh cm1zLCBRbWluX3dpZHRoLCBOVUxMLCBOVUxMLCBSRVNfVFlQRV9OVU1CRVIpOworICBpZiAo TlVNQkVSUCAodGVtKSkKKyAgICBzdG9yZV9mcmFtZV9wYXJhbSAoZiwgUW1pbl93aWR0aCwg dGVtKTsKKyAgdGVtID0geF9nZXRfYXJnIChkcHlpbmZvLCBwYXJtcywgUW1pbl9oZWlnaHQs IE5VTEwsIE5VTEwsIFJFU19UWVBFX05VTUJFUik7CisgIGlmIChOVU1CRVJQICh0ZW0pKQor ICAgIHN0b3JlX2ZyYW1lX3BhcmFtIChmLCBRbWluX2hlaWdodCwgdGVtKTsKICAgYWRqdXN0 X2ZyYW1lX3NpemUgKGYsIEZSQU1FX0NPTFMgKGYpICogRlJBTUVfQ09MVU1OX1dJRFRIIChm KSwKIAkJICAgICBGUkFNRV9MSU5FUyAoZikgKiBGUkFNRV9MSU5FX0hFSUdIVCAoZiksIDUs IDEsCiAJCSAgICAgUXhfY3JlYXRlX2ZyYW1lXzEpOwpkaWZmIC0tZ2l0IGEvc3JjL25zdGVy bS5tIGIvc3JjL25zdGVybS5tCmluZGV4IDYzZjFiMTUuLjNjZDU2OWYgMTAwNjQ0Ci0tLSBh L3NyYy9uc3Rlcm0ubQorKysgYi9zcmMvbnN0ZXJtLm0KQEAgLTYzMDcsNyArNjMwNyw3IEBA IC0gKHZvaWQpbW91c2VNb3ZlZDogKE5TRXZlbnQgKillCiAgICAgICBpZiAoV0lORE9XUCAo d2luZG93KQogICAgICAgICAgICYmICFFUSAod2luZG93LCBsYXN0X21vdXNlX3dpbmRvdykK ICAgICAgICAgICAmJiAhRVEgKHdpbmRvdywgc2VsZWN0ZWRfd2luZG93KQotICAgICAgICAg ICYmIChmb2N1c19mb2xsb3dzX21vdXNlCisgICAgICAgICAgJiYgKCFOSUxQIChmb2N1c19m b2xsb3dzX21vdXNlKQogICAgICAgICAgICAgICB8fCAoRVEgKFhXSU5ET1cgKHdpbmRvdykt PmZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgIFhXSU5ET1cgKHNlbGVjdGVkX3dpbmRv dyktPmZyYW1lKSkpKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9zcmMvdGVybWhvb2tzLmgg Yi9zcmMvdGVybWhvb2tzLmgKaW5kZXggM2IxYjQ5NS4uMTRlYzM5NyAxMDA2NDQKLS0tIGEv c3JjL3Rlcm1ob29rcy5oCisrKyBiL3NyYy90ZXJtaG9va3MuaApAQCAtMjAyLDYgKzIwMiw5 IEBAIGVudW0gZXZlbnRfa2luZAoKICAgRk9DVVNfT1VUX0VWRU5ULAoKKyAgLyogR2VuZXJh dGVkIHdoZW4gYSBmcmFtZSBpcyBtb3ZlZC4gICovCisgIE1PVkVfRlJBTUVfRVZFTlQsCisK ICAgLyogR2VuZXJhdGVkIHdoZW4gbW91c2UgbW92ZXMgb3ZlciB3aW5kb3cgbm90IGN1cnJl bnRseSBzZWxlY3RlZC4gICovCiAgIFNFTEVDVF9XSU5ET1dfRVZFTlQsCgpkaWZmIC0tZ2l0 IGEvc3JjL3czMmZucy5jIGIvc3JjL3czMmZucy5jCmluZGV4IDFiNjI4YjAuLjcyNTY5MjUg MTAwNjQ0Ci0tLSBhL3NyYy93MzJmbnMuYworKysgYi9zcmMvdzMyZm5zLmMKQEAgLTI1Niw2 ICsyNTYsMTAgQEAgdHlwZWRlZiBCT09MIChXSU5BUEkgKiBHZXRUaXRsZUJhckluZm9fUHJv YykKICMgZGVmaW5lIFdUU19TRVNTSU9OX0xPQ0sgICAgICAweDcKICNlbmRpZgoKKyNpZm5k ZWYgV1NfRVhfTk9BQ1RJVkFURQorI2RlZmluZSBXU19FWF9OT0FDVElWQVRFIDB4MDgwMDAw MDBMCisjZW5kaWYKKwogLyogS2V5Ym9hcmQgaG9vayBzdGF0ZSBkYXRhLiAgKi8KIHN0YXRp YyBzdHJ1Y3QKIHsKQEAgLTM2NywxNyArMzcxLDIwIEBAIHN0cnVjdCBmcmFtZSAqCiB2b2lk CiB4X3JlYWxfcG9zaXRpb25zIChzdHJ1Y3QgZnJhbWUgKmYsIGludCAqeHB0ciwgaW50ICp5 cHRyKQogewotICBQT0lOVCBwdDsKICAgUkVDVCByZWN0OwoKICAgLyogR2V0IHRoZSBib3Vu ZHMgb2YgdGhlIFdNIHdpbmRvdy4gICovCiAgIEdldFdpbmRvd1JlY3QgKEZSQU1FX1czMl9X SU5ET1cgKGYpLCAmcmVjdCk7CgotICBwdC54ID0gMDsKLSAgcHQueSA9IDA7CisgIGlmIChG UkFNRV9QQVJFTlRfRlJBTUUgKGYpKQorICAgIHsKKyAgICAgIC8qIEZvciBhIGNoaWxkIHdp bmRvdyB3ZSBoYXZlIHRvIGdldCBpdHMgY29vcmRpbmF0ZXMgd3J0IGl0cworCSBwYXJlbnQu ICAqLworICAgICAgSFdORCBwYXJlbnRfaHduZCA9IEZSQU1FX1czMl9XSU5ET1cgKEZSQU1F X1BBUkVOVF9GUkFNRSAoZikpOwoKLSAgLyogQ29udmVydCAoMCwgMCkgaW4gdGhlIGNsaWVu dCBhcmVhIHRvIHNjcmVlbiBjby1vcmRpbmF0ZXMuICAqLwotICBDbGllbnRUb1NjcmVlbiAo RlJBTUVfVzMyX1dJTkRPVyAoZiksICZwdCk7CisgICAgICBpZiAocGFyZW50X2h3bmQpCisJ TWFwV2luZG93UG9pbnRzIChIV05EX0RFU0tUT1AsIHBhcmVudF9od25kLCAoTFBQT0lOVCkg JnJlY3QsIDIpOworICAgIH0KCiAgICp4cHRyID0gcmVjdC5sZWZ0OwogICAqeXB0ciA9IHJl Y3QudG9wOwpAQCAtMTYyNyw3ICsxNjM0LDEzIEBAIHN0cnVjdCBmcmFtZSAqCiAjZW5kaWYK IH0KIAwKLXN0YXRpYyB2b2lkCisvKioKKyAqIHhfY2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9y ZGVyOgorICoKKyAqIENsZWFyIGFyZWEgb2YgZnJhbWUgRidzIGludGVybmFsIGJvcmRlci4g IElmIHRoZSBpbnRlcm5hbCBib3JkZXIgZmFjZQorICogb2YgRiBoYXMgYmVlbiBzcGVjaWZp ZWQgKGlzIG5vdCBudWxsKSwgZmlsbCB0aGUgYXJlYSB3aXRoIHRoYXQgZmFjZS4KKyAqLwor dm9pZAogeF9jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIgKHN0cnVjdCBmcmFtZSAqZikK IHsKICAgaW50IGJvcmRlciA9IEZSQU1FX0lOVEVSTkFMX0JPUkRFUl9XSURUSCAoZik7CkBA IC0xNjM4LDEyICsxNjUxLDI2IEBAIHN0cnVjdCBmcmFtZSAqCiAgICAgICBIREMgaGRjID0g Z2V0X2ZyYW1lX2RjIChmKTsKICAgICAgIGludCB3aWR0aCA9IEZSQU1FX1BJWEVMX1dJRFRI IChmKTsKICAgICAgIGludCBoZWlnaHQgPSBGUkFNRV9QSVhFTF9IRUlHSFQgKGYpOworICAg ICAgc3RydWN0IGZhY2UgKmZhY2UgPSBGQUNFX0ZST01fSURfT1JfTlVMTCAoZiwgSU5URVJO QUxfQk9SREVSX0ZBQ0VfSUQpOwoKICAgICAgIGJsb2NrX2lucHV0ICgpOwotICAgICAgdzMy X2NsZWFyX2FyZWEgKGYsIGhkYywgMCwgRlJBTUVfVE9QX01BUkdJTl9IRUlHSFQgKGYpLCB3 aWR0aCwgYm9yZGVyKTsKLSAgICAgIHczMl9jbGVhcl9hcmVhIChmLCBoZGMsIDAsIDAsIGJv cmRlciwgaGVpZ2h0KTsKLSAgICAgIHczMl9jbGVhcl9hcmVhIChmLCBoZGMsIHdpZHRoIC0g Ym9yZGVyLCAwLCBib3JkZXIsIGhlaWdodCk7Ci0gICAgICB3MzJfY2xlYXJfYXJlYSAoZiwg aGRjLCAwLCBoZWlnaHQgLSBib3JkZXIsIHdpZHRoLCBib3JkZXIpOworICAgICAgaWYgKGZh Y2UpCisJeworCSAgLyogRmlsbCBib3JkZXIgd2l0aCBpbnRlcm5hbCBib3JkZXIgZmFjZS4g ICovCisJICB1bnNpZ25lZCBsb25nIGNvbG9yID0gZmFjZS0+YmFja2dyb3VuZDsKKworCSAg dzMyX2ZpbGxfYXJlYSAoZiwgaGRjLCBjb2xvciwgMCwgRlJBTUVfVE9QX01BUkdJTl9IRUlH SFQgKGYpLCB3aWR0aCwgYm9yZGVyKTsKKwkgIHczMl9maWxsX2FyZWEgKGYsIGhkYywgY29s b3IsIDAsIDAsIGJvcmRlciwgaGVpZ2h0KTsKKwkgIHczMl9maWxsX2FyZWEgKGYsIGhkYywg Y29sb3IsIHdpZHRoIC0gYm9yZGVyLCAwLCBib3JkZXIsIGhlaWdodCk7CisJICB3MzJfZmls bF9hcmVhIChmLCBoZGMsIGNvbG9yLCAwLCBoZWlnaHQgLSBib3JkZXIsIHdpZHRoLCBib3Jk ZXIpOworCX0KKyAgICAgIGVsc2UKKwl7CisJICB3MzJfY2xlYXJfYXJlYSAoZiwgaGRjLCAw LCBGUkFNRV9UT1BfTUFSR0lOX0hFSUdIVCAoZiksIHdpZHRoLCBib3JkZXIpOworCSAgdzMy X2NsZWFyX2FyZWEgKGYsIGhkYywgMCwgMCwgYm9yZGVyLCBoZWlnaHQpOworCSAgdzMyX2Ns ZWFyX2FyZWEgKGYsIGhkYywgd2lkdGggLSBib3JkZXIsIDAsIGJvcmRlciwgaGVpZ2h0KTsK KwkgIHczMl9jbGVhcl9hcmVhIChmLCBoZGMsIDAsIGhlaWdodCAtIGJvcmRlciwgd2lkdGgs IGJvcmRlcik7CisJfQogICAgICAgcmVsZWFzZV9mcmFtZV9kYyAoZiwgaGRjKTsKICAgICAg IHVuYmxvY2tfaW5wdXQgKCk7CiAgICAgfQpAQCAtMTY4Miw3ICsxNzA5LDcgQEAgc3RydWN0 IGZyYW1lICoKICAgICAgbW9zdCBvZiB0aGUgY29tbWFuZHMgdHJ5IHRvIGFwcGx5IHRoZW1z ZWx2ZXMgdG8gdGhlIG1pbmlidWZmZXIKICAgICAgZnJhbWUgaXRzZWxmLCBhbmQgZ2V0IGFu IGVycm9yIGJlY2F1c2UgeW91IGNhbid0IHN3aXRjaCBidWZmZXJzCiAgICAgIGluIG9yIHNw bGl0IHRoZSBtaW5pYnVmZmVyIHdpbmRvdy4gICovCi0gIGlmIChGUkFNRV9NSU5JQlVGX09O TFlfUCAoZikpCisgIGlmIChGUkFNRV9NSU5JQlVGX09OTFlfUCAoZikgfHwgRlJBTUVfUEFS RU5UX0ZSQU1FIChmKSkKICAgICByZXR1cm47CgogICBpZiAoSU5URUdFUlAgKHZhbHVlKSkK QEAgLTE5NTUsNiArMTk4MiwyMjcgQEAgc3RydWN0IGZyYW1lICoKICAgRlJBTUVfQ09ORklH X1NDUk9MTF9CQVJfTElORVMgKGYpCiAgICAgPSAoRlJBTUVfQ09ORklHX1NDUk9MTF9CQVJf SEVJR0hUIChmKSArIHVuaXQgLSAxKSAvIHVuaXQ7CiB9CisKKy8qKgorICogeF9zZXRfdW5k ZWNvcmF0ZWQ6CisgKgorICogU2V0IGZyYW1lIEYncyBgdW5kZWNvcmF0ZWQnIHBhcmFtZXRl ci4gIElmIG5vbi1uaWwsIEYncyB3aW5kb3ctc3lzdGVtCisgKiB3aW5kb3cgaXMgZHJhd24g d2l0aG91dCBkZWNvcmF0aW9ucywgdGl0bGUsIG1pbmltaXplL21heGltaXplIGJveGVzCisg KiBhbmQgZXh0ZXJuYWwgYm9yZGVycy4gIFRoaXMgdXN1YWxseSBtZWFucyB0aGF0IHRoZSB3 aW5kb3cgY2Fubm90IGJlCisgKiBkcmFnZ2VkLCByZXNpemVkLCBpY29uaWZpZWQsIG1heGlt aXplZCBvciBkZWxldGVkIHdpdGggdGhlIG1vdXNlLiAgSWYKKyAqIG5pbCwgZHJhdyB0aGUg ZnJhbWUgd2l0aCBhbGwgdGhlIGVsZW1lbnRzIGxpc3RlZCBhYm92ZSB1bmxlc3MgdGhlc2UK KyAqIGhhdmUgYmVlbiBzdXNwZW5kZWQgdmlhIHdpbmRvdyBtYW5hZ2VyIHNldHRpbmdzLgor ICoKKyAqIFNvbWUgd2luZG93IG1hbmFnZXJzIG1heSBub3QgaG9ub3IgdGhpcyBwYXJhbWV0 ZXIuCisgKi8KK3N0YXRpYyB2b2lkCit4X3NldF91bmRlY29yYXRlZCAoc3RydWN0IGZyYW1l ICpmLCBMaXNwX09iamVjdCBuZXdfdmFsdWUsIExpc3BfT2JqZWN0IG9sZF92YWx1ZSkKK3sK KyAgSFdORCBod25kID0gRlJBTUVfVzMyX1dJTkRPVyAoZik7CisgIERXT1JEIGR3U3R5bGUg PSBHZXRXaW5kb3dMb25nIChod25kLCBHV0xfU1RZTEUpOworICBMaXNwX09iamVjdCBib3Jk ZXJfd2lkdGggPSBGY2RyIChGYXNzcSAoUWJvcmRlcl93aWR0aCwgZi0+cGFyYW1fYWxpc3Qp KTsKKworICBibG9ja19pbnB1dCAoKTsKKyAgaWYgKCFOSUxQIChuZXdfdmFsdWUpICYmICFG UkFNRV9VTkRFQ09SQVRFRCAoZikpCisgICAgeworICAgICAgZHdTdHlsZSA9ICgoZHdTdHls ZSAmIH5XU19USElDS0ZSQU1FICYgfldTX0NBUFRJT04pCisJCSB8ICgoTlVNQkVSUCAoYm9y ZGVyX3dpZHRoKSAmJiAoWElOVCAoYm9yZGVyX3dpZHRoKSA+IDApKQorCQkgICAgPyBXU19C T1JERVIgOiBmYWxzZSkpOworICAgICAgU2V0V2luZG93TG9uZyAoaHduZCwgR1dMX1NUWUxF LCBkd1N0eWxlKTsKKyAgICAgIFNldFdpbmRvd1BvcyAoaHduZCwgSFdORF9UT1AsIDAsIDAs IDAsIDAsCisJCSAgICBTV1BfTk9TSVpFIHwgU1dQX05PTU9WRSB8IFNXUF9OT1pPUkRFUiB8 IFNXUF9OT0FDVElWQVRFCisJCSAgICB8IFNXUF9GUkFNRUNIQU5HRUQpOworICAgICAgRlJB TUVfVU5ERUNPUkFURUQgKGYpID0gdHJ1ZTsKKyAgICB9CisgIGVsc2UgaWYgKE5JTFAgKG5l d192YWx1ZSkgJiYgRlJBTUVfVU5ERUNPUkFURUQgKGYpKQorICAgIHsKKyAgICAgIFNldFdp bmRvd0xvbmcgKGh3bmQsIEdXTF9TVFlMRSwgZHdTdHlsZSB8IFdTX1RISUNLRlJBTUUgfCBX U19DQVBUSU9OCisJCSAgICAgfCBXU19NQVhJTUlaRUJPWCB8IFdTX01JTklNSVpFQk9YIHwg V1NfU1lTTUVOVSk7CisgICAgICBTZXRXaW5kb3dQb3MgKGh3bmQsIEhXTkRfVE9QLCAwLCAw LCAwLCAwLAorCQkgICAgU1dQX05PU0laRSB8IFNXUF9OT01PVkUgfCBTV1BfTk9aT1JERVIg fCBTV1BfTk9BQ1RJVkFURQorCQkgICAgfCBTV1BfRlJBTUVDSEFOR0VEKTsKKyAgICAgIEZS QU1FX1VOREVDT1JBVEVEIChmKSA9IGZhbHNlOworICAgIH0KKyAgdW5ibG9ja19pbnB1dCAo KTsKK30KKworLyoqCisgKiB4X3NldF9wYXJlbnRfZnJhbWU6CisgKgorICogU2V0IGZyYW1l IEYncyBgcGFyZW50LWZyYW1lJyBwYXJhbWV0ZXIuICBJZiBub24tbmlsLCBtYWtlIEYgYSBj aGlsZAorICogZnJhbWUgb2YgdGhlIGZyYW1lIHNwZWNpZmllZCBieSB0aGF0IHBhcmFtZXRl ci4gIFRlY2huaWNhbGx5LCB0aGlzCisgKiBtYWtlcyBGJ3Mgd2luZG93LXN5c3RlbSB3aW5k b3cgYSBjaGlsZCB3aW5kb3cgb2YgdGhlIHBhcmVudCBmcmFtZSdzCisgKiB3aW5kb3ctc3lz dGVtIHdpbmRvdy4gIElmIG5pbCwgbWFrZSBGJ3Mgd2luZG93LXN5c3RlbSB3aW5kb3cgYQor ICogdG9wLWxldmVsIHdpbmRvdy0tYSBjaGlsZCBvZiBpdHMgZGlzcGxheSdzIHJvb3Qgd2lu ZG93LgorICoKKyAqIEEgY2hpbGQgZnJhbWUgaXMgY2xpcHBlZCBhdCB0aGUgbmF0aXZlIGVk Z2VzIG9mIGl0cyBwYXJlbnQgZnJhbWUuCisgKiBJdHMgYGxlZnQnIGFuZCBgdG9wJyBwYXJh bWV0ZXJzIHNwZWNpZnkgcG9zaXRpb25zIHJlbGF0aXZlIHRvIHRoZQorICogdG9wLWxlZnQg Y29ybmVyIG9mIGl0cyBwYXJlbnQgZnJhbWUncyBuYXRpdmUgcmVjdGFuZ2xlLiAgVXN1YWxs eSwKKyAqIG1vdmluZyBhIHBhcmVudCBmcmFtZSBtb3ZlcyBhbGwgaXRzIGNoaWxkIGZyYW1l cyB0b28sIGtlZXBpbmcgdGhlaXIKKyAqIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBwYXJl bnQgdW5hbHRlcmVkLiAgV2hlbiBhIHBhcmVudCBmcmFtZSBpcworICogaWNvbmlmaWVkIG9y IG1hZGUgaW52aXNpYmxlLCBpdHMgY2hpbGQgZnJhbWVzIGFyZSBtYWRlIGludmlzaWJsZS4K KyAqIFdoZW4gYSBwYXJlbnQgZnJhbWUgaXMgZGVsZXRlZCwgaXRzIGNoaWxkIGZyYW1lcyBh cmUgZGVsZXRlZCB0b28uCisgKgorICogQSB2aXNpYmxlIGNoaWxkIGZyYW1lIGFsd2F5cyBh cHBlYXJzIG9uIHRvcCBvZiBpdHMgcGFyZW50IGZyYW1lIHRodXMKKyAqIG9ic2N1cmluZyBw YXJ0cyBvZiBpdC4gIFdoZW4gYSBmcmFtZSBoYXMgbW9yZSB0aGFuIG9uZSBjaGlsZCBmcmFt ZSwKKyAqIHRoZWlyIHN0YWNraW5nIG9yZGVyIGlzIHNwZWNpZmllZCBqdXN0IGFzIHRoYXQg b2Ygbm9uLWNoaWxkIGZyYW1lcworICogcmVsYXRpdmUgdG8gdGhlaXIgZGlzcGxheS4KKyAq CisgKiBXaGV0aGVyIGEgY2hpbGQgZnJhbWUgaGFzIGEgbWVudSBvciB0b29sIGJhciBtYXkg YmUgd2luZG93LXN5c3RlbSBvcgorICogd2luZG93IG1hbmFnZXIgZGVwZW5kZW50LiAgSXQn cyBhZHZpc2FibGUgdG8gZGlzYWJsZSBib3RoIHZpYSB0aGUKKyAqIGZyYW1lIHBhcmFtZXRl ciBzZXR0aW5ncy4KKyAqCisgKiBTb21lIHdpbmRvdyBtYW5hZ2VycyBtYXkgbm90IGhvbm9y IHRoaXMgcGFyYW1ldGVyLgorICovCitzdGF0aWMgdm9pZAoreF9zZXRfcGFyZW50X2ZyYW1l IChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IG5ld192YWx1ZSwgTGlzcF9PYmplY3Qg b2xkX3ZhbHVlKQoreworICBzdHJ1Y3QgZnJhbWUgKnAgPSBOVUxMOworCisgIGlmICghTklM UCAobmV3X3ZhbHVlKQorICAgICAgJiYgKCFGUkFNRVAgKG5ld192YWx1ZSkKKwkgIHx8ICFG UkFNRV9MSVZFX1AgKHAgPSBYRlJBTUUgKG5ld192YWx1ZSkpCisJICB8fCAhRlJBTUVfVzMy X1AgKHApKSkKKyAgICB7CisgICAgICBzdG9yZV9mcmFtZV9wYXJhbSAoZiwgUXBhcmVudF9m cmFtZSwgb2xkX3ZhbHVlKTsKKyAgICAgIGVycm9yICgiSW52YWxpZCBzcGVjaWZpY2F0aW9u IG9mIGBwYXJlbnQtZnJhbWUnIik7CisgICAgfQorCisgIGlmIChwICE9IEZSQU1FX1BBUkVO VF9GUkFNRSAoZikpCisgICAgeworICAgICAgSFdORCBod25kID0gRlJBTUVfVzMyX1dJTkRP VyAoZik7CisgICAgICBIV05EIGh3bmRfcGFyZW50ID0gcCA/IEZSQU1FX1czMl9XSU5ET1cg KHApIDogTlVMTDsKKyAgICAgIEhXTkQgaHduZF92YWx1ZTsKKworICAgICAgYmxvY2tfaW5w dXQgKCk7CisgICAgICBod25kX3ZhbHVlID0gU2V0UGFyZW50IChod25kLCBod25kX3BhcmVu dCk7CisgICAgICB1bmJsb2NrX2lucHV0ICgpOworCisgICAgICBpZiAoaHduZF92YWx1ZSkK Kwlmc2V0X3BhcmVudF9mcmFtZSAoZiwgbmV3X3ZhbHVlKTsKKyAgICAgIGVsc2UKKwl7CisJ ICBzdG9yZV9mcmFtZV9wYXJhbSAoZiwgUXBhcmVudF9mcmFtZSwgb2xkX3ZhbHVlKTsKKwkg IGVycm9yICgiUmVwYXJlbnRpbmcgZnJhbWUgZmFpbGVkIik7CisJfQorICAgIH0KK30KKwor LyoqCisgKiB4X3NldF9za2lwX3Rhc2tiYXI6CisgKgorICogU2V0IGZyYW1lIEYncyBgc2tp cC10YXNrYmFyJyBwYXJhbWV0ZXIuICBJZiBub24tbmlsLCB0aGlzIHNob3VsZAorICogcmVt b3ZlIEYncyBpY29uIGZyb20gdGhlIHRhc2tiYXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBkaXNw bGF5IG9mIEYncworICogd2luZG93LXN5c3RlbSB3aW5kb3cgYW5kIGluaGliaXQgc3dpdGNo aW5nIHRvIEYncyB3aW5kb3cgdmlhCisgKiA8QWx0Pi08VEFCPi4gIE9uIFdpbmRvd3MgaWNv bmlmeWluZyBGIHdpbGwgInJvbGwgaW4iIGl0cyB3aW5kb3cgYXQKKyAqIHRoZSBib3R0b20g b2YgdGhlIGRlc2t0b3AuICBJZiBuaWwsIGxpZnQgdGhlc2UgcmVzdHJpY3Rpb25zLgorICoK KyAqIFNvbWUgd2luZG93IG1hbmFnZXJzIG1heSBub3QgaG9ub3IgdGhpcyBwYXJhbWV0ZXIu CisgKi8KK3N0YXRpYyB2b2lkCit4X3NldF9za2lwX3Rhc2tiYXIgKHN0cnVjdCBmcmFtZSAq ZiwgTGlzcF9PYmplY3QgbmV3X3ZhbHVlLCBMaXNwX09iamVjdCBvbGRfdmFsdWUpCit7Cisg IGlmICghRVEgKG5ld192YWx1ZSwgb2xkX3ZhbHVlKSkKKyAgICB7CisgICAgICBIV05EIGh3 bmQgPSBGUkFNRV9XMzJfV0lORE9XIChmKTsKKyAgICAgIERXT1JEIGV4U3R5bGUgPSBHZXRX aW5kb3dMb25nIChod25kLCBHV0xfRVhTVFlMRSk7CisKKyAgICAgIGJsb2NrX2lucHV0ICgp OworICAgICAgLyogVGVtcG9yYXJpbHkgaGlkZSB0aGUgd2luZG93IHdoaWxlIGNoYW5naW5n IGl0cyBXU19FWF9OT0FDVElWQVRFCisJIHNldHRpbmcuICAqLworICAgICAgU2hvd1dpbmRv dyAoaHduZCwgU1dfSElERSk7CisgICAgICBpZiAoIU5JTFAgKG5ld192YWx1ZSkpCisJU2V0 V2luZG93TG9uZyAoaHduZCwgR1dMX0VYU1RZTEUsIGV4U3R5bGUgfCBXU19FWF9OT0FDVElW QVRFKTsKKyAgICAgIGVsc2UKKwlTZXRXaW5kb3dMb25nIChod25kLCBHV0xfRVhTVFlMRSwg ZXhTdHlsZSAmIH5XU19FWF9OT0FDVElWQVRFKTsKKyAgICAgIFNob3dXaW5kb3cgKGh3bmQs IFNXX1NIT1dOT0FDVElWQVRFKTsKKyAgICAgIHVuYmxvY2tfaW5wdXQgKCk7CisKKyAgICAg IEZSQU1FX1NLSVBfVEFTS0JBUiAoZikgPSAhTklMUCAobmV3X3ZhbHVlKTsKKyAgICB9Cit9 CisKKy8qKgorICogeF9zZXRfbm9fZm9jdXNfb25fbWFwOgorICoKKyAqIFNldCBmcmFtZSBG J3MgYG5vLWZvY3VzLW9uLW1hcCcgcGFyYW1ldGVyIHdoaWNoLCBpZiBub24tbmlsLCBtZWFu cworICogdGhhdCBGJ3Mgd2luZG93LXN5c3RlbSB3aW5kb3cgZG9lcyBub3Qgd2FudCB0byBy ZWNlaXZlIGlucHV0IGZvY3VzCisgKiB3aGVuIGl0IGlzIG1hcHBlZC4gIChBIGZyYW1lJ3Mg d2luZG93IGlzIG1hcHBlZCB3aGVuIHRoZSBmcmFtZSBpcworICogZGlzcGxheWVkIGZvciB0 aGUgZmlyc3QgdGltZSBhbmQgd2hlbiB0aGUgZnJhbWUgY2hhbmdlcyBpdHMgc3RhdGUKKyAq IGZyb20gYGljb25pZmllZCcgb3IgYGludmlzaWJsZScgdG8gYHZpc2libGUnLikKKyAqCisg KiBTb21lIHdpbmRvdyBtYW5hZ2VycyBtYXkgbm90IGhvbm9yIHRoaXMgcGFyYW1ldGVyLgor ICovCitzdGF0aWMgdm9pZAoreF9zZXRfbm9fZm9jdXNfb25fbWFwIChzdHJ1Y3QgZnJhbWUg KmYsIExpc3BfT2JqZWN0IG5ld192YWx1ZSwgTGlzcF9PYmplY3Qgb2xkX3ZhbHVlKQorewor ICBpZiAoIUVRIChuZXdfdmFsdWUsIG9sZF92YWx1ZSkpCisgICAgRlJBTUVfTk9fRk9DVVNf T05fTUFQIChmKSA9ICFOSUxQIChuZXdfdmFsdWUpOworfQorCisvKioKKyAqIHhfc2V0X25v X2FjY2VwdF9mb2N1czoKKyAqCisgKiBTZXQgZnJhbWUgRidzIGBuby1hY2NlcHQtZm9jdXMn IHBhcmFtZXRlciB3aGljaCwgaWYgbm9uLW5pbCwgaGludHMKKyAqIHRoYXQgRidzIHdpbmRv dy1zeXN0ZW0gd2luZG93IGRvZXMgbm90IHdhbnQgdG8gcmVjZWl2ZSBpbnB1dCBmb2N1cwor ICogdmlhIG1vdXNlIGNsaWNrcyBvciBieSBtb3ZpbmcgdGhlIG1vdXNlIGludG8gaXQuCisg KgorICogSWYgbm9uLW5pbCwgdGhpcyBtYXkgaGF2ZSB0aGUgdW53YW50ZWQgc2lkZS1lZmZl Y3QgdGhhdCBhIHVzZXIgY2Fubm90CisgKiBzY3JvbGwgYSBub24tc2VsZWN0ZWQgZnJhbWUg d2l0aCB0aGUgbW91c2UuCisgKgorICogU29tZSB3aW5kb3cgbWFuYWdlcnMgbWF5IG5vdCBo b25vciB0aGlzIHBhcmFtZXRlci4KKyAqLworc3RhdGljIHZvaWQKK3hfc2V0X25vX2FjY2Vw dF9mb2N1cyAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCBuZXdfdmFsdWUsIExpc3Bf T2JqZWN0IG9sZF92YWx1ZSkKK3sKKyAgaWYgKCFFUSAobmV3X3ZhbHVlLCBvbGRfdmFsdWUp KQorICAgIEZSQU1FX05PX0FDQ0VQVF9GT0NVUyAoZikgPSAhTklMUCAobmV3X3ZhbHVlKTsK K30KKworLyoqCisgKiB4X3NldF96X2dyb3VwOgorICoKKyAqIFNldCBmcmFtZSBGJ3MgYHot Z3JvdXAnIHBhcmFtZXRlci4gIElmIGBhYm92ZScsIEYncyB3aW5kb3ctc3lzdGVtCisgKiB3 aW5kb3cgaXMgZGlzcGxheWVkIGFib3ZlIGFsbCB3aW5kb3dzIHRoYXQgZG8gbm90IGhhdmUg dGhlIGBhYm92ZScKKyAqIHByb3BlcnR5IHNldC4gIElmIG5pbCwgRidzIHdpbmRvdyBpcyBz aG93biBiZWxvdyBhbGwgd2luZG93cyB0aGF0CisgKiBoYXZlIHRoZSBgYWJvdmUnIHByb3Bl cnR5IHNldCBhbmQgYWJvdmUgYWxsIHdpbmRvd3MgdGhhdCBoYXZlIHRoZQorICogYGJlbG93 JyBwcm9wZXJ0eSBzZXQuICBJZiBgYmVsb3cnLCBGJ3Mgd2luZG93IGlzIGRpc3BsYXllZCBi ZWxvdyBhbGwKKyAqIHdpbmRvd3MgdGhhdCBkbyBub3QgaGF2ZSB0aGUgYGJlbG93JyBwcm9w ZXJ0eSBzZXQuCisgKgorICogU29tZSB3aW5kb3cgbWFuYWdlcnMgbWF5IG5vdCBob25vciB0 aGlzIHBhcmFtZXRlci4gIFRoZSB2YWx1ZSBgYmVsb3cnCisgKiBpcyBub3Qgc3VwcG9ydGVk IG9uIFdpbmRvd3MuCisgKi8KK3N0YXRpYyB2b2lkCit4X3NldF96X2dyb3VwIChzdHJ1Y3Qg ZnJhbWUgKmYsIExpc3BfT2JqZWN0IG5ld192YWx1ZSwgTGlzcF9PYmplY3Qgb2xkX3ZhbHVl KQoreworICBpZiAoIUVRIChuZXdfdmFsdWUsIG9sZF92YWx1ZSkpCisgICAgeworICAgICAg SFdORCBod25kID0gRlJBTUVfVzMyX1dJTkRPVyAoZik7CisKKyAgICAgIGlmIChOSUxQIChu ZXdfdmFsdWUpKQorCXsKKwkgIGJsb2NrX2lucHV0ICgpOworCSAgU2V0V2luZG93UG9zICho d25kLCBIV05EX05PVE9QTU9TVCwgMCwgMCwgMCwgMCwKKwkJCVNXUF9OT01PVkUgfCBTV1Bf Tk9TSVpFIHwgU1dQX05PQUNUSVZBVEUKKwkJCXwgU1dQX05PT1dORVJaT1JERVIpOworCSAg dW5ibG9ja19pbnB1dCAoKTsKKwkgIEZSQU1FX1pfR1JPVVAgKGYpID0gel9ncm91cF9ub25l OworCX0KKyAgICAgIGVsc2UgaWYgKEVRIChuZXdfdmFsdWUsIFFhYm92ZSkpCisJeworCSAg YmxvY2tfaW5wdXQgKCk7CisJICBTZXRXaW5kb3dQb3MgKGh3bmQsIEhXTkRfVE9QTU9TVCwg MCwgMCwgMCwgMCwKKwkJCVNXUF9OT01PVkUgfCBTV1BfTk9TSVpFIHwgU1dQX05PQUNUSVZB VEUKKwkJCXwgU1dQX05PT1dORVJaT1JERVIpOworCSAgdW5ibG9ja19pbnB1dCAoKTsKKwkg IEZSQU1FX1pfR1JPVVAgKGYpID0gel9ncm91cF9hYm92ZTsKKwl9CisgICAgICBlbHNlIGlm IChFUSAobmV3X3ZhbHVlLCBRYmVsb3cpKQorCWVycm9yICgiVmFsdWUgYGJlbG93JyBmb3Ig ei1ncm91cCBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MiKTsKKyAgICAgIGVsc2UKKwll cnJvciAoIkludmFsaWQgei1ncm91cCBzcGVjaWZpY2F0aW9uIik7CisgICAgfQorfQogDAog LyogU3Vicm91dGluZXMgZm9yIGNyZWF0aW5nIGEgZnJhbWUuICAqLwoKQEAgLTIwMTMsNyAr MjI2MSwxMiBAQCBzdHJ1Y3QgZnJhbWUgKgogc3RhdGljIEhXTkQKIHczMl9jcmVhdGV2c2Ny b2xsYmFyIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBzY3JvbGxfYmFyICogYmFyKQogewot ICByZXR1cm4gQ3JlYXRlV2luZG93ICgiU0NST0xMQkFSIiwgIiIsIFNCU19WRVJUIHwgV1Nf Q0hJTEQgfCBXU19WSVNJQkxFLAorICByZXR1cm4gQ3JlYXRlV2luZG93ICgiU0NST0xMQkFS IiwgIiIsCisJCSAgICAgICAvKiBDbGlwIHNpYmxpbmdzIHNvIHdlIGRvbid0IGRyYXcgb3Zl ciBjaGlsZAorCQkJICBmcmFtZXMuICBBcHBhcmVudGx5IHRoaXMgaXMgbm90IGFsd2F5cwor CQkJICBzdWZmaWNpZW50IHNvIHdlIGFsc28gdHJ5IHRvIG1ha2UgYmFyIHdpbmRvd3MKKwkJ CSAgYm90dG9tbW9zdC4gICovCisJCSAgICAgICBTQlNfVkVSVCB8IFdTX0NISUxEIHwgV1Nf VklTSUJMRSB8IFdTX0NMSVBTSUJMSU5HUywKIAkJICAgICAgIC8qIFBvc2l0aW9uIGFuZCBz aXplIG9mIHNjcm9sbCBiYXIuICAqLwogCQkgICAgICAgYmFyLT5sZWZ0LCBiYXItPnRvcCwg YmFyLT53aWR0aCwgYmFyLT5oZWlnaHQsCiAJCSAgICAgICBGUkFNRV9XMzJfV0lORE9XIChm KSwgTlVMTCwgaGluc3QsIE5VTEwpOwpAQCAtMjAyMiw3ICsyMjc1LDEyIEBAIHN0cnVjdCBm cmFtZSAqCiBzdGF0aWMgSFdORAogdzMyX2NyZWF0ZWhzY3JvbGxiYXIgKHN0cnVjdCBmcmFt ZSAqZiwgc3RydWN0IHNjcm9sbF9iYXIgKiBiYXIpCiB7Ci0gIHJldHVybiBDcmVhdGVXaW5k b3cgKCJTQ1JPTExCQVIiLCAiIiwgU0JTX0hPUlogfCBXU19DSElMRCB8IFdTX1ZJU0lCTEUs CisgIHJldHVybiBDcmVhdGVXaW5kb3cgKCJTQ1JPTExCQVIiLCAiIiwKKwkJICAgICAgIC8q IENsaXAgc2libGluZ3Mgc28gd2UgZG9uJ3QgZHJhdyBvdmVyIGNoaWxkCisJCQkgIGZyYW1l cy4gIEFwcGFyZW50bHkgdGhpcyBpcyBub3QgYWx3YXlzCisJCQkgIHN1ZmZpY2llbnQgc28g d2UgYWxzbyB0cnkgdG8gbWFrZSBiYXIgd2luZG93cworCQkJICBib3R0b21tb3N0LiAgKi8K KwkJICAgICAgIFNCU19IT1JaIHwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgV1NfQ0xJUFNJ QkxJTkdTLAogCQkgICAgICAgLyogUG9zaXRpb24gYW5kIHNpemUgb2Ygc2Nyb2xsIGJhci4g ICovCiAJCSAgICAgICBiYXItPmxlZnQsIGJhci0+dG9wLCBiYXItPndpZHRoLCBiYXItPmhl aWdodCwKIAkJICAgICAgIEZSQU1FX1czMl9XSU5ET1cgKGYpLCBOVUxMLCBoaW5zdCwgTlVM TCk7CkBAIC0yMDMxLDIwICsyMjg5LDU1IEBAIHN0cnVjdCBmcmFtZSAqCiBzdGF0aWMgdm9p ZAogdzMyX2NyZWF0ZXdpbmRvdyAoc3RydWN0IGZyYW1lICpmLCBpbnQgKmNvb3JkcykKIHsK LSAgSFdORCBod25kOworICBIV05EIGh3bmQgPSBOVUxMLCBwYXJlbnRfaHduZCA9IE5VTEw7 CiAgIFJFQ1QgcmVjdDsKLSAgaW50IHRvcDsKLSAgaW50IGxlZnQ7CisgIERXT1JEIGR3U3R5 bGU7CisgIGludCB0b3AsIGxlZnQ7CisgIExpc3BfT2JqZWN0IGJvcmRlcl93aWR0aCA9IEZj ZHIgKEZhc3NxIChRYm9yZGVyX3dpZHRoLCBmLT5wYXJhbV9hbGlzdCkpOworCisgIGlmIChG UkFNRV9QQVJFTlRfRlJBTUUgKGYpICYmIEZSQU1FX1czMl9QIChGUkFNRV9QQVJFTlRfRlJB TUUgKGYpKSkKKyAgICB7CisgICAgICBwYXJlbnRfaHduZCA9IEZSQU1FX1czMl9XSU5ET1cg KEZSQU1FX1BBUkVOVF9GUkFNRSAoZikpOworICAgICAgZi0+b3V0cHV0X2RhdGEudzMyLT5k d1N0eWxlID0gV1NfQ0hJTEQgfCBXU19DTElQU0lCTElOR1M7CisKKyAgICAgIGlmIChGUkFN RV9VTkRFQ09SQVRFRCAoZikpCisJeworCSAgLyogSWYgd2Ugd2FudCBhIHRoaW4gYm9yZGVy LCBzcGVjaWZ5IGl0IGhlcmUuICAqLworCSAgaWYgKE5VTUJFUlAgKGJvcmRlcl93aWR0aCkg JiYgKFhJTlQgKGJvcmRlcl93aWR0aCkgPiAwKSkKKwkgICAgZi0+b3V0cHV0X2RhdGEudzMy LT5kd1N0eWxlID0KKwkgICAgICBmLT5vdXRwdXRfZGF0YS53MzItPmR3U3R5bGUgfCBXU19C T1JERVI7CisJfQorICAgICAgZWxzZQorCS8qIFRvIGRlY29yYXRlIGEgY2hpbGQgZnJhbWUs IGxpc3QgYWxsIG5lZWRlZCBlbGVtZW50cy4gICovCisJZi0+b3V0cHV0X2RhdGEudzMyLT5k d1N0eWxlID0KKwkgIGYtPm91dHB1dF9kYXRhLnczMi0+ZHdTdHlsZSB8IFdTX1RISUNLRlJB TUUgfCBXU19DQVBUSU9OCisJICB8IFdTX01BWElNSVpFQk9YIHwgV1NfTUlOSU1JWkVCT1gg fCBXU19TWVNNRU5VOworICAgIH0KKyAgZWxzZSBpZiAoRlJBTUVfVU5ERUNPUkFURUQgKGYp KQorICAgIHsKKyAgICAgIC8qIEFsbCBhdHRlbXB0cyB0byBzdGFydCB3aXRoIH5XU19PVkVS TEFQUEVEV0lORE9XIG9yIG92ZXJsYXBwZWQKKwkgd2l0aCBhbGwgb3RoZXIgc3R5bGUgZWxl bWVudHMgbmVnYXRlZCBmYWlsZWQgaGVyZS4gICovCisgICAgICBmLT5vdXRwdXRfZGF0YS53 MzItPmR3U3R5bGUgPSBXU19QT1BVUDsKKworICAgICAgLyogSWYgd2Ugd2FudCBhIHRoaW4g Ym9yZGVyLCBzcGVjaWZ5IGl0IGhlcmUuICAqLworICAgICAgaWYgKE5VTUJFUlAgKGJvcmRl cl93aWR0aCkgJiYgKFhJTlQgKGJvcmRlcl93aWR0aCkgPiAwKSkKKwlmLT5vdXRwdXRfZGF0 YS53MzItPmR3U3R5bGUgPQorCSAgZi0+b3V0cHV0X2RhdGEudzMyLT5kd1N0eWxlIHwgV1Nf Qk9SREVSOworICAgIH0KKyAgZWxzZQorICAgIGYtPm91dHB1dF9kYXRhLnczMi0+ZHdTdHls ZSA9IFdTX09WRVJMQVBQRURXSU5ET1c7CisKKyAgLyogQWx3YXlzIGNsaXAgY2hpbGRyZW4u ICAqLworICBmLT5vdXRwdXRfZGF0YS53MzItPmR3U3R5bGUgPSBmLT5vdXRwdXRfZGF0YS53 MzItPmR3U3R5bGUgfCBXU19DTElQQ0hJTERSRU47CgogICByZWN0LmxlZnQgPSByZWN0LnRv cCA9IDA7CiAgIHJlY3QucmlnaHQgPSBGUkFNRV9QSVhFTF9XSURUSCAoZik7CiAgIHJlY3Qu Ym90dG9tID0gRlJBTUVfUElYRUxfSEVJR0hUIChmKTsKCiAgIEFkanVzdFdpbmRvd1JlY3Qg KCZyZWN0LCBmLT5vdXRwdXRfZGF0YS53MzItPmR3U3R5bGUsCi0JCSAgICBGUkFNRV9FWFRF Uk5BTF9NRU5VX0JBUiAoZikpOworCQkgICAgRlJBTUVfRVhURVJOQUxfTUVOVV9CQVIgKGYp ICYmICFwYXJlbnRfaHduZCk7CgogICAvKiBEbyBmaXJzdCB0aW1lIGFwcCBpbml0ICovCi0K ICAgdzMyX2luaXRfY2xhc3MgKGhpbnN0KTsKCiAgIGlmIChmLT5zaXplX2hpbnRfZmxhZ3Mg JiBVU1Bvc2l0aW9uIHx8IGYtPnNpemVfaGludF9mbGFncyAmIFBQb3NpdGlvbikKQEAgLTIw NTksMTggKzIzNTIsMTYgQEAgc3RydWN0IGZyYW1lICoKICAgICB9CgogICBGUkFNRV9XMzJf V0lORE9XIChmKSA9IGh3bmQKLSAgICA9IENyZWF0ZVdpbmRvdyAoRU1BQ1NfQ0xBU1MsCi0J CSAgICBmLT5uYW1lYnVmLAotCQkgICAgZi0+b3V0cHV0X2RhdGEudzMyLT5kd1N0eWxlIHwg V1NfQ0xJUENISUxEUkVOLAotCQkgICAgbGVmdCwgdG9wLAotCQkgICAgcmVjdC5yaWdodCAt IHJlY3QubGVmdCwgcmVjdC5ib3R0b20gLSByZWN0LnRvcCwKLQkJICAgIE5VTEwsCi0JCSAg ICBOVUxMLAotCQkgICAgaGluc3QsCi0JCSAgICBOVUxMKTsKKyAgICA9IENyZWF0ZVdpbmRv dyAoRU1BQ1NfQ0xBU1MsIGYtPm5hbWVidWYsIGYtPm91dHB1dF9kYXRhLnczMi0+ZHdTdHls ZSwKKwkJICAgIGxlZnQsIHRvcCwgcmVjdC5yaWdodCAtIHJlY3QubGVmdCwgcmVjdC5ib3R0 b20gLSByZWN0LnRvcCwKKwkJICAgIHBhcmVudF9od25kLCBOVUxMLCBoaW5zdCwgTlVMTCk7 CgogICBpZiAoaHduZCkKICAgICB7CisgICAgICBpZiAoRlJBTUVfU0tJUF9UQVNLQkFSIChm KSkKKwlTZXRXaW5kb3dMb25nIChod25kLCBHV0xfRVhTVFlMRSwKKwkJICAgICAgIEdldFdp bmRvd0xvbmcgKGh3bmQsIEdXTF9FWFNUWUxFKSB8IFdTX0VYX05PQUNUSVZBVEUpOworCiAg ICAgICBTZXRXaW5kb3dMb25nIChod25kLCBXTkRfRk9OVFdJRFRIX0lOREVYLCBGUkFNRV9D T0xVTU5fV0lEVEggKGYpKTsKICAgICAgIFNldFdpbmRvd0xvbmcgKGh3bmQsIFdORF9MSU5F SEVJR0hUX0lOREVYLCBGUkFNRV9MSU5FX0hFSUdIVCAoZikpOwogICAgICAgU2V0V2luZG93 TG9uZyAoaHduZCwgV05EX0JPUkRFUl9JTkRFWCwgRlJBTUVfSU5URVJOQUxfQk9SREVSX1dJ RFRIIChmKSk7CkBAIC0yMDg2LDYgKzIzNzcsMTIgQEAgc3RydWN0IGZyYW1lICoKCiAgICAg ICAvKiBVcGRhdGUgZnJhbWUgcG9zaXRpb25zLiAqLwogICAgICAgR2V0V2luZG93UmVjdCAo aHduZCwgJnJlY3QpOworCisgICAgICBpZiAocGFyZW50X2h3bmQpCisJLyogRm9yIGEgY2hp bGQgd2luZG93IHdlIGhhdmUgdG8gZ2V0IGl0cyBjb29yZGluYXRlcyB3cnQgaXRzCisJICAg cGFyZW50LiAgKi8KKwlNYXBXaW5kb3dQb2ludHMgKEhXTkRfREVTS1RPUCwgcGFyZW50X2h3 bmQsIChMUFBPSU5UKSAmcmVjdCwgMik7CisKICAgICAgIGYtPmxlZnRfcG9zID0gcmVjdC5s ZWZ0OwogICAgICAgZi0+dG9wX3BvcyA9IHJlY3QudG9wOwogICAgIH0KQEAgLTQzODEsNiAr NDY3OCwyMiBAQCBzdHJ1Y3QgZnJhbWUgKgogCSAgfQogICAgICAgfQoKKyAgICAgIGlmIChm ICYmIChtc2cgPT0gV01fTEJVVFRPTkRPV04gfHwgbXNnID09IFdNX1JCVVRUT05ET1dOCisJ CXx8IG1zZyA9PSBXTV9NQlVUVE9ORE9XTiB8fG1zZyA9PSBXTV9YQlVUVE9ORE9XTikKKwkg ICYmICFGUkFNRV9OT19BQ0NFUFRfRk9DVVMgKGYpKQorCS8qIFdoZW4gY2xpY2tpbmcgaW50 byBhIGNoaWxkIGZyYW1lIG9yIHdoZW4gY2xpY2tpbmcgaW50byBhCisJICAgcGFyZW50IGZy YW1lIHdpdGggdGhlIGNoaWxkIGZyYW1lIHNlbGVjdGVkIGFuZAorCSAgIGBuby1hY2NlcHQt Zm9jdXMnIGlzIG5vdCBzZXQsIHNlbGVjdCB0aGUgY2xpY2tlZCBmcmFtZS4gICovCisJewor CSAgc3RydWN0IGZyYW1lICpwID0gRlJBTUVfUEFSRU5UX0ZSQU1FIChYRlJBTUUgKHNlbGVj dGVkX2ZyYW1lKSk7CisKKwkgIGlmIChGUkFNRV9QQVJFTlRfRlJBTUUgKGYpIHx8IGYgPT0g cCkKKwkgICAgeworCSAgICAgIFNldEZvY3VzIChod25kKTsKKwkgICAgICBTZXRXaW5kb3dQ b3MgKGh3bmQsIEhXTkRfVE9QLCAwLCAwLCAwLCAwLCBTV1BfTk9NT1ZFIHwgU1dQX05PU0la RSk7CisJICAgIH0KKwl9CisKICAgICAgIHdtc2cuZHdNb2RpZmllcnMgPSB3MzJfZ2V0X21v ZGlmaWVycyAoKTsKICAgICAgIG15X3Bvc3RfbXNnICgmd21zZywgaHduZCwgbXNnLCB3UGFy YW0sIGxQYXJhbSk7CiAgICAgICBzaWduYWxfdXNlcl9pbnB1dCAoKTsKQEAgLTQ0ODYsNiAr NDc5OSwxMCBAQCBzdHJ1Y3QgZnJhbWUgKgogICAgICAgaWYgKHczMl9wYXNzX211bHRpbWVk aWFfYnV0dG9uc190b19zeXN0ZW0pCiAJZ290byBkZmx0OwogICAgICAgLyogT3RoZXJ3aXNl LCBwYXNzIHRvIGxpc3AsIHRoZSBzYW1lIHdheSB3ZSBkbyB3aXRoIG1vdXNlaHdoZWVsLiAg Ki8KKworICAgICAgLyogRklYTUUhISEgIFRoaXMgaXMgbmV2ZXIgcmVhY2hlZCBzbyB3aGF0 J3MgdGhlIHB1cnBvc2U/ICBJZiB0aGUKKwkgbm9uLXplcm8gcmV0dXJuIHJlbWFyayBiZWxv dyBpcyByaWdodCB3ZSdyZSBkb2luZyBpdCB3cm9uZyBhbGwKKwkgdGhlIHRpbWUuICAqLwog ICAgIGNhc2UgV01fTU9VU0VIV0hFRUw6CiAgICAgICB3bXNnLmR3TW9kaWZpZXJzID0gdzMy X2dldF9tb2RpZmllcnMgKCk7CiAgICAgICBteV9wb3N0X21zZyAoJndtc2csIGh3bmQsIG1z Zywgd1BhcmFtLCBsUGFyYW0pOwpAQCAtNDcxMiwxOSArNTAyOSwzNCBAQCBzdHJ1Y3QgZnJh bWUgKgogCX0KICAgICAgIHJldHVybiAwOwoKLSNpZiAwCisgICAgY2FzZSBXTV9NT1VTRUFD VElWQVRFOgorICAgICAgLyogV01fTU9VU0VBQ1RJVkFURSBpcyB0aGUgb25seSB3YXkgb24g V2luZG93cyB0byBpbXBsZW1lbnQgdGhlCisJIGBuby1hY2NlcHQtZm9jdXMnIGZyYW1lIHBh cmFtZXRlci4gIFRoaXMgbWVhbnMgdGhhdCBvbmUgY2FuJ3QKKwkgdXNlIHRoZSBtb3VzZSB0 byBzY3JvbGwgYSB3aW5kb3cgb24gYSBub24tc2VsZWN0ZWQgZnJhbWUuICAqLworCiAgICAg ICAvKiBTdGlsbCBub3QgcmlnaHQgLSBjYW4ndCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGNsaWNr cyBpbiB0aGUKIAkgY2xpZW50IGFyZWEgb2YgdGhlIGZyYW1lIGZyb20gY2xpY2tzIGZvcndh cmRlZCBmcm9tIHRoZSBzY3JvbGwKIAkgYmFycyAtIG1heSBoYXZlIHRvIGhvb2sgV01fTkNI SVRURVNUIHRvIHJlbWVtYmVyIHRoZSBtb3VzZQotCSBwb3NpdGlvbiBhbmQgdGhlbiBjaGVj ayBpZiBpdCBpcyBpbiB0aGUgY2xpZW50IGFyZWEgb3Vyc2VsdmVzLiAgKi8KLSAgICBjYXNl IFdNX01PVVNFQUNUSVZBVEU6CisJIHBvc2l0aW9uIGFuZCB0aGVuIGNoZWNrIGlmIGl0IGlz IGluIHRoZSBjbGllbnQgYXJlYQorCSBvdXJzZWx2ZXMuICAqLworCiAgICAgICAvKiBEaXNj YXJkIHRoZSBtb3VzZSBjbGljayB0aGF0IGFjdGl2YXRlcyBhIGZyYW1lLCBhbGxvd2luZyB0 aGUKIAkgdXNlciB0byBjbGljayBhbnl3aGVyZSB3aXRob3V0IGNoYW5naW5nIHBvaW50IChv ciB3b3JzZSEpLgogCSBEb24ndCBlYXQgbW91c2UgY2xpY2tzIG9uIHNjcm9sbGJhcnMgdGhv dWdoISEgICovCi0gICAgICBpZiAoTE9XT1JEIChsUGFyYW0pID09IEhUQ0xJRU5UICkKLQly ZXR1cm4gTUFfQUNUSVZBVEVBTkRFQVQ7CisKKyAgICAgIGlmICgoZiA9IHhfd2luZG93X3Rv X2ZyYW1lIChkcHlpbmZvLCBod25kKSkKKwkgICYmIEZSQU1FX05PX0FDQ0VQVF9GT0NVUyAo ZikKKwkgIC8qIElnbm9yZSBjaGlsZCBmcmFtZXMsIHRoZXkgZG9uJ3QgYWNjZXB0IGZvY3Vz IGFueXdheS4gICovCisJICAmJiAhRlJBTUVfUEFSRU5UX0ZSQU1FIChmKSkKKwl7CisJICBM aXNwX09iamVjdCBmcmFtZTsKKworCSAgWFNFVEZSQU1FIChmcmFtZSwgZik7CisJICBpZiAo IUVRIChzZWxlY3RlZF9mcmFtZSwgZnJhbWUpKQorCSAgICAvKiBEb24ndCBkaXNjYXJkIHRo ZSBtZXNzYWdlLCBHVEsgZG9lc24ndCBlaXRoZXIuICAqLworCSAgICByZXR1cm4gTUFfTk9B Q1RJVkFURTsgLyogQU5ERUFUOyAqLworCX0KICAgICAgIGdvdG8gZGZsdDsKLSNlbmRpZgoK ICAgICBjYXNlIFdNX01PVVNFTEVBVkU6CiAgICAgICAvKiBObyBsb25nZXIgdHJhY2tpbmcg bW91c2UuICAqLwpAQCAtNDg5OSw2ICs1MjMxLDEwIEBAIHN0cnVjdCBmcmFtZSAqCiAJICBB dHRhY2hUaHJlYWRJbnB1dCAoR2V0Q3VycmVudFRocmVhZElkICgpLAogCQkJICAgICBmb3Jl Z3JvdW5kX3RocmVhZCwgRkFMU0UpOwoKKwkvKiBTZXRGb2N1cyB0byBnaXZlL3JlbW92ZSBm b2N1cyB0by9mcm9tIGEgY2hpbGQgd2luZG93LiAgKi8KKwlpZiAobXNnID09IFdNX0VNQUNT X1NFVEZPUkVHUk9VTkQpCisJICBTZXRGb2N1cyAoKEhXTkQpIHdQYXJhbSk7CisKIAlyZXR1 cm4gcmV0dmFsOwogICAgICAgfQoKQEAgLTUxMzAsNyArNTQ2Niw4IEBAIHN0cnVjdCBmcmFt ZSAqCgogICB1bmJsb2NrX2lucHV0ICgpOwoKLSAgaWYgKCFtaW5pYnVmZmVyX29ubHkgJiYg RlJBTUVfRVhURVJOQUxfTUVOVV9CQVIgKGYpKQorICBpZiAoIW1pbmlidWZmZXJfb25seSAm JiBGUkFNRV9FWFRFUk5BTF9NRU5VX0JBUiAoZikKKyAgICAgICYmICFGUkFNRV9QQVJFTlRf RlJBTUUgKGYpKQogICAgIGluaXRpYWxpemVfZnJhbWVfbWVudWJhciAoZik7CgogICBpZiAo RlJBTUVfVzMyX1dJTkRPVyAoZikgPT0gMCkKQEAgLTUzMTgsNyArNTY1NSw3IEBAIHN0cnVj dCBmcmFtZSAqCiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CiAgIExp c3BfT2JqZWN0IGRpc3BsYXk7CiAgIHN0cnVjdCB3MzJfZGlzcGxheV9pbmZvICpkcHlpbmZv ID0gTlVMTDsKLSAgTGlzcF9PYmplY3QgcGFyZW50OworICBMaXNwX09iamVjdCBwYXJlbnQs IHBhcmVudF9mcmFtZTsKICAgc3RydWN0IGtib2FyZCAqa2I7CiAgIGludCB4X3dpZHRoID0g MCwgeF9oZWlnaHQgPSAwOwoKQEAgLTUzNTUsMTAgKzU2OTIsMTEgQEAgc3RydWN0IGZyYW1l ICoKICAgICBWeF9yZXNvdXJjZV9uYW1lID0gbmFtZTsKCiAgIC8qIFNlZSBpZiBwYXJlbnQg d2luZG93IGlzIHNwZWNpZmllZC4gICovCi0gIHBhcmVudCA9IHhfZ2V0X2FyZyAoZHB5aW5m bywgcGFyYW1ldGVycywgUXBhcmVudF9pZCwgTlVMTCwgTlVMTCwgUkVTX1RZUEVfTlVNQkVS KTsKKyAgcGFyZW50ID0geF9nZXRfYXJnIChkcHlpbmZvLCBwYXJhbWV0ZXJzLCBRcGFyZW50 X2lkLCBOVUxMLCBOVUxMLAorCQkgICAgICBSRVNfVFlQRV9OVU1CRVIpOwogICBpZiAoRVEg KHBhcmVudCwgUXVuYm91bmQpKQogICAgIHBhcmVudCA9IFFuaWw7Ci0gIGlmICghIE5JTFAg KHBhcmVudCkpCisgIGVsc2UgaWYgKCFOSUxQIChwYXJlbnQpKQogICAgIENIRUNLX05VTUJF UiAocGFyZW50KTsKCiAgIC8qIG1ha2VfZnJhbWVfd2l0aG91dF9taW5pYnVmZmVyIGNhbiBy dW4gTGlzcCBjb2RlIGFuZCBnYXJiYWdlIGNvbGxlY3QuICAqLwpAQCAtNTM4MSw2ICs1NzE5 LDMxIEBAIHN0cnVjdCBmcmFtZSAqCgogICBYU0VURlJBTUUgKGZyYW1lLCBmKTsKCisgIHBh cmVudF9mcmFtZSA9IHhfZ2V0X2FyZyAoZHB5aW5mbywgcGFyYW1ldGVycywgUXBhcmVudF9m cmFtZSwgTlVMTCwgTlVMTCwKKwkJCSAgICBSRVNfVFlQRV9TWU1CT0wpOworICAvKiBBcHBs eSBgcGFyZW50LWZyYW1lJyBwYXJhbWV0ZXIgb25seSB3aGVuIG5vIGBwYXJlbnQtaWQnIHdh cworICAgICBzcGVjaWZpZWQuICAqLworICBpZiAoIU5JTFAgKHBhcmVudF9mcmFtZSkKKyAg ICAgICYmICghTklMUCAocGFyZW50KQorCSAgfHwgIUZSQU1FUCAocGFyZW50X2ZyYW1lKQor CSAgfHwgIUZSQU1FX0xJVkVfUCAoWEZSQU1FIChwYXJlbnRfZnJhbWUpKQorCSAgfHwgIUZS QU1FX1czMl9QIChYRlJBTUUgKHBhcmVudF9mcmFtZSkpKSkKKyAgICBwYXJlbnRfZnJhbWUg PSBRbmlsOworCisgIGZzZXRfcGFyZW50X2ZyYW1lIChmLCBwYXJlbnRfZnJhbWUpOworICBz dG9yZV9mcmFtZV9wYXJhbSAoZiwgUXBhcmVudF9mcmFtZSwgcGFyZW50X2ZyYW1lKTsKKwor ICB0ZW0gPSB4X2dldF9hcmcgKGRweWluZm8sIHBhcmFtZXRlcnMsIFF1bmRlY29yYXRlZCwg TlVMTCwgTlVMTCwKKwkJICAgUkVTX1RZUEVfQk9PTEVBTik7CisgIEZSQU1FX1VOREVDT1JB VEVEIChmKSA9ICFOSUxQICh0ZW0pICYmICFFUSAodGVtLCBRdW5ib3VuZCk7CisgIHN0b3Jl X2ZyYW1lX3BhcmFtIChmLCBRdW5kZWNvcmF0ZWQsIEZSQU1FX1VOREVDT1JBVEVEIChmKSA/ IFF0IDogUW5pbCk7CisKKyAgdGVtID0geF9nZXRfYXJnIChkcHlpbmZvLCBwYXJhbWV0ZXJz LCBRc2tpcF90YXNrYmFyLCBOVUxMLCBOVUxMLAorCQkgICBSRVNfVFlQRV9CT09MRUFOKTsK KyAgRlJBTUVfU0tJUF9UQVNLQkFSIChmKSA9ICFOSUxQICh0ZW0pICYmICFFUSAodGVtLCBR dW5ib3VuZCk7CisgIHN0b3JlX2ZyYW1lX3BhcmFtIChmLCBRc2tpcF90YXNrYmFyLAorCQkg ICAgIChOSUxQICh0ZW0pIHx8IEVRICh0ZW0sIFF1bmJvdW5kKSkgPyBRbmlsIDogUXQpOwor CiAgIC8qIEJ5IGRlZmF1bHQsIG1ha2Ugc2Nyb2xsYmFycyB0aGUgc3lzdGVtIHN0YW5kYXJk IHdpZHRoIGFuZCBoZWlnaHQuICovCiAgIEZSQU1FX0NPTkZJR19TQ1JPTExfQkFSX1dJRFRI IChmKSA9IEdldFN5c3RlbU1ldHJpY3MgKFNNX0NYVlNDUk9MTCk7CiAgIEZSQU1FX0NPTkZJ R19TQ1JPTExfQkFSX0hFSUdIVCAoZikgPSBHZXRTeXN0ZW1NZXRyaWNzIChTTV9DWEhTQ1JP TEwpOwpAQCAtNTQwOCw3ICs1NzcxLDkgQEAgc3RydWN0IGZyYW1lICoKICAgZHB5aW5mb19y ZWZjb3VudCA9IGRweWluZm8tPnJlZmVyZW5jZV9jb3VudDsKICNlbmRpZiAvKiBHTFlQSF9E RUJVRyAqLwoKLSAgLyogU3BlY2lmeSB0aGUgcGFyZW50IHVuZGVyIHdoaWNoIHRvIG1ha2Ug dGhpcyB3aW5kb3cuICAqLworICAvKiBTcGVjaWZ5IHRoZSBwYXJlbnQgdW5kZXIgd2hpY2gg dG8gbWFrZSB0aGlzIHdpbmRvdyAtIHRoaXMgc2VlbXMgdG8KKyAgICAgaGF2ZSBubyBlZmZl Y3Qgb24gV2luZG93cyBiZWNhdXNlIHBhcmVudF9kZXNjIGlzIGV4cGxpY2l0bHkgcmVzZXQK KyAgICAgYmVsb3cuICAqLwogICBpZiAoIU5JTFAgKHBhcmVudCkpCiAgICAgewogICAgICAg LyogQ2FzdCB0byBVSU5UX1BUUiBzaHV0cyB1cCBjb21waWxlciB3YXJuaW5ncyBhYm91dCBj YXN0IHRvCkBAIC01NDkyLDIzICs1ODU3LDQyIEBAIHN0cnVjdCBmcmFtZSAqCiAJCSAgICAg ICAibGVmdEZyaW5nZSIsICJMZWZ0RnJpbmdlIiwgUkVTX1RZUEVfTlVNQkVSKTsKICAgeF9k ZWZhdWx0X3BhcmFtZXRlciAoZiwgcGFyYW1ldGVycywgUXJpZ2h0X2ZyaW5nZSwgUW5pbCwK IAkJICAgICAgICJyaWdodEZyaW5nZSIsICJSaWdodEZyaW5nZSIsIFJFU19UWVBFX05VTUJF Uik7Ci0gIC8qIFByb2Nlc3MgYWxwaGEgaGVyZSAoQnVnIzE2NjE5KS4gICovCi0gIHhfZGVm YXVsdF9wYXJhbWV0ZXIgKGYsIHBhcmFtZXRlcnMsIFFhbHBoYSwgUW5pbCwKLQkJICAgICAg ICJhbHBoYSIsICJBbHBoYSIsIFJFU19UWVBFX05VTUJFUik7CisgIHhfZGVmYXVsdF9wYXJh bWV0ZXIgKGYsIHBhcmFtZXRlcnMsIFFub19mb2N1c19vbl9tYXAsIFFuaWwsCisJCSAgICAg ICBOVUxMLCBOVUxMLCBSRVNfVFlQRV9CT09MRUFOKTsKKyAgeF9kZWZhdWx0X3BhcmFtZXRl ciAoZiwgcGFyYW1ldGVycywgUW5vX2FjY2VwdF9mb2N1cywgUW5pbCwKKwkJICAgICAgIE5V TEwsIE5VTEwsIFJFU19UWVBFX0JPT0xFQU4pOworCisgIC8qIFByb2Nlc3MgYWxwaGEgaGVy ZSAoQnVnIzE2NjE5KS4gIE9uIFhQIHRoaXMgZmFpbHMgd2l0aCBjaGlsZAorICAgICBmcmFt ZXMuICBGb3IgYG5vLWZvY3VzLW9uLW1hcCcgZnJhbWVzIGRlbGF5IHByb2Nlc3Npbmcgb2Yg YWxwaGEKKyAgICAgdW50aWwgdGhlIGZyYW1lIGJlY29tZXMgdmlzaWJsZS4gICovCisgIGlm ICghRlJBTUVfTk9fRk9DVVNfT05fTUFQIChmKSkKKyAgICB4X2RlZmF1bHRfcGFyYW1ldGVy IChmLCBwYXJhbWV0ZXJzLCBRYWxwaGEsIFFuaWwsCisJCQkgImFscGhhIiwgIkFscGhhIiwg UkVTX1RZUEVfTlVNQkVSKTsKCiAgIC8qIEluaXQgZmFjZXMgZmlyc3Qgc2luY2Ugd2UgbmVl ZCB0aGUgZnJhbWUncyBjb2x1bW4gd2lkdGgvbGluZQogICAgICBoZWlnaHQgaW4gdmFyaW91 cyBvY2Nhc2lvbnMuICAqLwogICBpbml0X2ZyYW1lX2ZhY2VzIChmKTsKCi0gIC8qIFRoZSBm b2xsb3dpbmcgY2FsbCBvZiBjaGFuZ2VfZnJhbWVfc2l6ZSBpcyBuZWVkZWQgc2luY2Ugb3Ro ZXJ3aXNlCisgIC8qIFdlIGhhdmUgdG8gY2FsbCBhZGp1c3RfZnJhbWVfc2l6ZSBoZXJlIHNp bmNlIG90aGVyd2lzZQogICAgICB4X3NldF90b29sX2Jhcl9saW5lcyB3aWxsIGFscmVhZHkg d29yayB3aXRoIHRoZSBjaGFyYWN0ZXIgc2l6ZXMKLSAgICAgaW5zdGFsbGVkIGJ5IGluaXRf ZnJhbWVfZmFjZXMgd2hpbGUgdGhlIGZyYW1lJ3MgcGl4ZWwgc2l6ZSBpcwotICAgICBzdGls bCBjYWxjdWxhdGVkIGZyb20gYSBjaGFyYWN0ZXIgc2l6ZSBvZiAxIGFuZCB3ZSBzdWJzZXF1 ZW50bHkKLSAgICAgaGl0IHRoZSAoaGVpZ2h0ID49IDApIGFzc2VydGlvbiBpbiB3aW5kb3df Ym94X2hlaWdodC4KKyAgICAgaW5zdGFsbGVkIGJ5IGluaXRfZnJhbWVfZmFjZXMgd2hpbGUg dGhlIGZyYW1lJ3MgcGl4ZWwgc2l6ZSBpcyBzdGlsbAorICAgICBjYWxjdWxhdGVkIGZyb20g YSBjaGFyYWN0ZXIgc2l6ZSBvZiAxIGFuZCB3ZSBzdWJzZXF1ZW50bHkgaGl0IHRoZQorICAg ICAoaGVpZ2h0ID49IDApIGFzc2VydGlvbiBpbiB3aW5kb3dfYm94X2hlaWdodC4KCiAgICAg IFRoZSBub24tcGl4ZWx3aXNlIGNvZGUgYXBwYXJlbnRseSB3b3JrZWQgYXJvdW5kIHRoaXMg YmVjYXVzZSBpdAogICAgICBoYWQgb25lIGZyYW1lIGxpbmUgdnMgb25lIHRvb2xiYXIgbGlu ZSB3aGljaCBsZWZ0IHVzIHdpdGggYSB6ZXJvCi0gICAgIHJvb3Qgd2luZG93IGhlaWdodCB3 aGljaCB3YXMgb2J2aW91c2x5IHdyb25nIGFzIHdlbGwgLi4uICAqLworICAgICByb290IHdp bmRvdyBoZWlnaHQgd2hpY2ggd2FzIG9idmlvdXNseSB3cm9uZyBhcyB3ZWxsIC4uLgorCisg ICAgIEFsc28gcHJvY2VzcyBgbWluLXdpZHRoJyBhbmQgYG1pbi1oZWlnaHQnIHBhcmFtZXRl cnMgcmlnaHQgaGVyZQorICAgICBiZWNhdXNlIGBmcmFtZS13aW5kb3dzLW1pbi1zaXplJyBu ZWVkcyB0aGVtLiAgKi8KKyAgdGVtID0geF9nZXRfYXJnIChkcHlpbmZvLCBwYXJhbWV0ZXJz LCBRbWluX3dpZHRoLCBOVUxMLCBOVUxMLAorCQkgICBSRVNfVFlQRV9OVU1CRVIpOworICBp ZiAoTlVNQkVSUCAodGVtKSkKKyAgICBzdG9yZV9mcmFtZV9wYXJhbSAoZiwgUW1pbl93aWR0 aCwgdGVtKTsKKyAgdGVtID0geF9nZXRfYXJnIChkcHlpbmZvLCBwYXJhbWV0ZXJzLCBRbWlu X2hlaWdodCwgTlVMTCwgTlVMTCwKKwkJICAgUkVTX1RZUEVfTlVNQkVSKTsKKyAgaWYgKE5V TUJFUlAgKHRlbSkpCisgICAgc3RvcmVfZnJhbWVfcGFyYW0gKGYsIFFtaW5faGVpZ2h0LCB0 ZW0pOwogICBhZGp1c3RfZnJhbWVfc2l6ZSAoZiwgRlJBTUVfQ09MUyAoZikgKiBGUkFNRV9D T0xVTU5fV0lEVEggKGYpLAogCQkgICAgIEZSQU1FX0xJTkVTIChmKSAqIEZSQU1FX0xJTkVf SEVJR0hUIChmKSwgNSwgdHJ1ZSwKIAkJICAgICBReF9jcmVhdGVfZnJhbWVfMSk7CkBAIC01 NTE2LDEwICs1OTAwLDE3IEBAIHN0cnVjdCBmcmFtZSAqCiAgIC8qIFRoZSBYIHJlc291cmNl cyBjb250cm9sbGluZyB0aGUgbWVudS1iYXIgYW5kIHRvb2wtYmFyIGFyZQogICAgICBwcm9j ZXNzZWQgc3BlY2lhbGx5IGF0IHN0YXJ0dXAsIGFuZCByZWZsZWN0ZWQgaW4gdGhlIG1vZGUK ICAgICAgdmFyaWFibGVzOyBpZ25vcmUgdGhlbSBoZXJlLiAgKi8KLSAgeF9kZWZhdWx0X3Bh cmFtZXRlciAoZiwgcGFyYW1ldGVycywgUW1lbnVfYmFyX2xpbmVzLAotCQkgICAgICAgTklM UCAoVm1lbnVfYmFyX21vZGUpCi0JCSAgICAgICA/IG1ha2VfbnVtYmVyICgwKSA6IG1ha2Vf bnVtYmVyICgxKSwKLQkJICAgICAgIE5VTEwsIE5VTEwsIFJFU19UWVBFX05VTUJFUik7Cisg IGlmIChOSUxQIChwYXJlbnRfZnJhbWUpKQorICAgIHsKKyAgICAgIHhfZGVmYXVsdF9wYXJh bWV0ZXIgKGYsIHBhcmFtZXRlcnMsIFFtZW51X2Jhcl9saW5lcywKKwkJCSAgIE5JTFAgKFZt ZW51X2Jhcl9tb2RlKQorCQkJICAgPyBtYWtlX251bWJlciAoMCkgOiBtYWtlX251bWJlciAo MSksCisJCQkgICBOVUxMLCBOVUxMLCBSRVNfVFlQRV9OVU1CRVIpOworICAgIH0KKyAgZWxz ZQorICAgIC8qIE5vIG1lbnUgYmFyIGZvciBjaGlsZCBmcmFtZXMuICAqLworICAgIHN0b3Jl X2ZyYW1lX3BhcmFtIChmLCBRbWVudV9iYXJfbGluZXMsIG1ha2VfbnVtYmVyICgwKSk7CisK ICAgeF9kZWZhdWx0X3BhcmFtZXRlciAoZiwgcGFyYW1ldGVycywgUXRvb2xfYmFyX2xpbmVz LAogCQkgICAgICAgTklMUCAoVnRvb2xfYmFyX21vZGUpCiAJCSAgICAgICA/IG1ha2VfbnVt YmVyICgwKSA6IG1ha2VfbnVtYmVyICgxKSwKQEAgLTU1MzAsOSArNTkyMSw3IEBAIHN0cnVj dCBmcmFtZSAqCiAgIHhfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcmFtZXRlcnMsIFF0aXRs ZSwgUW5pbCwKIAkJICAgICAgICJ0aXRsZSIsICJUaXRsZSIsIFJFU19UWVBFX1NUUklORyk7 CgotICBmLT5vdXRwdXRfZGF0YS53MzItPmR3U3R5bGUgPSBXU19PVkVSTEFQUEVEV0lORE9X OwogICBmLT5vdXRwdXRfZGF0YS53MzItPnBhcmVudF9kZXNjID0gRlJBTUVfRElTUExBWV9J TkZPIChmKS0+cm9vdF93aW5kb3c7Ci0KICAgZi0+b3V0cHV0X2RhdGEudzMyLT50ZXh0X2N1 cnNvciA9IHczMl9sb2FkX2N1cnNvciAoSURDX0lCRUFNKTsKICAgZi0+b3V0cHV0X2RhdGEu dzMyLT5ub250ZXh0X2N1cnNvciA9IHczMl9sb2FkX2N1cnNvciAoSURDX0FSUk9XKTsKICAg Zi0+b3V0cHV0X2RhdGEudzMyLT5tb2RlbGluZV9jdXJzb3IgPSB3MzJfbG9hZF9jdXJzb3Ig KElEQ19BUlJPVyk7CkBAIC01NTk3LDI5ICs1OTg2LDM2IEBAIHN0cnVjdCBmcmFtZSAqCiAg ICAgIGFkanVzdF9mcmFtZV9zaXplIGNhbGwuICAqLwogICB4X2RlZmF1bHRfcGFyYW1ldGVy IChmLCBwYXJhbWV0ZXJzLCBRZnVsbHNjcmVlbiwgUW5pbCwKIAkJICAgICAgICJmdWxsc2Ny ZWVuIiwgIkZ1bGxzY3JlZW4iLCBSRVNfVFlQRV9TWU1CT0wpOworICB4X2RlZmF1bHRfcGFy YW1ldGVyIChmLCBwYXJhbWV0ZXJzLCBRel9ncm91cCwgUW5pbCwKKwkJICAgICAgIE5VTEws IE5VTEwsIFJFU19UWVBFX1NZTUJPTCk7CgogICAvKiBNYWtlIHRoZSB3aW5kb3cgYXBwZWFy IG9uIHRoZSBmcmFtZSBhbmQgZW5hYmxlIGRpc3BsYXksIHVubGVzcwogICAgICB0aGUgY2Fs bGVyIHNheXMgbm90IHRvLiAgSG93ZXZlciwgd2l0aCBleHBsaWNpdCBwYXJlbnQsIEVtYWNz CiAgICAgIGNhbm5vdCBjb250cm9sIHZpc2liaWxpdHksIHNvIGRvbid0IHRyeS4gICovCi0g IGlmICghIGYtPm91dHB1dF9kYXRhLnczMi0+ZXhwbGljaXRfcGFyZW50KQorICBpZiAoIWYt Pm91dHB1dF9kYXRhLnczMi0+ZXhwbGljaXRfcGFyZW50KQogICAgIHsKLSAgICAgIExpc3Bf T2JqZWN0IHZpc2liaWxpdHk7Ci0KLSAgICAgIHZpc2liaWxpdHkgPSB4X2dldF9hcmcgKGRw eWluZm8sIHBhcmFtZXRlcnMsIFF2aXNpYmlsaXR5LCAwLCAwLCBSRVNfVFlQRV9TWU1CT0wp OwotICAgICAgaWYgKEVRICh2aXNpYmlsaXR5LCBRdW5ib3VuZCkpCi0JdmlzaWJpbGl0eSA9 IFF0OworICAgICAgTGlzcF9PYmplY3QgdmlzaWJpbGl0eQorCT0geF9nZXRfYXJnIChkcHlp bmZvLCBwYXJhbWV0ZXJzLCBRdmlzaWJpbGl0eSwgMCwgMCwgUkVTX1RZUEVfU1lNQk9MKTsK CiAgICAgICBpZiAoRVEgKHZpc2liaWxpdHksIFFpY29uKSkKIAl4X2ljb25pZnlfZnJhbWUg KGYpOwotICAgICAgZWxzZSBpZiAoISBOSUxQICh2aXNpYmlsaXR5KSkKLQl4X21ha2VfZnJh bWVfdmlzaWJsZSAoZik7CiAgICAgICBlbHNlCiAJewotCSAgLyogTXVzdCBoYXZlIGJlZW4g UW5pbC4gICovCi0JICA7CisJICBpZiAoRVEgKHZpc2liaWxpdHksIFF1bmJvdW5kKSkKKwkg ICAgdmlzaWJpbGl0eSA9IFF0OworCisJICBpZiAoIU5JTFAgKHZpc2liaWxpdHkpKQorCSAg ICB4X21ha2VfZnJhbWVfdmlzaWJsZSAoZik7CiAJfQorCisgICAgICBzdG9yZV9mcmFtZV9w YXJhbSAoZiwgUXZpc2liaWxpdHksIHZpc2liaWxpdHkpOwogICAgIH0KCisgIC8qIEZvciBg bm8tZm9jdXMtb24tbWFwJyBmcmFtZXMgc2V0IGFscGhhIGhlcmUuICAqLworICBpZiAoRlJB TUVfTk9fRk9DVVNfT05fTUFQIChmKSkKKyAgICB4X2RlZmF1bHRfcGFyYW1ldGVyIChmLCBw YXJhbWV0ZXJzLCBRYWxwaGEsIFFuaWwsCisJCQkgImFscGhhIiwgIkFscGhhIiwgUkVTX1RZ UEVfTlVNQkVSKTsKKwogICAvKiBJbml0aWFsaXplIGBkZWZhdWx0LW1pbmlidWZmZXItZnJh bWUnIGluIGNhc2UgdGhpcyBpcyB0aGUgZmlyc3QKICAgICAgZnJhbWUgb24gdGhpcyB0ZXJt aW5hbC4gICovCiAgIGlmIChGUkFNRV9IQVNfTUlOSUJVRl9QIChmKQpAQCAtNjU2OCw4ICs2 OTY0LDYgQEAgc3RhdGljIHZvaWQgY29tcHV0ZV90aXBfeHkgKHN0cnVjdCBmcmFtZSAqLCBM aXNwX09iamVjdCwgTGlzcF9PYmplY3QsCiAgIGRweWluZm9fcmVmY291bnQgPSBkcHlpbmZv LT5yZWZlcmVuY2VfY291bnQ7CiAjZW5kaWYgLyogR0xZUEhfREVCVUcgKi8KICAgRlJBTUVf S0JPQVJEIChmKSA9IGtiOwotICBmLT5vdXRwdXRfZGF0YS53MzItPnBhcmVudF9kZXNjID0g RlJBTUVfRElTUExBWV9JTkZPIChmKS0+cm9vdF93aW5kb3c7Ci0gIGYtPm91dHB1dF9kYXRh LnczMi0+ZXhwbGljaXRfcGFyZW50ID0gZmFsc2U7CgogICAvKiBTZXQgdGhlIG5hbWU7IHRo ZSBmdW5jdGlvbnMgdG8gd2hpY2ggd2UgcGFzcyBmIGV4cGVjdCB0aGUgbmFtZSB0bwogICAg ICBiZSBzZXQuICAqLwpAQCAtNjYzNSw2ICs3MDI5LDcgQEAgc3RhdGljIHZvaWQgY29tcHV0 ZV90aXBfeHkgKHN0cnVjdCBmcmFtZSAqLCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsCgog ICBmLT5vdXRwdXRfZGF0YS53MzItPmR3U3R5bGUgPSBXU19CT1JERVIgfCBXU19QT1BVUCB8 IFdTX0RJU0FCTEVEOwogICBmLT5vdXRwdXRfZGF0YS53MzItPnBhcmVudF9kZXNjID0gRlJB TUVfRElTUExBWV9JTkZPIChmKS0+cm9vdF93aW5kb3c7CisgIGYtPm91dHB1dF9kYXRhLncz Mi0+ZXhwbGljaXRfcGFyZW50ID0gZmFsc2U7CgogICB4X2ZpZ3VyZV93aW5kb3dfc2l6ZSAo ZiwgcGFybXMsIHRydWUsICZ4X3dpZHRoLCAmeF9oZWlnaHQpOwoKQEAgLTg1NTUsNiArODk1 MCwxNDAgQEAgdmFsdWUgaXMgYSBsaXN0IG9mIHRoZSBmb3JtIChMRUZULCBUT1AsIFJJR0hU LCBCT1RUT00pLiAgQWxsIHZhbHVlcyBhcmUKICAgICB9CiB9CgorLyoqCisgKiB3MzJfZnJh bWVfbGlzdF96X29yZGVyOgorICoKKyAqIFJlY3Vyc2l2ZWx5IGFkZCBsaXN0IG9mIGFsbCBm cmFtZXMgb24gdGhlIGRpc3BsYXkgc3BlY2lmaWVkIHZpYQorICogRFBZSU5GTyBhbmQgd2hv c2Ugd2luZG93LXN5c3RlbSB3aW5kb3cncyBwYXJlbnQgaXMgc3BlY2lmaWVkIGJ5CisgKiBX SU5ET1cgdG8gRlJBTUVTIGFuZCByZXR1cm4gRlJBTUVTLgorICovCitzdGF0aWMgTGlzcF9P YmplY3QKK3czMl9mcmFtZV9saXN0X3pfb3JkZXIgKHN0cnVjdCB3MzJfZGlzcGxheV9pbmZv ICpkcHlpbmZvLCBIV05EIHdpbmRvdywgTGlzcF9PYmplY3QgZnJhbWVzKQoreworICB3aGls ZSAod2luZG93KQorICAgIHsKKyAgICAgIEhXTkQgY2hpbGQ7CisgICAgICBzdHJ1Y3QgZnJh bWUgKmYgPSB4X3dpbmRvd190b19mcmFtZSAoZHB5aW5mbywgd2luZG93KTsKKyAgICAgIExp c3BfT2JqZWN0IGZyYW1lOworCisgICAgICAvKiBQcm9jZXNzIGNoaWxkIHdpbmRvd3MgZmly c3QgLSB0aGV5IHByZWNlZGUgdGhlaXIgcGFyZW50IGluIHRoZQorCSB6LW9yZGVyLiAgKi8K KyAgICAgIGJsb2NrX2lucHV0ICgpOworICAgICAgY2hpbGQgPSBHZXRXaW5kb3cgKHdpbmRv dywgR1dfQ0hJTEQpOworICAgICAgdW5ibG9ja19pbnB1dCAoKTsKKyAgICAgIGlmIChjaGls ZCkKKwlmcmFtZXMgPSB3MzJfZnJhbWVfbGlzdF96X29yZGVyIChkcHlpbmZvLCBjaGlsZCwg ZnJhbWVzKTsKKworICAgICAgaWYgKGYpCisJeworCSAgWFNFVEZSQU1FIChmcmFtZSwgZik7 CisJICBmcmFtZXMgPSBGY29ucyAoZnJhbWUsIGZyYW1lcyk7CisJfQorCisgICAgICBibG9j a19pbnB1dCAoKTsKKyAgICAgIHdpbmRvdyA9IEdldE5leHRXaW5kb3cgKHdpbmRvdywgR1df SFdORE5FWFQpOworICAgICAgdW5ibG9ja19pbnB1dCAoKTsKKyAgICB9CisKKyAgcmV0dXJu IGZyYW1lczsKK30KKworREVGVU4gKCJ3MzItZnJhbWUtbGlzdC16LW9yZGVyIiwgRnczMl9m cmFtZV9saXN0X3pfb3JkZXIsCisgICAgICAgU3czMl9mcmFtZV9saXN0X3pfb3JkZXIsIDAs IDEsIDAsCisgICAgICAgZG9jOiAvKiBSZXR1cm4gbGlzdCBvZiBFbWFjcycgZnJhbWVzLCBp biBaIChzdGFja2luZykgb3JkZXIuCitUaGUgb3B0aW9uYWwgYXJndW1lbnQgRElTUExBWSBz cGVjaWZpZXMgd2hpY2ggZGlzcGxheSB0byBhc2sgYWJvdXQuCitESVNQTEFZIHNob3VsZCBi ZSBlaXRoZXIgYSBmcmFtZSBvciBhIGRpc3BsYXkgbmFtZSAoYSBzdHJpbmcpLiAgSWYKK29t aXR0ZWQgb3IgbmlsLCB0aGF0IHN0YW5kcyBmb3IgdGhlIHNlbGVjdGVkIGZyYW1lJ3MgZGlz cGxheS4KKworRnJhbWVzIGFyZSBsaXN0ZWQgZnJvbSBib3R0b21tb3N0IChmaXJzdCkgdG8g dG9wbW9zdCAobGFzdCkuICBDaGlsZAorZnJhbWVzIGFwcGVhciByaWdodCBhZnRlciB0aGVp ciBwYXJlbnQgZnJhbWUuICBSZXR1cm4gbmlsIGlmIERJU1BMQVkKK2NvbnRhaW5zIG5vIEVt YWNzIGZyYW1lLiAgKi8pCisgIChMaXNwX09iamVjdCBkaXNwbGF5KQoreworICBzdHJ1Y3Qg dzMyX2Rpc3BsYXlfaW5mbyAqZHB5aW5mbyA9IGNoZWNrX3hfZGlzcGxheV9pbmZvIChkaXNw bGF5KTsKKyAgSFdORCB3aW5kb3c7CisKKyAgYmxvY2tfaW5wdXQgKCk7CisgIHdpbmRvdyA9 IEdldFRvcFdpbmRvdyAoTlVMTCk7CisgIHVuYmxvY2tfaW5wdXQgKCk7CisKKyAgcmV0dXJu IHczMl9mcmFtZV9saXN0X3pfb3JkZXIgKGRweWluZm8sIHdpbmRvdywgUW5pbCk7Cit9CisK Ky8qKgorICogdzMyX2ZyYW1lX3Jlc3RhY2s6CisgKgorICogUmVzdGFjayBmcmFtZSBGMSBi ZWxvdyBmcmFtZSBGMiwgYWJvdmUgaWYgQUJPVkVfRkxBRyBpcyBub24tbmlsLiAgSW4KKyAq IHByYWN0aWNlIHRoaXMgaXMgYSB0d28tc3RlcCBhY3Rpb246IFRoZSBmaXJzdCBzdGVwIHJl bW92ZXMgRjEncworICogd2luZG93LXN5c3RlbSB3aW5kb3cgZnJvbSB0aGUgZGlzcGxheS4g IFRoZSBzZWNvbmQgc3RlcCByZWluc2VydHMKKyAqIEYxJ3Mgd2luZG93IGJlbG93IChhYm92 ZSBpZiBBQk9WRV9GTEFHIGlzIHRydWUpIHRoYXQgb2YgRjIuCisgKi8KK3N0YXRpYyB2b2lk Cit3MzJfZnJhbWVfcmVzdGFjayAoc3RydWN0IGZyYW1lICpmMSwgc3RydWN0IGZyYW1lICpm MiwgYm9vbCBhYm92ZV9mbGFnKQoreworICBIV05EIGh3bmQxID0gRlJBTUVfVzMyX1dJTkRP VyAoZjEpOworICBIV05EIGh3bmQyID0gRlJBTUVfVzMyX1dJTkRPVyAoZjIpOworCisgIGJs b2NrX2lucHV0ICgpOworICBpZiAoYWJvdmVfZmxhZykKKyAgICAvKiBQdXQgRjEgYWJvdmUg RjIgaW4gdGhlIHotb3JkZXIuICAqLworICAgIHsKKyAgICAgIGlmIChHZXROZXh0V2luZG93 IChod25kMSwgR1dfSFdORE5FWFQpICE9IGh3bmQyKQorCXsKKwkgIC8qIE1ha2Ugc3VyZSBG MSBpcyBiZWxvdyBGMiBmaXJzdCBiZWNhdXNlIHdlIG11c3Qgbm90CisJICAgICBjaGFuZ2Ug dGhlIHJlbGF0aXZlIHBvc2l0aW9uIG9mIEYyIHdydCBhbnkgb3RoZXIKKwkgICAgIHdpbmRv dyBidXQgRjEuICAqLworCSAgaWYgKEdldE5leHRXaW5kb3cgKGh3bmQyLCBHV19IV05ETkVY VCkgIT0gaHduZDEpCisJICAgIFNldFdpbmRvd1BvcyAoaHduZDEsIGh3bmQyLCAwLCAwLCAw LCAwLAorCQkJICBTV1BfTk9TSVpFIHwgU1dQX05PTU9WRSB8IFNXUF9OT0FDVElWQVRFCisJ CQkgIHwgU1dQX0ZSQU1FQ0hBTkdFRCk7CisJICAvKiBOb3cgcHV0IEYxIGFib3ZlIEYyLiAg Ki8KKwkgIFNldFdpbmRvd1BvcyAoaHduZDIsIGh3bmQxLCAwLCAwLCAwLCAwLAorCQkJU1dQ X05PU0laRSB8IFNXUF9OT01PVkUgfCBTV1BfTk9BQ1RJVkFURQorCQkJfCBTV1BfRlJBTUVD SEFOR0VEKTsKKwl9CisgICAgfQorICBlbHNlIGlmIChHZXROZXh0V2luZG93IChod25kMiwg R1dfSFdORE5FWFQpICE9IGh3bmQxKQorICAgIC8qIFB1dCBGMSBiZWxvdyBGMiBpbiB0aGUg ei1vcmRlci4gICovCisgICAgU2V0V2luZG93UG9zIChod25kMSwgaHduZDIsIDAsIDAsIDAs IDAsCisJCSAgU1dQX05PU0laRSB8IFNXUF9OT01PVkUgfCBTV1BfTk9BQ1RJVkFURQorCQkg IHwgU1dQX0ZSQU1FQ0hBTkdFRCk7CisgIHVuYmxvY2tfaW5wdXQgKCk7Cit9CisKK0RFRlVO ICgidzMyLWZyYW1lLXJlc3RhY2siLCBGdzMyX2ZyYW1lX3Jlc3RhY2ssIFN3MzJfZnJhbWVf cmVzdGFjaywgMiwgMywgMCwKKyAgICAgICBkb2M6IC8qIFJlc3RhY2sgRlJBTUUxIGJlbG93 IEZSQU1FMi4KK1RoaXMgbWVhbnMgdGhhdCBpZiBib3RoIGZyYW1lcyBhcmUgdmlzaWJsZSBh bmQgdGhlIGRpc3BsYXkgYXJlYXMgb2YKK3RoZXNlIGZyYW1lcyBvdmVybGFwLCBGUkFNRTIg KHBhcnRpYWxseSkgb2JzY3VyZXMgRlJBTUUxLiAgSWYgb3B0aW9uYWwKK3RoaXJkIGFyZ3Vt ZW50IEFCT1ZFIGlzIG5vbi1uaWwsIHJlc3RhY2sgRlJBTUUxIGFib3ZlIEZSQU1FMi4gIFRo aXMKK21lYW5zIHRoYXQgaWYgYm90aCBmcmFtZXMgYXJlIHZpc2libGUgYW5kIHRoZSBkaXNw bGF5IGFyZWFzIG9mIHRoZXNlCitmcmFtZXMgb3ZlcmxhcCwgRlJBTUUxIChwYXJ0aWFsbHkp IG9ic2N1cmVzIEZSQU1FMi4KKworVGhpcyBtYXkgYmUgdGhvdWdodCBvZiBhcyBhbiBhdG9t aWMgYWN0aW9uIHBlcmZvcm1lZCBpbiB0d28gc3RlcHM6IFRoZQorZmlyc3Qgc3RlcCByZW1v dmVzIEZSQU1FMSdzIHdpbmRvdy1zeXN0ZW0gd2luZG93IGZyb20gdGhlIGRpc3BsYXkuICBU aGUKK3NlY29uZCBzdGVwIHJlaW5zZXJ0cyBGUkFNRTEncyB3aW5kb3cgYmVsb3cgKGFib3Zl IGlmIEFCT1ZFIGlzIHRydWUpCit0aGF0IG9mIEZSQU1FMi4gIEhlbmNlIHRoZSBwb3NpdGlv biBvZiBGUkFNRTIgaW4gaXRzIGRpc3BsYXkncyBaCitcKHN0YWNraW5nKSBvcmRlciByZWxh dGl2ZSB0byBhbGwgb3RoZXIgZnJhbWVzIGV4Y2x1ZGluZyBGUkFNRTEgcmVtYWlucwordW5h bHRlcmVkLgorCitTb21lIHdpbmRvdyBtYW5hZ2VycyBtYXkgcmVmdXNlIHRvIHJlc3RhY2sg d2luZG93cy4gICovKQorICAgICAoTGlzcF9PYmplY3QgZnJhbWUxLCBMaXNwX09iamVjdCBm cmFtZTIsIExpc3BfT2JqZWN0IGFib3ZlKQoreworICBzdHJ1Y3QgZnJhbWUgKmYxID0gZGVj b2RlX2xpdmVfZnJhbWUgKGZyYW1lMSk7CisgIHN0cnVjdCBmcmFtZSAqZjIgPSBkZWNvZGVf bGl2ZV9mcmFtZSAoZnJhbWUyKTsKKworICBpZiAoRlJBTUVfVzMyX1AgKGYxKSAmJiBGUkFN RV9XMzJfUCAoZjIpKQorICAgIHsKKyAgICAgIHczMl9mcmFtZV9yZXN0YWNrIChmMSwgZjIs ICFOSUxQIChhYm92ZSkpOworICAgICAgcmV0dXJuIFF0OworICAgIH0KKyAgZWxzZQorICAg IHsKKyAgICAgIGVycm9yICgiQ2Fubm90IHJlc3RhY2sgZnJhbWVzIik7CisgICAgICByZXR1 cm4gUW5pbDsKKyAgICB9Cit9CisKIERFRlVOICgidzMyLW1vdXNlLWFic29sdXRlLXBpeGVs LXBvc2l0aW9uIiwgRnczMl9tb3VzZV9hYnNvbHV0ZV9waXhlbF9wb3NpdGlvbiwKICAgICAg ICBTdzMyX21vdXNlX2Fic29sdXRlX3BpeGVsX3Bvc2l0aW9uLCAwLCAwLCAwLAogICAgICAg IGRvYzogLyogUmV0dXJuIGFic29sdXRlIHBvc2l0aW9uIG9mIG1vdXNlIGN1cnNvciBpbiBw aXhlbHMuCkBAIC05NzQ5LDYgKzEwMjc4LDEyIEBAIGVudW0gTklfU2V2ZXJpdHkgewogICAw LCAvKiB4X3NldF9zdGlja3kgKi8KICAgMCwgLyogeF9zZXRfdG9vbF9iYXJfcG9zaXRpb24g Ki8KICAgMCwgLyogeF9zZXRfaW5oaWJpdF9kb3VibGVfYnVmZmVyaW5nICovCisgIHhfc2V0 X3VuZGVjb3JhdGVkLAorICB4X3NldF9wYXJlbnRfZnJhbWUsCisgIHhfc2V0X3NraXBfdGFz a2JhciwKKyAgeF9zZXRfbm9fZm9jdXNfb25fbWFwLAorICB4X3NldF9ub19hY2NlcHRfZm9j dXMsCisgIHhfc2V0X3pfZ3JvdXAsCiB9OwoKIHZvaWQKQEAgLTEwMTI4LDYgKzEwNjYzLDgg QEAgc3VjY2Vzc2l2ZSBtb3VzZSBtb3ZlIChvciBzY3JvbGwgYmFyIGRyYWcpIGV2ZW50cyBi ZWZvcmUgdGhleSBhcmUKICAgZGVmc3ViciAoJlN4X2Rpc3BsYXlfbGlzdCk7CiAgIGRlZnN1 YnIgKCZTdzMyX2ZyYW1lX2dlb21ldHJ5KTsKICAgZGVmc3ViciAoJlN3MzJfZnJhbWVfZWRn ZXMpOworICBkZWZzdWJyICgmU3czMl9mcmFtZV9saXN0X3pfb3JkZXIpOworICBkZWZzdWJy ICgmU3czMl9mcmFtZV9yZXN0YWNrKTsKICAgZGVmc3ViciAoJlN3MzJfbW91c2VfYWJzb2x1 dGVfcGl4ZWxfcG9zaXRpb24pOwogICBkZWZzdWJyICgmU3czMl9zZXRfbW91c2VfYWJzb2x1 dGVfcGl4ZWxfcG9zaXRpb24pOwogICBkZWZzdWJyICgmU3hfc3luY2hyb25pemUpOwpkaWZm IC0tZ2l0IGEvc3JjL3czMnRlcm0uYyBiL3NyYy93MzJ0ZXJtLmMKaW5kZXggZDZiNzhmZC4u Yjg4YTg1NSAxMDA2NDQKLS0tIGEvc3JjL3czMnRlcm0uYworKysgYi9zcmMvdzMydGVybS5j CkBAIC03ODAsOSArNzgwLDIzIEBAIHN0cnVjdCByZWNvcmQKICAgICAgIGJsb2NrX2lucHV0 ICgpOwogICAgICAgewogCUhEQyBoZGMgPSBnZXRfZnJhbWVfZGMgKGYpOwotCXczMl9jbGVh cl9hcmVhIChmLCBoZGMsIDAsIHksIHdpZHRoLCBoZWlnaHQpOwotCXczMl9jbGVhcl9hcmVh IChmLCBoZGMsIEZSQU1FX1BJWEVMX1dJRFRIIChmKSAtIHdpZHRoLAotCQkJeSwgd2lkdGgs IGhlaWdodCk7CisJc3RydWN0IGZhY2UgKmZhY2UgPSBGQUNFX0ZST01fSURfT1JfTlVMTCAo ZiwgSU5URVJOQUxfQk9SREVSX0ZBQ0VfSUQpOworCisJaWYgKGZhY2UpCisJICB7CisJICAg IC8qIEZpbGwgYm9yZGVyIHdpdGggaW50ZXJuYWwgYm9yZGVyIGZhY2UuICAqLworCSAgICB1 bnNpZ25lZCBsb25nIGNvbG9yID0gZmFjZS0+YmFja2dyb3VuZDsKKworCSAgICB3MzJfZmls bF9hcmVhIChmLCBoZGMsIGNvbG9yLCAwLCB5LCB3aWR0aCwgaGVpZ2h0KTsKKwkgICAgdzMy X2ZpbGxfYXJlYSAoZiwgaGRjLCBjb2xvciwgRlJBTUVfUElYRUxfV0lEVEggKGYpIC0gd2lk dGgsCisJCQkgICB5LCB3aWR0aCwgaGVpZ2h0KTsKKwkgIH0KKwllbHNlCisJICB7CisJICAg IHczMl9jbGVhcl9hcmVhIChmLCBoZGMsIDAsIHksIHdpZHRoLCBoZWlnaHQpOworCSAgICB3 MzJfY2xlYXJfYXJlYSAoZiwgaGRjLCBGUkFNRV9QSVhFTF9XSURUSCAoZikgLSB3aWR0aCwK KwkJCSAgICB5LCB3aWR0aCwgaGVpZ2h0KTsKKwkgIH0KIAlyZWxlYXNlX2ZyYW1lX2RjIChm LCBoZGMpOwogICAgICAgfQogICAgICAgdW5ibG9ja19pbnB1dCAoKTsKQEAgLTMwODIsNyAr MzA5Niw4IEBAIHN0YXRpYyB2b2lkIHczMl9kcmF3X2JveF9yZWN0IChzdHJ1Y3QgZ2x5cGhf c3RyaW5nICosIGludCwgaW50LCBpbnQsIGludCwKICAgICAgY29vcmRpbmF0ZXMsIHNvIGNh c3QgdG8gc2hvcnQgdG8gaW50ZXJwcmV0IHRoZW0gY29ycmVjdGx5LiAgKi8KICAgcC54ID0g KHNob3J0KSBMT1dPUkQgKG1zZy0+bXNnLmxQYXJhbSk7CiAgIHAueSA9IChzaG9ydCkgSElX T1JEIChtc2ctPm1zZy5sUGFyYW0pOwotICBTY3JlZW5Ub0NsaWVudCAobXNnLT5tc2cuaHdu ZCwgJnApOworICAvKiBGb3IgdGhlIGNhc2UgdGhhdCBmJ3MgdzMyIHdpbmRvdyBpcyBub3Qg bXNnLT5tc2cuaHduZC4gICovCisgIFNjcmVlblRvQ2xpZW50IChGUkFNRV9XMzJfV0lORE9X IChmKSwgJnApOwogICBYU0VUSU5UIChyZXN1bHQtPngsIHAueCk7CiAgIFhTRVRJTlQgKHJl c3VsdC0+eSwgcC55KTsKICAgWFNFVEZSQU1FIChyZXN1bHQtPmZyYW1lX29yX3dpbmRvdywg Zik7CkBAIC0zNDMzLDggKzM0NDgsMjIgQEAgc3RhdGljIHZvaWQgeF9ob3Jpem9udGFsX3Nj cm9sbF9iYXJfcmVwb3J0X21vdGlvbiAoc3RydWN0IGZyYW1lICoqLCBMaXNwX09iamVjdAog CS8qIElmIG1vdXNlIHdhcyBncmFiYmVkIG9uIGEgZnJhbWUsIGdpdmUgY29vcmRzIGZvciB0 aGF0CiAJICAgZnJhbWUgZXZlbiBpZiB0aGUgbW91c2UgaXMgbm93IG91dHNpZGUgaXQuICBP dGhlcndpc2UKIAkgICBjaGVjayBmb3Igd2luZG93IHVuZGVyIG1vdXNlIG9uIG9uZSBvZiBv dXIgZnJhbWVzLiAgKi8KLQlmMSA9ICh4X21vdXNlX2dyYWJiZWQgKGRweWluZm8pID8gZHB5 aW5mby0+bGFzdF9tb3VzZV9mcmFtZQotCSAgICAgIDogeF9hbnlfd2luZG93X3RvX2ZyYW1l IChkcHlpbmZvLCBXaW5kb3dGcm9tUG9pbnQgKHB0KSkpOworCWlmICh4X21vdXNlX2dyYWJi ZWQgKGRweWluZm8pKQorCSAgZjEgPSBkcHlpbmZvLT5sYXN0X21vdXNlX2ZyYW1lOworCWVs c2UKKwkgIHsKKwkgICAgSFdORCB3ZnAgPSBXaW5kb3dGcm9tUG9pbnQgKHB0KTsKKworCSAg ICBpZiAod2ZwICYmIChmMSA9IHhfYW55X3dpbmRvd190b19mcmFtZSAoZHB5aW5mbywgd2Zw KSkpCisJICAgICAgeworCQlIV05EIGN3ZnAgPSBDaGlsZFdpbmRvd0Zyb21Qb2ludCAod2Zw LCBwdCk7CisJCXN0cnVjdCBmcmFtZSAqZjI7CisKKwkJLyogSWYgY3dmcCBleGlzdHMgaXQg c2hvdWxkIGJlIG9uZSBvZiBvdXIgd2luZG93cyAuLi4gICovCisJCWlmIChjd2ZwICYmIChm MiA9IHhfYW55X3dpbmRvd190b19mcmFtZSAoZHB5aW5mbywgY3dmcCkpKQorCQkgIGYxID0g ZjI7CisJICAgICAgfQorCSAgfQoKIAkvKiBJZiBub3QsIGlzIGl0IG9uZSBvZiBvdXIgc2Ny b2xsIGJhcnM/ICAqLwogCWlmICghIGYxKQpAQCAtMzg3NywxMSArMzkwNiwxNSBAQCBzdGF0 aWMgdm9pZCB4X2hvcml6b250YWxfc2Nyb2xsX2Jhcl9yZXBvcnRfbW90aW9uIChzdHJ1Y3Qg ZnJhbWUgKiosIExpc3BfT2JqZWN0CiAJCSBmb3IgdGhlbSBvbiB0aGUgZnJhbWUsIHdlIGhh dmUgdG8gY2xlYXIgInVuZGVyIiB0aGVtLiAgKi8KIAkgICAgICB3MzJfY2xlYXJfYXJlYSAo ZiwgaGRjLCBsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQpOwogCSAgICAgIHJlbGVhc2VfZnJh bWVfZGMgKGYsIGhkYyk7CisJICAgICAgeF9jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIg KGYpOwogCSAgICB9CiAgICAgICAgICAgLyogTWFrZSBzdXJlIHNjcm9sbCBiYXIgaXMgInZp c2libGUiIGJlZm9yZSBtb3ZpbmcsIHRvIGVuc3VyZSB0aGUKICAgICAgICAgICAgICBhcmVh IG9mIHRoZSBwYXJlbnQgd2luZG93IG5vdyBleHBvc2VkIHdpbGwgYmUgcmVmcmVzaGVkLiAg Ki8KICAgICAgICAgICBteV9zaG93X3dpbmRvdyAoZiwgaHduZCwgU1dfSElERSk7Ci0gICAg ICAgICAgTW92ZVdpbmRvdyAoaHduZCwgbGVmdCwgdG9wLCB3aWR0aCwgbWF4IChoZWlnaHQs IDEpLCBUUlVFKTsKKy8qKiAgICAgICAgICAgTW92ZVdpbmRvdyAoaHduZCwgbGVmdCwgdG9w LCB3aWR0aCwgbWF4IChoZWlnaHQsIDEpLCBUUlVFKTsgKiovCisJICAvKiBUcnkgdG8gbm90 IGRyYXcgb3ZlciBjaGlsZCBmcmFtZXMuICAqLworCSAgU2V0V2luZG93UG9zIChod25kLCBI V05EX0JPVFRPTSwgbGVmdCwgdG9wLCB3aWR0aCwgbWF4IChoZWlnaHQsIDEpLAorICAgICAg ICAgICAgICAgICAgICAgICAgU1dQX0ZSQU1FQ0hBTkdFRCk7CgogCSAgc2kuY2JTaXplID0g c2l6ZW9mIChzaSk7CiAJICBzaS5mTWFzayA9IFNJRl9SQU5HRTsKQEAgLTM5NzUsMTEgKzQw MDgsMTUgQEAgc3RhdGljIHZvaWQgeF9ob3Jpem9udGFsX3Njcm9sbF9iYXJfcmVwb3J0X21v dGlvbiAoc3RydWN0IGZyYW1lICoqLCBMaXNwX09iamVjdAogCQkgZm9yIHRoZW0gb24gdGhl IGZyYW1lLCB3ZSBoYXZlIHRvIGNsZWFyICJ1bmRlciIgdGhlbS4gICovCiAJICAgICAgdzMy X2NsZWFyX2FyZWEgKGYsIGhkYywgY2xlYXJfbGVmdCwgdG9wLCBjbGVhcl93aWR0aCwgaGVp Z2h0KTsKIAkgICAgICByZWxlYXNlX2ZyYW1lX2RjIChmLCBoZGMpOworCSAgICAgIHhfY2xl YXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyIChmKTsKIAkgICAgfQogICAgICAgICAgIC8qIE1h a2Ugc3VyZSBzY3JvbGwgYmFyIGlzICJ2aXNpYmxlIiBiZWZvcmUgbW92aW5nLCB0byBlbnN1 cmUgdGhlCiAgICAgICAgICAgICAgYXJlYSBvZiB0aGUgcGFyZW50IHdpbmRvdyBub3cgZXhw b3NlZCB3aWxsIGJlIHJlZnJlc2hlZC4gICovCiAgICAgICAgICAgbXlfc2hvd193aW5kb3cg KGYsIGh3bmQsIFNXX0hJREUpOwotICAgICAgICAgIE1vdmVXaW5kb3cgKGh3bmQsIGxlZnQs IHRvcCwgd2lkdGgsIG1heCAoaGVpZ2h0LCAxKSwgVFJVRSk7CisvKiogICAgICAgICAgIE1v dmVXaW5kb3cgKGh3bmQsIGxlZnQsIHRvcCwgd2lkdGgsIG1heCAoaGVpZ2h0LCAxKSwgVFJV RSk7ICoqLworCSAgLyogVHJ5IHRvIG5vdCBkcmF3IG92ZXIgY2hpbGQgZnJhbWVzLiAgKi8K KwkgIFNldFdpbmRvd1BvcyAoaHduZCwgSFdORF9CT1RUT00sIGxlZnQsIHRvcCwgbWF4ICh3 aWR0aCwgMSksIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNXUF9GUkFNRUNI QU5HRUQpOwoKIAkgIC8qICsrKyBTZXRTY3JvbGxJbmZvICsrKyAqLwogCSAgc2kuY2JTaXpl ID0gc2l6ZW9mIChzaSk7CkBAIC00NTE2LDYgKzQ1NTMsNyBAQCBzdGF0aWMgdm9pZCB4X2hv cml6b250YWxfc2Nyb2xsX2Jhcl9yZXBvcnRfbW90aW9uIChzdHJ1Y3QgZnJhbWUgKiosIExp c3BfT2JqZWN0CiAgICAgICAgIEdldENsaWVudFJlY3QgKHdpbmRvdywgJnJlY3QpOwogICAg ICAgICBzZWxlY3RfcGFsZXR0ZSAoZiwgaGRjKTsKICAgICAgICAgdzMyX2NsZWFyX3JlY3Qg KGYsIGhkYywgJnJlY3QpOworCXhfY2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyIChmKTsK ICAgICAgICAgZGVzZWxlY3RfcGFsZXR0ZSAoZiwgaGRjKTsKCiAgICAgICAgIFJlbGVhc2VE QyAod2luZG93LCBoZGMpOwpAQCAtNDYzMyw3ICs0NjcxLDcgQEAgc3RhdGljIHZvaWQgeF9o b3Jpem9udGFsX3Njcm9sbF9iYXJfcmVwb3J0X21vdGlvbiAoc3RydWN0IGZyYW1lICoqLCBM aXNwX09iamVjdAogCQkgICAgIGluIHRoYXQgY2FzZSBleHBvc2VfZnJhbWUgd2lsbCBkbyBu b3RoaW5nLCBhbmQgaWYKIAkJICAgICB0aGUgdmFyaW91cyByZWRpc3BsYXkgZmxhZ3MgaGFw cGVuIHRvIGJlIHVuc2V0LAogCQkgICAgIHdlIGFyZSBsZWZ0IHdpdGggYSBibGFuayBmcmFt ZS4gICovCi0JCSAgaWYgKCFGUkFNRV9HQVJCQUdFRF9QIChmKSkKKwkJICBpZiAoIUZSQU1F X0dBUkJBR0VEX1AgKGYpIHx8IEZSQU1FX1BBUkVOVF9GUkFNRSAoZikpCiAJCSAgICB7CiAJ CSAgICAgIEhEQyBoZGMgPSBnZXRfZnJhbWVfZGMgKGYpOwoKQEAgLTQ2NDUsNiArNDY4Myw3 IEBAIHN0YXRpYyB2b2lkIHhfaG9yaXpvbnRhbF9zY3JvbGxfYmFyX3JlcG9ydF9tb3Rpb24g KHN0cnVjdCBmcmFtZSAqKiwgTGlzcF9PYmplY3QKIAkJCQltc2cucmVjdC50b3AsCiAJCQkJ bXNnLnJlY3QucmlnaHQgLSBtc2cucmVjdC5sZWZ0LAogCQkJCW1zZy5yZWN0LmJvdHRvbSAt IG1zZy5yZWN0LnRvcCk7CisJCSAgeF9jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIgKGYp OwogCQl9CiAJICAgIH0KIAkgIGJyZWFrOwpAQCAtNDgxOSw4ICs0ODU4LDE1IEBAIHN0YXRp YyB2b2lkIHhfaG9yaXpvbnRhbF9zY3JvbGxfYmFyX3JlcG9ydF9tb3Rpb24gKHN0cnVjdCBm cmFtZSAqKiwgTGlzcF9PYmplY3QKCiAJICBpZiAoZikKIAkgICAgewotCSAgICAgIC8qIEdl bmVyYXRlIFNFTEVDVF9XSU5ET1dfRVZFTlRzIHdoZW4gbmVlZGVkLiAgKi8KLQkgICAgICBp ZiAoIU5JTFAgKFZtb3VzZV9hdXRvc2VsZWN0X3dpbmRvdykpCisJICAgICAgLyogTWF5YmUg Z2VuZXJhdGUgU0VMRUNUX1dJTkRPV19FVkVOVHMgZm9yCisJCSBgbW91c2UtYXV0b3NlbGVj dC13aW5kb3cnLiAgKi8KKwkgICAgICBpZiAoIU5JTFAgKFZtb3VzZV9hdXRvc2VsZWN0X3dp bmRvdykKKwkJICAmJiAoZiA9PSBYRlJBTUUgKHNlbGVjdGVkX2ZyYW1lKQorCQkgICAgICAv KiBTd2l0Y2ggdG8gZiBmcm9tIGFub3RoZXIgZnJhbWUgaWZmCisJCQkgZm9jdXNfZm9sbG93 c19tb3VzZSBpcyBzZXQgYW5kIGYgYWNjZXB0cworCQkJIGZvY3VzLiAgKi8KKwkJICAgICAg fHwgKCFOSUxQIChmb2N1c19mb2xsb3dzX21vdXNlKQorCQkJICAmJiAhRlJBTUVfTk9fQUND RVBUX0ZPQ1VTIChmKSkpKQogCQl7CiAJCSAgc3RhdGljIExpc3BfT2JqZWN0IGxhc3RfbW91 c2Vfd2luZG93OwogCQkgIExpc3BfT2JqZWN0IHdpbmRvdyA9IHdpbmRvd19mcm9tX2Nvb3Jk aW5hdGVzCkBAIC00ODMyLDIwICs0ODc4LDE2IEBAIHN0YXRpYyB2b2lkIHhfaG9yaXpvbnRh bF9zY3JvbGxfYmFyX3JlcG9ydF9tb3Rpb24gKHN0cnVjdCBmcmFtZSAqKiwgTGlzcF9PYmpl Y3QKIAkJICAgICBvbmx5IHdoZW4gaXQgaXMgYWN0aXZlLiAgKi8KIAkJICBpZiAoV0lORE9X UCAod2luZG93KQogCQkgICAgICAmJiAhRVEgKHdpbmRvdywgbGFzdF9tb3VzZV93aW5kb3cp Ci0JCSAgICAgICYmICFFUSAod2luZG93LCBzZWxlY3RlZF93aW5kb3cpCi0JCSAgICAgIC8q IEZvciBjbGljay10by1mb2N1cyB3aW5kb3cgbWFuYWdlcnMKLQkJCSBjcmVhdGUgZXZlbnQg aWZmIHdlIGRvbid0IGxlYXZlIHRoZQotCQkJIHNlbGVjdGVkIGZyYW1lLiAgKi8KLQkJICAg ICAgJiYgKGZvY3VzX2ZvbGxvd3NfbW91c2UKLQkJCSAgfHwgKEVRIChYV0lORE9XICh3aW5k b3cpLT5mcmFtZSwKLQkJCQkgIFhXSU5ET1cgKHNlbGVjdGVkX3dpbmRvdyktPmZyYW1lKSkp KQorCQkgICAgICAmJiAhRVEgKHdpbmRvdywgc2VsZWN0ZWRfd2luZG93KSkKIAkJICAgIHsK IAkJICAgICAgaW5ldi5raW5kID0gU0VMRUNUX1dJTkRPV19FVkVOVDsKIAkJICAgICAgaW5l di5mcmFtZV9vcl93aW5kb3cgPSB3aW5kb3c7CiAJCSAgICB9CisKIAkJICAvKiBSZW1lbWJl ciB0aGUgbGFzdCB3aW5kb3cgd2hlcmUgd2Ugc2F3IHRoZSBtb3VzZS4gICovCiAJCSAgbGFz dF9tb3VzZV93aW5kb3cgPSB3aW5kb3c7CiAJCX0KKwogCSAgICAgIGlmICghbm90ZV9tb3Vz ZV9tb3ZlbWVudCAoZiwgJm1zZy5tc2cpKQogCQloZWxwX2VjaG9fc3RyaW5nID0gcHJldmlv dXNfaGVscF9lY2hvX3N0cmluZzsKIAkgICAgfQpAQCAtNDk0OCwyMSArNDk5MCw0MCBAQCBz dGF0aWMgdm9pZCB4X2hvcml6b250YWxfc2Nyb2xsX2Jhcl9yZXBvcnRfbW90aW9uIChzdHJ1 Y3QgZnJhbWUgKiosIExpc3BfT2JqZWN0CgogCSAgICBpZiAoZikKIAkgICAgICB7Ci0KIAkJ aWYgKCFkcHlpbmZvLT53MzJfZm9jdXNfZnJhbWUKIAkJICAgIHx8IGYgPT0gZHB5aW5mby0+ dzMyX2ZvY3VzX2ZyYW1lKQorCQkgIC8qIEVtaXQgYW4gRW1hY3Mgd2hlZWwtdXAvZG93biBl dmVudC4gICovCiAJCSAgewotCQkgICAgLyogRW1pdCBhbiBFbWFjcyB3aGVlbC11cC9kb3du IGV2ZW50LiAgKi8KIAkJICAgIGNvbnN0cnVjdF9tb3VzZV93aGVlbCAoJmluZXYsICZtc2cs IGYpOworCisJCSAgICAvKiBJZ25vcmUgYW55IG1vdXNlIG1vdGlvbiB0aGF0IGhhcHBlbmVk IGJlZm9yZSB0aGlzCisJCSAgICAgICBldmVudDsgYW55IHN1YnNlcXVlbnQgbW91c2UtbW92 ZW1lbnQgRW1hY3MgZXZlbnRzCisJCSAgICAgICBzaG91bGQgcmVmbGVjdCBvbmx5IG1vdGlv biBhZnRlciB0aGUgQnV0dG9uUHJlc3MuICAqLworCQkgICAgZi0+bW91c2VfbW92ZWQgPSBm YWxzZTsKKwkJICAgIGYtPmxhc3RfdG9vbF9iYXJfaXRlbSA9IC0xOworCQkgICAgZHB5aW5m by0+bGFzdF9tb3VzZV9mcmFtZSA9IGY7CisJCSAgfQorCQllbHNlIGlmIChGUkFNRV9OT19B Q0NFUFRfRk9DVVMgKGYpCisJCQkgJiYgIXhfbW91c2VfZ3JhYmJlZCAoZHB5aW5mbykpCisJ CSAgeworCQkgICAgTGlzcF9PYmplY3QgZnJhbWUxID0gZ2V0X2ZyYW1lX3BhcmFtIChmLCBR bW91c2Vfd2hlZWxfZnJhbWUpOworCQkgICAgc3RydWN0IGZyYW1lICpmMSA9IEZSQU1FUCAo ZnJhbWUxKSA/IFhGUkFNRSAoZnJhbWUxKSA6IE5VTEw7CisKKwkJICAgIGlmIChmMSAmJiBG UkFNRV9MSVZFX1AgKGYxKSAmJiBGUkFNRV9XMzJfUCAoZjEpKQorCQkgICAgICB7CisJCQlj b25zdHJ1Y3RfbW91c2Vfd2hlZWwgKCZpbmV2LCAmbXNnLCBmMSk7CisJCQlmMS0+bW91c2Vf bW92ZWQgPSBmYWxzZTsKKwkJCWYxLT5sYXN0X3Rvb2xfYmFyX2l0ZW0gPSAtMTsKKwkJCWRw eWluZm8tPmxhc3RfbW91c2VfZnJhbWUgPSBmMTsKKwkJICAgICAgfQorCQkgICAgZWxzZQor CQkgICAgICBkcHlpbmZvLT5sYXN0X21vdXNlX2ZyYW1lID0gZjsKIAkJICB9Ci0JCS8qIEln bm9yZSBhbnkgbW91c2UgbW90aW9uIHRoYXQgaGFwcGVuZWQgYmVmb3JlIHRoaXMKLQkJICAg ZXZlbnQ7IGFueSBzdWJzZXF1ZW50IG1vdXNlLW1vdmVtZW50IEVtYWNzIGV2ZW50cwotCQkg ICBzaG91bGQgcmVmbGVjdCBvbmx5IG1vdGlvbiBhZnRlciB0aGUKLQkJICAgQnV0dG9uUHJl c3MuICAqLwotCQlmLT5tb3VzZV9tb3ZlZCA9IGZhbHNlOwotCQlmLT5sYXN0X3Rvb2xfYmFy X2l0ZW0gPSAtMTsKKwkJZWxzZQorCQkgIGRweWluZm8tPmxhc3RfbW91c2VfZnJhbWUgPSBm OwogCSAgICAgIH0KLQkgICAgZHB5aW5mby0+bGFzdF9tb3VzZV9mcmFtZSA9IGY7CisJICAg IGVsc2UKKwkgICAgICBkcHlpbmZvLT5sYXN0X21vdXNlX2ZyYW1lID0gZjsKIAkgIH0KIAkg IGJyZWFrOwoKQEAgLTUwMTUsNiArNTA3Niw3IEBAIHN0YXRpYyB2b2lkIHhfaG9yaXpvbnRh bF9zY3JvbGxfYmFyX3JlcG9ydF9tb3Rpb24gKHN0cnVjdCBmcmFtZSAqKiwgTGlzcF9PYmpl Y3QKIAkJICB3MzJmdWxsc2NyZWVuX2hvb2sgKGYpOwogCQl9CiAJICAgIH0KKwogCSAgY2hl Y2tfdmlzaWJpbGl0eSA9IDE7CiAJICBicmVhazsKCkBAIC01MDIyLDcgKzUwODQsMTEgQEAg c3RhdGljIHZvaWQgeF9ob3Jpem9udGFsX3Njcm9sbF9iYXJfcmVwb3J0X21vdGlvbiAoc3Ry dWN0IGZyYW1lICoqLCBMaXNwX09iamVjdAogCSAgZiA9IHhfd2luZG93X3RvX2ZyYW1lIChk cHlpbmZvLCBtc2cubXNnLmh3bmQpOwoKIAkgIGlmIChmICYmICFGUkFNRV9JQ09OSUZJRURf UCAoZikpCi0JICAgIHhfcmVhbF9wb3NpdGlvbnMgKGYsICZmLT5sZWZ0X3BvcywgJmYtPnRv cF9wb3MpOworCSAgICB7CisJICAgICAgeF9yZWFsX3Bvc2l0aW9ucyAoZiwgJmYtPmxlZnRf cG9zLCAmZi0+dG9wX3Bvcyk7CisJICAgICAgaW5ldi5raW5kID0gTU9WRV9GUkFNRV9FVkVO VDsKKwkgICAgICBYU0VURlJBTUUgKGluZXYuZnJhbWVfb3Jfd2luZG93LCBmKTsKKwkgICAg fQoKIAkgIGNoZWNrX3Zpc2liaWxpdHkgPSAxOwogCSAgYnJlYWs7CkBAIC01MDUxLDYgKzUx MTcsOSBAQCBzdGF0aWMgdm9pZCB4X2hvcml6b250YWxfc2Nyb2xsX2Jhcl9yZXBvcnRfbW90 aW9uIChzdHJ1Y3QgZnJhbWUgKiosIExpc3BfT2JqZWN0CiAJICAgIH0KICNlbmRpZgoKKwkg IGlmIChmID0geF93aW5kb3dfdG9fZnJhbWUgKGRweWluZm8sIG1zZy5tc2cuaHduZCkpCisJ ICAgIHhfY2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyIChmKTsKKwogCSAgY2hlY2tfdmlz aWJpbGl0eSA9IDE7CiAJICBicmVhazsKCkBAIC02MDI2LDExICs2MDk1LDE2IEBAIHN0cnVj dCB4aW1faW5zdF90CiAgIG1vZGlmaWVkX2xlZnQgPSBmLT5sZWZ0X3BvczsKICAgbW9kaWZp ZWRfdG9wID0gZi0+dG9wX3BvczsKCi0gIG15X3NldF93aW5kb3dfcG9zIChGUkFNRV9XMzJf V0lORE9XIChmKSwKLQkJICAgICBOVUxMLAotCQkgICAgIG1vZGlmaWVkX2xlZnQsIG1vZGlm aWVkX3RvcCwKLQkJICAgICAwLCAwLAotCQkgICAgIFNXUF9OT1pPUkRFUiB8IFNXUF9OT1NJ WkUgfCBTV1BfTk9BQ1RJVkFURSk7CisgIGlmICghRlJBTUVfUEFSRU5UX0ZSQU1FIChmKSkK KyAgICBteV9zZXRfd2luZG93X3BvcyAoRlJBTUVfVzMyX1dJTkRPVyAoZiksIE5VTEwsCisJ CSAgICAgICBtb2RpZmllZF9sZWZ0LCBtb2RpZmllZF90b3AsCisJCSAgICAgICAwLCAwLAor CQkgICAgICAgU1dQX05PWk9SREVSIHwgU1dQX05PU0laRSB8IFNXUF9OT0FDVElWQVRFKTsK KyAgZWxzZQorICAgIG15X3NldF93aW5kb3dfcG9zIChGUkFNRV9XMzJfV0lORE9XIChmKSwg SFdORF9UT1AsCisJCSAgICAgICBtb2RpZmllZF9sZWZ0LCBtb2RpZmllZF90b3AsCisJCSAg ICAgICAwLCAwLAorCQkgICAgICAgU1dQX05PWk9SREVSIHwgU1dQX05PU0laRSB8IFNXUF9O T0FDVElWQVRFKTsKICAgdW5ibG9ja19pbnB1dCAoKTsKIH0KCkBAIC02MjM0LDExICs2MzA4 LDE4IEBAIHN0cnVjdCB4aW1faW5zdF90CiAJCUZjb25zIChtYWtlX251bWJlciAocmVjdC5y aWdodCAtIHJlY3QubGVmdCksCiAJCSAgICAgICBtYWtlX251bWJlciAocmVjdC5ib3R0b20g LSByZWN0LnRvcCkpKSk7CgotICAgICAgbXlfc2V0X3dpbmRvd19wb3MgKEZSQU1FX1czMl9X SU5ET1cgKGYpLCBOVUxMLAotCQkJIDAsIDAsCi0JCQkgcmVjdC5yaWdodCAtIHJlY3QubGVm dCwKLQkJCSByZWN0LmJvdHRvbSAtIHJlY3QudG9wLAotCQkJIFNXUF9OT1pPUkRFUiB8IFNX UF9OT01PVkUgfCBTV1BfTk9BQ1RJVkFURSk7CisgICAgICBpZiAoIUZSQU1FX1BBUkVOVF9G UkFNRSAoZikpCisJbXlfc2V0X3dpbmRvd19wb3MgKEZSQU1FX1czMl9XSU5ET1cgKGYpLCBO VUxMLAorCQkJICAgMCwgMCwKKwkJCSAgIHJlY3QucmlnaHQgLSByZWN0LmxlZnQsCisJCQkg ICByZWN0LmJvdHRvbSAtIHJlY3QudG9wLAorCQkJICAgU1dQX05PWk9SREVSIHwgU1dQX05P TU9WRSB8IFNXUF9OT0FDVElWQVRFKTsKKyAgICAgIGVsc2UKKwlteV9zZXRfd2luZG93X3Bv cyAoRlJBTUVfVzMyX1dJTkRPVyAoZiksIEhXTkRfVE9QLAorCQkJICAgMCwgMCwKKwkJCSAg IHJlY3QucmlnaHQgLSByZWN0LmxlZnQsCisJCQkgICByZWN0LmJvdHRvbSAtIHJlY3QudG9w LAorCQkJICAgU1dQX05PTU9WRSB8IFNXUF9OT0FDVElWQVRFKTsKCiAgICAgICBjaGFuZ2Vf ZnJhbWVfc2l6ZSAoZiwKIAkJCSAoKHBpeGVsd2lkdGggPT0gMCkKQEAgLTY0NTMsNyArNjUz NCwxMSBAQCBzdHJ1Y3QgeGltX2luc3RfdAogCSBzZXQgZm9yIG1pbmltaXplZCB3aW5kb3dz IHRoYXQgYXJlIHN0aWxsIHZpc2libGUsIHNvIHVzZSB0aGF0IHRvCiAJIGRldGVybWluZSB0 aGUgYXBwcm9wcmlhdGUgZmxhZyB0byBwYXNzIFNob3dXaW5kb3cuICAqLwogICAgICAgbXlf c2hvd193aW5kb3cgKGYsIEZSQU1FX1czMl9XSU5ET1cgKGYpLAotICAgICAgICAgICAgICAg ICAgICAgIEZSQU1FX0lDT05JRklFRF9QIChmKSA/IFNXX1JFU1RPUkUgOiBTV19TSE9XTk9S TUFMKTsKKyAgICAgICAgICAgICAgICAgICAgICBGUkFNRV9JQ09OSUZJRURfUCAoZikKKwkJ ICAgICAgPyBTV19SRVNUT1JFCisJCSAgICAgIDogRlJBTUVfTk9fRk9DVVNfT05fTUFQIChm KQorCQkgICAgICA/IFNXX1NIT1dOT0FDVElWQVRFCisJCSAgICAgIDogU1dfU0hPV05PUk1B TCk7CiAgICAgfQoKICAgLyogU3luY2hyb25pemUgdG8gZW5zdXJlIEVtYWNzIGtub3dzIHRo ZSBmcmFtZSBpcyB2aXNpYmxlCmRpZmYgLS1naXQgYS9zcmMvdzMydGVybS5oIGIvc3JjL3cz MnRlcm0uaAppbmRleCA5OTBkMzc5Li5lYWRhN2NjIDEwMDY0NAotLS0gYS9zcmMvdzMydGVy bS5oCisrKyBiL3NyYy93MzJ0ZXJtLmgKQEAgLTcwNiw3ICs3MDYsNyBAQCBzdHJ1Y3Qgc2Ny b2xsX2JhciB7CgogZXh0ZXJuIHZvaWQgdzMyX3N5c19yaW5nX2JlbGwgKHN0cnVjdCBmcmFt ZSAqZik7CiBleHRlcm4gdm9pZCB4X2RlbGV0ZV9kaXNwbGF5IChzdHJ1Y3QgdzMyX2Rpc3Bs YXlfaW5mbyAqZHB5aW5mbyk7Ci0KK2V4dGVybiB2b2lkIHhfY2xlYXJfdW5kZXJfaW50ZXJu YWxfYm9yZGVyIChzdHJ1Y3QgZnJhbWUgKmYpOwogZXh0ZXJuIHZvaWQgeF9xdWVyeV9jb2xv ciAoc3RydWN0IGZyYW1lICosIFhDb2xvciAqKTsKCiAjZGVmaW5lIEZJTEVfTk9USUZJQ0FU SU9OU19TSVpFIDE2Mzg0CmRpZmYgLS1naXQgYS9zcmMvd2luZG93LmMgYi9zcmMvd2luZG93 LmMKaW5kZXggOTU2OTA0NC4uYTdiOWFmYyAxMDA2NDQKLS0tIGEvc3JjL3dpbmRvdy5jCisr KyBiL3NyYy93aW5kb3cuYwpAQCAtNDkyLDcgKzQ5Miw3IEBAIHN0cnVjdCB3aW5kb3cgKgog ICAgICAgIHJlY29yZF9idWZmZXIgYmVmb3JlIHJldHVybmluZyBoZXJlLiAgKi8KICAgICBn b3RvIHJlY29yZF9hbmRfcmV0dXJuOwoKLSAgaWYgKE5JTFAgKG5vcmVjb3JkKSkKKyAgaWYg KE5JTFAgKG5vcmVjb3JkKSB8fCBFUSAobm9yZWNvcmQsIFFtYXJrX2Zvcl9yZWRpc3BsYXkp KQogICAgIHsgLyogTWFyayB0aGUgd2luZG93IGZvciByZWRpc3BsYXkgc2luY2UgdGhlIHNl bGVjdGVkLXdpbmRvdyBoYXMKIAkgYSBkaWZmZXJlbnQgbW9kZS1saW5lLiAgKi8KICAgICAg IHdzZXRfcmVkaXNwbGF5IChYV0lORE9XIChzZWxlY3RlZF93aW5kb3cpKTsKQEAgLTU3MSw3 ICs1NzEsOCBAQCBzdHJ1Y3Qgd2luZG93ICoKCiBPcHRpb25hbCBzZWNvbmQgYXJnIE5PUkVD T1JEIG5vbi1uaWwgbWVhbnMgZG8gbm90IHB1dCB0aGlzIGJ1ZmZlciBhdCB0aGUKIGZyb250 IG9mIHRoZSBidWZmZXIgbGlzdCBhbmQgZG8gbm90IG1ha2UgdGhpcyB3aW5kb3cgdGhlIG1v c3QgcmVjZW50bHkKLXNlbGVjdGVkIG9uZS4KK3NlbGVjdGVkIG9uZS4gIEFsc28sIGRvIG5v dCBtYXJrIFdJTkRPVyBmb3IgcmVkaXNwbGF5IHVubGVzcyBOT1JFQ09SRAorZXF1YWxzIHRo ZSBzcGVjaWFsIHN5bWJvbCBgbWFyay1mb3ItcmVkaXNwbGF5Jy4KCiBSdW4gYGJ1ZmZlci1s aXN0LXVwZGF0ZS1ob29rJyB1bmxlc3MgTk9SRUNPUkQgaXMgbm9uLW5pbC4gIE5vdGUgdGhh dAogYXBwbGljYXRpb25zIGFuZCBpbnRlcm5hbCByb3V0aW5lcyBvZnRlbiBzZWxlY3QgYSB3 aW5kb3cgdGVtcG9yYXJpbHkgZm9yCkBAIC0xODk3LDYgKzE4OTgsMTI4IEBAIG9mIHRoZSAo Zmlyc3QpIHRleHQgbGluZSwgWVBPUyBpcyBuZWdhdGl2ZS4KICAgcmV0dXJuIGxpc3Q0aSAo cm93LT5oZWlnaHQgKyBtaW4gKDAsIHJvdy0+eSkgLSBjcm9wLCBpLCByb3ctPnksIGNyb3Ap OwogfQoKK0RFRlVOICgid2luZG93LWxpbmVzLXBpeGVsLWRpbWVuc2lvbnMiLCBGd2luZG93 X2xpbmVzX3BpeGVsX2RpbWVuc2lvbnMsIFN3aW5kb3dfbGluZXNfcGl4ZWxfZGltZW5zaW9u cywgMCwgNiwgMCwKKyAgICAgICBkb2M6IC8qIFJldHVybiBwaXhlbCBkaW1lbnNpb25zIG9m IFdJTkRPVydzIGxpbmVzLgorVGhlIHJldHVybiB2YWx1ZSBpcyBhIGxpc3Qgb2YgdGhlIHgt IGFuZCB5LWNvb3JkaW5hdGVzIG9mIHRoZSBsb3dlcgorcmlnaHQgY29ybmVyIG9mIHRoZSBs YXN0IGNoYXJhY3RlciBvZiBlYWNoIGxpbmUuICBSZXR1cm4gbmlsIGlmIHRoZQorY3VycmVu dCBnbHlwaCBtYXRyaXggb2YgV0lORE9XIGlzIG5vdCB1cC10by1kYXRlLgorCitPcHRpb25h bCBhcmd1bWVudCBXSU5ET1cgc3BlY2lmaWVzIHRoZSB3aW5kb3cgd2hvc2UgbGluZXMnIGRp bWVuc2lvbnMKK3NoYWxsIGJlIHJldHVybmVkLiAgTmlsIG9yIG9taXR0ZWQgbWVhbnMgdG8g cmV0dXJuIHRoZSBkaW1lbnNpb25zIGZvcgordGhlIHNlbGVjdGVkIHdpbmRvdy4KKworRklS U1QsIGlmIG5vbi1uaWwsIHNwZWNpZmllcyB0aGUgZmlyc3QgbGluZSB3aG9zZSBkaW1lbnNp b25zIHNoYWxsIGJlCityZXR1cm5lZC4gIElmIEZJUlNUIGlzIG5pbCBhbmQgQk9EWSBpcyBu b24tbmlsLCBzdGFydCB3aXRoIHRoZSBmaXJzdAordGV4dCBsaW5lIG9mIFdJTkRPVy4gIE90 aGVyd2lzZSwgc3RhcnQgd2l0aCB0aGUgZmlyc3QgbGluZSBvZiBXSU5ET1cuCisKK0xBU1Qs IGlmIG5vbi1uaWwsIHNwZWNpZmllcyB0aGUgbGFzdCBsaW5lIHdob3NlIGRpbWVuc2lvbnMg c2hhbGwgYmUKK3JldHVybmVkLiAgSWYgTEFTVCBpcyBuaWwgYW5kIEJPRFkgaXMgbm9uLW5p bCwgdGhlIGxhc3QgbGluZSBpcyB0aGUgbGFzdAorbGluZSBvZiB0aGUgYm9keSAodGV4dCBh cmVhKSBvZiBXSU5ET1cuICBPdGhlcndpc2UsIGxhc3QgaXMgdGhlIGxhc3QKK2xpbmUgb2Yg V0lORE9XLgorCitJTlZFUlNFLCBpZiBuaWwsIG1lYW5zIHRoYXQgdGhlIHktcGl4ZWwgdmFs dWUgcmV0dXJuZWQgZm9yIGEgc3BlY2lmaWMKK2xpbmUgc3BlY2lmaWVzIHRoZSBkaXN0YW5j ZSBpbiBwaXhlbHMgZnJvbSB0aGUgbGVmdCBlZGdlIChib2R5IGVkZ2UgaWYKK0JPRFkgaXMg bm9uLW5pbCkgb2YgV0lORE9XIHRvIHRoZSByaWdodCBlZGdlIG9mIHRoZSBsYXN0IGdseXBo IG9mIHRoYXQKK2xpbmUuICBJTlZFUlNFIG5vbi1uaWwgbWVhbnMgdGhhdCB0aGUgeS1waXhl bCB2YWx1ZSByZXR1cm5lZCBmb3IgYQorc3BlY2lmaWMgbGluZSBzcGVjaWZpZXMgdGhlIGRp c3RhbmNlIGluIHBpeGVscyBmcm9tIHRoZSByaWdodCBlZGdlIG9mCit0aGUgbGFzdCBnbHlw aCBvZiB0aGF0IGxpbmUgdG8gdGhlIHJpZ2h0IGVkZ2UgKGJvZHkgZWRnZSBpZiBCT0RZIGlz Citub24tbmlsKSBvZiBXSU5ET1cuCisKK0xFRlQgbm9uLW5pbCBtZWFucyB0byByZXR1cm4g dGhlIHgtIGFuZCB5LWNvb3JkaW5hdGVzIG9mIHRoZSBsb3dlciBsZWZ0Citjb3JuZXIgb2Yg dGhlIGxlZnRtb3N0IGNoYXJhY3RlciBvbiBlYWNoIGxpbmUuICBUaGlzIGlzIHRoZSB2YWx1 ZSB0aGF0CitzaG91bGQgYmUgdXNlZCBmb3IgYnVmZmVycyB0aGF0IG1vc3RseSBkaXNwbGF5 IHRleHQgZnJvbSByaWdodCB0byBsZWZ0LgorCitJZiBMRUZUIGlzIG5vbi1uaWwgYW5kIElO VkVSU0UgaXMgbmlsLCB0aGlzIG1lYW5zIHRoYXQgdGhlIHktcGl4ZWwgdmFsdWUKK3JldHVy bmVkIGZvciBhIHNwZWNpZmljIGxpbmUgc3BlY2lmaWVzIHRoZSBkaXN0YW5jZSBpbiBwaXhl bHMgZnJvbSB0aGUKK2xlZnQgZWRnZSBvZiB0aGUgbGFzdCAobGVmdG1vc3QpIGdseXBoIG9m IHRoYXQgbGluZSB0byB0aGUgcmlnaHQgZWRnZQorKGJvZHkgZWRnZSBpZiBCT0RZIGlzIG5v bi1uaWwpIG9mIFdJTkRPVy4gIElmIExFRlQgYW5kIElOVkVSU0UgYXJlIGJvdGgKK25vbi1u aWwsIHRoZSB5LXBpeGVsIHZhbHVlIHJldHVybmVkIGZvciBhIHNwZWNpZmljIGxpbmUgc3Bl Y2lmaWVzIHRoZQorZGlzdGFuY2UgaW4gcGl4ZWxzIGZyb20gdGhlIGxlZnQgZWRnZSAoYm9k eSBlZGdlIGlmIEJPRFkgaXMgbm9uLW5pbCkgb2YKK1dJTkRPVyB0byB0aGUgbGVmdCBlZGdl IG9mIHRoZSBsYXN0IChsZWZ0bW9zdCkgZ2x5cGggb2YgdGhhdCBsaW5lLgorCitOb3JtYWxs eSwgdGhlIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZSB3aGlsZSBF bWFjcyBpcworYnVzeSwgZm9yIGV4YW1wbGUsIHdoZW4gcHJvY2Vzc2luZyBhIGNvbW1hbmQu ICBJdCBzaG91bGQgYmUgcmV0cmlldmFibGUKK3Rob3VnaCB3aGVuIHJ1biBmcm9tIGFuIGlk bGUgdGltZXIgd2l0aCBhIGRlbGF5IG9mIHplcm8gc2Vjb25kcy4gICovKQorICAoTGlzcF9P YmplY3Qgd2luZG93LCBMaXNwX09iamVjdCBmaXJzdCwgTGlzcF9PYmplY3QgbGFzdCwgTGlz cF9PYmplY3QgYm9keSwgTGlzcF9PYmplY3QgaW52ZXJzZSwgTGlzcF9PYmplY3QgbGVmdCkK K3sKKyAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV9saXZlX3dpbmRvdyAod2luZG93KTsK KyAgc3RydWN0IGJ1ZmZlciAqYjsKKyAgc3RydWN0IGdseXBoX3JvdyAqcm93LCAqZW5kX3Jv dzsKKyAgaW50IG1heF95ID0gTklMUCAoYm9keSkgPyBXSU5ET1dfUElYRUxfSEVJR0hUICh3 KSA6IHdpbmRvd190ZXh0X2JvdHRvbV95ICh3KTsKKyAgTGlzcF9PYmplY3Qgcm93cyA9IFFu aWw7CisgIGludCB3aW5kb3dfd2lkdGggPSBOSUxQIChib2R5KSA/IHctPnBpeGVsX3dpZHRo IDogd2luZG93X2JvZHlfd2lkdGggKHcsIHRydWUpOworICBpbnQgaGVhZGVyX2xpbmVfaGVp Z2h0ID0gV0lORE9XX0hFQURFUl9MSU5FX0hFSUdIVCAodyk7CisgIGludCBzdWJ0cmFjdCA9 IE5JTFAgKGJvZHkpID8gMCA6IGhlYWRlcl9saW5lX2hlaWdodDsKKyAgYm9vbCBpbnZlcnQg PSAhTklMUCAoaW52ZXJzZSk7CisgIGJvb2wgbGVmdF9mbGFnID0gIU5JTFAgKGxlZnQpOwor CisgIGlmIChub25pbnRlcmFjdGl2ZSB8fCB3LT5wc2V1ZG9fd2luZG93X3ApCisgICAgcmV0 dXJuIFFuaWw7CisKKyAgQ0hFQ0tfQlVGRkVSICh3LT5jb250ZW50cyk7CisgIGIgPSBYQlVG RkVSICh3LT5jb250ZW50cyk7CisKKyAgLyogRmFpbCBpZiBjdXJyZW50IG1hdHJpeCBpcyBu b3QgdXAtdG8tZGF0ZS4gICovCisgIGlmICghdy0+d2luZG93X2VuZF92YWxpZAorICAgICAg fHwgd2luZG93c19vcl9idWZmZXJzX2NoYW5nZWQKKyAgICAgIHx8IGItPmNsaXBfY2hhbmdl ZAorICAgICAgfHwgYi0+cHJldmVudF9yZWRpc3BsYXlfb3B0aW1pemF0aW9uc19wCisgICAg ICB8fCB3aW5kb3dfb3V0ZGF0ZWQgKHcpKQorICAgIHJldHVybiBRbmlsOworCisgIGlmIChO SUxQIChmaXJzdCkpCisgICAgcm93ID0gTUFUUklYX1JPVyAody0+Y3VycmVudF9tYXRyaXgs IDApOworICBlbHNlIGlmIChOVU1CRVJQIChmaXJzdCkpCisgICAgeworICAgICAgQ0hFQ0tf UkFOR0VEX0lOVEVHRVIgKGZpcnN0LCAwLCB3LT5jdXJyZW50X21hdHJpeC0+bnJvd3MpOwor ICAgICAgcm93ID0gTUFUUklYX1JPVyAody0+Y3VycmVudF9tYXRyaXgsIFhJTlQgKGZpcnN0 KSk7CisgICAgfQorICBlbHNlIGlmICghTklMUCAoYm9keSkpCisgICAgcm93ID0gTUFUUklY X0ZJUlNUX1RFWFRfUk9XICh3LT5jdXJyZW50X21hdHJpeCk7CisgIGVsc2UKKyAgICBlcnJv ciAoIkludmFsaWQgc3BlY2lmaWNhdGlvbiBvZiBmaXJzdCBsaW5lIik7CisKKyAgaWYgKE5J TFAgKGxhc3QpKQorICAgIGVuZF9yb3cgPSBNQVRSSVhfUk9XICh3LT5jdXJyZW50X21hdHJp eCwgdy0+Y3VycmVudF9tYXRyaXgtPm5yb3dzKTsKKyAgZWxzZSBpZiAoTlVNQkVSUCAoZmly c3QpKQorICAgIHsKKyAgICAgIENIRUNLX1JBTkdFRF9JTlRFR0VSIChmaXJzdCwgMCwgdy0+ Y3VycmVudF9tYXRyaXgtPm5yb3dzKTsKKyAgICAgIGVuZF9yb3cgPSBNQVRSSVhfUk9XICh3 LT5jdXJyZW50X21hdHJpeCwgWElOVCAobGFzdCkpOworICAgIH0KKyAgZWxzZSBpZiAoIU5J TFAgKGJvZHkpKQorICAgIGVuZF9yb3cgPSBNQVRSSVhfQk9UVE9NX1RFWFRfUk9XICh3LT5j dXJyZW50X21hdHJpeCwgdyk7CisgIGVsc2UKKyAgICBlcnJvciAoIkludmFsaWQgc3BlY2lm aWNhdGlvbiBvZiBsYXN0IGxpbmUiKTsKKworICB3aGlsZSAocm93IDw9IGVuZF9yb3cgJiYg cm93LT5lbmFibGVkX3AKKwkgJiYgcm93LT55ICsgcm93LT5oZWlnaHQgPCBtYXhfeSkKKyAg ICB7CisKKyAgICAgIGlmIChsZWZ0X2ZsYWcpCisJeworCSAgc3RydWN0IGdseXBoICpnbHlw aCA9IHJvdy0+Z2x5cGhzW1RFWFRfQVJFQV07CisKKwkgIHJvd3MgPSBGY29ucyAoRmNvbnMg KG1ha2VfbnVtYmVyCisJCQkgICAgICAgKGludmVydAorCQkJCT8gZ2x5cGgtPnBpeGVsX3dp ZHRoCisJCQkJOiB3aW5kb3dfd2lkdGggLSBnbHlwaC0+cGl4ZWxfd2lkdGgpLAorCQkJICAg ICAgIG1ha2VfbnVtYmVyIChyb3ctPnkgKyByb3ctPmhlaWdodCAtIHN1YnRyYWN0KSksCisJ CQlyb3dzKTsKKwl9CisgICAgICBlbHNlCisJcm93cyA9IEZjb25zIChGY29ucyAobWFrZV9u dW1iZXIKKwkJCSAgICAgKGludmVydAorCQkJICAgICAgPyB3aW5kb3dfd2lkdGggLSByb3ct PnBpeGVsX3dpZHRoCisJCQkgICAgICA6IHJvdy0+cGl4ZWxfd2lkdGgpLCAvKiBtYXliZSBh ZGQgbGVmdAorCQkJCQkJICAgICAgbWFyZ2luIGhlcmUgKi8KKwkJCSAgICAgbWFrZV9udW1i ZXIgKHJvdy0+eSArIHJvdy0+aGVpZ2h0IC0gc3VidHJhY3QpKSwKKwkJICAgICAgcm93cyk7 CisgICAgICByb3crKzsKKyAgICB9CisKKyAgcmV0dXJuIEZucmV2ZXJzZSAocm93cyk7Cit9 CisKIERFRlVOICgid2luZG93LWRlZGljYXRlZC1wIiwgRndpbmRvd19kZWRpY2F0ZWRfcCwg U3dpbmRvd19kZWRpY2F0ZWRfcCwKICAgICAgICAwLCAxLCAwLAogICAgICAgIGRvYzogLyog UmV0dXJuIG5vbi1uaWwgd2hlbiBXSU5ET1cgaXMgZGVkaWNhdGVkIHRvIGl0cyBidWZmZXIu CkBAIC03MzQxLDYgKzc0NjQsNyBAQCBWYWx1ZSBpcyBhIGxpc3Qgb2YgdGhlIGZvcm0gKFdJ RFRIIENPTFVNTlMgVkVSVElDQUwtVFlQRSBIRUlHSFQgTElORVMKICAgREVGU1lNIChRY2xv bmVfb2YsICJjbG9uZS1vZiIpOwogICBERUZTWU0gKFFmbG9vciwgImZsb29yIik7CiAgIERF RlNZTSAoUWNlaWxpbmcsICJjZWlsaW5nIik7CisgIERFRlNZTSAoUW1hcmtfZm9yX3JlZGlz cGxheSwgIm1hcmstZm9yLXJlZGlzcGxheSIpOwoKICAgc3RhdGljcHJvICgmVndpbmRvd19s aXN0KTsKCkBAIC03NTg0LDYgKzc3MDgsNyBAQCB0aGlzIHZhbHVlIGZvciBwYXJhbWV0ZXJz IHdpdGhvdXQgcmVhZCBzeW50YXggKGxpa2Ugd2luZG93cyBvciBmcmFtZXMpLgogICBkZWZz dWJyICgmU3NldF93aW5kb3dfcG9pbnQpOwogICBkZWZzdWJyICgmU3NldF93aW5kb3dfc3Rh cnQpOwogICBkZWZzdWJyICgmU3dpbmRvd19kZWRpY2F0ZWRfcCk7CisgIGRlZnN1YnIgKCZT d2luZG93X2xpbmVzX3BpeGVsX2RpbWVuc2lvbnMpOwogICBkZWZzdWJyICgmU3NldF93aW5k b3dfZGVkaWNhdGVkX3ApOwogICBkZWZzdWJyICgmU3dpbmRvd19kaXNwbGF5X3RhYmxlKTsK ICAgZGVmc3ViciAoJlNzZXRfd2luZG93X2Rpc3BsYXlfdGFibGUpOwpkaWZmIC0tZ2l0IGEv c3JjL3hkaXNwLmMgYi9zcmMveGRpc3AuYwppbmRleCBlNTk5MzRkLi40YTc1NGU0IDEwMDY0 NAotLS0gYS9zcmMveGRpc3AuYworKysgYi9zcmMveGRpc3AuYwpAQCAtMTEzNjUsNiArMTEz NjUsMTEgQEAgc3RhdGljIHZvaWQgQVRUUklCVVRFX0ZPUk1BVF9QUklOVEYgKDEsIDApCiAJ CXJlZHJhd19mcmFtZSAoZik7CiAJICAgICAgZWxzZQogCQljbGVhcl9jdXJyZW50X21hdHJp Y2VzIChmKTsKKworI2lmIGRlZmluZWQgKEhBVkVfV0lORE9XX1NZU1RFTSkgJiYgIWRlZmlu ZWQgKEhBVkVfTlMpCisJICAgICAgeF9jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIgKGYp OworI2VuZGlmIC8qIEhBVkVfV0lORE9XX1NZU1RFTSAmJiAhSEFWRV9OUyAqLworCiAJICAg ICAgZnNldF9yZWRpc3BsYXkgKGYpOwogCSAgICAgIGYtPmdhcmJhZ2VkID0gZmFsc2U7CiAJ ICAgICAgZi0+cmVzaXplZF9wID0gZmFsc2U7CkBAIC0xMTQyNyw3ICsxMTQzMiwxNCBAQCBz dGF0aWMgdm9pZCBBVFRSSUJVVEVfRk9STUFUX1BSSU5URiAoMSwgMCkKIAkgICAgIGJlZW4g Y2FsbGVkLCBzbyB0aGF0IG1vZGUgbGluZXMgYWJvdmUgdGhlIGVjaG8gYXJlYSBhcmUKIAkg ICAgIGdhcmJhZ2VkLiAgVGhpcyBsb29rcyBvZGQsIHNvIHdlIHByZXZlbnQgaXQgaGVyZS4g ICovCiAJICBpZiAoIWRpc3BsYXlfY29tcGxldGVkKQotCSAgICBuID0gcmVkaXNwbGF5X21v ZGVfbGluZXMgKEZSQU1FX1JPT1RfV0lORE9XIChmKSwgZmFsc2UpOworCSAgICB7CisJICAg ICAgbiA9IHJlZGlzcGxheV9tb2RlX2xpbmVzIChGUkFNRV9ST09UX1dJTkRPVyAoZiksIGZh bHNlKTsKKworI2lmIGRlZmluZWQgKEhBVkVfV0lORE9XX1NZU1RFTSkgJiYgIWRlZmluZWQg KEhBVkVfTlMpCisJICAgICAgeF9jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIgKGYpOwor I2VuZGlmIC8qIEhBVkVfV0lORE9XX1NZU1RFTSAmJiAhSEFWRV9OUyAqLworCisJICAgIH0K CiAJICBpZiAod2luZG93X2hlaWdodF9jaGFuZ2VkX3AKIAkgICAgICAvKiBEb24ndCBkbyB0 aGlzIGlmIEVtYWNzIGlzIHNodXR0aW5nIGRvd24uICBSZWRpc3BsYXkKQEAgLTExNzUzLDYg KzExNzY1LDcgQEAgc3RhdGljIHZvaWQgQVRUUklCVVRFX0ZPUk1BVF9QUklOVEYgKDEsIDAp CiAJICAgICAgJiYgRlJBTUVfS0JPQVJEICh0ZikgPT0gRlJBTUVfS0JPQVJEIChmKQogCSAg ICAgICYmICFGUkFNRV9NSU5JQlVGX09OTFlfUCAodGYpCiAJICAgICAgJiYgIUVRIChvdGhl cl9mcmFtZSwgdGlwX2ZyYW1lKQorCSAgICAgICYmICFGUkFNRV9QQVJFTlRfRlJBTUUgKHRm KQogCSAgICAgICYmIChGUkFNRV9WSVNJQkxFX1AgKHRmKSB8fCBGUkFNRV9JQ09OSUZJRURf UCAodGYpKSkKIAkgICAgYnJlYWs7CiAJfQpAQCAtMTE4NjksNiArMTE4ODIsNyBAQCBzdGF0 aWMgdm9pZCBBVFRSSUJVVEVfRk9STUFUX1BSSU5URiAoMSwgMCkKIAkgICAgY29udGludWU7 CgogCSAgaWYgKCFFUSAoZnJhbWUsIHRvb2x0aXBfZnJhbWUpCisJICAgICAgJiYgIUZSQU1F X1BBUkVOVF9GUkFNRSAoZikKIAkgICAgICAmJiAoRlJBTUVfSUNPTklGSUVEX1AgKGYpCiAJ CSAgfHwgRlJBTUVfVklTSUJMRV9QIChmKSA9PSAxCiAJCSAgLyogRXhjbHVkZSBUVFkgZnJh bWVzIHRoYXQgYXJlIG9ic2N1cmVkIGJlY2F1c2UgdGhleQpAQCAtMTE5MTUsNiArMTE5Mjks MTAgQEAgc3RhdGljIHZvaWQgQVRUUklCVVRFX0ZPUk1BVF9QUklOVEYgKDEsIDApCiAJICAg IGNvbnRpbnVlOwoKIAkgIHJ1bl93aW5kb3dfc2l6ZV9jaGFuZ2VfZnVuY3Rpb25zIChmcmFt ZSk7CisKKwkgIGlmIChGUkFNRV9QQVJFTlRfRlJBTUUgKGYpKQorCSAgICBjb250aW51ZTsK KwogCSAgbWVudV9iYXJfaG9va3NfcnVuID0gdXBkYXRlX21lbnVfYmFyIChmLCBmYWxzZSwg bWVudV9iYXJfaG9va3NfcnVuKTsKICNpZmRlZiBIQVZFX1dJTkRPV19TWVNURU0KIAkgIHVw ZGF0ZV90b29sX2JhciAoZiwgZmFsc2UpOwpAQCAtMTQxMTksNiArMTQxMzcsMTAgQEAgc3Rh dGljIHZvaWQgZGVidWdfbWV0aG9kX2FkZCAoc3RydWN0IHdpbmRvdyAqLCBjaGFyIGNvbnN0 ICosIC4uLikKICAgICAgICAgICAgICAgICAgIGlmIChGUkFNRV9HQVJCQUdFRF9QIChmKSAm JiBGUkFNRV9XSU5ET1dfUCAoZikpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0cnk7 CgorI2lmIGRlZmluZWQgKEhBVkVfV0lORE9XX1NZU1RFTSkgJiYgIWRlZmluZWQgKEhBVkVf TlMpCisJICAgICAgeF9jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIgKGYpOworI2VuZGlm IC8qIEhBVkVfV0lORE9XX1NZU1RFTSAmJiAhSEFWRV9OUyAqLworCiAJCSAgLyogUHJldmVu dCB2YXJpb3VzIGtpbmRzIG9mIHNpZ25hbHMgZHVyaW5nIGRpc3BsYXkKIAkJICAgICB1cGRh dGUuICBzdGRpbyBpcyBub3Qgcm9idXN0IGFib3V0IGhhbmRsaW5nCiAJCSAgICAgc2lnbmFs cywgd2hpY2ggY2FuIGNhdXNlIGFuIGFwcGFyZW50IEkvTyBlcnJvci4gICovCmRpZmYgLS1n aXQgYS9zcmMveGZhY2VzLmMgYi9zcmMveGZhY2VzLmMKaW5kZXggYjVkYmI1My4uZmZlOWNl YyAxMDA2NDQKLS0tIGEvc3JjL3hmYWNlcy5jCisrKyBiL3NyYy94ZmFjZXMuYwpAQCAtNDQ3 NCw2ICs0NDc0LDEwIEBAIG9yIGxpc3RzIG9mIHRoZSBmb3JtIChSRUQgR1JFRU4gQkxVRSku CiAgICAgY2FzZSBDVVJTT1JfRkFDRV9JRDoJCW5hbWUgPSBRY3Vyc29yOwkJCWJyZWFrOwog ICAgIGNhc2UgTU9VU0VfRkFDRV9JRDoJCQluYW1lID0gUW1vdXNlOwkJCWJyZWFrOwogICAg IGNhc2UgTUVOVV9GQUNFX0lEOgkJCW5hbWUgPSBRbWVudTsJCQlicmVhazsKKyAgICBjYXNl IFdJTkRPV19ESVZJREVSX0ZBQ0VfSUQ6CW5hbWUgPSBRd2luZG93X2RpdmlkZXI7CQlicmVh azsKKyAgICBjYXNlIFdJTkRPV19ESVZJREVSX0ZJUlNUX1BJWEVMX0ZBQ0VfSUQ6CW5hbWUg PSBRd2luZG93X2RpdmlkZXJfZmlyc3RfcGl4ZWw7CWJyZWFrOworICAgIGNhc2UgV0lORE9X X0RJVklERVJfTEFTVF9QSVhFTF9GQUNFX0lEOgluYW1lID0gUXdpbmRvd19kaXZpZGVyX2xh c3RfcGl4ZWw7CWJyZWFrOworICAgIGNhc2UgSU5URVJOQUxfQk9SREVSX0ZBQ0VfSUQ6CW5h bWUgPSBRaW50ZXJuYWxfYm9yZGVyOyAJYnJlYWs7CgogICAgIGRlZmF1bHQ6CiAgICAgICBl bWFjc19hYm9ydCAoKTsgLyogdGhlIGNhbGxlciBpcyBzdXBwb3NlZCB0byBwYXNzIHVzIGEg YmFzaWMgZmFjZSBpZCAqLwpAQCAtNTE2OCw2ICs1MTcyLDcgQEAgQUxJU1QgaXMgYW4gYWxp c3Qgb2YgKFJFR0lTVFJZIEFMVEVSTkFUSVZFMSBBTFRFUk5BVElWRTIgLi4uKSBlbnRyaWVz LgogCQkJICBXSU5ET1dfRElWSURFUl9GSVJTVF9QSVhFTF9GQUNFX0lEKTsKICAgICAgIHJl YWxpemVfbmFtZWRfZmFjZSAoZiwgUXdpbmRvd19kaXZpZGVyX2xhc3RfcGl4ZWwsCiAJCQkg IFdJTkRPV19ESVZJREVSX0xBU1RfUElYRUxfRkFDRV9JRCk7CisgICAgICByZWFsaXplX25h bWVkX2ZhY2UgKGYsIFFpbnRlcm5hbF9ib3JkZXIsIElOVEVSTkFMX0JPUkRFUl9GQUNFX0lE KTsKCiAgICAgICAvKiBSZWZsZWN0IGNoYW5nZXMgaW4gdGhlIGBtZW51JyBmYWNlIGluIG1l bnUgYmFycy4gICovCiAgICAgICBpZiAoRlJBTUVfRkFDRV9DQUNIRSAoZiktPm1lbnVfZmFj ZV9jaGFuZ2VkX3ApCkBAIC02Mzg5LDExICs2Mzk0LDEyIEBAIEFMSVNUIGlzIGFuIGFsaXN0 IG9mIChSRUdJU1RSWSBBTFRFUk5BVElWRTEgQUxURVJOQVRJVkUyIC4uLikgZW50cmllcy4K ICAgREVGU1lNIChRbW91c2UsICJtb3VzZSIpOwogICBERUZTWU0gKFFtb2RlX2xpbmVfaW5h Y3RpdmUsICJtb2RlLWxpbmUtaW5hY3RpdmUiKTsKICAgREVGU1lNIChRdmVydGljYWxfYm9y ZGVyLCAidmVydGljYWwtYm9yZGVyIik7Ci0KLSAgLyogVFRZIGNvbG9yLXJlbGF0ZWQgZnVu Y3Rpb25zIChkZWZpbmVkIGluIHR0eS1jb2xvcnMuZWwpLiAgKi8KICAgREVGU1lNIChRd2lu ZG93X2RpdmlkZXIsICJ3aW5kb3ctZGl2aWRlciIpOwogICBERUZTWU0gKFF3aW5kb3dfZGl2 aWRlcl9maXJzdF9waXhlbCwgIndpbmRvdy1kaXZpZGVyLWZpcnN0LXBpeGVsIik7CiAgIERF RlNZTSAoUXdpbmRvd19kaXZpZGVyX2xhc3RfcGl4ZWwsICJ3aW5kb3ctZGl2aWRlci1sYXN0 LXBpeGVsIik7CisgIERFRlNZTSAoUWludGVybmFsX2JvcmRlciwgImludGVybmFsLWJvcmRl ciIpOworCisgIC8qIFRUWSBjb2xvci1yZWxhdGVkIGZ1bmN0aW9ucyAoZGVmaW5lZCBpbiB0 dHktY29sb3JzLmVsKS4gICovCiAgIERFRlNZTSAoUXR0eV9jb2xvcl9kZXNjLCAidHR5LWNv bG9yLWRlc2MiKTsKICAgREVGU1lNIChRdHR5X2NvbG9yX3N0YW5kYXJkX3ZhbHVlcywgInR0 eS1jb2xvci1zdGFuZGFyZC12YWx1ZXMiKTsKICAgREVGU1lNIChRdHR5X2NvbG9yX2J5X2lu ZGV4LCAidHR5LWNvbG9yLWJ5LWluZGV4Iik7CmRpZmYgLS1naXQgYS9zcmMveGZucy5jIGIv c3JjL3hmbnMuYwppbmRleCA5N2FhOTIzLi4yZmEzY2UyIDEwMDY0NAotLS0gYS9zcmMveGZu cy5jCisrKyBiL3NyYy94Zm5zLmMKQEAgLTkwLDYgKzkwLDcgQEAKICNpbmNsdWRlIDxYbS9G aWxlU0IuaD4KICNpbmNsdWRlIDxYbS9MaXN0Lmg+CiAjaW5jbHVkZSA8WG0vVGV4dEYuaD4K KyNpbmNsdWRlIDxYbS9Nd21VdGlsLmg+CiAjZW5kaWYKCiAjaWZkZWYgVVNFX0xVQ0lECkBA IC0xMTcsNiArMTE4LDM1IEBACiBzdGF0aWMgaW50IGRweWluZm9fcmVmY291bnQ7CiAjZW5k aWYKCisjaWZuZGVmIFVTRV9NT1RJRgorI2lmbmRlZiBVU0VfR1RLCisvKiogI2RlZmluZSBN V01fSElOVFNfRlVOQ1RJT05TICAgICAoMUwgPDwgMCkgKiovCisjZGVmaW5lIE1XTV9ISU5U U19ERUNPUkFUSU9OUyAgICgxTCA8PCAxKQorLyoqICNkZWZpbmUgTVdNX0hJTlRTX0lOUFVU X01PREUgICAgKDFMIDw8IDIpICoqLworLyoqICNkZWZpbmUgTVdNX0hJTlRTX1NUQVRVUyAg ICAgICAgKDFMIDw8IDMpICoqLworCisjZGVmaW5lIE1XTV9ERUNPUl9BTEwgICAgICAgICAg ICgxTCA8PCAwKQorLyoqICNkZWZpbmUgTVdNX0RFQ09SX0JPUkRFUiAgICAgICAgKDFMIDw8 IDEpICoqLworLyoqICNkZWZpbmUgTVdNX0RFQ09SX1JFU0laRUggICAgICAgKDFMIDw8IDIp ICoqLworLyoqICNkZWZpbmUgTVdNX0RFQ09SX1RJVExFICAgICAgICAgKDFMIDw8IDMpICoq LworLyoqICNkZWZpbmUgTVdNX0RFQ09SX01FTlUgICAgICAgICAgKDFMIDw8IDQpICoqLwor LyoqICNkZWZpbmUgTVdNX0RFQ09SX01JTklNSVpFICAgICAgKDFMIDw8IDUpICoqLworLyoq ICNkZWZpbmUgTVdNX0RFQ09SX01BWElNSVpFICAgICAgKDFMIDw8IDYpICoqLworCisvKiog I2RlZmluZSBfWEFfTU9USUZfV01fSElOVFMgIl9NT1RJRl9XTV9ISU5UUyIgKiovCisKK3R5 cGVkZWYgc3RydWN0IHsKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworICAgIHVuc2lnbmVk IGxvbmcgZnVuY3Rpb25zOworICAgIHVuc2lnbmVkIGxvbmcgZGVjb3JhdGlvbnM7CisgICAg bG9uZyBpbnB1dF9tb2RlOworICAgIHVuc2lnbmVkIGxvbmcgc3RhdHVzOworfSBQcm9wTW90 aWZXbUhpbnRzOworCisjZGVmaW5lIFBST1BfTU9USUZfV01fSElOVFNfRUxFTUVOVFMgNQor I2VuZGlmIC8qIE5PVCBVU0VfR1RLICovCisjZW5kaWYgLyogTk9UIFVTRV9NT1RJRiAqLwor CiBzdGF0aWMgc3RydWN0IHhfZGlzcGxheV9pbmZvICp4X2Rpc3BsYXlfaW5mb19mb3JfbmFt ZSAoTGlzcF9PYmplY3QpOwogc3RhdGljIHZvaWQgc2V0X3VwX3hfYmFja19idWZmZXIgKHN0 cnVjdCBmcmFtZSAqZik7CgpAQCAtMTg1LDcgKzIxNSw5IEBAIHN0cnVjdCB4X2Rpc3BsYXlf aW5mbyAqCiAgIGludCB3aW5feCA9IDAsIHdpbl95ID0gMCwgb3V0ZXJfeCA9IDAsIG91dGVy X3kgPSAwOwogICBpbnQgcmVhbF94ID0gMCwgcmVhbF95ID0gMDsKICAgYm9vbCBoYWRfZXJy b3JzID0gZmFsc2U7Ci0gIFdpbmRvdyB3aW4gPSBmLT5vdXRwdXRfZGF0YS54LT5wYXJlbnRf ZGVzYzsKKyAgV2luZG93IHdpbiA9IChGUkFNRV9QQVJFTlRfRlJBTUUgKGYpCisJCT8gRlJB TUVfWF9XSU5ET1cgKEZSQU1FX1BBUkVOVF9GUkFNRSAoZikpCisJCTogZi0+b3V0cHV0X2Rh dGEueC0+cGFyZW50X2Rlc2MpOwogICBzdHJ1Y3QgeF9kaXNwbGF5X2luZm8gKmRweWluZm8g PSBGUkFNRV9ESVNQTEFZX0lORk8gKGYpOwogICBsb25nIG1heF9sZW4gPSA0MDA7CiAgIEF0 b20gdGFyZ2V0X3R5cGUgPSBYQV9DQVJESU5BTDsKQEAgLTMyMyw3ICszNTUsOCBAQCBzdHJ1 Y3QgeF9kaXNwbGF5X2luZm8gKgogCW91dGVyX2dlb21fY29va2llID0geGNiX2dldF9nZW9t ZXRyeSAoeGNiX2Nvbm4sCiAJCQkJCSAgICAgIEZSQU1FX09VVEVSX1dJTkRPVyAoZikpOwoK LSAgICAgIGlmIChkcHlpbmZvLT5yb290X3dpbmRvdyA9PSBmLT5vdXRwdXRfZGF0YS54LT5w YXJlbnRfZGVzYykKKyAgICAgIGlmICgoZHB5aW5mby0+cm9vdF93aW5kb3cgPT0gZi0+b3V0 cHV0X2RhdGEueC0+cGFyZW50X2Rlc2MpCisJICAmJiAhRlJBTUVfUEFSRU5UX0ZSQU1FIChm KSkKIAkvKiBUcnkgX05FVF9GUkFNRV9FWFRFTlRTIGlmIG91ciBwYXJlbnQgaXMgdGhlIHJv b3Qgd2luZG93LiAgKi8KIAlwcm9wX2Nvb2tpZSA9IHhjYl9nZXRfcHJvcGVydHkgKHhjYl9j b25uLCAwLCB3aW4sCiAJCQkJCWRweWluZm8tPlhhdG9tX25ldF9mcmFtZV9leHRlbnRzLApA QCAtNDM3LDcgKzQ3MCw4IEBAIHN0cnVjdCB4X2Rpc3BsYXlfaW5mbyAqCiAjZW5kaWYKICAg ICB9CgotICBpZiAoZHB5aW5mby0+cm9vdF93aW5kb3cgPT0gZi0+b3V0cHV0X2RhdGEueC0+ cGFyZW50X2Rlc2MpCisgIGlmICgoZHB5aW5mby0+cm9vdF93aW5kb3cgPT0gZi0+b3V0cHV0 X2RhdGEueC0+cGFyZW50X2Rlc2MpCisgICAgICAmJiAhRlJBTUVfUEFSRU5UX0ZSQU1FIChm KSkKICAgICB7CiAgICAgICAvKiBUcnkgX05FVF9GUkFNRV9FWFRFTlRTIGlmIG91ciBwYXJl bnQgaXMgdGhlIHJvb3Qgd2luZG93LiAgKi8KICNpZmRlZiBVU0VfWENCCkBAIC03MzUsNiAr NzY5LDE3MSBAQCBzdHJ1Y3QgeF9kaXNwbGF5X2luZm8gKgogICB1bmJsb2NrX2lucHV0ICgp OwogfQoKKy8qKgorICogeF9zZXRfdW5kZWNvcmF0ZWQ6CisgKgorICogU2V0IGZyYW1lIEYn cyBgdW5kZWNvcmF0ZWQnIHBhcmFtZXRlci4gIElmIG5vbi1uaWwsIEYncyB3aW5kb3ctc3lz dGVtCisgKiB3aW5kb3cgaXMgZHJhd24gd2l0aG91dCBkZWNvcmF0aW9ucywgdGl0bGUsIG1p bmltaXplL21heGltaXplIGJveGVzCisgKiBhbmQgZXh0ZXJuYWwgYm9yZGVycy4gIFRoaXMg dXN1YWxseSBtZWFucyB0aGF0IHRoZSB3aW5kb3cgY2Fubm90IGJlCisgKiBkcmFnZ2VkLCBy ZXNpemVkLCBpY29uaWZpZWQsIG1heGltaXplZCBvciBkZWxldGVkIHdpdGggdGhlIG1vdXNl LiAgSWYKKyAqIG5pbCwgZHJhdyB0aGUgZnJhbWUgd2l0aCBhbGwgdGhlIGVsZW1lbnRzIGxp c3RlZCBhYm92ZSB1bmxlc3MgdGhlc2UKKyAqIGhhdmUgYmVlbiBzdXNwZW5kZWQgdmlhIHdp bmRvdyBtYW5hZ2VyIHNldHRpbmdzLgorICoKKyAqIFNvbWUgd2luZG93IG1hbmFnZXJzIG1h eSBub3QgaG9ub3IgdGhpcyBwYXJhbWV0ZXIuCisgKi8KK3N0YXRpYyB2b2lkCit4X3NldF91 bmRlY29yYXRlZCAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCBuZXdfdmFsdWUsIExp c3BfT2JqZWN0IG9sZF92YWx1ZSkKK3sKKyAgaWYgKCFFUSAobmV3X3ZhbHVlLCBvbGRfdmFs dWUpKQorICAgIHsKKyAgICAgIEZSQU1FX1VOREVDT1JBVEVEIChmKSA9IE5JTFAgKG5ld192 YWx1ZSkgPyBmYWxzZSA6IHRydWU7CisjaWZkZWYgVVNFX0dUSworICAgICAgeGdfc2V0X3Vu ZGVjb3JhdGVkIChmLCBuZXdfdmFsdWUpOworI2Vsc2UKKyAgICAgIERpc3BsYXkgKmRweSA9 IEZSQU1FX1hfRElTUExBWSAoZik7CisgICAgICBQcm9wTW90aWZXbUhpbnRzIGhpbnRzOwor ICAgICAgQXRvbSBwcm9wID0gWEludGVybkF0b20gKGRweSwgIl9NT1RJRl9XTV9ISU5UUyIs IEZhbHNlKTsKKworICAgICAgbWVtc2V0ICgmaGludHMsIDAsIHNpemVvZihoaW50cykpOwor ICAgICAgaGludHMuZmxhZ3MgPSBNV01fSElOVFNfREVDT1JBVElPTlM7CisgICAgICBoaW50 cy5kZWNvcmF0aW9ucyA9IE5JTFAgKG5ld192YWx1ZSkgPyBNV01fREVDT1JfQUxMIDogMDsK KworICAgICAgYmxvY2tfaW5wdXQgKCk7CisgICAgICAvKiBGb3Igc29tZSByZWFzb24gdGhl IHRoaXJkIGFuZCBmb3VydGggYXJndW1lbnQgaW4gdGhlIGZvbGxvd2luZworCSBjYWxsIG11 c3QgYmUgaWRlbnRpYzogSW4gdGhlIGNvcnJlc3BvbmRpbmcgWEdldFdpbmRvd1Byb3BlcnR5 CisJIGNhbGwgaW4gZ2V0TW90aWZIaW50cywgeGZ3bSBoYXMgdGhlIHRoaXJkIGFuZCBzZXZl bnRoIGFyZyBib3RoCisJIGRpc3BsYXlfaW5mby0+YXRvbXNbTU9USUZfV01fSElOVFNdLiAg T2J2aW91c2x5LCBZTU1WLiAgICovCisgICAgICBYQ2hhbmdlUHJvcGVydHkgKGRweSwgRlJB TUVfT1VURVJfV0lORE9XIChmKSwgcHJvcCwgcHJvcCwgMzIsCisJCSAgICAgICBQcm9wTW9k ZVJlcGxhY2UsICh1bnNpZ25lZCBjaGFyICopICZoaW50cywKKwkJICAgICAgIFBST1BfTU9U SUZfV01fSElOVFNfRUxFTUVOVFMpOworICAgICAgdW5ibG9ja19pbnB1dCAoKTsKKworI2Vu ZGlmIC8qIFVTRV9HVEsgKi8KKyAgICB9Cit9CisKKy8qKgorICogeF9zZXRfcGFyZW50X2Zy YW1lOgorICoKKyAqIFNldCBmcmFtZSBGJ3MgYHBhcmVudC1mcmFtZScgcGFyYW1ldGVyLiAg SWYgbm9uLW5pbCwgbWFrZSBGIGEgY2hpbGQKKyAqIGZyYW1lIG9mIHRoZSBmcmFtZSBzcGVj aWZpZWQgYnkgdGhhdCBwYXJhbWV0ZXIuICBUZWNobmljYWxseSwgdGhpcworICogbWFrZXMg RidzIHdpbmRvdy1zeXN0ZW0gd2luZG93IGEgY2hpbGQgd2luZG93IG9mIHRoZSBwYXJlbnQg ZnJhbWUncworICogd2luZG93LXN5c3RlbSB3aW5kb3cuICBJZiBuaWwsIG1ha2UgRidzIHdp bmRvdy1zeXN0ZW0gd2luZG93IGEKKyAqIHRvcC1sZXZlbCB3aW5kb3ctLWEgY2hpbGQgb2Yg aXRzIGRpc3BsYXkncyByb290IHdpbmRvdy4KKyAqCisgKiBBIGNoaWxkIGZyYW1lIGlzIGNs aXBwZWQgYXQgdGhlIG5hdGl2ZSBlZGdlcyBvZiBpdHMgcGFyZW50IGZyYW1lLgorICogSXRz IGBsZWZ0JyBhbmQgYHRvcCcgcGFyYW1ldGVycyBzcGVjaWZ5IHBvc2l0aW9ucyByZWxhdGl2 ZSB0byB0aGUKKyAqIHRvcC1sZWZ0IGNvcm5lciBvZiBpdHMgcGFyZW50IGZyYW1lJ3MgbmF0 aXZlIHJlY3RhbmdsZS4gIFVzdWFsbHksCisgKiBtb3ZpbmcgYSBwYXJlbnQgZnJhbWUgbW92 ZXMgYWxsIGl0cyBjaGlsZCBmcmFtZXMgdG9vLCBrZWVwaW5nIHRoZWlyCisgKiBwb3NpdGlv biByZWxhdGl2ZSB0byB0aGUgcGFyZW50IHVuYWx0ZXJlZC4gIFdoZW4gYSBwYXJlbnQgZnJh bWUgaXMKKyAqIGljb25pZmllZCBvciBtYWRlIGludmlzaWJsZSwgaXRzIGNoaWxkIGZyYW1l cyBhcmUgbWFkZSBpbnZpc2libGUuCisgKiBXaGVuIGEgcGFyZW50IGZyYW1lIGlzIGRlbGV0 ZWQsIGl0cyBjaGlsZCBmcmFtZXMgYXJlIGRlbGV0ZWQgdG9vLgorICoKKyAqIEEgdmlzaWJs ZSBjaGlsZCBmcmFtZSBhbHdheXMgYXBwZWFycyBvbiB0b3Agb2YgaXRzIHBhcmVudCBmcmFt ZSB0aHVzCisgKiBvYnNjdXJpbmcgcGFydHMgb2YgaXQuICBXaGVuIGEgZnJhbWUgaGFzIG1v cmUgdGhhbiBvbmUgY2hpbGQgZnJhbWUsCisgKiB0aGVpciBzdGFja2luZyBvcmRlciBpcyBz cGVjaWZpZWQganVzdCBhcyB0aGF0IG9mIG5vbi1jaGlsZCBmcmFtZXMKKyAqIHJlbGF0aXZl IHRvIHRoZWlyIGRpc3BsYXkuCisgKgorICogV2hldGhlciBhIGNoaWxkIGZyYW1lIGhhcyBh IG1lbnUgb3IgdG9vbCBiYXIgbWF5IGJlIHdpbmRvdy1zeXN0ZW0gb3IKKyAqIHdpbmRvdyBt YW5hZ2VyIGRlcGVuZGVudC4gIEl0J3MgYWR2aXNhYmxlIHRvIGRpc2FibGUgYm90aCB2aWEg dGhlCisgKiBmcmFtZSBwYXJhbWV0ZXIgc2V0dGluZ3MuCisgKgorICogU29tZSB3aW5kb3cg bWFuYWdlcnMgbWF5IG5vdCBob25vciB0aGlzIHBhcmFtZXRlci4KKyAqLworc3RhdGljIHZv aWQKK3hfc2V0X3BhcmVudF9mcmFtZSAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCBu ZXdfdmFsdWUsIExpc3BfT2JqZWN0IG9sZF92YWx1ZSkKK3sKKyAgc3RydWN0IGZyYW1lICpw ID0gTlVMTDsKKworICBpZiAoIU5JTFAgKG5ld192YWx1ZSkKKyAgICAgICYmICghRlJBTUVQ IChuZXdfdmFsdWUpCisJICB8fCAhRlJBTUVfTElWRV9QIChwID0gWEZSQU1FIChuZXdfdmFs dWUpKQorCSAgfHwgIUZSQU1FX1hfUCAocCkpKQorICAgIHsKKyAgICAgIHN0b3JlX2ZyYW1l X3BhcmFtIChmLCBRcGFyZW50X2ZyYW1lLCBvbGRfdmFsdWUpOworICAgICAgZXJyb3IgKCJJ bnZhbGlkIHNwZWNpZmljYXRpb24gb2YgYHBhcmVudC1mcmFtZSciKTsKKyAgICB9CisKKyAg aWYgKHAgIT0gRlJBTUVfUEFSRU5UX0ZSQU1FIChmKSkKKyAgICB7CisgICAgICBibG9ja19p bnB1dCAoKTsKKyAgICAgIFhSZXBhcmVudFdpbmRvdworCShGUkFNRV9YX0RJU1BMQVkgKGYp LCBGUkFNRV9PVVRFUl9XSU5ET1cgKGYpLAorCSBwID8gRlJBTUVfWF9XSU5ET1cgKHApIDog RGVmYXVsdFJvb3RXaW5kb3cgKEZSQU1FX1hfRElTUExBWSAoZikpLAorCSBmLT5sZWZ0X3Bv cywgZi0+dG9wX3Bvcyk7CisgICAgICB1bmJsb2NrX2lucHV0ICgpOworCisgICAgICBmc2V0 X3BhcmVudF9mcmFtZSAoZiwgbmV3X3ZhbHVlKTsKKyAgICB9Cit9CisKKy8qKgorICogeF9z ZXRfbm9fZm9jdXNfb25fbWFwOgorICoKKyAqIFNldCBmcmFtZSBGJ3MgYG5vLWZvY3VzLW9u LW1hcCcgcGFyYW1ldGVyIHdoaWNoLCBpZiBub24tbmlsLCBtZWFucworICogdGhhdCBGJ3Mg d2luZG93LXN5c3RlbSB3aW5kb3cgZG9lcyBub3Qgd2FudCB0byByZWNlaXZlIGlucHV0IGZv Y3VzCisgKiB3aGVuIGl0IGlzIG1hcHBlZC4gIChBIGZyYW1lJ3Mgd2luZG93IGlzIG1hcHBl ZCB3aGVuIHRoZSBmcmFtZSBpcworICogZGlzcGxheWVkIGZvciB0aGUgZmlyc3QgdGltZSBh bmQgd2hlbiB0aGUgZnJhbWUgY2hhbmdlcyBpdHMgc3RhdGUKKyAqIGZyb20gYGljb25pZmll ZCcgb3IgYGludmlzaWJsZScgdG8gYHZpc2libGUnLikKKyAqCisgKiBTb21lIHdpbmRvdyBt YW5hZ2VycyBtYXkgbm90IGhvbm9yIHRoaXMgcGFyYW1ldGVyLgorICovCitzdGF0aWMgdm9p ZAoreF9zZXRfbm9fZm9jdXNfb25fbWFwIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0 IG5ld192YWx1ZSwgTGlzcF9PYmplY3Qgb2xkX3ZhbHVlKQoreworICBpZiAoIUVRIChuZXdf dmFsdWUsIG9sZF92YWx1ZSkpCisgICAgeworI2lmZGVmIFVTRV9HVEsKKyAgICAgIHhnX3Nl dF9ub19mb2N1c19vbl9tYXAgKGYsIG5ld192YWx1ZSk7CisjZWxzZSAvKiBub3QgVVNFX0dU SyAqLworICAgICAgRGlzcGxheSAqZHB5ID0gRlJBTUVfWF9ESVNQTEFZIChmKTsKKyAgICAg IEF0b20gcHJvcCA9IFhJbnRlcm5BdG9tIChkcHksICJfTkVUX1dNX1VTRVJfVElNRSIsIEZh bHNlKTsKKyAgICAgIFRpbWUgdGltZXN0YW1wID0gTklMUCAobmV3X3ZhbHVlKSA/IEN1cnJl bnRUaW1lIDogMDsKKworICAgICAgWENoYW5nZVByb3BlcnR5IChkcHksIEZSQU1FX09VVEVS X1dJTkRPVyAoZiksIHByb3AsCisJCSAgICAgICBYQV9DQVJESU5BTCwgMzIsIFByb3BNb2Rl UmVwbGFjZSwKKwkJICAgICAgICh1bnNpZ25lZCBjaGFyICopICZ0aW1lc3RhbXAsIDEpOwor I2VuZGlmIC8qIFVTRV9HVEsgKi8KKyAgICAgIEZSQU1FX05PX0ZPQ1VTX09OX01BUCAoZikg PSAhTklMUCAobmV3X3ZhbHVlKTsKKyAgICB9Cit9CisKKy8qKgorICogeF9zZXRfbm9fYWNj ZXB0X2ZvY3VzOgorICoKKyAqIFNldCBmcmFtZSBGJ3MgYG5vLWFjY2VwdC1mb2N1cycgcGFy YW1ldGVyIHdoaWNoLCBpZiBub24tbmlsLCBoaW50cworICogdGhhdCBGJ3Mgd2luZG93LXN5 c3RlbSB3aW5kb3cgZG9lcyBub3Qgd2FudCB0byByZWNlaXZlIGlucHV0IGZvY3VzCisgKiB2 aWEgbW91c2UgY2xpY2tzIG9yIGJ5IG1vdmluZyB0aGUgbW91c2UgaW50byBpdC4KKyAqCisg KiBJZiBub24tbmlsLCB0aGlzIG1heSBoYXZlIHRoZSB1bndhbnRlZCBzaWRlLWVmZmVjdCB0 aGF0IGEgdXNlciBjYW5ub3QKKyAqIHNjcm9sbCBhIG5vbi1zZWxlY3RlZCBmcmFtZSB3aXRo IHRoZSBtb3VzZS4KKyAqCisgKiBTb21lIHdpbmRvdyBtYW5hZ2VycyBtYXkgbm90IGhvbm9y IHRoaXMgcGFyYW1ldGVyLgorICovCitzdGF0aWMgdm9pZAoreF9zZXRfbm9fYWNjZXB0X2Zv Y3VzIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IG5ld192YWx1ZSwgTGlzcF9PYmpl Y3Qgb2xkX3ZhbHVlKQoreworICBpZiAoIUVRIChuZXdfdmFsdWUsIG9sZF92YWx1ZSkpCisg ICAgeworI2lmZGVmIFVTRV9HVEsKKyAgICAgIHhnX3NldF9ub19hY2NlcHRfZm9jdXMgKGYs IG5ld192YWx1ZSk7CisjZWxzZSAvKiBub3QgVVNFX0dUSyAqLworI2lmZGVmIFVTRV9YX1RP T0xLSVQKKyAgICAgIEFyZyBhbFsxXTsKKworICAgICAgWHRTZXRBcmcgKGFsWzBdLCBYdE5p bnB1dCwgTklMUCAobmV3X3ZhbHVlKSA/IFRydWUgOiBGYWxzZSk7CisgICAgICBYdFNldFZh bHVlcyAoZi0+b3V0cHV0X2RhdGEueC0+d2lkZ2V0LCBhbCwgMSk7CisjZWxzZSAvKiBub3Qg VVNFX1hfVE9PTEtJVCAqLworICAgICAgV2luZG93IHdpbmRvdyA9IEZSQU1FX1hfV0lORE9X IChmKTsKKworICAgICAgZi0+b3V0cHV0X2RhdGEueC0+d21faGludHMuaW5wdXQgPSBOSUxQ IChuZXdfdmFsdWUpID8gVHJ1ZSA6IEZhbHNlOworICAgICAgWFNldFdNSGludHMgKEZSQU1F X1hfRElTUExBWSAoZiksIHdpbmRvdywgJmYtPm91dHB1dF9kYXRhLngtPndtX2hpbnRzKTsK KyNlbmRpZiAvKiBVU0VfWF9UT09MS0lUICovCisjZW5kaWYgLyogVVNFX0dUSyAqLworICAg ICAgRlJBTUVfTk9fQUNDRVBUX0ZPQ1VTIChmKSA9ICFOSUxQIChuZXdfdmFsdWUpOworICAg IH0KK30KKwogI2lmZGVmIFVTRV9HVEsKCiAvKiBTZXQgaWNvbiBmcm9tIEZJTEUgZm9yIGZy YW1lIEYuICBCeSB1c2luZyBHVEsgZnVuY3Rpb25zIHRoZSBpY29uCkBAIC0xMjcyLDcgKzE0 NzEsNyBAQCBzdHJ1Y3QgbW91c2VfY3Vyc29yX2RhdGEgewogICAgICBtb3N0IG9mIHRoZSBj b21tYW5kcyB0cnkgdG8gYXBwbHkgdGhlbXNlbHZlcyB0byB0aGUgbWluaWJ1ZmZlcgogICAg ICBmcmFtZSBpdHNlbGYsIGFuZCBnZXQgYW4gZXJyb3IgYmVjYXVzZSB5b3UgY2FuJ3Qgc3dp dGNoIGJ1ZmZlcnMKICAgICAgaW4gb3Igc3BsaXQgdGhlIG1pbmlidWZmZXIgd2luZG93LiAg Ki8KLSAgaWYgKEZSQU1FX01JTklCVUZfT05MWV9QIChmKSkKKyAgaWYgKEZSQU1FX01JTklC VUZfT05MWV9QIChmKSB8fCBGUkFNRV9QQVJFTlRfRlJBTUUgKGYpKQogICAgIHJldHVybjsK CiAgIGlmIChUWVBFX1JBTkdFRF9JTlRFR0VSUCAoaW50LCB2YWx1ZSkpCkBAIC0xNDc0LDEy ICsxNjczLDcgQEAgc3RydWN0IG1vdXNlX2N1cnNvcl9kYXRhIHsKICAgICAgIGlmIChGUkFN RV9YX1dJTkRPVyAoZikgIT0gMCkKIAl7CiAJICBhZGp1c3RfZnJhbWVfc2l6ZSAoZiwgLTEs IC0xLCAzLCBmYWxzZSwgUWludGVybmFsX2JvcmRlcl93aWR0aCk7Ci0KLSNpZmRlZiBVU0Vf R1RLCi0JICB4Z19jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIgKGYpOwotI2Vsc2UKIAkg IHhfY2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyIChmKTsKLSNlbmRpZgogCX0KICAgICB9 CgpAQCAtMjgwMyw2ICsyOTk3LDI1IEBAIHN0cnVjdCBtb3VzZV9jdXJzb3JfZGF0YSB7CiAg ICAgeF9zZXRfbmFtZSAoZiwgbmFtZSwgZXhwbGljaXQpOwogICB9CgorICBpZiAoRlJBTUVf VU5ERUNPUkFURUQgKGYpKQorICAgIHsKKyAgICAgIERpc3BsYXkgKmRweSA9IEZSQU1FX1hf RElTUExBWSAoZik7CisgICAgICBQcm9wTW90aWZXbUhpbnRzIGhpbnRzOworICAgICAgQXRv bSBwcm9wID0gWEludGVybkF0b20gKGRweSwgIl9NT1RJRl9XTV9ISU5UUyIsIEZhbHNlKTsK KworICAgICAgbWVtc2V0ICgmaGludHMsIDAsIHNpemVvZihoaW50cykpOworICAgICAgaGlu dHMuZmxhZ3MgPSBNV01fSElOVFNfREVDT1JBVElPTlM7CisgICAgICBoaW50cy5kZWNvcmF0 aW9ucyA9IDA7CisKKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiB0aGUgdGhpcmQgYW5kIGZv dXJ0aCBhcmd1bWVudCBpbiB0aGUgZm9sbG93aW5nCisJIGNhbGwgbXVzdCBiZSBpZGVudGlj OiBJbiB0aGUgY29ycmVzcG9uZGluZyBYR2V0V2luZG93UHJvcGVydHkKKwkgY2FsbCBpbiBn ZXRNb3RpZkhpbnRzLCB4ZndtIGhhcyB0aGUgdGhpcmQgYW5kIHNldmVudGggYXJnIGJvdGgK KwkgZGlzcGxheV9pbmZvLT5hdG9tc1tNT1RJRl9XTV9ISU5UU10uICBPYnZpb3VzbHksIFlN TVYuICAgKi8KKyAgICAgIFhDaGFuZ2VQcm9wZXJ0eSAoZHB5LCBGUkFNRV9PVVRFUl9XSU5E T1cgKGYpLCBwcm9wLCBwcm9wLCAzMiwKKwkJICAgICAgIFByb3BNb2RlUmVwbGFjZSwgKHVu c2lnbmVkIGNoYXIgKikgJmhpbnRzLAorCQkgICAgICAgUFJPUF9NT1RJRl9XTV9ISU5UU19F TEVNRU5UUyk7CisgICAgfQorCiAgIFhEZWZpbmVDdXJzb3IgKEZSQU1FX1hfRElTUExBWSAo ZiksIEZSQU1FX1hfV0lORE9XIChmKSwKIAkJIGYtPm91dHB1dF9kYXRhLngtPmN1cnJlbnRf Y3Vyc29yCiAgICAgICAgICAgICAgICAgID0gZi0+b3V0cHV0X2RhdGEueC0+dGV4dF9jdXJz b3IpOwpAQCAtMjk0Myw2ICszMTU2LDI2IEBAIHN0cnVjdCBtb3VzZV9jdXJzb3JfZGF0YSB7 CiAgICAgeF9zZXRfbmFtZSAoZiwgbmFtZSwgZXhwbGljaXQpOwogICB9CgorICBpZiAoRlJB TUVfVU5ERUNPUkFURUQgKGYpKQorICAgIHsKKyAgICAgIERpc3BsYXkgKmRweSA9IEZSQU1F X1hfRElTUExBWSAoZik7CisgICAgICBQcm9wTW90aWZXbUhpbnRzIGhpbnRzOworICAgICAg QXRvbSBwcm9wID0gWEludGVybkF0b20gKGRweSwgIl9NT1RJRl9XTV9ISU5UUyIsIEZhbHNl KTsKKworICAgICAgbWVtc2V0ICgmaGludHMsIDAsIHNpemVvZihoaW50cykpOworICAgICAg aGludHMuZmxhZ3MgPSBNV01fSElOVFNfREVDT1JBVElPTlM7CisgICAgICBoaW50cy5kZWNv cmF0aW9ucyA9IDA7CisKKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiB0aGUgdGhpcmQgYW5k IGZvdXJ0aCBhcmd1bWVudCBpbiB0aGUgZm9sbG93aW5nCisJIGNhbGwgbXVzdCBiZSBpZGVu dGljOiBJbiB0aGUgY29ycmVzcG9uZGluZyBYR2V0V2luZG93UHJvcGVydHkKKwkgY2FsbCBp biBnZXRNb3RpZkhpbnRzLCB4ZndtIGhhcyB0aGUgdGhpcmQgYW5kIHNldmVudGggYXJnIGJv dGgKKwkgZGlzcGxheV9pbmZvLT5hdG9tc1tNT1RJRl9XTV9ISU5UU10uICBPYnZpb3VzbHks IFlNTVYuICAgKi8KKyAgICAgIFhDaGFuZ2VQcm9wZXJ0eSAoZHB5LCBGUkFNRV9PVVRFUl9X SU5ET1cgKGYpLCBwcm9wLCBwcm9wLCAzMiwKKwkJICAgICAgIFByb3BNb2RlUmVwbGFjZSwg KHVuc2lnbmVkIGNoYXIgKikgJmhpbnRzLAorCQkgICAgICAgUFJPUF9NT1RJRl9XTV9ISU5U U19FTEVNRU5UUyk7CisgICAgfQorCisKICAgWERlZmluZUN1cnNvciAoRlJBTUVfWF9ESVNQ TEFZIChmKSwgRlJBTUVfWF9XSU5ET1cgKGYpLAogCQkgZi0+b3V0cHV0X2RhdGEueC0+Y3Vy cmVudF9jdXJzb3IKICAgICAgICAgICAgICAgICAgPSBmLT5vdXRwdXRfZGF0YS54LT50ZXh0 X2N1cnNvcik7CkBAIC0zMjg1LDExICszNTE4LDEyIEBAIHN0cnVjdCBtb3VzZV9jdXJzb3Jf ZGF0YSB7CiAgIExpc3BfT2JqZWN0IGZyYW1lLCB0ZW07CiAgIExpc3BfT2JqZWN0IG5hbWU7 CiAgIGJvb2wgbWluaWJ1ZmZlcl9vbmx5ID0gZmFsc2U7CisgIGJvb2wgdW5kZWNvcmF0ZWQg PSBmYWxzZTsKICAgbG9uZyB3aW5kb3dfcHJvbXB0aW5nID0gMDsKICAgcHRyZGlmZl90IGNv dW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKICAgTGlzcF9PYmplY3QgZGlzcGxheTsKICAgc3Ry dWN0IHhfZGlzcGxheV9pbmZvICpkcHlpbmZvID0gTlVMTDsKLSAgTGlzcF9PYmplY3QgcGFy ZW50OworICBMaXNwX09iamVjdCBwYXJlbnQsIHBhcmVudF9mcmFtZTsKICAgc3RydWN0IGti b2FyZCAqa2I7CiAgIGludCB4X3dpZHRoID0gMCwgeF9oZWlnaHQgPSAwOwoKQEAgLTMzNDEs NiArMzU3NSwyOCBAQCBzdHJ1Y3QgbW91c2VfY3Vyc29yX2RhdGEgewogICBlbHNlCiAgICAg ZiA9IG1ha2VfZnJhbWUgKHRydWUpOwoKKyAgcGFyZW50X2ZyYW1lID0geF9nZXRfYXJnIChk cHlpbmZvLCBwYXJtcywgUXBhcmVudF9mcmFtZSwgTlVMTCwgTlVMTCwKKwkJCSAgICBSRVNf VFlQRV9TWU1CT0wpOworICAvKiBBY2NlcHQgcGFyZW50LWZyYW1lIGlmZiBwYXJlbnQtaWQg d2FzIG5vdCBzcGVjaWZpZWQuICAqLworICBpZiAoIU5JTFAgKHBhcmVudCkKKyAgICAgIHx8 IEVRIChwYXJlbnRfZnJhbWUsIFF1bmJvdW5kKQorICAgICAgfHwgTklMUCAocGFyZW50X2Zy YW1lKQorICAgICAgfHwgIUZSQU1FUCAocGFyZW50X2ZyYW1lKQorICAgICAgfHwgIUZSQU1F X0xJVkVfUCAoWEZSQU1FIChwYXJlbnRfZnJhbWUpKQorICAgICAgfHwgIUZSQU1FX1hfUCAo WEZSQU1FIChwYXJlbnRfZnJhbWUpKSkKKyAgICBwYXJlbnRfZnJhbWUgPSBRbmlsOworCisg IGZzZXRfcGFyZW50X2ZyYW1lIChmLCBwYXJlbnRfZnJhbWUpOworICBzdG9yZV9mcmFtZV9w YXJhbSAoZiwgUXBhcmVudF9mcmFtZSwgcGFyZW50X2ZyYW1lKTsKKworICBpZiAoIU5JTFAg KHRlbSA9ICh4X2dldF9hcmcgKGRweWluZm8sIHBhcm1zLCBRdW5kZWNvcmF0ZWQsIE5VTEws IE5VTEwsCisJCQkgICAgICAgUkVTX1RZUEVfQk9PTEVBTikpKQorICAgICAgJiYgIShFUSAo dGVtLCBRdW5ib3VuZCkpKQorICAgIHVuZGVjb3JhdGVkID0gdHJ1ZTsKKworICBGUkFNRV9V TkRFQ09SQVRFRCAoZikgPSB1bmRlY29yYXRlZDsKKyAgc3RvcmVfZnJhbWVfcGFyYW0gKGYs IFF1bmRlY29yYXRlZCwgdW5kZWNvcmF0ZWQgPyBRdCA6IFFuaWwpOworCiAgIFhTRVRGUkFN RSAoZnJhbWUsIGYpOwoKICAgZi0+dGVybWluYWwgPSBkcHlpbmZvLT50ZXJtaW5hbDsKQEAg LTM1MjgsMTUgKzM3ODQsMjQgQEAgc3RydWN0IG1vdXNlX2N1cnNvcl9kYXRhIHsKICAgICAg aW5pdF9pdGVyYXRvciB3aXRoIGEgbnVsbCBmYWNlIGNhY2hlLCB3aGljaCBzaG91bGQgbm90 IGhhcHBlbi4gICovCiAgIGluaXRfZnJhbWVfZmFjZXMgKGYpOwoKLSAgLyogVGhlIGZvbGxv d2luZyBjYWxsIG9mIGNoYW5nZV9mcmFtZV9zaXplIGlzIG5lZWRlZCBzaW5jZSBvdGhlcndp c2UKKyAgLyogV2UgaGF2ZSB0byBjYWxsIGFkanVzdF9mcmFtZV9zaXplIGhlcmUgc2luY2Ug b3RoZXJ3aXNlCiAgICAgIHhfc2V0X3Rvb2xfYmFyX2xpbmVzIHdpbGwgYWxyZWFkeSB3b3Jr IHdpdGggdGhlIGNoYXJhY3RlciBzaXplcwotICAgICBpbnN0YWxsZWQgYnkgaW5pdF9mcmFt ZV9mYWNlcyB3aGlsZSB0aGUgZnJhbWUncyBwaXhlbCBzaXplIGlzCi0gICAgIHN0aWxsIGNh bGN1bGF0ZWQgZnJvbSBhIGNoYXJhY3RlciBzaXplIG9mIDEgYW5kIHdlIHN1YnNlcXVlbnRs eQotICAgICBoaXQgdGhlIChoZWlnaHQgPj0gMCkgYXNzZXJ0aW9uIGluIHdpbmRvd19ib3hf aGVpZ2h0LgorICAgICBpbnN0YWxsZWQgYnkgaW5pdF9mcmFtZV9mYWNlcyB3aGlsZSB0aGUg ZnJhbWUncyBwaXhlbCBzaXplIGlzIHN0aWxsCisgICAgIGNhbGN1bGF0ZWQgZnJvbSBhIGNo YXJhY3RlciBzaXplIG9mIDEgYW5kIHdlIHN1YnNlcXVlbnRseSBoaXQgdGhlCisgICAgICho ZWlnaHQgPj0gMCkgYXNzZXJ0aW9uIGluIHdpbmRvd19ib3hfaGVpZ2h0LgoKICAgICAgVGhl IG5vbi1waXhlbHdpc2UgY29kZSBhcHBhcmVudGx5IHdvcmtlZCBhcm91bmQgdGhpcyBiZWNh dXNlIGl0CiAgICAgIGhhZCBvbmUgZnJhbWUgbGluZSB2cyBvbmUgdG9vbGJhciBsaW5lIHdo aWNoIGxlZnQgdXMgd2l0aCBhIHplcm8KLSAgICAgcm9vdCB3aW5kb3cgaGVpZ2h0IHdoaWNo IHdhcyBvYnZpb3VzbHkgd3JvbmcgYXMgd2VsbCAuLi4gICovCisgICAgIHJvb3Qgd2luZG93 IGhlaWdodCB3aGljaCB3YXMgb2J2aW91c2x5IHdyb25nIGFzIHdlbGwgLi4uCisKKyAgICAg QWxzbyBwcm9jZXNzIGBtaW4td2lkdGgnIGFuZCBgbWluLWhlaWdodCcgcGFyYW1ldGVycyBy aWdodCBoZXJlCisgICAgIGJlY2F1c2UgYGZyYW1lLXdpbmRvd3MtbWluLXNpemUnIG5lZWRz IHRoZW0uICAqLworICB0ZW0gPSB4X2dldF9hcmcgKGRweWluZm8sIHBhcm1zLCBRbWluX3dp ZHRoLCBOVUxMLCBOVUxMLCBSRVNfVFlQRV9OVU1CRVIpOworICBpZiAoTlVNQkVSUCAodGVt KSkKKyAgICBzdG9yZV9mcmFtZV9wYXJhbSAoZiwgUW1pbl93aWR0aCwgdGVtKTsKKyAgdGVt ID0geF9nZXRfYXJnIChkcHlpbmZvLCBwYXJtcywgUW1pbl9oZWlnaHQsIE5VTEwsIE5VTEws IFJFU19UWVBFX05VTUJFUik7CisgIGlmIChOVU1CRVJQICh0ZW0pKQorICAgIHN0b3JlX2Zy YW1lX3BhcmFtIChmLCBRbWluX2hlaWdodCwgdGVtKTsKICAgYWRqdXN0X2ZyYW1lX3NpemUg KGYsIEZSQU1FX0NPTFMgKGYpICogRlJBTUVfQ09MVU1OX1dJRFRIIChmKSwKIAkJICAgICBG UkFNRV9MSU5FUyAoZikgKiBGUkFNRV9MSU5FX0hFSUdIVCAoZiksIDUsIHRydWUsCiAJCSAg ICAgUXhfY3JlYXRlX2ZyYW1lXzEpOwpAQCAtMzYxMSw2ICszODc2LDIxIEBAIHN0cnVjdCBt b3VzZV9jdXJzb3JfZGF0YSB7CiAgIHhfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBR YWxwaGEsIFFuaWwsCiAJCSAgICAgICAiYWxwaGEiLCAiQWxwaGEiLCBSRVNfVFlQRV9OVU1C RVIpOwoKKyAgaWYgKCFOSUxQIChwYXJlbnRfZnJhbWUpKQorICAgIHsKKyAgICAgIHN0cnVj dCBmcmFtZSAqcCA9IFhGUkFNRSAocGFyZW50X2ZyYW1lKTsKKworICAgICAgYmxvY2tfaW5w dXQgKCk7CisgICAgICBYUmVwYXJlbnRXaW5kb3cgKEZSQU1FX1hfRElTUExBWSAoZiksIEZS QU1FX09VVEVSX1dJTkRPVyAoZiksCisJCSAgICAgICBGUkFNRV9YX1dJTkRPVyAocCksIGYt PmxlZnRfcG9zLCBmLT50b3BfcG9zKTsKKyAgICAgIHVuYmxvY2tfaW5wdXQgKCk7CisgICAg fQorCisgIHhfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRbm9fZm9jdXNfb25fbWFw LCBRbmlsLAorCQkgICAgICAgTlVMTCwgTlVMTCwgUkVTX1RZUEVfQk9PTEVBTik7CisgIHhf ZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRbm9fYWNjZXB0X2ZvY3VzLCBRbmlsLAor CQkgICAgICAgTlVMTCwgTlVMTCwgUkVTX1RZUEVfQk9PTEVBTik7CisKICNpZiBkZWZpbmVk IChVU0VfWF9UT09MS0lUKSB8fCBkZWZpbmVkIChVU0VfR1RLKQogICAvKiBDcmVhdGUgdGhl IG1lbnUgYmFyLiAgKi8KICAgaWYgKCFtaW5pYnVmZmVyX29ubHkgJiYgRlJBTUVfRVhURVJO QUxfTUVOVV9CQVIgKGYpKQpAQCAtMzY1MiwyNyArMzkzMiwyOSBAQCBzdHJ1Y3QgbW91c2Vf Y3Vyc29yX2RhdGEgewogICAgICBhZGp1c3RfZnJhbWVfc2l6ZSBjYWxsLiAgKi8KICAgeF9k ZWZhdWx0X3BhcmFtZXRlciAoZiwgcGFybXMsIFFmdWxsc2NyZWVuLCBRbmlsLAogCQkgICAg ICAgImZ1bGxzY3JlZW4iLCAiRnVsbHNjcmVlbiIsIFJFU19UWVBFX1NZTUJPTCk7CisgIHhf ZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRel9ncm91cCwgUW5pbCwKKwkJICAgICAg IE5VTEwsIE5VTEwsIFJFU19UWVBFX1NZTUJPTCk7CgogICAvKiBNYWtlIHRoZSB3aW5kb3cg YXBwZWFyIG9uIHRoZSBmcmFtZSBhbmQgZW5hYmxlIGRpc3BsYXksIHVubGVzcwogICAgICB0 aGUgY2FsbGVyIHNheXMgbm90IHRvLiAgSG93ZXZlciwgd2l0aCBleHBsaWNpdCBwYXJlbnQs IEVtYWNzCiAgICAgIGNhbm5vdCBjb250cm9sIHZpc2liaWxpdHksIHNvIGRvbid0IHRyeS4g ICovCi0gIGlmICghIGYtPm91dHB1dF9kYXRhLngtPmV4cGxpY2l0X3BhcmVudCkKKyAgaWYg KCFmLT5vdXRwdXRfZGF0YS54LT5leHBsaWNpdF9wYXJlbnQpCiAgICAgewotICAgICAgTGlz cF9PYmplY3QgdmlzaWJpbGl0eTsKLQotICAgICAgdmlzaWJpbGl0eSA9IHhfZ2V0X2FyZyAo ZHB5aW5mbywgcGFybXMsIFF2aXNpYmlsaXR5LCAwLCAwLAotCQkJICAgICAgUkVTX1RZUEVf U1lNQk9MKTsKLSAgICAgIGlmIChFUSAodmlzaWJpbGl0eSwgUXVuYm91bmQpKQotCXZpc2li aWxpdHkgPSBRdDsKKyAgICAgIExpc3BfT2JqZWN0IHZpc2liaWxpdHkKKwk9IHhfZ2V0X2Fy ZyAoZHB5aW5mbywgcGFybXMsIFF2aXNpYmlsaXR5LCAwLCAwLCBSRVNfVFlQRV9TWU1CT0wp OwoKICAgICAgIGlmIChFUSAodmlzaWJpbGl0eSwgUWljb24pKQogCXhfaWNvbmlmeV9mcmFt ZSAoZik7Ci0gICAgICBlbHNlIGlmICghIE5JTFAgKHZpc2liaWxpdHkpKQotCXhfbWFrZV9m cmFtZV92aXNpYmxlIChmKTsKICAgICAgIGVsc2UKIAl7Ci0JICAvKiBNdXN0IGhhdmUgYmVl biBRbmlsLiAgKi8KKwkgIGlmIChFUSAodmlzaWJpbGl0eSwgUXVuYm91bmQpKQorCSAgICB2 aXNpYmlsaXR5ID0gUXQ7CisKKwkgIGlmICghTklMUCAodmlzaWJpbGl0eSkpCisJICAgIHhf bWFrZV9mcmFtZV92aXNpYmxlIChmKTsKIAl9CisKKyAgICAgIHN0b3JlX2ZyYW1lX3BhcmFt IChmLCBRdmlzaWJpbGl0eSwgdmlzaWJpbGl0eSk7CiAgICAgfQoKICAgYmxvY2tfaW5wdXQg KCk7CkBAIC0zNjg1LDE0ICszOTY3LDE4IEBAIHN0cnVjdCBtb3VzZV9jdXJzb3JfZGF0YSB7 CiAgIGlmIChkcHlpbmZvLT5jbGllbnRfbGVhZGVyX3dpbmRvdyAhPSAwKQogICAgIHsKICAg ICAgIFhDaGFuZ2VQcm9wZXJ0eSAoRlJBTUVfWF9ESVNQTEFZIChmKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgRlJBTUVfT1VURVJfV0lORE9XIChmKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgZHB5aW5mby0+WGF0b21fd21fY2xpZW50X2xlYWRlciwKLSAgICAgICAgICAgICAg ICAgICAgICAgWEFfV0lORE9XLCAzMiwgUHJvcE1vZGVSZXBsYWNlLAotICAgICAgICAgICAg ICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKSAmZHB5aW5mby0+Y2xpZW50X2xlYWRlcl93 aW5kb3csIDEpOworCQkgICAgICAgRlJBTUVfT1VURVJfV0lORE9XIChmKSwKKwkJICAgICAg IGRweWluZm8tPlhhdG9tX3dtX2NsaWVudF9sZWFkZXIsCisJCSAgICAgICBYQV9XSU5ET1cs IDMyLCBQcm9wTW9kZVJlcGxhY2UsCisJCSAgICAgICAodW5zaWduZWQgY2hhciAqKSAmZHB5 aW5mby0+Y2xpZW50X2xlYWRlcl93aW5kb3csIDEpOwogICAgIH0KCiAgIHVuYmxvY2tfaW5w dXQgKCk7CgorICAvKiBXb3JrcyBpZmYgZnJhbWUgaGFzIGJlZW4gYWxyZWFkeSBtYXBwZWQu ICAqLworICB4X2RlZmF1bHRfcGFyYW1ldGVyIChmLCBwYXJtcywgUXNraXBfdGFza2Jhciwg UW5pbCwKKwkJICAgICAgIE5VTEwsIE5VTEwsIFJFU19UWVBFX0JPT0xFQU4pOworCiAgIC8q IEluaXRpYWxpemUgYGRlZmF1bHQtbWluaWJ1ZmZlci1mcmFtZScgaW4gY2FzZSB0aGlzIGlz IHRoZSBmaXJzdAogICAgICBmcmFtZSBvbiB0aGlzIHRlcm1pbmFsLiAgKi8KICAgaWYgKEZS QU1FX0hBU19NSU5JQlVGX1AgKGYpCkBAIC0zNzEwLDcgKzM5OTYsNyBAQCBzdHJ1Y3QgbW91 c2VfY3Vyc29yX2RhdGEgewogICAgICBhbmQgc2ltaWxhciBmdW5jdGlvbnMuICAqLwogICBW d2luZG93X2xpc3QgPSBRbmlsOwoKLSAgcmV0dXJuIHVuYmluZF90byAoY291bnQsIGZyYW1l KTsKKyByZXR1cm4gdW5iaW5kX3RvIChjb3VudCwgZnJhbWUpOwogfQoKCkBAIC00ODQ1LDYg KzUxMzEsMTQxIEBAIHZhbHVlIGlzIGEgbGlzdCBvZiB0aGUgZm9ybSAoTEVGVCwgVE9QLCBS SUdIVCwgQk9UVE9NKS4gIEFsbCB2YWx1ZXMgYXJlCiAJCQkJIDogUW5hdGl2ZV9lZGdlcykp OwogfQoKKy8qKgorICogdzMyX2ZyYW1lX2xpc3Rfel9vcmRlcjoKKyAqCisgKiBSZWN1cnNp dmVseSBhZGQgbGlzdCBvZiBhbGwgZnJhbWVzIG9uIHRoZSBkaXNwbGF5IHNwZWNpZmllZCB2 aWEKKyAqIERQWUlORk8gYW5kIHdob3NlIHdpbmRvdy1zeXN0ZW0gd2luZG93J3MgcGFyZW50 IGlzIHNwZWNpZmllZCBieQorICogV0lORE9XIHRvIEZSQU1FUyBhbmQgcmV0dXJuIEZSQU1F Uy4KKyAqLworc3RhdGljIExpc3BfT2JqZWN0Cit4X2ZyYW1lX2xpc3Rfel9vcmRlciAoRGlz cGxheSogZHB5LCBXaW5kb3cgd2luZG93KQoreworICBXaW5kb3cgcm9vdCwgcGFyZW50LCAq Y2hpbGRyZW47CisgIHVuc2lnbmVkIGludCBuY2hpbGRyZW47CisgIGludCBpOworICBMaXNw X09iamVjdCBmcmFtZXMgPSBRbmlsOworCisgIGJsb2NrX2lucHV0ICgpOworICBpZiAoWFF1 ZXJ5VHJlZSAoZHB5LCB3aW5kb3csICZyb290LCAmcGFyZW50LCAmY2hpbGRyZW4sICZuY2hp bGRyZW4pKQorICAgIHsKKyAgICAgIHVuYmxvY2tfaW5wdXQgKCk7CisgICAgICBmb3IgKGkg PSBuY2hpbGRyZW4gLSAxOyBpID49IDA7IGktLSkKKwl7CisJICBMaXNwX09iamVjdCBmcmFt ZSwgdGFpbDsKKworCSAgRk9SX0VBQ0hfRlJBTUUgKHRhaWwsIGZyYW1lKQorCSAgICAvKiBX aXRoIGEgcmVwYXJlbnRpbmcgd2luZG93IG1hbmFnZXIgdGhlIHBhcmVudF9kZXNjIGZpZWxk CisJICAgICAgIHVzdWFsbHkgc3BlY2lmaWVzIHRoZSB0b3Btb3N0IHdpbmRvd3Mgb2Ygb3Vy IGZyYW1lcy4KKwkgICAgICAgT3RoZXJ3aXNlIEZSQU1FX09VVEVSX1dJTkRPVyBzaG91bGQg ZG8uICAqLworCSAgICBpZiAoWEZSQU1FIChmcmFtZSktPm91dHB1dF9kYXRhLngtPnBhcmVu dF9kZXNjID09IGNoaWxkcmVuW2ldCisJCXx8IEZSQU1FX09VVEVSX1dJTkRPVyAoWEZSQU1F IChmcmFtZSkpID09IGNoaWxkcmVuW2ldKQorCSAgICAgIGZyYW1lcyA9IEZjb25zIChmcmFt ZSwgZnJhbWVzKTsKKwl9CisKKyAgICAgIGlmIChjaGlsZHJlbikgWEZyZWUgKChjaGFyICop Y2hpbGRyZW4pOworICAgIH0KKyAgZWxzZQorICAgIHVuYmxvY2tfaW5wdXQgKCk7CisKKyAg cmV0dXJuIGZyYW1lczsKK30KKworCitERUZVTiAoIngtZnJhbWUtbGlzdC16LW9yZGVyIiwg RnhfZnJhbWVfbGlzdF96X29yZGVyLAorICAgICAgIFN4X2ZyYW1lX2xpc3Rfel9vcmRlciwg MCwgMSwgMCwKKyAgICAgICBkb2M6IC8qIFJldHVybiBsaXN0IG9mIEVtYWNzJyBmcmFtZXMs IGluIFogKHN0YWNraW5nKSBvcmRlci4KK1RoZSBvcHRpb25hbCBhcmd1bWVudCBURVJNSU5B TCBzcGVjaWZpZXMgd2hpY2ggZGlzcGxheSB0byBhc2sgYWJvdXQuCitURVJNSU5BTCBzaG91 bGQgYmUgZWl0aGVyIGEgZnJhbWUgb3IgYSBkaXNwbGF5IG5hbWUgKGEgc3RyaW5nKS4KK0lm IG9taXR0ZWQgb3IgbmlsLCB0aGF0IHN0YW5kcyBmb3IgdGhlIHNlbGVjdGVkIGZyYW1lJ3Mg ZGlzcGxheS4KKworQXMgYSBzcGVjaWFsIGNhc2UsIGlmIFRFUk1JTkFMIGlzIG5vbi1uaWwg YW5kIHNwZWNpZmllcyBhIGxpdmUgZnJhbWUsCityZXR1cm4gdGhlIGNoaWxkIGZyYW1lcyBv ZiB0aGF0IGZyYW1lIGluIFogKHN0YWNraW5nKSBvcmRlci4KKworRnJhbWVzIGFyZSBsaXN0 ZWQgZnJvbSBib3R0b21tb3N0IChmaXJzdCkgdG8gdG9wbW9zdCAobGFzdCkuICBDaGlsZAor ZnJhbWVzIGFwcGVhciByaWdodCBhZnRlciB0aGVpciBwYXJlbnQgZnJhbWUuICBSZXR1cm4g bmlsIGlmIFRFUk1JTkFMCitjb250YWlucyBubyBFbWFjcyBmcmFtZS4gICovKQorICAoTGlz cF9PYmplY3QgdGVybWluYWwpCit7CisgIHN0cnVjdCB4X2Rpc3BsYXlfaW5mbyAqZHB5aW5m byA9IGNoZWNrX3hfZGlzcGxheV9pbmZvICh0ZXJtaW5hbCk7CisgIERpc3BsYXkgKmRweSA9 IGRweWluZm8tPmRpc3BsYXk7CisgIFdpbmRvdyB3aW5kb3c7CisKKyAgaWYgKEZSQU1FUCAo dGVybWluYWwpICYmIEZSQU1FX0xJVkVfUCAoWEZSQU1FICh0ZXJtaW5hbCkpKQorICAgIHdp bmRvdyA9IEZSQU1FX1hfV0lORE9XIChYRlJBTUUgKHRlcm1pbmFsKSk7CisgIGVsc2UKKyAg ICB3aW5kb3cgPSBkcHlpbmZvLT5yb290X3dpbmRvdzsKKworICByZXR1cm4geF9mcmFtZV9s aXN0X3pfb3JkZXIgKGRweSwgd2luZG93KTsKK30KKworCisvKioKKyAqIHhfZnJhbWVfcmVz dGFjazoKKyAqCisgKiBSZXN0YWNrIGZyYW1lIEYxIGJlbG93IGZyYW1lIEYyLCBhYm92ZSBp ZiBBQk9WRV9GTEFHIGlzIG5vbi1uaWwuICBJbgorICogcHJhY3RpY2UgdGhpcyBpcyBhIHR3 by1zdGVwIGFjdGlvbjogVGhlIGZpcnN0IHN0ZXAgcmVtb3ZlcyBGMSdzCisgKiB3aW5kb3ct c3lzdGVtIHdpbmRvdyBmcm9tIHRoZSBkaXNwbGF5LiAgVGhlIHNlY29uZCBzdGVwIHJlaW5z ZXJ0cworICogRjEncyB3aW5kb3cgYmVsb3cgKGFib3ZlIGlmIEFCT1ZFX0ZMQUcgaXMgdHJ1 ZSkgdGhhdCBvZiBGMi4KKyAqLworc3RhdGljIHZvaWQKK3hfZnJhbWVfcmVzdGFjayAoc3Ry dWN0IGZyYW1lICpmMSwgc3RydWN0IGZyYW1lICpmMiwgYm9vbCBhYm92ZV9mbGFnKQorewor I2lmZGVmIFVTRV9HVEsKKyAgYmxvY2tfaW5wdXQgKCk7CisgIHhnX2ZyYW1lX3Jlc3RhY2sg KGYxLCBmMiwgYWJvdmVfZmxhZyk7CisgIHVuYmxvY2tfaW5wdXQgKCk7CisjZWxzZQorICBE aXNwbGF5ICpkcHkgPSBGUkFNRV9YX0RJU1BMQVkgKGYxKTsKKyAgV2luZG93IHdpbmRvdzEg PSBGUkFNRV9PVVRFUl9XSU5ET1cgKGYxKTsKKyAgWFdpbmRvd0NoYW5nZXMgd2M7CisgIHVu c2lnbmVkIGxvbmcgbWFzayA9IChDV1NpYmxpbmcgfCBDV1N0YWNrTW9kZSk7CisKKyAgd2Mu c2libGluZyA9IEZSQU1FX09VVEVSX1dJTkRPVyAoZjIpOworICB3Yy5zdGFja19tb2RlID0g YWJvdmVfZmxhZyA/IEFib3ZlIDogQmVsb3c7CisgIGJsb2NrX2lucHV0ICgpOworICAvKiBD b25maWd1cmUgdGhlIHdpbmRvdyBtYW5hZ2VyIHdpbmRvdyAoYSBub3JtYWwgWENvbmZpZ3Vy ZVdpbmRvdworICAgICB3b24ndCBjdXQgaXQpLiAgVGhpcyBzaG91bGQgYWxzbyB3b3JrIGZv ciBjaGlsZCBmcmFtZXMuICAqLworICBYUmVjb25maWd1cmVXTVdpbmRvdyAoZHB5LCB3aW5k b3cxLCBGUkFNRV9YX1NDUkVFTl9OVU1CRVIgKGYxKSwgbWFzaywgJndjKTsKKyAgdW5ibG9j a19pbnB1dCAoKTsKKyNlbmRpZiAvKiBVU0VfR1RLICovCit9CisKKworREVGVU4gKCJ4LWZy YW1lLXJlc3RhY2siLCBGeF9mcmFtZV9yZXN0YWNrLCBTeF9mcmFtZV9yZXN0YWNrLCAyLCAz LCAwLAorICAgICAgIGRvYzogLyogUmVzdGFjayBGUkFNRTEgYmVsb3cgRlJBTUUyLgorVGhp cyBtZWFucyB0aGF0IGlmIGJvdGggZnJhbWVzIGFyZSB2aXNpYmxlIGFuZCB0aGUgZGlzcGxh eSBhcmVhcyBvZgordGhlc2UgZnJhbWVzIG92ZXJsYXAsIEZSQU1FMiAocGFydGlhbGx5KSBv YnNjdXJlcyBGUkFNRTEuICBJZiBvcHRpb25hbAordGhpcmQgYXJndW1lbnQgQUJPVkUgaXMg bm9uLW5pbCwgcmVzdGFjayBGUkFNRTEgYWJvdmUgRlJBTUUyLiAgVGhpcworbWVhbnMgdGhh dCBpZiBib3RoIGZyYW1lcyBhcmUgdmlzaWJsZSBhbmQgdGhlIGRpc3BsYXkgYXJlYXMgb2Yg dGhlc2UKK2ZyYW1lcyBvdmVybGFwLCBGUkFNRTEgKHBhcnRpYWxseSkgb2JzY3VyZXMgRlJB TUUyLgorCitUaGlzIG1heSBiZSB0aG91Z2h0IG9mIGFzIGFuIGF0b21pYyBhY3Rpb24gcGVy Zm9ybWVkIGluIHR3byBzdGVwczogVGhlCitmaXJzdCBzdGVwIHJlbW92ZXMgRlJBTUUxJ3Mg d2luZG93LXN0ZXAgd2luZG93IGZyb20gdGhlIGRpc3BsYXkuICBUaGUKK3NlY29uZCBzdGVw IHJlaW5zZXJ0cyBGUkFNRTEncyB3aW5kb3cgYmVsb3cgKGFib3ZlIGlmIEFCT1ZFIGlzIHRy dWUpCit0aGF0IG9mIEZSQU1FMi4gIEhlbmNlIHRoZSBwb3NpdGlvbiBvZiBGUkFNRTIgaW4g aXRzIGRpc3BsYXkncyBaCitcKHN0YWNraW5nKSBvcmRlciByZWxhdGl2ZSB0byBhbGwgb3Ro ZXIgZnJhbWVzIGV4Y2x1ZGluZyBGUkFNRTEgcmVtYWlucwordW5hbHRlcmVkLgorCitTb21l IHdpbmRvdyBtYW5hZ2VycyBtYXkgcmVmdXNlIHRvIHJlc3RhY2sgd2luZG93cy4gICovKQor ICAgICAoTGlzcF9PYmplY3QgZnJhbWUxLCBMaXNwX09iamVjdCBmcmFtZTIsIExpc3BfT2Jq ZWN0IGFib3ZlKQoreworICBzdHJ1Y3QgZnJhbWUgKmYxID0gZGVjb2RlX2xpdmVfZnJhbWUg KGZyYW1lMSk7CisgIHN0cnVjdCBmcmFtZSAqZjIgPSBkZWNvZGVfbGl2ZV9mcmFtZSAoZnJh bWUyKTsKKworICBpZiAoRlJBTUVfT1VURVJfV0lORE9XIChmMSkgJiYgRlJBTUVfT1VURVJf V0lORE9XIChmMikpCisgICAgeworICAgICAgeF9mcmFtZV9yZXN0YWNrIChmMSwgZjIsICFO SUxQIChhYm92ZSkpOworICAgICAgcmV0dXJuIFF0OworICAgIH0KKyAgZWxzZQorICAgIHsK KyAgICAgIGVycm9yICgiQ2Fubm90IHJlc3RhY2sgZnJhbWVzIik7CisgICAgICByZXR1cm4g UW5pbDsKKyAgICB9Cit9CisKKwogREVGVU4gKCJ4LW1vdXNlLWFic29sdXRlLXBpeGVsLXBv c2l0aW9uIiwgRnhfbW91c2VfYWJzb2x1dGVfcGl4ZWxfcG9zaXRpb24sCiAgICAgICAgU3hf bW91c2VfYWJzb2x1dGVfcGl4ZWxfcG9zaXRpb24sIDAsIDAsIDAsCiAgICAgICAgZG9jOiAv KiBSZXR1cm4gYWJzb2x1dGUgcG9zaXRpb24gb2YgbW91c2UgY3Vyc29yIGluIHBpeGVscy4K QEAgLTY5NzksNiArNzQwMCwxMiBAQCBGUkFNRVMgc2hvdWxkIGJlIG5pbCAodGhlIHNlbGVj dGVkIGZyYW1lKSwgYSBmcmFtZSwgb3IgYSBsaXN0IG9mCiAgIHhfc2V0X3N0aWNreSwKICAg eF9zZXRfdG9vbF9iYXJfcG9zaXRpb24sCiAgIHhfc2V0X2luaGliaXRfZG91YmxlX2J1ZmZl cmluZywKKyAgeF9zZXRfdW5kZWNvcmF0ZWQsCisgIHhfc2V0X3BhcmVudF9mcmFtZSwKKyAg eF9zZXRfc2tpcF90YXNrYmFyLAorICB4X3NldF9ub19mb2N1c19vbl9tYXAsCisgIHhfc2V0 X25vX2FjY2VwdF9mb2N1cywKKyAgeF9zZXRfel9ncm91cCwKIH07Cgogdm9pZApAQCAtNzE4 Myw2ICs3NjEwLDggQEAgRlJBTUVTIHNob3VsZCBiZSBuaWwgKHRoZSBzZWxlY3RlZCBmcmFt ZSksIGEgZnJhbWUsIG9yIGEgbGlzdCBvZgogICBkZWZzdWJyICgmU3hfZGlzcGxheV9tb25p dG9yX2F0dHJpYnV0ZXNfbGlzdCk7CiAgIGRlZnN1YnIgKCZTeF9mcmFtZV9nZW9tZXRyeSk7 CiAgIGRlZnN1YnIgKCZTeF9mcmFtZV9lZGdlcyk7CisgIGRlZnN1YnIgKCZTeF9mcmFtZV9s aXN0X3pfb3JkZXIpOworICBkZWZzdWJyICgmU3hfZnJhbWVfcmVzdGFjayk7CiAgIGRlZnN1 YnIgKCZTeF9tb3VzZV9hYnNvbHV0ZV9waXhlbF9wb3NpdGlvbik7CiAgIGRlZnN1YnIgKCZT eF9zZXRfbW91c2VfYWJzb2x1dGVfcGl4ZWxfcG9zaXRpb24pOwogICBkZWZzdWJyICgmU3hf d21fc2V0X3NpemVfaGludCk7CmRpZmYgLS1naXQgYS9zcmMveHRlcm0uYyBiL3NyYy94dGVy bS5jCmluZGV4IDM4MjI5YTUuLmJjZjcxMDcgMTAwNjQ0Ci0tLSBhL3NyYy94dGVybS5jCisr KyBiL3NyYy94dGVybS5jCkBAIC03MTQsNyArNzE0LDcgQEAgc3RydWN0IHJlY29yZAogI2Vu ZGlmCiB9Cgotc3RhdGljIHZvaWQKK3ZvaWQKIHhfZmlsbF9yZWN0YW5nbGUgKHN0cnVjdCBm cmFtZSAqZiwgR0MgZ2MsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQog ewogI2lmZGVmIFVTRV9DQUlSTwpAQCAtOTQ1LDExICs5NDUsMTQgQEAgc3RydWN0IHhfZGlz cGxheV9pbmZvICoKICAgICAgRG8gdGhpcyB1bmNvbmRpdGlvbmFsbHkgYXMgdGhpcyBmdW5j dGlvbiBpcyBjYWxsZWQgb24gcmVwYXJlbnQgd2hlbgogICAgICBhbHBoYSBoYXMgbm90IGNo YW5nZWQgb24gdGhlIGZyYW1lLiAgKi8KCi0gIHBhcmVudCA9IHhfZmluZF90b3Btb3N0X3Bh cmVudCAoZik7Ci0gIGlmIChwYXJlbnQgIT0gTm9uZSkKLSAgICBYQ2hhbmdlUHJvcGVydHkg KGRweSwgcGFyZW50LCBkcHlpbmZvLT5YYXRvbV9uZXRfd21fd2luZG93X29wYWNpdHksCi0g ICAgICAgICAgICAgICAgICAgICBYQV9DQVJESU5BTCwgMzIsIFByb3BNb2RlUmVwbGFjZSwK LSAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopICZvcGFjLCAxKTsKKyAg aWYgKCFGUkFNRV9QQVJFTlRfRlJBTUUgKGYpKQorICAgIHsKKyAgICAgIHBhcmVudCA9IHhf ZmluZF90b3Btb3N0X3BhcmVudCAoZik7CisgICAgICBpZiAocGFyZW50ICE9IE5vbmUpCisJ WENoYW5nZVByb3BlcnR5IChkcHksIHBhcmVudCwgZHB5aW5mby0+WGF0b21fbmV0X3dtX3dp bmRvd19vcGFjaXR5LAorCQkJIFhBX0NBUkRJTkFMLCAzMiwgUHJvcE1vZGVSZXBsYWNlLAor CQkJICh1bnNpZ25lZCBjaGFyICopICZvcGFjLCAxKTsKKyAgICB9CgogICAvKiByZXR1cm4g dW5sZXNzIG5lY2Vzc2FyeSAqLwogICB7CkBAIC0xMjkyLDggKzEyOTUsMTIgQEAgc3RydWN0 IHhfZGlzcGxheV9pbmZvICoKICAgICBzaG93X2JhY2tfYnVmZmVyIChmKTsKIH0KCi0vKiBD bGVhciB1bmRlciBpbnRlcm5hbCBib3JkZXIgaWYgYW55IChHVEsgaGFzIGl0cyBvd24gdmVy c2lvbikuICovCi0jaWZuZGVmIFVTRV9HVEsKKy8qKgorICogeF9jbGVhcl91bmRlcl9pbnRl cm5hbF9ib3JkZXI6CisgKgorICogQ2xlYXIgYXJlYSBvZiBmcmFtZSBGJ3MgaW50ZXJuYWwg Ym9yZGVyLiAgSWYgdGhlIGludGVybmFsIGJvcmRlciBmYWNlCisgKiBvZiBGIGhhcyBiZWVu IHNwZWNpZmllZCAoaXMgbm90IG51bGwpLCBmaWxsIHRoZSBhcmVhIHdpdGggdGhhdCBmYWNl LgorICovCiB2b2lkCiB4X2NsZWFyX3VuZGVyX2ludGVybmFsX2JvcmRlciAoc3RydWN0IGZy YW1lICpmKQogewpAQCAtMTMwMiwxNyArMTMwOSwzOSBAQCBzdHJ1Y3QgeF9kaXNwbGF5X2lu Zm8gKgogICAgICAgaW50IGJvcmRlciA9IEZSQU1FX0lOVEVSTkFMX0JPUkRFUl9XSURUSCAo Zik7CiAgICAgICBpbnQgd2lkdGggPSBGUkFNRV9QSVhFTF9XSURUSCAoZik7CiAgICAgICBp bnQgaGVpZ2h0ID0gRlJBTUVfUElYRUxfSEVJR0hUIChmKTsKKyNpZmRlZiBVU0VfR1RLCisg ICAgICBpbnQgbWFyZ2luID0gMDsKKyNlbHNlCiAgICAgICBpbnQgbWFyZ2luID0gRlJBTUVf VE9QX01BUkdJTl9IRUlHSFQgKGYpOworI2VuZGlmCisgICAgICBzdHJ1Y3QgZmFjZSAqZmFj ZSA9IEZBQ0VfRlJPTV9JRF9PUl9OVUxMIChmLCBJTlRFUk5BTF9CT1JERVJfRkFDRV9JRCk7 CgogICAgICAgYmxvY2tfaW5wdXQgKCk7Ci0gICAgICB4X2NsZWFyX2FyZWEgKGYsIDAsIDAs IGJvcmRlciwgaGVpZ2h0KTsKLSAgICAgIHhfY2xlYXJfYXJlYSAoZiwgMCwgbWFyZ2luLCB3 aWR0aCwgYm9yZGVyKTsKLSAgICAgIHhfY2xlYXJfYXJlYSAoZiwgd2lkdGggLSBib3JkZXIs IDAsIGJvcmRlciwgaGVpZ2h0KTsKLSAgICAgIHhfY2xlYXJfYXJlYSAoZiwgMCwgaGVpZ2h0 IC0gYm9yZGVyLCB3aWR0aCwgYm9yZGVyKTsKKworICAgICAgaWYgKGZhY2UpCisJeworCSAg dW5zaWduZWQgbG9uZyBjb2xvciA9IGZhY2UtPmJhY2tncm91bmQ7CisJICBEaXNwbGF5ICpk aXNwbGF5ID0gRlJBTUVfWF9ESVNQTEFZIChmKTsKKwkgIEdDIGdjID0gZi0+b3V0cHV0X2Rh dGEueC0+bm9ybWFsX2djOworCisJICBYU2V0Rm9yZWdyb3VuZCAoZGlzcGxheSwgZ2MsIGNv bG9yKTsKKwkgIHhfZmlsbF9yZWN0YW5nbGUgKGYsIGdjLCAwLCBtYXJnaW4sIHdpZHRoLCBi b3JkZXIpOworCSAgeF9maWxsX3JlY3RhbmdsZSAoZiwgZ2MsIDAsIDAsIGJvcmRlciwgaGVp Z2h0KTsKKwkgIHhfZmlsbF9yZWN0YW5nbGUgKGYsIGdjLCB3aWR0aCAtIGJvcmRlciwgMCwg Ym9yZGVyLCBoZWlnaHQpOworCSAgeF9maWxsX3JlY3RhbmdsZSAoZiwgZ2MsIDAsIGhlaWdo dCAtIGJvcmRlciwgd2lkdGgsIGJvcmRlcik7CisJICBYU2V0Rm9yZWdyb3VuZCAoZGlzcGxh eSwgZ2MsIEZSQU1FX0ZPUkVHUk9VTkRfUElYRUwgKGYpKTsKKwl9CisgICAgICBlbHNlCisJ eworCSAgeF9jbGVhcl9hcmVhIChmLCAwLCAwLCBib3JkZXIsIGhlaWdodCk7CisJICB4X2Ns ZWFyX2FyZWEgKGYsIDAsIG1hcmdpbiwgd2lkdGgsIGJvcmRlcik7CisJICB4X2NsZWFyX2Fy ZWEgKGYsIHdpZHRoIC0gYm9yZGVyLCAwLCBib3JkZXIsIGhlaWdodCk7CisJICB4X2NsZWFy X2FyZWEgKGYsIDAsIGhlaWdodCAtIGJvcmRlciwgd2lkdGgsIGJvcmRlcik7CisJfQorCiAg ICAgICB1bmJsb2NrX2lucHV0ICgpOwogICAgIH0KIH0KLSNlbmRpZgoKIC8qIERyYXcgdHJ1 bmNhdGlvbiBtYXJrIGJpdG1hcHMsIGNvbnRpbnVhdGlvbiBtYXJrIGJpdG1hcHMsIG92ZXJs YXkKICAgIGFycm93IGJpdG1hcHMsIG9yIGNsZWFyIHRoZSBmcmluZ2VzIGlmIG5vIGJpdG1h cHMgYXJlIHJlcXVpcmVkCkBAIC0xMzQ4LDEwICsxMzc3LDI1IEBAIHN0cnVjdCB4X2Rpc3Bs YXlfaW5mbyAqCiAJICAgIGhlaWdodCA+IDApKQogICAgICAgewogCWludCB5ID0gV0lORE9X X1RPX0ZSQU1FX1BJWEVMX1kgKHcsIG1heCAoMCwgZGVzaXJlZF9yb3ctPnkpKTsKKwlzdHJ1 Y3QgZmFjZSAqZmFjZSA9IEZBQ0VfRlJPTV9JRF9PUl9OVUxMIChmLCBJTlRFUk5BTF9CT1JE RVJfRkFDRV9JRCk7CgogCWJsb2NrX2lucHV0ICgpOwotCXhfY2xlYXJfYXJlYSAoZiwgMCwg eSwgd2lkdGgsIGhlaWdodCk7Ci0JeF9jbGVhcl9hcmVhIChmLCBGUkFNRV9QSVhFTF9XSURU SCAoZikgLSB3aWR0aCwgeSwgd2lkdGgsIGhlaWdodCk7CisJaWYgKGZhY2UpCisJICB7CisJ ICAgIHVuc2lnbmVkIGxvbmcgY29sb3IgPSBmYWNlLT5iYWNrZ3JvdW5kOworCSAgICBEaXNw bGF5ICpkaXNwbGF5ID0gRlJBTUVfWF9ESVNQTEFZIChmKTsKKworCSAgICBYU2V0Rm9yZWdy b3VuZCAoZGlzcGxheSwgZi0+b3V0cHV0X2RhdGEueC0+bm9ybWFsX2djLCBjb2xvcik7CisJ ICAgIHhfZmlsbF9yZWN0YW5nbGUgKGYsIGYtPm91dHB1dF9kYXRhLngtPm5vcm1hbF9nYywK KwkJCSAgICAgIDAsIHksIHdpZHRoLCBoZWlnaHQpOworCSAgICB4X2ZpbGxfcmVjdGFuZ2xl IChmLCBmLT5vdXRwdXRfZGF0YS54LT5ub3JtYWxfZ2MsCisJCQkgICAgICBGUkFNRV9QSVhF TF9XSURUSCAoZikgLSB3aWR0aCwgeSwgd2lkdGgsIGhlaWdodCk7CisJICB9CisJZWxzZQor CSAgeworCSAgICB4X2NsZWFyX2FyZWEgKGYsIDAsIHksIHdpZHRoLCBoZWlnaHQpOworCSAg ICB4X2NsZWFyX2FyZWEgKGYsIEZSQU1FX1BJWEVMX1dJRFRIIChmKSAtIHdpZHRoLCB5LCB3 aWR0aCwgaGVpZ2h0KTsKKwkgIH0KIAl1bmJsb2NrX2lucHV0ICgpOwogICAgICAgfQogICB9 CkBAIC0zODM1LDExICszODc5LDExIEBAIFN0YXR1cyB4X3BhcnNlX2NvbG9yIChzdHJ1Y3Qg ZnJhbWUgKmYsIGNvbnN0IGNoYXIgKmNvbG9yX25hbWUsCiAgIGNhaXJvX2ZpbGwgKGNyKTsK ICAgeF9lbmRfY3JfY2xpcCAoZik7CiAjZWxzZQotICAgIGlmIChGUkFNRV9YX0RPVUJMRV9C VUZGRVJFRF9QIChmKSkKLSAgICAgIFhGaWxsUmVjdGFuZ2xlIChGUkFNRV9YX0RJU1BMQVkg KGYpLAotICAgICAgICAgICAgICAgICAgICAgIEZSQU1FX1hfRFJBV0FCTEUgKGYpLAotICAg ICAgICAgICAgICAgICAgICAgIGYtPm91dHB1dF9kYXRhLngtPnJldmVyc2VfZ2MsCi0gICAg ICAgICAgICAgICAgICAgICAgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgIGlmIChGUkFNRV9Y X0RPVUJMRV9CVUZGRVJFRF9QIChmKSkKKyAgICBYRmlsbFJlY3RhbmdsZSAoRlJBTUVfWF9E SVNQTEFZIChmKSwKKwkJICAgIEZSQU1FX1hfRFJBV0FCTEUgKGYpLAorCQkgICAgZi0+b3V0 cHV0X2RhdGEueC0+cmV2ZXJzZV9nYywKKwkJICAgIHgsIHksIHdpZHRoLCBoZWlnaHQpOwog ICBlbHNlCiAgICAgeF9jbGVhcl9hcmVhMSAoRlJBTUVfWF9ESVNQTEFZIChmKSwgRlJBTUVf WF9XSU5ET1cgKGYpLAogICAgICAgICAgICAgICAgICAgIHgsIHksIHdpZHRoLCBoZWlnaHQs IEZhbHNlKTsKQEAgLTQ5NTMsNiArNDk5Nyw5IEBAIHN0cnVjdCBmcmFtZSAqCiAJIGNvbnRh aW5pbmcgdGhlIHBvaW50ZXIuICAqLwogICAgICAgewogCVdpbmRvdyB3aW4sIGNoaWxkOwor I2lmZGVmIFVTRV9HVEsKKwlXaW5kb3cgZmlyc3Rfd2luID0gMDsKKyNlbmRpZgogCWludCB3 aW5feCwgd2luX3k7CiAJaW50IHBhcmVudF94ID0gMCwgcGFyZW50X3kgPSAwOwoKQEAgLTQ5 OTksMjAgKzUwNDYsMzcgQEAgc3RydWN0IGZyYW1lICoKIAkJCQkgICAgICAgJmNoaWxkKTsK CiAJCWlmIChjaGlsZCA9PSBOb25lIHx8IGNoaWxkID09IHdpbikKLQkJICBicmVhazsKKwkJ ICB7CisjaWZkZWYgVVNFX0dUSworCQkgICAgLyogT24gR1RLIHdlIGhhdmUgbm90IGluc3Bl Y3RlZCBXSU4geWV0LiAgSWYgaXQgaGFzCisJCSAgICAgICBhIGZyYW1lIGFuZCB0aGF0IGZy YW1lIGhhcyBhIHBhcmVudCwgdXNlIGl0LiAgKi8KKwkJICAgIHN0cnVjdCBmcmFtZSAqZiA9 IHhfd2luZG93X3RvX2ZyYW1lIChkcHlpbmZvLCB3aW4pOworCisJCSAgICBpZiAoZiAmJiBG UkFNRV9QQVJFTlRfRlJBTUUgKGYpKQorCQkgICAgICBmaXJzdF93aW4gPSB3aW47CisjZW5k aWYKKwkJICAgIGJyZWFrOworCQkgIH0KICNpZmRlZiBVU0VfR1RLCiAJCS8qIFdlIGRvbid0 IHdhbid0IHRvIGtub3cgdGhlIGlubmVybW9zdCB3aW5kb3cuICBXZQogCQkgICB3YW50IHRo ZSBlZGl0IHdpbmRvdy4gIEZvciBub24tR3RrKyB0aGUgaW5uZXJtb3N0CiAJCSAgIHdpbmRv dyBpcyB0aGUgZWRpdCB3aW5kb3cuICBGb3IgR3RrKyBpdCBtaWdodCBub3QKIAkJICAgYmUu ICBJdCBtaWdodCBiZSB0aGUgdG9vbCBiYXIgZm9yIGV4YW1wbGUuICAqLwogCQlpZiAoeF93 aW5kb3dfdG9fZnJhbWUgKGRweWluZm8sIHdpbikpCi0JCSAgYnJlYWs7CisJCSAgLyogQnV0 IGRvbid0IGh1cnJ5LiAgV2UgbWlnaHQgZmluZCBhIGNoaWxkIGZyYW1lCisJCSAgICAgYmVu ZWF0aC4gICovCisJCSAgZmlyc3Rfd2luID0gd2luOwogI2VuZGlmCiAJCXdpbiA9IGNoaWxk OwogCQlwYXJlbnRfeCA9IHdpbl94OwogCQlwYXJlbnRfeSA9IHdpbl95OwogCSAgICAgIH0K CisjaWZkZWYgVVNFX0dUSworCSAgICBpZiAoZmlyc3Rfd2luKQorCSAgICAgIHdpbiA9IGZp cnN0X3dpbjsKKyNlbmRpZgorCiAJICAgIC8qIE5vdyB3ZSBrbm93IHRoYXQ6CiAJICAgICAg IHdpbiBpcyB0aGUgaW5uZXJtb3N0IHdpbmRvdyBjb250YWluaW5nIHRoZSBwb2ludGVyCiAJ ICAgICAgIChYVEMgc2F5cyBpdCBoYXMgbm8gY2hpbGQgY29udGFpbmluZyB0aGUgcG9pbnRl ciksCkBAIC01MjczLDIwICs1MzM3LDIyIEBAIHN0YXRpYyB2b2lkIHhfc2VuZF9zY3JvbGxf YmFyX2V2ZW50IChMaXNwX09iamVjdCwgZW51bSBzY3JvbGxfYmFyX3BhcnQsCiAgICAgICB4 X3NlbmRfc2Nyb2xsX2Jhcl9ldmVudCAod2luZG93X2JlaW5nX3Njcm9sbGVkLAogCQkJICAg ICAgIHNjcm9sbF9iYXJfZW5kX3Njcm9sbCwgMCwgMCwgdHJ1ZSk7CiAgICAgICB3ID0gWFdJ TkRPVyAod2luZG93X2JlaW5nX3Njcm9sbGVkKTsKLSAgICAgIGJhciA9IFhTQ1JPTExfQkFS ICh3LT5ob3Jpem9udGFsX3Njcm9sbF9iYXIpOwotCi0gICAgICBpZiAoYmFyLT5kcmFnZ2lu ZyAhPSAtMSkKKyAgICAgIGlmICghTklMUCAody0+aG9yaXpvbnRhbF9zY3JvbGxfYmFyKSkK IAl7Ci0JICBiYXItPmRyYWdnaW5nID0gLTE7Ci0JICAvKiBUaGUgdGh1bWIgc2l6ZSBpcyBp bmNvcnJlY3Qgd2hpbGUgZHJhZ2dpbmc6IGZpeCBpdC4gICovCi0JICBzZXRfaG9yaXpvbnRh bF9zY3JvbGxfYmFyICh3KTsKLQl9Ci0gICAgICB3aW5kb3dfYmVpbmdfc2Nyb2xsZWQgPSBR bmlsOworCSAgYmFyID0gWFNDUk9MTF9CQVIgKHctPmhvcml6b250YWxfc2Nyb2xsX2Jhcik7 CisJICBpZiAoYmFyLT5kcmFnZ2luZyAhPSAtMSkKKwkgICAgeworCSAgICAgIGJhci0+ZHJh Z2dpbmcgPSAtMTsKKwkgICAgICAvKiBUaGUgdGh1bWIgc2l6ZSBpcyBpbmNvcnJlY3Qgd2hp bGUgZHJhZ2dpbmc6IGZpeCBpdC4gICovCisJICAgICAgc2V0X2hvcml6b250YWxfc2Nyb2xs X2JhciAodyk7CisJICAgIH0KKwkgIHdpbmRvd19iZWluZ19zY3JvbGxlZCA9IFFuaWw7CiAj aWYgZGVmaW5lZCAoVVNFX0xVQ0lEKQotICAgICAgYmFyLT5sYXN0X3NlZW5fcGFydCA9IHNj cm9sbF9iYXJfbm93aGVyZTsKKwkgIGJhci0+bGFzdF9zZWVuX3BhcnQgPSBzY3JvbGxfYmFy X25vd2hlcmU7CiAjZW5kaWYKLSAgICAgIC8qIFh0IHRpbWVvdXRzIG5vIGxvbmdlciBuZWVk ZWQuICAqLwotICAgICAgdG9vbGtpdF9zY3JvbGxfYmFyX2ludGVyYWN0aW9uID0gZmFsc2U7 CisJICAvKiBYdCB0aW1lb3V0cyBubyBsb25nZXIgbmVlZGVkLiAgKi8KKwkgIHRvb2xraXRf c2Nyb2xsX2Jhcl9pbnRlcmFjdGlvbiA9IGZhbHNlOworCX0KICAgICB9CiB9CiAjZW5kaWYg Lyogbm90IFVTRV9HVEsgKi8KQEAgLTY0ODUsMTAgKzY1NTEsMTQgQEAgc3RhdGljIHZvaWQg eF9zZW5kX3Njcm9sbF9iYXJfZXZlbnQgKExpc3BfT2JqZWN0LCBlbnVtIHNjcm9sbF9iYXJf cGFydCwKICAgICBXaWRnZXQgc2Nyb2xsX2JhciA9IFNDUk9MTF9CQVJfWF9XSURHRVQgKEZS QU1FX1hfRElTUExBWSAoZiksIGJhcik7CiAgICAgWHRDb25maWd1cmVXaWRnZXQgKHNjcm9s bF9iYXIsIGxlZnQsIHRvcCwgd2lkdGgsIG1heCAoaGVpZ2h0LCAxKSwgMCk7CiAgICAgWHRN YXBXaWRnZXQgKHNjcm9sbF9iYXIpOworICAgIC8qIERvbid0IG9ic2N1cmUgYW55IGNoaWxk IGZyYW1lcy4gICovCisgICAgWExvd2VyV2luZG93IChGUkFNRV9YX0RJU1BMQVkgKGYpLCBi YXItPnhfd2luZG93KTsKICNlbmRpZiAvKiBub3QgVVNFX0dUSyAqLwogICAgIH0KICNlbHNl IC8qIG5vdCBVU0VfVE9PTEtJVF9TQ1JPTExfQkFSUyAqLwotICBYTWFwUmFpc2VkIChGUkFN RV9YX0RJU1BMQVkgKGYpLCBiYXItPnhfd2luZG93KTsKKyAgWE1hcFdpbmRvdyAoRlJBTUVf WF9ESVNQTEFZIChmKSwgYmFyLT54X3dpbmRvdyk7CisgIC8qIERvbid0IG9ic2N1cmUgYW55 IGNoaWxkIGZyYW1lcy4gICovCisgIFhMb3dlcldpbmRvdyAoRlJBTUVfWF9ESVNQTEFZIChm KSwgYmFyLT54X3dpbmRvdyk7CiAjZW5kaWYgLyogbm90IFVTRV9UT09MS0lUX1NDUk9MTF9C QVJTICovCgogICB1bmJsb2NrX2lucHV0ICgpOwpAQCAtNzA1NiwxMCArNzEyNiwxMCBAQCBz dGF0aWMgdm9pZCB4X3NlbmRfc2Nyb2xsX2Jhcl9ldmVudCAoTGlzcF9PYmplY3QsIGVudW0g c2Nyb2xsX2Jhcl9wYXJ0LAogCQkgIC8qIHgsIHksIHdpZHRoLCBoZWlnaHQgKi8KIAkJICAw LCAwLCBiYXItPndpZHRoIC0gMSwgYmFyLT5oZWlnaHQgLSAxKTsKCi0gICAvKiBSZXN0b3Jl IHRoZSBmb3JlZ3JvdW5kIGNvbG9yIG9mIHRoZSBHQyBpZiB3ZSBjaGFuZ2VkIGl0IGFib3Zl LiAgKi8KLSAgIGlmIChmLT5vdXRwdXRfZGF0YS54LT5zY3JvbGxfYmFyX2ZvcmVncm91bmRf cGl4ZWwgIT0gLTEpCi0gICAgIFhTZXRGb3JlZ3JvdW5kIChGUkFNRV9YX0RJU1BMQVkgKGYp LCBnYywKLQkJICAgICBGUkFNRV9GT1JFR1JPVU5EX1BJWEVMIChmKSk7CisgIC8qIFJlc3Rv cmUgdGhlIGZvcmVncm91bmQgY29sb3Igb2YgdGhlIEdDIGlmIHdlIGNoYW5nZWQgaXQgYWJv dmUuICAqLworICBpZiAoZi0+b3V0cHV0X2RhdGEueC0+c2Nyb2xsX2Jhcl9mb3JlZ3JvdW5k X3BpeGVsICE9IC0xKQorICAgIFhTZXRGb3JlZ3JvdW5kIChGUkFNRV9YX0RJU1BMQVkgKGYp LCBnYywKKwkJICAgIEZSQU1FX0ZPUkVHUk9VTkRfUElYRUwgKGYpKTsKCiAgICB1bmJsb2Nr X2lucHV0ICgpOwoKQEAgLTc4MjgsOCArNzg5OCwyMSBAQCBzdGF0aWMgdm9pZCB4ZW1iZWRf c2VuZF9tZXNzYWdlIChzdHJ1Y3QgZnJhbWUgKmYsIFRpbWUsCiAgICAgICBmID0geF90b3Bf d2luZG93X3RvX2ZyYW1lIChkcHlpbmZvLCBldmVudC0+eHJlcGFyZW50LndpbmRvdyk7CiAg ICAgICBpZiAoZikKICAgICAgICAgewotICAgICAgICAgIGYtPm91dHB1dF9kYXRhLngtPnBh cmVudF9kZXNjID0gZXZlbnQtPnhyZXBhcmVudC5wYXJlbnQ7Ci0gICAgICAgICAgeF9yZWFs X3Bvc2l0aW9ucyAoZiwgJmYtPmxlZnRfcG9zLCAmZi0+dG9wX3Bvcyk7CisJICAvKiBNYXli ZSB3ZSBzaG91bGRuJ3Qgc2V0IHRoaXMgZm9yIGNoaWxkIGZyYW1lcyA/PyAgKi8KKwkgIGYt Pm91dHB1dF9kYXRhLngtPnBhcmVudF9kZXNjID0gZXZlbnQtPnhyZXBhcmVudC5wYXJlbnQ7 CisJICBpZiAoIUZSQU1FX1BBUkVOVF9GUkFNRSAoZikpCisJICAgIHhfcmVhbF9wb3NpdGlv bnMgKGYsICZmLT5sZWZ0X3BvcywgJmYtPnRvcF9wb3MpOworCSAgZWxzZQorCSAgICB7CisJ ICAgICAgV2luZG93IHJvb3Q7CisJICAgICAgdW5zaWduZWQgaW50IGR1bW15X3VpbnQ7CisK KwkgICAgICBibG9ja19pbnB1dCAoKTsKKwkgICAgICBYR2V0R2VvbWV0cnkgKEZSQU1FX1hf RElTUExBWSAoZiksIEZSQU1FX09VVEVSX1dJTkRPVyAoZiksCisJCQkgICAgJnJvb3QsICZm LT5sZWZ0X3BvcywgJmYtPnRvcF9wb3MsCisJCQkgICAgJmR1bW15X3VpbnQsICZkdW1teV91 aW50LCAmZHVtbXlfdWludCwgJmR1bW15X3VpbnQpOworCSAgICAgIHVuYmxvY2tfaW5wdXQg KCk7CisJICAgIH0KCiAgICAgICAgICAgLyogUGVyaGFwcyByZXBhcmVudGVkIGR1ZSB0byBh IFdNIHJlc3RhcnQuICBSZXNldCB0aGlzLiAgKi8KICAgICAgICAgICBGUkFNRV9ESVNQTEFZ X0lORk8gKGYpLT53bV90eXBlID0gWF9XTVRZUEVfVU5LTk9XTjsKQEAgLTc4NjksNiArNzk1 Miw3IEBAIHN0YXRpYyB2b2lkIHhlbWJlZF9zZW5kX21lc3NhZ2UgKHN0cnVjdCBmcmFtZSAq ZiwgVGltZSwKICAgICAgICAgICAgICAgICBldmVudC0+eGV4cG9zZS54LCBldmVudC0+eGV4 cG9zZS55LAogICAgICAgICAgICAgICAgIGV2ZW50LT54ZXhwb3NlLndpZHRoLCBldmVudC0+ eGV4cG9zZS5oZWlnaHQsCiAgICAgICAgICAgICAgICAgMCk7CisJICAgICAgeF9jbGVhcl91 bmRlcl9pbnRlcm5hbF9ib3JkZXIgKGYpOwogI2VuZGlmCiAgICAgICAgICAgICB9CgpAQCAt Nzg4NCw2ICs3OTY4LDkgQEAgc3RhdGljIHZvaWQgeGVtYmVkX3NlbmRfbWVzc2FnZSAoc3Ry dWN0IGZyYW1lICpmLCBUaW1lLAogI2VuZGlmCiAgICAgICAgICAgICAgIGV4cG9zZV9mcmFt ZSAoZiwgZXZlbnQtPnhleHBvc2UueCwgZXZlbnQtPnhleHBvc2UueSwKIAkJCSAgICBldmVu dC0+eGV4cG9zZS53aWR0aCwgZXZlbnQtPnhleHBvc2UuaGVpZ2h0KTsKKyNpZmRlZiBVU0Vf R1RLCisJICAgICAgeF9jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIgKGYpOworI2VuZGlm CiAgICAgICAgICAgICB9CgogICAgICAgICAgIGlmICghRlJBTUVfR0FSQkFHRURfUCAoZikp CkBAIC03OTMyLDcgKzgwMTksMTAgQEAgc3RhdGljIHZvaWQgeGVtYmVkX3NlbmRfbWVzc2Fn ZSAoc3RydWN0IGZyYW1lICpmLCBUaW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgZXZl bnQtPnhncmFwaGljc2V4cG9zZS55LAogICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQt PnhncmFwaGljc2V4cG9zZS53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50 LT54Z3JhcGhpY3NleHBvc2UuaGVpZ2h0KTsKLSAgICAgICAgICBzaG93X2JhY2tfYnVmZmVy IChmKTsKKyNpZmRlZiBVU0VfR1RLCisJICB4X2NsZWFyX3VuZGVyX2ludGVybmFsX2JvcmRl ciAoZik7CisjZW5kaWYKKwkgIHNob3dfYmFja19idWZmZXIgKGYpOwogICAgICAgICB9CiAj aWZkZWYgVVNFX1hfVE9PTEtJVAogICAgICAgZWxzZQpAQCAtNzk4OSw3ICs4MDc5LDE2IEBA IHN0YXRpYyB2b2lkIHhlbWJlZF9zZW5kX21lc3NhZ2UgKHN0cnVjdCBmcmFtZSAqZiwgVGlt ZSwKICAgICAgICAgICAvKiBDaGVjayBpZiBmdWxsc2NyZWVuIHdhcyBzcGVjaWZpZWQgYmVm b3JlIHdlIHdoZXJlIG1hcHBlZCB0aGUKICAgICAgICAgICAgICBmaXJzdCB0aW1lLCBpLmUu IGZyb20gdGhlIGNvbW1hbmQgbGluZS4gICovCiAgICAgICAgICAgaWYgKCFmLT5vdXRwdXRf ZGF0YS54LT5oYXNfYmVlbl92aXNpYmxlKQotICAgICAgICAgICAgeF9jaGVja19mdWxsc2Ny ZWVuIChmKTsKKwkgICAgeworCisJICAgICAgeF9jaGVja19mdWxsc2NyZWVuIChmKTsKKyNp Zm5kZWYgVVNFX0dUSworCSAgICAgIC8qIEZvciBzeXN0ZW1zIHRoYXQgY2Fubm90IHN5bnRo ZXNpemUgYHNraXBfdGFza2JhcicgZm9yCisJCSB1bm1hcHBlZCB3aW5kb3dzIGRvIHRoZSBm b2xsb3dpbmcuICAqLworCSAgICAgIGlmIChGUkFNRV9TS0lQX1RBU0tCQVIgKGYpKQorCQl4 X3NldF9za2lwX3Rhc2tiYXIgKGYsIFF0LCBRbmlsKTsKKyNlbmRpZiAvKiBOb3QgVVNFX0dU SyAqLworCSAgICB9CgogICAgICAgICAgIFNFVF9GUkFNRV9WSVNJQkxFIChmLCAxKTsKICAg ICAgICAgICBTRVRfRlJBTUVfSUNPTklGSUVEIChmLCBmYWxzZSk7CkBAIC04NDMzLDEwICs4 NTMyLDE3IEBAIHN0YXRpYyB2b2lkIHhlbWJlZF9zZW5kX21lc3NhZ2UgKHN0cnVjdCBmcmFt ZSAqZiwgVGltZSwKICNlbmRpZgogICAgICAgICBpZiAoZikKICAgICAgICAgICB7Ci0KLSAg ICAgICAgICAgIC8qIEdlbmVyYXRlIFNFTEVDVF9XSU5ET1dfRVZFTlRzIHdoZW4gbmVlZGVk LgotICAgICAgICAgICAgICAgRG9uJ3QgbGV0IHBvcHVwIG1lbnVzIGluZmx1ZW5jZSB0aGlu Z3MgKGJ1ZyMxMjYxKS4gICovCi0gICAgICAgICAgICBpZiAoIU5JTFAgKFZtb3VzZV9hdXRv c2VsZWN0X3dpbmRvdykgJiYgIXBvcHVwX2FjdGl2YXRlZCAoKSkKKwkgICAgICAvKiBNYXli ZSBnZW5lcmF0ZSBTRUxFQ1RfV0lORE9XX0VWRU5UcyBmb3IKKwkJIGBtb3VzZS1hdXRvc2Vs ZWN0LXdpbmRvdycgYnV0IGRvbid0IGxldCBwb3B1cCBtZW51cworCQkgaW50ZXJmZXJlIHdp dGggdGhpcyAoQnVnIzEyNjEpLiAgKi8KKyAgICAgICAgICAgIGlmICghTklMUCAoVm1vdXNl X2F1dG9zZWxlY3Rfd2luZG93KQorCQkmJiAhcG9wdXBfYWN0aXZhdGVkICgpCisJCSYmIChm ID09IGRweWluZm8tPnhfaGlnaGxpZ2h0X2ZyYW1lCisJCSAgICAvKiBTd2l0Y2ggdG8gZiBm cm9tIGFub3RoZXIgZnJhbWUgaWZmCisJCSAgICAgICBmb2N1c19mb2xsb3dzX21vdXNlIGlz IHNldCBhbmQgZidzCisJCSAgICAgICBub19hY2NlcHRfZm9jdXMgcGFyYW1ldGVyIGlzIG5p bC4gICovCisJCSAgICB8fCAoIU5JTFAgKGZvY3VzX2ZvbGxvd3NfbW91c2UpCisJCQkmJiAh RlJBTUVfTk9fRk9DVVNfT05fTUFQIChmKSkpKQogCSAgICAgIHsKIAkJc3RhdGljIExpc3Bf T2JqZWN0IGxhc3RfbW91c2Vfd2luZG93OwogCQlMaXNwX09iamVjdCB3aW5kb3cgPSB3aW5k b3dfZnJvbV9jb29yZGluYXRlcwpAQCAtODQ0NywxMyArODU1Myw3IEBAIHN0YXRpYyB2b2lk IHhlbWJlZF9zZW5kX21lc3NhZ2UgKHN0cnVjdCBmcmFtZSAqZiwgVGltZSwKIAkJICAgd2ls bCBiZSBzZWxlY3RlZCBvbmx5IHdoZW4gaXQgaXMgYWN0aXZlLiAgKi8KIAkJaWYgKFdJTkRP V1AgKHdpbmRvdykKIAkJICAgICYmICFFUSAod2luZG93LCBsYXN0X21vdXNlX3dpbmRvdykK LQkJICAgICYmICFFUSAod2luZG93LCBzZWxlY3RlZF93aW5kb3cpCi0JCSAgICAvKiBGb3Ig Y2xpY2stdG8tZm9jdXMgd2luZG93IG1hbmFnZXJzCi0JCSAgICAgICBjcmVhdGUgZXZlbnQg aWZmIHdlIGRvbid0IGxlYXZlIHRoZQotCQkgICAgICAgc2VsZWN0ZWQgZnJhbWUuICAqLwot CQkgICAgJiYgKGZvY3VzX2ZvbGxvd3NfbW91c2UKLQkJCXx8IChFUSAoWFdJTkRPVyAod2lu ZG93KS0+ZnJhbWUsCi0JCQkJWFdJTkRPVyAoc2VsZWN0ZWRfd2luZG93KS0+ZnJhbWUpKSkp CisJCSAgICAmJiAhRVEgKHdpbmRvdywgc2VsZWN0ZWRfd2luZG93KSkKIAkJICB7CiAJCSAg ICBpbmV2LmllLmtpbmQgPSBTRUxFQ1RfV0lORE9XX0VWRU5UOwogCQkgICAgaW5ldi5pZS5m cmFtZV9vcl93aW5kb3cgPSB3aW5kb3c7CkBAIC04NjAxLDcgKzg3MDEsMzQgQEAgc3RhdGlj IHZvaWQgeGVtYmVkX3NlbmRfbWVzc2FnZSAoc3RydWN0IGZyYW1lICpmLCBUaW1lLAogICAg ICAgICAgIGlmIChGUkFNRV9HVEtfT1VURVJfV0lER0VUIChmKQogICAgICAgICAgICAgICAm JiBndGtfd2lkZ2V0X2dldF9tYXBwZWQgKEZSQU1FX0dUS19PVVRFUl9XSURHRVQgKGYpKSkK ICNlbmRpZgotCSAgICB4X3JlYWxfcG9zaXRpb25zIChmLCAmZi0+bGVmdF9wb3MsICZmLT50 b3BfcG9zKTsKKwkgICAgeworCSAgICAgIGludCBvbGRfbGVmdCA9IGYtPmxlZnRfcG9zOwor CSAgICAgIGludCBvbGRfdG9wID0gZi0+dG9wX3BvczsKKwkgICAgICBMaXNwX09iamVjdCBm cmFtZSA9IFFuaWw7CisKKwkgICAgICBYU0VURlJBTUUgKGZyYW1lLCBmKTsKKworCSAgICAg IGlmICghRlJBTUVfUEFSRU5UX0ZSQU1FIChmKSkKKwkJeF9yZWFsX3Bvc2l0aW9ucyAoZiwg JmYtPmxlZnRfcG9zLCAmZi0+dG9wX3Bvcyk7CisJICAgICAgZWxzZQorCQl7CisJCSAgV2lu ZG93IHJvb3Q7CisJCSAgdW5zaWduZWQgaW50IGR1bW15X3VpbnQ7CisKKwkJICBibG9ja19p bnB1dCAoKTsKKwkJICBYR2V0R2VvbWV0cnkgKEZSQU1FX1hfRElTUExBWSAoZiksIEZSQU1F X09VVEVSX1dJTkRPVyAoZiksCisJCQkJJnJvb3QsICZmLT5sZWZ0X3BvcywgJmYtPnRvcF9w b3MsCisJCQkJJmR1bW15X3VpbnQsICZkdW1teV91aW50LCAmZHVtbXlfdWludCwgJmR1bW15 X3VpbnQpOworCQkgIHVuYmxvY2tfaW5wdXQgKCk7CisJCX0KKworCSAgICAgIGlmIChvbGRf bGVmdCAhPSBmLT5sZWZ0X3BvcyB8fCBvbGRfdG9wICE9IGYtPnRvcF9wb3MpCisJCXsKKwkJ ICBpbmV2LmllLmtpbmQgPSBNT1ZFX0ZSQU1FX0VWRU5UOworCQkgIFhTRVRGUkFNRSAoaW5l di5pZS5mcmFtZV9vcl93aW5kb3csIGYpOworCQl9CisJICAgIH0KKwoKICNpZmRlZiBIQVZF X1hfSTE4TgogICAgICAgICAgIGlmIChGUkFNRV9YSUMgKGYpICYmIChGUkFNRV9YSUNfU1RZ TEUgKGYpICYgWElNU3RhdHVzQXJlYSkpCkBAIC04NjIyLDggKzg3NDksMzcgQEAgc3RhdGlj IHZvaWQgeGVtYmVkX3NlbmRfbWVzc2FnZSAoc3RydWN0IGZyYW1lICpmLCBUaW1lLAogCWRw eWluZm8tPmxhc3RfbW91c2VfZ2x5cGhfZnJhbWUgPSBOVUxMOwogCXhfZGlzcGxheV9zZXRf bGFzdF91c2VyX3RpbWUgKGRweWluZm8sIGV2ZW50LT54YnV0dG9uLnRpbWUpOwoKLSAgICAg ICAgZiA9ICh4X21vdXNlX2dyYWJiZWQgKGRweWluZm8pID8gZHB5aW5mby0+bGFzdF9tb3Vz ZV9mcmFtZQotCSAgICAgOiB4X3dpbmRvd190b19mcmFtZSAoZHB5aW5mbywgZXZlbnQtPnhi dXR0b24ud2luZG93KSk7CisJaWYgKHhfbW91c2VfZ3JhYmJlZCAoZHB5aW5mbykpCisJICBm ID0gZHB5aW5mby0+bGFzdF9tb3VzZV9mcmFtZTsKKwllbHNlCisJICB7CisJICAgIGYgPSB4 X3dpbmRvd190b19mcmFtZSAoZHB5aW5mbywgZXZlbnQtPnhidXR0b24ud2luZG93KTsKKwor CSAgICBpZiAoZiAmJiBldmVudC0+eGJ1dHRvbi50eXBlID09IEJ1dHRvblByZXNzCisJCSYm ICFwb3B1cF9hY3RpdmF0ZWQgKCkKKwkJJiYgIXhfd2luZG93X3RvX3Njcm9sbF9iYXIgKGV2 ZW50LT54YnV0dG9uLmRpc3BsYXksCisJCQkJCSAgICBldmVudC0+eGJ1dHRvbi53aW5kb3cs IDIpCisJCSYmICFGUkFNRV9OT19GT0NVU19PTl9NQVAgKGYpKQorCSAgICAgIHsKKwkJLyog V2hlbiBjbGlja2luZyBpbnRvIGEgY2hpbGQgZnJhbWUgb3Igd2hlbiBjbGlja2luZworCQkg ICBpbnRvIGEgcGFyZW50IGZyYW1lIHdpdGggdGhlIGNoaWxkIGZyYW1lIHNlbGVjdGVkIGFu ZAorCQkgICBgbm8tYWNjZXB0LWZvY3VzJyBpcyBub3Qgc2V0LCBzZWxlY3QgdGhlIGNsaWNr ZWQKKwkJICAgZnJhbWUuICAqLworCQlzdHJ1Y3QgZnJhbWUgKmhmID0gZHB5aW5mby0+eF9o aWdobGlnaHRfZnJhbWU7CisKKwkJaWYgKEZSQU1FX1BBUkVOVF9GUkFNRSAoZikKKwkJICAg IHx8IChoZiAmJiBGUkFNRV9MSVZFX1AgKGhmKQorCQkJJiYgZiA9PSBGUkFNRV9QQVJFTlRf RlJBTUUgKGhmKSkpCisJCSAgeworCQkgICAgYmxvY2tfaW5wdXQgKCk7CisJCSAgICBYU2V0 SW5wdXRGb2N1cyAoRlJBTUVfWF9ESVNQTEFZIChmKSwgRlJBTUVfT1VURVJfV0lORE9XIChm KSwKKwkJCQkgICAgUmV2ZXJ0VG9QYXJlbnQsIEN1cnJlbnRUaW1lKTsKKwkJICAgIGlmIChG UkFNRV9QQVJFTlRfRlJBTUUgKGYpKQorCQkgICAgICBYUmFpc2VXaW5kb3cgKEZSQU1FX1hf RElTUExBWSAoZiksIEZSQU1FX09VVEVSX1dJTkRPVyAoZikpOworCQkgICAgdW5ibG9ja19p bnB1dCAoKTsKKwkJICB9CisJICAgICAgfQorCSAgfQoKICNpZmRlZiBVU0VfR1RLCiAgICAg ICAgIGlmIChmICYmIHhnX2V2ZW50X2lzX2Zvcl9zY3JvbGxiYXIgKGYsIGV2ZW50KSkKQEAg LTEwMDYxLDcgKzEwMjE3LDcgQEAgc3RydWN0IHhfZXJyb3JfbWVzc2FnZV9zdGFjayB7CiAg ICAgfQoKICAgWE1vdmVXaW5kb3cgKEZSQU1FX1hfRElTUExBWSAoZiksIEZSQU1FX09VVEVS X1dJTkRPVyAoZiksCi0gICAgICAgICAgICAgICBtb2RpZmllZF9sZWZ0LCBtb2RpZmllZF90 b3ApOworCSAgICAgICBtb2RpZmllZF9sZWZ0LCBtb2RpZmllZF90b3ApOwoKICAgeF9zeW5j X3dpdGhfbW92ZSAoZiwgZi0+bGVmdF9wb3MsIGYtPnRvcF9wb3MsCiAgICAgICAgICAgICAg ICAgICAgIEZSQU1FX0RJU1BMQVlfSU5GTyAoZiktPndtX3R5cGUgPT0gWF9XTVRZUEVfVU5L Tk9XTik7CkBAIC0xMDA3Nyw2ICsxMDIzMyw3IEBAIHN0cnVjdCB4X2Vycm9yX21lc3NhZ2Vf c3RhY2sgewogICAgICBuZWVkIHRvIGNvbXB1dGUgdGhlIHRvcC9sZWZ0IG9mZnNldCBhZGp1 c3RtZW50IGZvciB0aGlzIGZyYW1lLiAgKi8KCiAgIGlmIChjaGFuZ2VfZ3Jhdml0eSAhPSAw CisgICAgICAmJiAhRlJBTUVfUEFSRU5UX0ZSQU1FIChmKQogICAgICAgJiYgKEZSQU1FX0RJ U1BMQVlfSU5GTyAoZiktPndtX3R5cGUgPT0gWF9XTVRZUEVfVU5LTk9XTgogCSAgfHwgKEZS QU1FX0RJU1BMQVlfSU5GTyAoZiktPndtX3R5cGUgPT0gWF9XTVRZUEVfQQogCSAgICAgICYm IChGUkFNRV9YX09VVFBVVCAoZiktPm1vdmVfb2Zmc2V0X2xlZnQgPT0gMApAQCAtMTAyMDcs NiArMTAzNjQsOTEgQEAgc3RydWN0IHhfZXJyb3JfbWVzc2FnZV9zdGFjayB7CiAgICAgICAg ICAgICAgICAgZHB5aW5mby0+WGF0b21fbmV0X3dtX3N0YXRlX3N0aWNreSwgTm9uZSk7CiB9 CgorLyoqCisgKiB4X3NldF9za2lwX3Rhc2tiYXI6CisgKgorICogU2V0IGZyYW1lIEYncyBg c2tpcC10YXNrYmFyJyBwYXJhbWV0ZXIuICBJZiBub24tbmlsLCB0aGlzIHNob3VsZAorICog cmVtb3ZlIEYncyBpY29uIGZyb20gdGhlIHRhc2tiYXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBk aXNwbGF5IG9mIEYncworICogd2luZG93LXN5c3RlbSB3aW5kb3cgYW5kIGluaGliaXQgc3dp dGNoaW5nIHRvIEYncyB3aW5kb3cgdmlhCisgKiA8QWx0Pi08VEFCPi4gIElmIG5pbCwgbGlm dCB0aGVzZSByZXN0cmljdGlvbnMuCisgKgorICogU29tZSB3aW5kb3cgbWFuYWdlcnMgbWF5 IG5vdCBob25vciB0aGlzIHBhcmFtZXRlci4KKyAqLwordm9pZAoreF9zZXRfc2tpcF90YXNr YmFyIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IG5ld192YWx1ZSwgTGlzcF9PYmpl Y3Qgb2xkX3ZhbHVlKQoreworICBpZiAoIUVRIChuZXdfdmFsdWUsIG9sZF92YWx1ZSkpCisg ICAgeworI2lmZGVmIFVTRV9HVEsKKyAgICAgIHhnX3NldF9za2lwX3Rhc2tiYXIgKGYsIG5l d192YWx1ZSk7CisjZWxzZQorICAgICAgTGlzcF9PYmplY3QgZnJhbWU7CisgICAgICBzdHJ1 Y3QgeF9kaXNwbGF5X2luZm8gKmRweWluZm8gPSBGUkFNRV9ESVNQTEFZX0lORk8gKGYpOwor CisgICAgICBYU0VURlJBTUUgKGZyYW1lLCBmKTsKKyAgICAgIHNldF93bV9zdGF0ZSAoZnJh bWUsICFOSUxQIChuZXdfdmFsdWUpLAorCQkgICAgZHB5aW5mby0+WGF0b21fbmV0X3dtX3N0 YXRlX3NraXBfdGFza2JhciwgTm9uZSk7CisjZW5kaWYgLyogVVNFX0dUSyAqLworICAgICAg RlJBTUVfU0tJUF9UQVNLQkFSIChmKSA9ICFOSUxQIChuZXdfdmFsdWUpOworICAgIH0KK30K KworLyoqCisgKiB4X3NldF96X2dyb3VwOgorICoKKyAqIFNldCBmcmFtZSBGJ3MgYHotZ3Jv dXAnIHBhcmFtZXRlci4gIElmIGBhYm92ZScsIEYncyB3aW5kb3ctc3lzdGVtCisgKiB3aW5k b3cgaXMgZGlzcGxheWVkIGFib3ZlIGFsbCB3aW5kb3dzIHRoYXQgZG8gbm90IGhhdmUgdGhl IGBhYm92ZScKKyAqIHByb3BlcnR5IHNldC4gIElmIG5pbCwgRidzIHdpbmRvdyBpcyBzaG93 biBiZWxvdyBhbGwgd2luZG93cyB0aGF0CisgKiBoYXZlIHRoZSBgYWJvdmUnIHByb3BlcnR5 IHNldCBhbmQgYWJvdmUgYWxsIHdpbmRvd3MgdGhhdCBoYXZlIHRoZQorICogYGJlbG93JyBw cm9wZXJ0eSBzZXQuICBJZiBgYmVsb3cnLCBGJ3Mgd2luZG93IGlzIGRpc3BsYXllZCBiZWxv dyBhbGwKKyAqIHdpbmRvd3MgdGhhdCBkbyBub3QgaGF2ZSB0aGUgYGJlbG93JyBwcm9wZXJ0 eSBzZXQuCisgKgorICogU29tZSB3aW5kb3cgbWFuYWdlcnMgbWF5IG5vdCBob25vciB0aGlz IHBhcmFtZXRlci4KKyAqLwordm9pZAoreF9zZXRfel9ncm91cCAoc3RydWN0IGZyYW1lICpm LCBMaXNwX09iamVjdCBuZXdfdmFsdWUsIExpc3BfT2JqZWN0IG9sZF92YWx1ZSkKK3sKKyAg aWYgKCFFUSAobmV3X3ZhbHVlLCBvbGRfdmFsdWUpKQorICAgIHsKKyAgICAgIExpc3BfT2Jq ZWN0IGZyYW1lOworICAgICAgc3RydWN0IHhfZGlzcGxheV9pbmZvICpkcHlpbmZvID0gRlJB TUVfRElTUExBWV9JTkZPIChmKTsKKworICAgICAgWFNFVEZSQU1FIChmcmFtZSwgZik7CisK KyAgICAgIGlmIChOSUxQIChuZXdfdmFsdWUpKQorCXsKKwkgIGlmIChGUkFNRV9aX0dST1VQ X0FCT1ZFIChmKSkKKwkgICAgc2V0X3dtX3N0YXRlIChmcmFtZSwgZmFsc2UsCisJCQkgIGRw eWluZm8tPlhhdG9tX25ldF93bV9zdGF0ZV9hYm92ZSwgTm9uZSk7CisJICBlbHNlIGlmIChG UkFNRV9aX0dST1VQX0JFTE9XIChmKSkKKwkgICAgc2V0X3dtX3N0YXRlIChmcmFtZSwgZmFs c2UsCisJCQkgIGRweWluZm8tPlhhdG9tX25ldF93bV9zdGF0ZV9iZWxvdywgTm9uZSk7CisJ ICBGUkFNRV9aX0dST1VQIChmKSA9IHpfZ3JvdXBfbm9uZTsKKwl9CisgICAgICBlbHNlIGlm IChFUSAobmV3X3ZhbHVlLCBRYWJvdmUpICYmICFGUkFNRV9aX0dST1VQX0FCT1ZFIChmKSkK Kwl7CisJICBpZiAoRlJBTUVfWl9HUk9VUF9CRUxPVyAoZikpCisJICAgIHNldF93bV9zdGF0 ZSAoZnJhbWUsIGZhbHNlLAorCQkJICBkcHlpbmZvLT5YYXRvbV9uZXRfd21fc3RhdGVfYmVs b3csIE5vbmUpOworCSAgc2V0X3dtX3N0YXRlIChmcmFtZSwgdHJ1ZSwKKwkJCWRweWluZm8t PlhhdG9tX25ldF93bV9zdGF0ZV9hYm92ZSwgTm9uZSk7CisJICBGUkFNRV9aX0dST1VQIChm KSA9IHpfZ3JvdXBfYWJvdmU7CisJfQorICAgICAgZWxzZSBpZiAoRVEgKG5ld192YWx1ZSwg UWJlbG93KSAmJiAhRlJBTUVfWl9HUk9VUF9CRUxPVyAoZikpCisJeworCSAgaWYgKEZSQU1F X1pfR1JPVVBfQUJPVkUgKGYpKQorCSAgICBzZXRfd21fc3RhdGUgKGZyYW1lLCBmYWxzZSwK KwkJCSAgZHB5aW5mby0+WGF0b21fbmV0X3dtX3N0YXRlX2Fib3ZlLCBOb25lKTsKKwkgIHNl dF93bV9zdGF0ZSAoZnJhbWUsIHRydWUsCisJCQlkcHlpbmZvLT5YYXRvbV9uZXRfd21fc3Rh dGVfYmVsb3csIE5vbmUpOworCSAgRlJBTUVfWl9HUk9VUCAoZikgPSB6X2dyb3VwX2JlbG93 OworCX0KKyAgICAgIGVsc2UKKwllcnJvciAoIkludmFsaWQgei1ncm91cCBzcGVjaWZpY2F0 aW9uIik7CisgICAgfQorfQorCisKIC8qIFJldHVybiB0aGUgY3VycmVudCBfTkVUX1dNX1NU QVRFLgogICAgU0laRV9TVEFURSBpcyBzZXQgdG8gb25lIG9mIHRoZSBGVUxMU0NSRUVOXyog dmFsdWVzLgogICAgU2V0ICpTVElDS1kgdG8gdGhlIHN0aWNreSBzdGF0ZS4KQEAgLTEwOTk5 LDYgKzExMjQxLDI2IEBAIHN0cnVjdCB4X2Vycm9yX21lc3NhZ2Vfc3RhY2sgewogdm9pZAog eF9tYWtlX2ZyYW1lX3Zpc2libGUgKHN0cnVjdCBmcmFtZSAqZikKIHsKKyAgaWYgKEZSQU1F X1BBUkVOVF9GUkFNRSAoZikpCisgICAgeworICAgICAgaWYgKCFGUkFNRV9WSVNJQkxFX1Ag KGYpKQorCXsKKwkgIGJsb2NrX2lucHV0ICgpOworI2lmZGVmIFVTRV9HVEsKKwkgIGd0a193 aWRnZXRfc2hvd19hbGwgKEZSQU1FX0dUS19PVVRFUl9XSURHRVQgKGYpKTsKKwkgIFhNb3Zl V2luZG93IChGUkFNRV9YX0RJU1BMQVkgKGYpLCBGUkFNRV9PVVRFUl9XSU5ET1cgKGYpLAor CQkgICAgICAgZi0+bGVmdF9wb3MsIGYtPnRvcF9wb3MpOworI2Vsc2UKKwkgIFhNYXBSYWlz ZWQgKEZSQU1FX1hfRElTUExBWSAoZiksIEZSQU1FX09VVEVSX1dJTkRPVyAoZikpOworI2Vu ZGlmCisJICB1bmJsb2NrX2lucHV0ICgpOworCisJICBTRVRfRlJBTUVfVklTSUJMRSAoZiwg dHJ1ZSk7CisJICBTRVRfRlJBTUVfSUNPTklGSUVEIChmLCBmYWxzZSk7CisJfQorICAgICAg cmV0dXJuOworICAgIH0KKwogICBibG9ja19pbnB1dCAoKTsKCiAgIHhfc2V0X2JpdG1hcF9p Y29uIChmKTsKQEAgLTExMDY3LDkgKzExMzI5LDEwIEBAIHN0cnVjdCB4X2Vycm9yX21lc3Nh Z2Vfc3RhY2sgewogICAgICAgIGJlY2F1c2UgdGhlIHdpbmRvdyBtYW5hZ2VyIG1heSBjaG9v c2UgdGhlIHBvc2l0aW9uCiAgICAgICAgYW5kIHdlIGRvbid0IHdhbnQgdG8gb3ZlcnJpZGUg aXQuICAqLwoKLSAgICBpZiAoISBGUkFNRV9WSVNJQkxFX1AgKGYpCi0JJiYgISBGUkFNRV9J Q09OSUZJRURfUCAoZikKLQkmJiAhIEZSQU1FX1hfRU1CRURERURfUCAoZikKKyAgICBpZiAo IUZSQU1FX1ZJU0lCTEVfUCAoZikKKwkmJiAhRlJBTUVfSUNPTklGSUVEX1AgKGYpCisJJiYg IUZSQU1FX1hfRU1CRURERURfUCAoZikKKwkmJiAhRlJBTUVfUEFSRU5UX0ZSQU1FIChmKQog CSYmIGYtPndpbl9ncmF2aXR5ID09IE5vcnRoV2VzdEdyYXZpdHkKIAkmJiBwcmV2aW91c2x5 X3Zpc2libGUpCiAgICAgICB7CkBAIC0xMTEzMiwxNSArMTEzOTUsMTUgQEAgc3RydWN0IHhf ZXJyb3JfbWVzc2FnZV9zdGFjayB7CiAgICAgeGVtYmVkX3NldF9pbmZvIChmLCAwKTsKICAg ZWxzZQogI2VuZGlmCi0gIHsKCi0gIGlmICghIFhXaXRoZHJhd1dpbmRvdyAoRlJBTUVfWF9E SVNQTEFZIChmKSwgd2luZG93LAotCQkJIERlZmF1bHRTY3JlZW4gKEZSQU1FX1hfRElTUExB WSAoZikpKSkKLSAgICB7Ci0gICAgICB1bmJsb2NrX2lucHV0ICgpOwotICAgICAgZXJyb3Ig KCJDYW4ndCBub3RpZnkgd2luZG93IG1hbmFnZXIgb2Ygd2luZG93IHdpdGhkcmF3YWwiKTsK LSAgICB9Ci0gIH0KKyAgICBpZiAoISBYV2l0aGRyYXdXaW5kb3cgKEZSQU1FX1hfRElTUExB WSAoZiksIHdpbmRvdywKKwkJCSAgIERlZmF1bHRTY3JlZW4gKEZSQU1FX1hfRElTUExBWSAo ZikpKSkKKyAgICAgIHsKKwl1bmJsb2NrX2lucHV0ICgpOworCWVycm9yICgiQ2FuJ3Qgbm90 aWZ5IHdpbmRvdyBtYW5hZ2VyIG9mIHdpbmRvdyB3aXRoZHJhd2FsIik7CisgICAgICB9CisK KyAgeF9zeW5jIChmKTsKCiAgIC8qIFdlIGNhbid0IGRpc3Rpbmd1aXNoIHRoaXMgZnJvbSBp Y29uaWZpY2F0aW9uCiAgICAgIGp1c3QgYnkgdGhlIGV2ZW50IHRoYXQgd2UgZ2V0IGZyb20g dGhlIHNlcnZlci4KQEAgLTExMTUwLDggKzExNDEzLDYgQEAgc3RydWN0IHhfZXJyb3JfbWVz c2FnZV9zdGFjayB7CiAgIFNFVF9GUkFNRV9WSVNJQkxFIChmLCAwKTsKICAgU0VUX0ZSQU1F X0lDT05JRklFRCAoZiwgZmFsc2UpOwoKLSAgeF9zeW5jIChmKTsKLQogICB1bmJsb2NrX2lu cHV0ICgpOwogfQoKQEAgLTEyMzA2LDYgKzEyNTY3LDkgQEAgc3RydWN0IHhfZGlzcGxheV9p bmZvICoKICAgICAgIEFUT01fUkVGU19JTklUICgiU01fQ0xJRU5UX0lEIiwgWGF0b21fU01f Q0xJRU5UX0lEKQogICAgICAgQVRPTV9SRUZTX0lOSVQgKCJfWFNFVFRJTkdTX1NFVFRJTkdT IiwgWGF0b21feHNldHRpbmdzX3Byb3ApCiAgICAgICBBVE9NX1JFRlNfSU5JVCAoIk1BTkFH RVIiLCBYYXRvbV94c2V0dGluZ3NfbWdyKQorICAgICAgQVRPTV9SRUZTX0lOSVQgKCJfTkVU X1dNX1NUQVRFX1NLSVBfVEFTS0JBUiIsIFhhdG9tX25ldF93bV9zdGF0ZV9za2lwX3Rhc2ti YXIpCisgICAgICBBVE9NX1JFRlNfSU5JVCAoIl9ORVRfV01fU1RBVEVfQUJPVkUiLCBYYXRv bV9uZXRfd21fc3RhdGVfYWJvdmUpCisgICAgICBBVE9NX1JFRlNfSU5JVCAoIl9ORVRfV01f U1RBVEVfQkVMT1ciLCBYYXRvbV9uZXRfd21fc3RhdGVfYmVsb3cpCiAgICAgfTsKCiAgICAg aW50IGk7CmRpZmYgLS1naXQgYS9zcmMveHRlcm0uaCBiL3NyYy94dGVybS5oCmluZGV4IDMy Yzg3OWIuLjMxMjJhMmIgMTAwNjQ0Ci0tLSBhL3NyYy94dGVybS5oCisrKyBiL3NyYy94dGVy bS5oCkBAIC00NDcsOSArNDQ3LDkgQEAgc3RydWN0IHhfZGlzcGxheV9pbmZvCiAgIC8qIEF0 b21zIGRlYWxpbmcgd2l0aCBFV01IIChpLmUuIF9ORVRfLi4uKSAqLwogICBBdG9tIFhhdG9t X25ldF93bV9zdGF0ZSwgWGF0b21fbmV0X3dtX3N0YXRlX2Z1bGxzY3JlZW4sCiAgICAgWGF0 b21fbmV0X3dtX3N0YXRlX21heGltaXplZF9ob3J6LCBYYXRvbV9uZXRfd21fc3RhdGVfbWF4 aW1pemVkX3ZlcnQsCi0gICAgWGF0b21fbmV0X3dtX3N0YXRlX3N0aWNreSwgWGF0b21fbmV0 X3dtX3N0YXRlX2hpZGRlbiwKLSAgICBYYXRvbV9uZXRfZnJhbWVfZXh0ZW50cywKLSAgICBY YXRvbV9uZXRfY3VycmVudF9kZXNrdG9wLCBYYXRvbV9uZXRfd29ya2FyZWE7CisgICAgWGF0 b21fbmV0X3dtX3N0YXRlX3N0aWNreSwgWGF0b21fbmV0X3dtX3N0YXRlX2Fib3ZlLCBYYXRv bV9uZXRfd21fc3RhdGVfYmVsb3csCisgICAgWGF0b21fbmV0X3dtX3N0YXRlX2hpZGRlbiwg WGF0b21fbmV0X3dtX3N0YXRlX3NraXBfdGFza2JhciwKKyAgICBYYXRvbV9uZXRfZnJhbWVf ZXh0ZW50cywgWGF0b21fbmV0X2N1cnJlbnRfZGVza3RvcCwgWGF0b21fbmV0X3dvcmthcmVh OwoKICAgLyogWFNldHRpbmdzIGF0b21zIGFuZCB3aW5kb3dzLiAgKi8KICAgQXRvbSBYYXRv bV94c2V0dGluZ3Nfc2VsLCBYYXRvbV94c2V0dGluZ3NfcHJvcCwgWGF0b21feHNldHRpbmdz X21ncjsKQEAgLTExMDIsNiArMTEwMiw3IEBAIGV4dGVybiBib29sIHhfYWxsb2NfbGlnaHRl cl9jb2xvcl9mb3Jfd2lkZ2V0IChXaWRnZXQsIERpc3BsYXkgKiwgQ29sb3JtYXAsCiBleHRl cm4gYm9vbCB4X2FsbG9jX25lYXJlc3RfY29sb3IgKHN0cnVjdCBmcmFtZSAqLCBDb2xvcm1h cCwgWENvbG9yICopOwogZXh0ZXJuIHZvaWQgeF9xdWVyeV9jb2xvciAoc3RydWN0IGZyYW1l ICpmLCBYQ29sb3IgKik7CiBleHRlcm4gdm9pZCB4X2NsZWFyX2FyZWEgKHN0cnVjdCBmcmFt ZSAqZiwgaW50LCBpbnQsIGludCwgaW50KTsKK2V4dGVybiB2b2lkIHhfZmlsbF9yZWN0YW5n bGUgKHN0cnVjdCBmcmFtZSAqZiwgR0MsIGludCwgaW50LCBpbnQsIGludCk7CiAjaWYgIWRl ZmluZWQgVVNFX1hfVE9PTEtJVCAmJiAhZGVmaW5lZCBVU0VfR1RLCiBleHRlcm4gdm9pZCB4 X21vdXNlX2xlYXZlIChzdHJ1Y3QgeF9kaXNwbGF5X2luZm8gKik7CiAjZW5kaWYKQEAgLTEx NjgsNiArMTE2OSw4IEBAIGV4dGVybiBib29sIHhfYWxsb2NfbGlnaHRlcl9jb2xvcl9mb3Jf d2lkZ2V0IChXaWRnZXQsIERpc3BsYXkgKiwgQ29sb3JtYXAsCiB9CgogZXh0ZXJuIHZvaWQg eF9zZXRfc3RpY2t5IChzdHJ1Y3QgZnJhbWUgKiwgTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0 KTsKK2V4dGVybiB2b2lkIHhfc2V0X3NraXBfdGFza2JhciAoc3RydWN0IGZyYW1lICosIExp c3BfT2JqZWN0LCBMaXNwX09iamVjdCk7CitleHRlcm4gdm9pZCB4X3NldF96X2dyb3VwIChz dHJ1Y3QgZnJhbWUgKiwgTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0KTsKIGV4dGVybiBib29s IHhfd21fc3VwcG9ydHMgKHN0cnVjdCBmcmFtZSAqLCBBdG9tKTsKIGV4dGVybiB2b2lkIHhf d2FpdF9mb3JfZXZlbnQgKHN0cnVjdCBmcmFtZSAqLCBpbnQpOwogZXh0ZXJuIHZvaWQgeF9j bGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIgKHN0cnVjdCBmcmFtZSAqZik7Cg== --------------040005020303090802000704-- From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 11 16:02:55 2017 Received: (at 25408) by debbugs.gnu.org; 11 Feb 2017 21:02:55 +0000 Received: from localhost ([127.0.0.1]:35949 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cceoo-0005lF-RI for submit@debbugs.gnu.org; Sat, 11 Feb 2017 16:02:55 -0500 Received: from mout.kundenserver.de ([212.227.17.13]:54768) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cceom-0005l1-9q for 25408@debbugs.gnu.org; Sat, 11 Feb 2017 16:02:52 -0500 Received: from [192.168.1.102] ([67.186.135.89]) by mrelayeu.kundenserver.de (mreue103 [212.227.15.184]) with ESMTPSA (Nemesis) id 0MP2NL-1cWJgj48jn-006RqQ; Sat, 11 Feb 2017 22:02:43 +0100 Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: martin rudalics , Arthur Miller References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= Message-ID: <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> Date: Sat, 11 Feb 2017 16:02:35 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <589F1F58.1050807@gmx.at> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="pS5On0fwt7nw9vhNwlQeiGwwu71C8iPcT" X-Provags-ID: V03:K0:q/WEjsQ8yB8pb8LQEayP4E4tE+YwyVBWGBg4JU7iHH9GNfP8Oyp UiiwIkhyCWoNAHkzU+Hc1QtBJfPfHB9osLHya/x3SSRDVDoXx+rgfz4gvpBEujt4uqA/f/n +e4W+zPtoIoFHg6L1oZfEXaUsgXMoikwDWnN9ct7Qd0dWReplhQ6o1fsaGdFXoGdGvSfMZr tnvCsiq3Nvp4HagIstpyg== X-UI-Out-Filterresults: notjunk:1;V01:K0:8adOnF37T94=:UK5sco2OkTL/W4gDZNSSPz KVYeAXzc3PQ69pCbqjoAD5XBbi7X/FOSd0nUcWvfvBu9RuFdt5ZiO2YX2FuAuFBAuNqiQ8fux vG7ByYhC40A9yZSCsyDvCUKpyOHcqO1hPdzToGhMSvkTxgVgRbQ/D6cIZN4f6goIdBvKaFhv2 WwKrQgF4ZzUn2z8kZ5UdsHAmuU4XgUktHDcY9ZxGbTRaa/3J1jj2+AIYvaM3SB18dzwBhPsfr ZZ13Y9xMafzst8hXpbD8emkEJ4p2wb33XUyKTx5Zvm3bpxNP8KDzGj0qSS5qO9m2WH5jxI4Eq /yzHojz16Y3ZS+2ZmHcfSGfbpvQ020tIC4dg3DGpSLikTe2LUsrjVyRNdpJeEqPbPqnc9Nnzk HyUxaw4TEPrO6NwepwJGXRmYY9mNkE1+wchl7vF2G7gaFqeV93MX8ltLYpY8Ndpojvcnr255Z wq7Bowlsum9ciPj8I8rCpVxaoJaNn6NLqU4PhNAkT17LdRSSnuNO39ktQLvpTYfWLQYKqMrzM ijmEU4h74jPtudIImDE4wknAT/vNWfRbH9izX1d+hLHbFG22TXTsGt9rJriu6hW383J0idJo6 oy6Vucc72g0gLCv+O3xqPpSD5t0s9b0pR6J3mKx8Oc/sQtzmuQkQR+EIq6FsziDnnMvtWfI1A UUPPVxmW4lSA33h8i+UHybssc92OP4cVYADAREbQR/V6DAIVRfWn8BdJNt6OW7xsExPU= X-Spam-Score: -0.9 (/) X-Debbugs-Envelope-To: 25408 Cc: Eli Zaretskii , 25408@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: -0.9 (/) This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --pS5On0fwt7nw9vhNwlQeiGwwu71C8iPcT Content-Type: multipart/mixed; boundary="rvEqbVk3QGGsTl0bBNmqR4COWPKgqbfSx"; protected-headers="v1" From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= To: martin rudalics , Arthur Miller Cc: Eli Zaretskii , 25408@debbugs.gnu.org Message-ID: <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> In-Reply-To: <589F1F58.1050807@gmx.at> --rvEqbVk3QGGsTl0bBNmqR4COWPKgqbfSx Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 2017-02-11 09:27, martin rudalics wrote: > If you are on GNU/Linux or Windows then please apply the attached patch= > synch-frames.diff to your current version of master and rebuild. If yo= u > succeeded doing that, start emacs -Q and continue reading. Thanks! The patch applied cleanly and everything compiled fine. > To remove a frame's decorations, use the frame parameter `undecorated' This works great. > To make a new frame undecorated use > (make-frame '((undecorated . t))) This works great too. > If everything works as intended and your only interest > was to make frames without decorations, you can finish reading here. Everything up to that point worked great :) > Usually, the position of a frame's native rectangle doesn't change when= > adding/removing decorations. If you want to change it, use the `left' > and `top' frame parameters. That works fine. > If you think you need to remove/add individual parts of the decorations= > (titlebar, buttons, external borders) post your wishes here. Some > window managers might be able to do that. I haven't needed this yet :) > The rest of this text is concerned with describing additional features.= > If some of them don't work on your system, please tell me, usually they= > need a compliant window manager as well. Thanks. Maybe this is a good time to introduce my use case: I'd like to = replace company-mode's overlay-based "tooltips" with proper tooltip-like = frames. show-x-tooltip almost works for that purpose, but not quite: mos= t importantly, there can at any time only be at most one pop-up. > To make a frame not show up on the taskbar use the > frame parameter `skip-taskbar' =E2=9C=93 > To make a new frame not receive focus initially or when deiconified, us= e > the frame parameter `no-focus-on-map' =E2=9C=93, although if I create a frame with no-focus-on-map I then need = a call to raise-frame to raise it =E2=80=94 even if its z-group is 'above= =2E Maybe when z-group is "above" the frame should be automatically rais= ed? > Usually this works but if you are using a focus follows mouse policy yo= u > might have to specify the `no-accept-focus' parameter as well as in >=20 > (make-frame '((no-focus-on-map . t) (no-accept-focus . t))) =E2=9C=93 > If you want to avoid that C-x 5 o switches to a specific frame, set > that frame's `no-other-frame' parameter as in =E2=9C=93 > A second group of parameters/functions is concerned with maintaining an= d > investigating the stacking order of frames. The `z-group' parameter > allows to put a frame in a separate group above or (not on Windows) > below all other frames that are not in the same group. For example >=20 > (set-frame-parameter nil 'z-group 'above) =E2=9C=93, although it would be nice to automatically raise the frame whe= n x-group is above. I can call raise-frame, but it doesn't work correctl= y when the frame is invisible (and setting the visibility to t before rai= sing the frame doesn't work either). > For normal (non-child) frames there's a new hook `move-frame-functions'= > called after a frame was moved so you can also synchronize the movement= s > of two top-level frames. Cool. I should use this to make sure the popup stays around. > If the functions/parameters described here work sufficiently well, I'll= > post a number of toy algorithms that show how to synchronize two frames= > in a way that always shows one frame at a specified position on top of > the other. I think this is wonderful work; thanks so much for doing all this. I've posted the code I used to test this with company. f you eval this a= nd run M-x company-tooltip--add-advice, completion should use an x frame = in addition to its regular overlay-based tooltips. This works very nicel= y, except for a few problems listed below: * Creating a frame is rather slow; the following is an excerpt of a profi= le: - make-frame 442 29= % - frame-creation-function 440 29= % - apply 440 29= % - # 440 29= % - x-create-frame-with-faces 440 29= % - face-set-after-frame-default 307 20= % - face-spec-recalc 276 18= % - make-face-x-resource-internal 217 14= % - set-face-attributes-from-resources 213 14= % - set-face-attribute-from-resource 190 12= % - face-name 126 8= % + check-face 118 7= % + face-spec-reset-face 44 2= % + face-spec-set-2 7 0= % set-face-attribute 8 0= % normal-erase-is-backspace-setup-frame = 2 0% * Frames with z-group set to 'above are not automatically raised when no-= focus-on-map is set, so I need to call x-raise-frame on them; this doesn'= t work when they are invisible (instead it makes them visible without rai= sing them, it seems). * Creating a frame / making it visible uses my WM's frame creating animat= ion =E2=80=94 is there a way to disable this (x-show-tip doesn't have it)= ? Thanks again for all this cool stuff! It would be great to use proper fra= mes for company's completion popups. --rvEqbVk3QGGsTl0bBNmqR4COWPKgqbfSx-- --pS5On0fwt7nw9vhNwlQeiGwwu71C8iPcT Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJYn3vwAAoJEPqg+cTm90wja+QQAJlt/9N5vdTG9qeT8+VLauCJ g9NQKQ+r36KODtciU139RIy3O3CdotS6asd7KkgYvk9NXUoUckm/vktJd31E2dhk geXKeoJ4NwgvSBMSC7bVeyoa3lKv1Z6XRHgAGmLK5M/ipGV9sZECJOoHoCu1KJAV ZTrRZUkbD0+JtCOoDW1qCGAKDUtIWzsW46W6dJTtjqENihSH+a867199w2ks2Yk/ CDXhGvRmshEMVxo8yF2rmAeNYb9DHQr5222/aQI3TO8YUvLPwYSgRh/d+G5D6Puk NR2/Fg4KSjz0ZKorHWKC6yJ7rtQmXcaR4eRvk13cEeo2q5sPbsSUFy+sBcH2QC/K ad6wW8uiYw6dEePe/in93WxrgRK0GuH1AIpIIHPmFuBJ1in88P/IMqwaUTkbGiFF AgTkt1eTcu2ztQl5UIxWlC9J41n3SE7iSuh+t0FxoFKAgfRHPh3kXJNs4x2cUTt4 UylH6bcjZOJGFjRoN/6AtUaKcD9uMZXY0e1lv8pck9WwzWs7IUrc5Zt9D6HEYaUA NIe3EbolI95juTbVMkb6I40Ybh7XMD9sMRfrHKJp1gPj3AG8MOeOTleVoyNE0TDD LyKXF/wYAn2huXaAMQqH2TpP3ZhZCObitby9DSkawKVPmX1jgW6JONiBmU0jOmm1 qNqHCrm335dl7CbXvvIy =zxN0 -----END PGP SIGNATURE----- --pS5On0fwt7nw9vhNwlQeiGwwu71C8iPcT-- From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 11 19:25:01 2017 Received: (at 25408) by debbugs.gnu.org; 12 Feb 2017 00:25:01 +0000 Received: from localhost ([127.0.0.1]:36028 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cchyO-0003Uu-LZ for submit@debbugs.gnu.org; Sat, 11 Feb 2017 19:25:01 -0500 Received: from mout.kundenserver.de ([217.72.192.75]:53266) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ccewl-0005wT-4m for 25408@debbugs.gnu.org; Sat, 11 Feb 2017 16:11:07 -0500 Received: from [192.168.1.102] ([67.186.135.89]) by mrelayeu.kundenserver.de (mreue104 [212.227.15.184]) with ESMTPSA (Nemesis) id 0LfBRg-1c5jpr3gTY-00omK6; Sat, 11 Feb 2017 22:11:00 +0100 Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: martin rudalics , Arthur Miller References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= Message-ID: <0eca254d-1775-35b0-1db1-ad31e0654812@mit.edu> Date: Sat, 11 Feb 2017 16:10:57 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="------------ms000107000608090308030903" X-Provags-ID: V03:K0:dKZb/KyVA44yERKiqheteu6rzGLpsS4LeNio2Bb9NMrWqLv/MDA XrjFyoiCkqUUSvMoI6PMor+zmUo26nRCNmeGnoVRXUaPcJrersyVhAEVQM3C0Ufv1MY/V5/ JtykAo8+lRQrVeYmUzCT/eiamjCblgThk/iRpptFdOWFwKwLb7E2BKos/3yEc3/7jU4lOXR Ie+kngfgiISs8ElU0Sgkg== X-UI-Out-Filterresults: notjunk:1;V01:K0:s2p43bh3pxg=:vMn5pslZ7scKhm7GZUTKCH ApdC8m42/MhL/7z/40gJi7Ih87niyG3Ond7wnULUxn4qNgij87p3rL1F5Y8iGWJkLfqkzMFv4 hN9lNDNXyJcB7pPTiT4KIWBxfxWBlPlugJ9Dh+fw/meg1qKGc/WdTrCXDr5uN8Rsi2gt3K7Iw cz6Xo/fNtMAefj41RQ73qv085BkBI315kQMNudUMNvreornFmdi2UOEbNiSn3/OR3aEG8kv1V sfiraUy7xQluEmDrFM2e3QP64DAk9HbnJRv2Xdk23j0aRjRytS0s8SypNbZtG9zvc0ikltsZw O+zLYc4TGwVCykHo2CtyH/wMKOEEBCCZNwhIQVDs5asiGMVwAk9wy+6Nv9b3f6ZuqM12DMa9X ekKgGz9Nmk39RiVkTVanORgaPszI/MYCm2iu4yhprObELH2JK6hiA6GXlkw6QLjRRZ6SwH4qD 773i1dJzImVLLZTID5t2C35+dRu89BofFuG3eiWcNeXTmWSlpQ4Ime4g6CR2K+t5OFs1RemYN MEf1vrWg6mQbBxCNitraW8r/8+qruitIY41eOWkHNy3SVybY/3Mp+aBIrnu70GR+4k7i80D9Z cuzeMicUpKIfIpTevo/AXTxieZKZAjPUjxZayrMfpGU9h8/F0YMafh2+6Ontih9So5XEzvTyd NfbsEqdy+v4VILyRCEFOOFsjgnkvQeB8sj2DyyiXa2VVk52InqsQ+6cX45s2iu2blBa8= X-Spam-Score: -0.9 (/) X-Debbugs-Envelope-To: 25408 X-Mailman-Approved-At: Sat, 11 Feb 2017 19:24:59 -0500 Cc: Eli Zaretskii , 25408@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: -0.9 (/) This is a cryptographically signed message in MIME format. --------------ms000107000608090308030903 Content-Type: multipart/mixed; boundary="------------416CB3BF251D35C7B50F3881" This is a multi-part message in MIME format. --------------416CB3BF251D35C7B50F3881 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable > I've posted the code I used to test this with company.=20 Of course, I forgot the attachment. --------------416CB3BF251D35C7B50F3881 Content-Type: text/x-emacs-lisp; name="company-tooltip.el" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="company-tooltip.el" ;;; company-tooltip.el --- Use a real ppup to show company candidates ;;; Commentary: ;; ;;; Code: (require 'company) (defun company-tooltip--frame-params (parent-frame) `(;; Initial state (fullscreen . nil) (line-spacing . 0) ;; Size (min-height . 0) (min-width . 0) ;; Borders and fringes (left-fringe . 0) (right-fringe . 0) (right-divider-width . 0) (bottom-divider-width . 0) (border-width . 0) (internal-border-width . 0) ;; UI components (undecorated . t) (menu-bar-lines . 0) (tool-bar-lines . 0) (vertical-scroll-bars . nil) (horizontal-scroll-bars . nil) ;; Buffers (minibuffer . nil) (unsplittable . t) ;; Appearance (cursor-type . nil) ;; FIXME Also use cursor-type and cursor-in-non-s= elected-windows variables (background-color . ,(face-attribute 'company-tooltip :background)) ;; Behavior (delete-before . ,parent-frame) (no-focus-on-map . t) (skip-taskbar . t) (no-other-frame . t) (no-accept-focus . t) (z-group . above))) (defvar company-tooltip--frame nil) (defvar company-tooltip--buffer nil) (defun company-tooltip--adjust-frame (x y width height) "Move company tooltip to X, Y and resize to WIDTH, HEIGHT." (set-frame-position company-tooltip--frame x y) (set-frame-width company-tooltip--frame width) (set-frame-height company-tooltip--frame height)) (defun company-tooltip--ensure-frame (x y width height) "Create or return the company tooltip frame. X, Y, WIDTH, HEIGHT: see `company-tooltip--adjust-frame'." (unless (frame-live-p company-tooltip--frame) ;; (cl-letf (((symbol-function 'face-set-after-frame-default) ;; (symbol-function 'ignore))) (setq company-tooltip--frame (make-frame `((top . ,y) (left . ,x) (width . ,width) (height . ,height) ,@(company-tooltip--frame-params (selecte= d-frame)))))) (company-tooltip--adjust-frame x y width height) ;; (make-frame-visible company-tooltip--frame) ;; FIXME raise-frame doesn't work when called right after make-frame-vi= sible (raise-frame company-tooltip--frame)) (defvar company-tooltip--map (let ((map (make-keymap))) ;; FIXME this doesn't cause mouse events to be ignored (define-key map [t] 'ignore) map)) (define-derived-mode company-tooltip--mode fundamental-mode "tooltip" "Major mode for company tooltip frames." (setq-local overriding-local-map company-tooltip--map) (setq-local truncate-lines t) (setq-local mode-line-format nil) (setq-local cursor-type nil) (setq-local cursor-in-non-selected-windows nil)) ;; (kill-buffer "*company-tooltip*") (defun company-tooltip--ensure-buffer () "Create or return the company tooltip buffer." (unless company-tooltip--buffer (with-current-buffer (get-buffer-create "*company-tooltip*") (company-tooltip--mode) (setq company-tooltip--buffer (current-buffer))))) (defun company-tooltip--set-buffer () "Set buffer of company tooltip frame." (company-tooltip--ensure-buffer) (set-window-buffer (frame-root-window company-tooltip--frame) company-t= ooltip--buffer)) (defun company-tooltip--posn-x-y (position) "Return X and Y coordinates of bottom-left corner of POSITION." (let* ((point-x-y (posn-x-y position)) (window (posn-window position)) (win-edges (window-edges window nil t t)) (win-x-y (cons (nth 0 win-edges) (nth 1 win-edges))) (frame-x-y (cons (frame-parameter (selected-frame) 'top) (frame-parameter (selected-frame) 'left)))) (cons (+ (car point-x-y) (car win-x-y)) (+ (cdr point-x-y) (cdr win-x-y) (line-pixel-height) (window-header-line-height window))))) (defun company-tooltip--update-1 (width height contents) "Update position, WIDTH, HEIGHT, CONTENTS, and visibility of tooltip fr= ame." (let* ((x-y (company-tooltip--posn-x-y (save-excursion (backward-char (length company-prefix)) (posn-at-point))))) (company-tooltip--ensure-frame (car x-y) (cdr x-y) width (abs height)= ) (company-tooltip--set-buffer) (with-current-buffer company-tooltip--buffer (erase-buffer) (insert contents)))) (defun company-tooltip--update (height selection) "Wrapper around `company-tooltip--update'. HEIGHT is passed unmodified. SELECTION is used to compute width and contents." (let* ((lines (company--create-lines selection (abs height))) (contents (mapconcat (lambda (l) (concat l "=E2=80=8B")) lines "= \n"))) (company-tooltip--update-1 (string-width (car lines)) height contents= ))) (defun company-tooltip-show (row column selection) (company-tooltip--update (company--pseudo-tooltip-height) selection)) (defun company-tooltip-edit (selection) (company-tooltip--update (overlay-get company-pseudo-tooltip-overlay 'c= ompany-height) selection)) (defun company-tooltip-hide () (when (frame-live-p company-tooltip--frame) ;; FIXME: this should work: (make-frame-invisible company-tooltip--fr= ame) (delete-frame company-tooltip--frame))) (defun company-tooltip--add-advice () (interactive) (advice-add 'company-pseudo-tooltip-show :after 'company-tooltip-show) (advice-add 'company-pseudo-tooltip-edit :after 'company-tooltip-edit) (advice-add 'company-pseudo-tooltip-hide :after 'company-tooltip-hide))= (defun company-tooltip--remove-advice () (interactive) (advice-remove 'company-pseudo-tooltip-show 'company-tooltip-show) (advice-remove 'company-pseudo-tooltip-edit 'company-tooltip-edit) (advice-remove 'company-pseudo-tooltip-hide 'company-tooltip-hide)) (provide 'company-tooltip) ;;; company-tooltip.el ends here --------------416CB3BF251D35C7B50F3881-- --------------ms000107000608090308030903 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCC A8gwggPEMIIDLaADAgECAhAFTpEFd7pdiMcr6MwkhoRoMA0GCSqGSIb3DQEBCwUAMGwxCzAJ BgNVBAYTAlVTMRYwFAYDVQQIEw1NYXNzYWNodXNldHRzMS4wLAYDVQQKEyVNYXNzYWNodXNl dHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5MRUwEwYDVQQLEwxDbGllbnQgQ0EgdjEwHhcN MTYwNzIyMjAzNzM3WhcNMTcwNzMxMjAzNzM3WjCBrDELMAkGA1UEBhMCVVMxFjAUBgNVBAgT DU1hc3NhY2h1c2V0dHMxLjAsBgNVBAoTJU1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRl Y2hub2xvZ3kxFTATBgNVBAsTDENsaWVudCBDQSB2MTEeMBwGA1UEAxMVQ2xlbWVudCBGIFBp dC1DbGF1ZGVsMR4wHAYJKoZIhvcNAQkBFg9jcGl0Y2xhQE1JVC5FRFUwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQDsGIVjnDysgVLsrxleGDQEZl+iGBLP/jTIQQ+YIyZZYRVI 99cMACDLph3Qcm4BaRcTho8JOavaLhh4Z2+ZmSfjweyV0xnZWBJCTBeNI1oEoyJNbjFHWTIl TTvTt5dIjs3a+zFYTw1MWAZ4pafu9Pf9h/HaEPTUKlzSZxDeMvPOcgy4EdnY8dtL01we1Ify 75izdeVA5I5w6zRXctD3CGoXBrGiItYDMqWBK9TXYto3nv/Gqr9uww7OVp71lL3NU5B3Sf/L KluHbBFvTOSzW2/SKY1Rx7vr5y+pB3x8dlAYUW6u7pRFDVDHPMWP++ywzdBfLXifLjYu559Q 6hzHTYbPAgMBAAGjgaEwgZ4wCQYDVR0TBAIwADARBglghkgBhvhCAQEEBAMCBaAwHQYDVR0l BBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMCMAsGA1UdDwQEAwIF4DAdBgNVHQ4EFgQU7aMDTdzd UPsZO6dMaXbmqp2doQUwMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2NhLm1pdC5lZHUvY2Ev bWl0Y2xpZW50LmNybDANBgkqhkiG9w0BAQsFAAOBgQC/dYWdWhW8tzDOax/vqKDpffMjVeT2 ITDAndaxp6RTMKo+TWczZJ3e3xaKHMmTKvvtL94l1gcxFkWwKeZY47IQB5r/6IodFek6RWMg BjoypsLaE+f/tRw3iNds+jJyrMpRqRbEIBvxMTwhYc5MQU9o4xOgg4TXPHH6nf6VAm6+TjGC A7EwggOtAgEBMIGAMGwxCzAJBgNVBAYTAlVTMRYwFAYDVQQIEw1NYXNzYWNodXNldHRzMS4w LAYDVQQKEyVNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5MRUwEwYDVQQL EwxDbGllbnQgQ0EgdjECEAVOkQV3ul2IxyvozCSGhGgwDQYJYIZIAWUDBAIBBQCgggIBMBgG CSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE3MDIxMTIxMTA1N1ow LwYJKoZIhvcNAQkEMSIEIA5sH3KIkHkAHCDOBXodvnWtFLzjJGYcbb9xOoE9xF9GMGwGCSqG SIb3DQEJDzFfMF0wCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAOBggq hkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwgZEG CSsGAQQBgjcQBDGBgzCBgDBsMQswCQYDVQQGEwJVUzEWMBQGA1UECBMNTWFzc2FjaHVzZXR0 czEuMCwGA1UEChMlTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neTEVMBMG A1UECxMMQ2xpZW50IENBIHYxAhAFTpEFd7pdiMcr6MwkhoRoMIGTBgsqhkiG9w0BCRACCzGB g6CBgDBsMQswCQYDVQQGEwJVUzEWMBQGA1UECBMNTWFzc2FjaHVzZXR0czEuMCwGA1UEChMl TWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neTEVMBMGA1UECxMMQ2xpZW50 IENBIHYxAhAFTpEFd7pdiMcr6MwkhoRoMA0GCSqGSIb3DQEBAQUABIIBAL9Dvsd44vPFlbJy 93OkYnqs4627NXVe5IZYGuvjUAWnD/BD2uL8lUyPEjzooCp4P6RfyJkzIoGZ3KnonAKuPGhH 3vu/QREGT507ygyO+jLEOhtXAly0p5apV/Me2To223MBkYcmMjZdO+CeWPwaOfq2ovP31liw pGJiqu2q1+GzDNiU5BI+CVXinrUHxszqFHRUnPvBtNtMYTHIkOO0aWQR/pTDu7TCzScVbLFb tUuGXUky66GRXaInaQv3RM9MrFxp5L/4uxbFYDTVs8Ao0BLj5pHLEDiJ731MeTBEn0T0WEqw J27+fBU9wtfq4NJ6SulBTl4+91uD5OzV4KhiWEwAAAAAAAA= --------------ms000107000608090308030903-- From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 12 06:13:34 2017 Received: (at 25408) by debbugs.gnu.org; 12 Feb 2017 11:13:34 +0000 Received: from localhost ([127.0.0.1]:36205 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ccs62-0001XP-8j for submit@debbugs.gnu.org; Sun, 12 Feb 2017 06:13:34 -0500 Received: from mout.gmx.net ([212.227.17.21]:63625) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ccs60-0001XA-KG for 25408@debbugs.gnu.org; Sun, 12 Feb 2017 06:13:33 -0500 Received: from [192.168.1.101] ([213.162.68.7]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MEFqW-1cajRE2vI8-00FSYC; Sun, 12 Feb 2017 12:13:24 +0100 Message-ID: <58A0434D.6030206@gmx.at> Date: Sun, 12 Feb 2017 12:13:17 +0100 From: martin rudalics MIME-Version: 1.0 To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= , Arthur Miller Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> In-Reply-To: <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> Content-Type: multipart/mixed; boundary="------------080000050506070809040406" X-Provags-ID: V03:K0:945Z/b4YhtbWZWLnPzmKokT8AcOOGAg6fC0ZxAni6rNq+aTx1q3 ObvDHaoehXGIBGcEB0YDVh3F4O8+RSDdz1tsBB23H3sNeKcbVT7Bz4aCeK3sFYbAFLzl/18 /a+Ol8MKMJe6PVXOyTfZogLe/YbyRTc1vgqrXpOsyKt/aAzmUaxv3F6NFdSpdzQ8aEREOO1 AO5Bm8FtdD6hB+jVj1Cbw== X-UI-Out-Filterresults: notjunk:1;V01:K0:T/LF8dbgFGQ=:IazVPW2zKZMkOMXiroZN5E VRM3076oKyOox28QPrgME9Qin0BS21CahQCpxxYxna6pxBUY1ZqxwGTJJWBtEtnQOUW37Rg21 jfClXBD/F0Jv62E9tDZTuWaf+KZzbUa5SHlPV6ZB+QDnCKo9Did0PWhpebf9yw0HQKm6Vgjrz C2EPQTdNKrQKPINRhJWiISVon38jis5wvlqcms7r3tBgaYKYdctAbBX2S/3j4FLwqqCMAz5Rr FSunmE+R50+wWP74qeNynrV1hfx1E3NDz+9fdpMDZ+KhbaGNZHOSYQWnoxpp9MxAMcSksPL4+ /fLZUTpra5QWEoYgddax/fu0WKbCh2KS3TLjuJ078/wa38766KgJWO/896A0sn/wFqXoGunC+ raY7w/kW9GihVkhmky8WAua+DcKjNVOAQCwb8XF0cQ6RBqE0fxIPdJD8W6o6SO6sbV16mxXMU ZO9J+Gp2VfqjaHIAnZedlLchr9eCZKT68m0ceuyS+/jkXgNDhJPD4a2o3dgYC5nk0HPlNhWZO Sur/1sHViNLJaYdPBC583TeiiXS7pXbRXulIrTsi3ximjvggmUjoGmAAXbsy31sZRRRNMX61C 6bNUGpxazORgzKrX5FqIiCdWdWs7ez/pXM2DmWjfxVpSfdaoNLCZxXl2MdDBUhmWLY4ZWdLXw gh5UMXR5RqlrqKiSUzIp4MNi6dtXwGE1km4KB/oMLv62Fg7MX+x0S1VOL6ay57I2cxeZKXFJN gcC2x0QJMucmZ0zI2oPat6JgYlJ8rItK7PMQEJOlj+QTKXDvkG9fu1tAwGngXz5dEdqvzxNCZ n8YDDNy X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > Thanks! The patch applied cleanly and everything compiled fine. Thanks for testing. Please tell me your build and window manager types. > ✓, although if I create a frame with no-focus-on-map I then need a > call to raise-frame to raise it — even if its z-group is 'above. > Maybe when z-group is "above" the frame should be automatically > raised? [...] Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.8 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [213.162.68.7 listed in dnsbl.sorbs.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.17.21 listed in list.dnswl.org] -1.9 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.21 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) X-Debbugs-Envelope-To: 25408 Cc: Eli Zaretskii , 25408@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.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > Thanks! The patch applied cleanly and everything compiled fine. Thanks for testing. Please tell me your build and window manager types. > ✓, although if I create a frame with no-focus-on-map I then need a > call to raise-frame to raise it — even if its z-group is 'above. > Maybe when z-group is "above" the frame should be automatically > raised? [...] Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.9 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.21 listed in wl.mailspike.net] 3.8 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [213.162.68.7 listed in dnsbl.sorbs.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.17.21 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) This is a multi-part message in MIME format. --------------080000050506070809040406 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable > Thanks! The patch applied cleanly and everything compiled fine. Thanks for testing. Please tell me your build and window manager types. > =E2=9C=93, although if I create a frame with no-focus-on-map I then ne= ed a > call to raise-frame to raise it =E2=80=94 even if its z-group is 'abov= e. > Maybe when z-group is "above" the frame should be automatically > raised? Not so here (with a GTK 3.4.2 build on Debian running xfwm). Evaluating (make-frame '((no-focus-on-map . t) (z-group . above))) makes a new frame on top of the existing one regardless of whether xfwm is set up to use focus follows mouse or not. We probably have to investigate that further. > =E2=9C=93, although it would be nice to automatically raise the frame = when > x-group is above. I can call raise-frame, but it doesn't work > correctly when the frame is invisible (and setting the visibility to t= > before raising the frame doesn't work either). I mentioned that: When a frame is made invisible, its z-group is reset to nil by the window system or manager. x_set_z_group can't cope with that because the last line of x_set_z_group (struct frame *f, Lisp_Object new_value, Lisp_Object old_va= lue) { if (!EQ (new_value, old_value)) still assumes that the frame is "above". For the moment try with (set-frame-parameter frame 'z-group nil) =2E.. (set-frame-parameter frame 'z-group 'above) as a workaround. I'm not yet sure whether it's better to (1) have x_make_frame_invisible and x_iconify_frame reset the z-group parameter explicitly, (2) change x_set_z_group so it always issues a request to the window system, or (3) remove the z-group parameter and make the z-group setting an option of the `frame-restack' function. Unfortunately, the z-group equivalents in X 11 are a complete mess: You can put a window simultaneously in the =E2=80=98above=E2=80=99 and the =E2= =80=98below=E2=80=99 groups and it notwhere says what should prevail and what happens when you later remove a window from one of these groups (I trioed to avoid this dilemma with the z-group concept). And restacking may probably remove a window from these groups and maybe not allow to put it there and so on ... And why not avoid z-groups at all? Because you cannot simply restack a frame on top of the "active" frame. If you try (via a foucs-in-hooked function) you will see that your window system uses up all available resources because the window system wants to raise the active frame and Emacs wants to raise the other one. So to put a frame on top of the "active" frame you have to put that frame in the =E2=80=98above=E2=80=99 = group. > * Creating a frame is rather slow; the following is an excerpt of a pr= ofile: > > - make-frame 442= 29% > - frame-creation-function 440= 29% > - apply 440= 29% > - # 440= 29% > - x-create-frame-with-faces 440= 29% > - face-set-after-frame-default 307= 20% > - face-spec-recalc 276= 18% > - make-face-x-resource-internal 217= 14% > - set-face-attributes-from-resources 213= 14% > - set-face-attribute-from-resource 190= 12% > - face-name 126= 8% > + check-face 118= 7% > + face-spec-reset-face 44= 2% > + face-spec-set-2 7= 0% > set-face-attribute 8= 0% > normal-erase-is-backspace-setup-frame = 2 0% But isn't that the problem I tried to tackle (for tooltip frames) with the option =E2=80=98tooltip-reuse-hidden-frame=E2=80=99? All this face-r= elated stuff is an ecological disaster IMHO. Here, creating a tooltip frame caused up to two GC cycles before I added that option. So as a rule create your frames (lazily) once for each session and hide them when you don't need them. > * Frames with z-group set to 'above are not automatically raised when > no-focus-on-map is set, so I need to call x-raise-frame on them; this > doesn't work when they are invisible (instead it makes them visible > without raising them, it seems). I hope I described the problem and a workaround above. I attach my functions for testing attached frames so you can see how I handle this currently. > * Creating a frame / making it visible uses my WM's frame creating ani= mation =E2=80=94 is there a way to disable this (x-show-tip doesn't have = it)? No idea. I can look into that (as a rule I turn off all animations here). Do you use GTK tooltips or Emacs' native ones? martin --------------080000050506070809040406 Content-Type: application/emacs-lisp; name="synch-frame-x.el" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="synch-frame-x.el" Ozs7IHN5bmNoLWZyYW1lLmVsIC0tLSBzeW5jaHJvbml6ZWQgZnJhbWVzCgo7OyBDb3B5cmln aHQgKEMpIDIwMTcgTWFydGluIFJ1ZGFsaWNzCgo7OyBUaW1lLXN0YW1wOiAiMjAxNy0wMi0x MiAxMTozNjoxNCBtYXJ0aW4iCjs7IEF1dGhvcjogTWFydGluIFJ1ZGFsaWNzIDxydWRhbGlj c0BnbXguYXQ+Cjs7IEtleXdvcmRzOiBmcmFtZXMKCjs7IFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cjs7IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Cjs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKOzsgYW55IGxhdGVyIHZlcnNpb24uCgo7 OyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo7OyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKOzsgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKOzsgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwKOzsgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0 b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KCihzZXRxIGRlYnVnLW9uLWVycm9yIHQpCihzZXRx IGZyYW1lLXJlc2l6ZS1waXhlbHdpc2UgdCkKKHNldHEgZm9jdXMtZm9sbG93cy1tb3VzZSAn YXV0by1yYWlzZSkKKHNldHEgbW91c2UtYXV0b3NlbGVjdC13aW5kb3cgLTAuNSkKCjs7IE1h a2UgdGhpcyBhIGxpc3QsIGV2ZW50dWFsbHkuCihkZWZ2YXIgc3luY2gtZnJhbWUtYXQtZnJh bWUgbmlsKQooZGVmdmFyIHN5bmNoLWZyYW1lLXRvLXdpbmRvdyBuaWwpCihkZWZ2YXIgc3lu Y2gtZnJhbWUtdG8tZnJhbWUgbmlsKQoKKGRlZnVuIHN5bmNoLWZyYW1lLWNoZWNrICgpCiAg KGNvbmQKICAgKChub3QgKGZyYW1lLWxpdmUtcCBzeW5jaC1mcmFtZS1hdC1mcmFtZSkpCiAg ICBuaWwpCiAgICgoYW5kIChvciAobm90IChlcSAoZnJhbWUtdmlzaWJsZS1wIHN5bmNoLWZy YW1lLXRvLWZyYW1lKSB0KSkKCSAgICAgKG5vdCAod2luZG93LWxpdmUtcCBzeW5jaC1mcmFt ZS10by13aW5kb3cpKSkKCSAoZnJhbWUtdmlzaWJsZS1wIHN5bmNoLWZyYW1lLWF0LWZyYW1l KSkKICAgIDs7IFRoZSBmcmFtZSB3ZSBhcmUgYXR0YWNoZWQgdG8gaXMgaW52aXNpYmxlIG9y IGljb25pZmllZCBvciBpdHMKICAgIDs7IHdpbmRvdyBpcyBub3QgbGl2ZS4gIE1ha2UgdXMg aW52aXNpYmxlLgogICAgKG1ha2UtZnJhbWUtaW52aXNpYmxlIHN5bmNoLWZyYW1lLWF0LWZy YW1lKQogICAgbmlsKQogICAoKG5vdCAoZnJhbWUtdmlzaWJsZS1wIHN5bmNoLWZyYW1lLWF0 LWZyYW1lKSkKICAgIChtYWtlLWZyYW1lLXZpc2libGUgc3luY2gtZnJhbWUtYXQtZnJhbWUp CiAgICAoc2V0LWZyYW1lLXBhcmFtZXRlciBzeW5jaC1mcmFtZS1hdC1mcmFtZSAnei1ncm91 cCBuaWwpCiAgICB0KQogICAodCB0KSkpCgooZGVmdW4gc3luY2gtZnJhbWUtZm9jdXMtaW4g KCZvcHRpb25hbCBfZnJhbWUpCiAgKHdoZW4gKHN5bmNoLWZyYW1lLWNoZWNrKQogICAgKGNv bmQKICAgICAoKGVxIHN5bmNoLWZyYW1lLWF0LWZyYW1lIChzZWxlY3RlZC1mcmFtZSkpCiAg ICAgIChzZXQtZnJhbWUtcGFyYW1ldGVyIHN5bmNoLWZyYW1lLWF0LWZyYW1lICd6LWdyb3Vw IG5pbCkKICAgICAgKHJhaXNlLWZyYW1lIHN5bmNoLWZyYW1lLWF0LWZyYW1lKQogICAgICAo ZnJhbWUtcmVzdGFjayBzeW5jaC1mcmFtZS10by1mcmFtZSBzeW5jaC1mcmFtZS1hdC1mcmFt ZSkpCiAgICAgKChlcSBzeW5jaC1mcmFtZS10by1mcmFtZSAoc2VsZWN0ZWQtZnJhbWUpKQog ICAgICAoc2V0LWZyYW1lLXBhcmFtZXRlciBzeW5jaC1mcmFtZS1hdC1mcmFtZSAnei1ncm91 cCAnYWJvdmUpKQogICAgICh0CiAgICAgIChzZXQtZnJhbWUtcGFyYW1ldGVyIHN5bmNoLWZy YW1lLWF0LWZyYW1lICd6LWdyb3VwIG5pbCkKICAgICAgKGlmIChlcSAod2luZG93LXN5c3Rl bSkgJ3czMikKCSAgKGZyYW1lLXJlc3RhY2sKCSAgIHN5bmNoLWZyYW1lLWF0LWZyYW1lIHN5 bmNoLWZyYW1lLXRvLWZyYW1lIHQpCgkoZnJhbWUtcmVzdGFjayBzeW5jaC1mcmFtZS10by1m cmFtZSBzeW5jaC1mcmFtZS1hdC1mcmFtZSkpKSkpKQoKKGRlZnVuIHN5bmNoLWZyYW1lLWZv Y3VzLW91dCAoJm9wdGlvbmFsIF9mcmFtZSkKICAod2hlbiAoc3luY2gtZnJhbWUtY2hlY2sp CiAgICAoc2V0LWZyYW1lLXBhcmFtZXRlciBzeW5jaC1mcmFtZS1hdC1mcmFtZSAnei1ncm91 cCBuaWwpCiAgICAoZnJhbWUtcmVzdGFjayBzeW5jaC1mcmFtZS1hdC1mcmFtZSBzeW5jaC1m cmFtZS10by1mcmFtZSB0KSkpCgo7OyBDb3ZlcmluZyBhIHdpbmRvdyB3aXRoIGEgZnJhbWUu CgooZGVmdW4gc3luY2gtZnJhbWUtY292ZXItYWRqdXN0ICgmb3B0aW9uYWwgX2ZyYW1lKQog ICJGdW5jdGlvbiBmb3IgbW92ZSBhbmQgcmVzaXplIGhvb2tzLiIKICAoY29uZAogICAoKG5v dCAoZnJhbWUtbGl2ZS1wIHN5bmNoLWZyYW1lLWF0LWZyYW1lKSkpCiAgICgoYW5kIChvciAo bm90IChlcSAoZnJhbWUtdmlzaWJsZS1wIHN5bmNoLWZyYW1lLXRvLWZyYW1lKSB0KSkKCSAg ICAgKG5vdCAod2luZG93LWxpdmUtcCBzeW5jaC1mcmFtZS10by13aW5kb3cpKSkKCSAoZnJh bWUtdmlzaWJsZS1wIHN5bmNoLWZyYW1lLWF0LWZyYW1lKSkKICAgIDs7IFRoZSBmcmFtZSB3 ZSBhcmUgYXR0YWNoZWQgdG8gaXMgaW52aXNpYmxlIG9yIGljb25pZmllZCBvciBpdHMKICAg IDs7IHdpbmRvdyBpcyBub3QgbGl2ZS4gIE1ha2UgdXMgaW52aXNpYmxlLgogICAgKG1ha2Ut ZnJhbWUtaW52aXNpYmxlIHN5bmNoLWZyYW1lLWF0LWZyYW1lKSkKICAgKChhbmQgKGVxIChm cmFtZS12aXNpYmxlLXAgc3luY2gtZnJhbWUtdG8tZnJhbWUpIHQpCgkgKHdpbmRvdy1saXZl LXAgc3luY2gtZnJhbWUtdG8td2luZG93KSkKICAgIChsZXQqICgoZWRnZXMgKHdpbmRvdy1l ZGdlcyBzeW5jaC1mcmFtZS10by13aW5kb3cgdCB0IHQpKQoJICAgKGxlZnQgKG50aCAwIGVk Z2VzKSkKCSAgICh0b3AgKG50aCAxIGVkZ2VzKSkKCSAgICh3aWR0aCAoLSAobnRoIDIgZWRn ZXMpIGxlZnQpKQoJICAgKGhlaWdodCAoLSAobnRoIDMgZWRnZXMpIHRvcCkpKQogICAgICAo c2V0LWZyYW1lLXBvc2l0aW9uIHN5bmNoLWZyYW1lLWF0LWZyYW1lIGxlZnQgdG9wKQogICAg ICAoc2V0LWZyYW1lLXNpemUgc3luY2gtZnJhbWUtYXQtZnJhbWUgd2lkdGggaGVpZ2h0IHQp CiAgICAgICh1bmxlc3MgKGZyYW1lLXZpc2libGUtcCBzeW5jaC1mcmFtZS1hdC1mcmFtZSkK CShtYWtlLWZyYW1lLXZpc2libGUgc3luY2gtZnJhbWUtYXQtZnJhbWUpKSkpKSkKCihkZWZ1 biBzeW5jaC1mcmFtZS11cGRhdGUgKCZvcHRpb25hbCBfZnJhbWUpCiAgIkZ1bmN0aW9uIGZv ciBidWZmZXIgbGlzdCB1cGRhdGUgaG9vay4iCiAgKGNvbmQKICAgKChub3QgKGZyYW1lLWxp dmUtcCBzeW5jaC1mcmFtZS1hdC1mcmFtZSkpKQogICAoKGFuZCAob3IgKG5vdCAoZXEgKGZy YW1lLXZpc2libGUtcCBzeW5jaC1mcmFtZS10by1mcmFtZSkgdCkpCgkgICAgIChub3QgKHdp bmRvdy1saXZlLXAgc3luY2gtZnJhbWUtdG8td2luZG93KSkpCgkgKGZyYW1lLXZpc2libGUt cCBzeW5jaC1mcmFtZS1hdC1mcmFtZSkpCiAgICA7OyBUaGUgZnJhbWUgd2UgYXJlIGF0dGFj aGVkIHRvIGlzIGludmlzaWJsZSBvciBpY29uaWZpZWQgb3IgaXRzCiAgICA7OyB3aW5kb3cg aXMgbm90IGxpdmUuICBNYWtlIHVzIGludmlzaWJsZS4KICAgIChtYWtlLWZyYW1lLWludmlz aWJsZSBzeW5jaC1mcmFtZS1hdC1mcmFtZSkpCiAgICgoYW5kIChlcSAoZnJhbWUtdmlzaWJs ZS1wIHN5bmNoLWZyYW1lLXRvLWZyYW1lKSB0KQoJICh3aW5kb3ctbGl2ZS1wIHN5bmNoLWZy YW1lLXRvLXdpbmRvdykpCiAgICA7OyBNYWtlIHN1cmUgd2UgYXJlIHZpc2libGUuCiAgICAo dW5sZXNzIChmcmFtZS12aXNpYmxlLXAgc3luY2gtZnJhbWUtYXQtZnJhbWUpCiAgICAgICht YWtlLWZyYW1lLXZpc2libGUgc3luY2gtZnJhbWUtYXQtZnJhbWUpKSkpKQoKKGRlZnVuIHN5 bmNoLWZyYW1lLWNvdmVyLWRlbGV0ZSAoJm9wdGlvbmFsIGZyYW1lKQogICJGdW5jdGlvbiBm b3IgZGVsZXRlIGZyYW1lIGZ1bmN0aW9ucy4iCiAgKHNldHEgZnJhbWUgKG9yIChhbmQgKGZy YW1lLWxpdmUtcCBmcmFtZSkgZnJhbWUpIChzZWxlY3RlZC1mcmFtZSkpKQogICh3aGVuIChl cSBmcmFtZSBzeW5jaC1mcmFtZS1hdC1mcmFtZSkKICAgICh1bmxlc3MgKGZyYW1lLXBhcmFt ZXRlciBmcmFtZSAncGFyZW50LWZyYW1lKQogICAgICAocmVtb3ZlLWhvb2sgJ2ZvY3VzLWlu LWhvb2sgJ3N5bmNoLWZyYW1lLWZvY3VzLWluKQogICAgICAocmVtb3ZlLWhvb2sgJ2ZvY3Vz LW91dC1ob29rICdzeW5jaC1mcmFtZS1mb2N1cy1vdXQpCiAgICAgIChyZW1vdmUtaG9vayAn bW92ZS1mcmFtZS1mdW5jdGlvbnMgJ3N5bmNoLWZyYW1lLWNvdmVyLWFkanVzdCkpCiAgICAo cmVtb3ZlLWhvb2sgJ2J1ZmZlci1saXN0LXVwZGF0ZS1ob29rICdzeW5jaC1mcmFtZS11cGRh dGUpCiAgICAocmVtb3ZlLWhvb2sgJ3dpbmRvdy1zaXplLWNoYW5nZS1mdW5jdGlvbnMgJ3N5 bmNoLWZyYW1lLWNvdmVyLWFkanVzdCkKICAgIChyZW1vdmUtaG9vayAnd2luZG93LWNvbmZp Z3VyYXRpb24tY2hhbmdlLWhvb2sgJ3N5bmNoLWZyYW1lLWNvdmVyLWFkanVzdCkKICAgIChy ZW1vdmUtaG9vayAnZGVsZXRlLWZyYW1lLWZ1bmN0aW9ucyAnc3luY2gtZnJhbWUtY292ZXIt ZGVsZXRlKQogICAgKGRlbGV0ZS1mcmFtZSBzeW5jaC1mcmFtZS1hdC1mcmFtZSkpKQoKKGRl ZnVuIHN5bmNoLWZyYW1lLWNvdmVyICgmb3B0aW9uYWwgd2luZG93IGNoaWxkKQogICJNYWtl IGEgc3luY2hyb25pemVkIGZyYW1lIHRoYXQgY292ZXJzIFdJTkRPVydzIHRleHQgYXJlYS4i CiAgKGludGVyYWN0aXZlKQogIChzZXRxIHdpbmRvdyAod2luZG93LW5vcm1hbGl6ZS13aW5k b3cgd2luZG93KSkKICAobGV0KiAoKGZyYW1lICh3aW5kb3ctZnJhbWUgd2luZG93KSkKCSAo ZWRnZXMgKHdpbmRvdy1lZGdlcyB3aW5kb3cgdCAobm90IGNoaWxkKSB0KSkKCSAobGVmdCAo bnRoIDAgZWRnZXMpKQoJICh0b3AgKG50aCAxIGVkZ2VzKSkKCSAod2lkdGggKC0gKG50aCAy IGVkZ2VzKSBsZWZ0KSkKCSAoaGVpZ2h0ICgtIChudGggMyBlZGdlcykgdG9wKSkpCiAgICAo c2V0cSBzeW5jaC1mcmFtZS1hdC1mcmFtZQoJICAobWFrZS1mcmFtZQoJICAgYCgoLChpZiBj aGlsZCAncGFyZW50LWZyYW1lICdhYm92ZS1mcmFtZSkgLiAsZnJhbWUpCgkgICAgICh0b29s LWJhci1saW5lcyAuIDApCgkgICAgIChtZW51LWJhci1saW5lcyAuIDApCgkgICAgICh2ZXJ0 aWNhbC1zY3JvbGwtYmFycyAuIG5pbCkKCSAgICAgKGhvcml6b250YWwtc2Nyb2xsLWJhcnMg LiBuaWwpCgkgICAgIChtaW5pYnVmZmVyIC4gLChtaW5pYnVmZmVyLXdpbmRvdyBmcmFtZSkp CgkgICAgIChsZWZ0LWZyaW5nZSAuIDApCgkgICAgIChyaWdodC1mcmluZ2UgLiAwKQoJICAg ICAoYmFja2dyb3VuZC1jb2xvciAuICJ5ZWxsb3ciKQoJICAgICAodW5kZWNvcmF0ZWQgLiB0 KQoJICAgICAoc2tpcC10YXNrYmFyIC4gdCkKCSAgICAgKG5vLWF1dG8tZm9jdXMgLiB0KQoJ ICAgICAobm8tZm9jdXMtb24tbWFwIC4gdCkKCSAgICAgKG5vLWFjY2VwdC1mb2N1cyAuIHQp CgkgICAgIChib3JkZXItd2lkdGggLiAwKQoJICAgICAobGVmdCAuICxsZWZ0KSAodG9wIC4g LHRvcCkKCSAgICAgKHdpZHRoIC4gKHRleHQtcGl4ZWxzIC4gLHdpZHRoKSkKCSAgICAgKGhl aWdodCAuICh0ZXh0LXBpeGVscyAuICxoZWlnaHQpKQoJICAgICAoYWxwaGEgLiA1MCkKCSAg ICAgKGRlbGV0ZS1iZWZvcmUgLiAsZnJhbWUpCgkgICAgIChtb3VzZS13aGVlbC1mcmFtZSAu ICxmcmFtZSkKCSAgICAgKSkpCiAgICAod2hlbiBzeW5jaC1mcmFtZS1hdC1mcmFtZQogICAg ICAoc2V0LWZyYW1lLXBhcmFtZXRlciBzeW5jaC1mcmFtZS1hdC1mcmFtZSAnYWxwaGEgNTAp CiAgICAgIChzZXRxIHN5bmNoLWZyYW1lLXRvLXdpbmRvdyB3aW5kb3cpCiAgICAgIChzZXRx IHN5bmNoLWZyYW1lLXRvLWZyYW1lIGZyYW1lKQogICAgICAoc2V0LXdpbmRvdy1idWZmZXIK ICAgICAgIChmcmFtZS1yb290LXdpbmRvdyBzeW5jaC1mcmFtZS1hdC1mcmFtZSkKICAgICAg IChnZXQtYnVmZmVyLWNyZWF0ZSAiKnN5bmNoLWZyYW1lKiIpKQogICAgICAod2l0aC1jdXJy ZW50LWJ1ZmZlciAiKnN5bmNoLWZyYW1lKiIKCShzZXRxIG1vZGUtbGluZS1mb3JtYXQgbmls KSkKICAgICAgKHdoZW4gKGVxIHN5bmNoLWZyYW1lLXRvLWZyYW1lIChzZWxlY3RlZC1mcmFt ZSkpCgkoc2V0LWZyYW1lLXBhcmFtZXRlciBzeW5jaC1mcmFtZS1hdC1mcmFtZSAnei1ncm91 cCAnYWJvdmUpKQogICAgICAodW5sZXNzIGNoaWxkCgkoYWRkLWhvb2sgJ2ZvY3VzLWluLWhv b2sgJ3N5bmNoLWZyYW1lLWZvY3VzLWluKQoJKGFkZC1ob29rICdmb2N1cy1vdXQtaG9vayAn c3luY2gtZnJhbWUtZm9jdXMtb3V0KQoJKGFkZC1ob29rICdtb3ZlLWZyYW1lLWZ1bmN0aW9u cyAnc3luY2gtZnJhbWUtY292ZXItYWRqdXN0KSkKICAgICAgKGFkZC1ob29rICdidWZmZXIt bGlzdC11cGRhdGUtaG9vayAnc3luY2gtZnJhbWUtdXBkYXRlKQogICAgICAoYWRkLWhvb2sg J3dpbmRvdy1zaXplLWNoYW5nZS1mdW5jdGlvbnMgJ3N5bmNoLWZyYW1lLWNvdmVyLWFkanVz dCkKICAgICAgKGFkZC1ob29rICd3aW5kb3ctY29uZmlndXJhdGlvbi1jaGFuZ2UtaG9vayAn c3luY2gtZnJhbWUtY292ZXItYWRqdXN0KQogICAgICAoYWRkLWhvb2sgJ2RlbGV0ZS1mcmFt ZS1mdW5jdGlvbnMgJ3N5bmNoLWZyYW1lLWNvdmVyLWRlbGV0ZSkpKSkKCihkZWZ1biBzeW5j aC1mcmFtZS1jb3Zlci10b2dnbGUgKCkKICAiVG9nZ2xlIHRvcC1sZXZlbCBmcmFtZSBjb3Zl cmluZyBzZWxlY3RlZCB3aW5kb3cuIgogIChpbnRlcmFjdGl2ZSkKICAoaWYgKGZyYW1lLWxp dmUtcCBzeW5jaC1mcmFtZS1hdC1mcmFtZSkKICAgICAgKGRlbGV0ZS1mcmFtZSBzeW5jaC1m cmFtZS1hdC1mcmFtZSkKICAgIDs7IFNwbGl0IHdpbmRvdyB0d2ljZSBzbyB0aGUgd2luZG93 IHJlc2l6aW5nIGZ1bmN0aW9ucyBjYW4gYmUKICAgIDs7IHRlc3RlZC4KICAgIChsZXQgKCh3 aW5kb3cgKHNwbGl0LXdpbmRvdy1ob3Jpem9udGFsbHkpKSkKICAgICAgKHNwbGl0LXdpbmRv dyB3aW5kb3cpCiAgICAgIChzeW5jaC1mcmFtZS1jb3ZlciB3aW5kb3cpKSkpCgooZGVmdW4g c3luY2gtZnJhbWUtY292ZXItY2hpbGQtdG9nZ2xlICgpCiAgIlRvZ2dsZSBjaGlsZCBmcmFt ZSBjb3ZlcmluZyBzZWxlY3RlZCB3aW5kb3cuIgogIChpbnRlcmFjdGl2ZSkKICAoaWYgKGZy YW1lLWxpdmUtcCBzeW5jaC1mcmFtZS1hdC1mcmFtZSkKICAgICAgKGRlbGV0ZS1mcmFtZSBz eW5jaC1mcmFtZS1hdC1mcmFtZSkKICAgIDs7IFNwbGl0IHdpbmRvdyB0d2ljZSBzbyB0aGUg d2luZG93IHJlc2l6aW5nIGZ1bmN0aW9ucyBjYW4gYmUKICAgIDs7IHRlc3RlZC4KICAgIChs ZXQgKCh3aW5kb3cgKHNwbGl0LXdpbmRvdy1ob3Jpem9udGFsbHkpKSkKICAgICAgKHNwbGl0 LXdpbmRvdyB3aW5kb3cpCiAgICAgIChzeW5jaC1mcmFtZS1jb3ZlciB3aW5kb3cpKSkpCgoo Z2xvYmFsLXNldC1rZXkgW2Y1XSAnc3luY2gtZnJhbWUtY292ZXItdG9nZ2xlKQooZ2xvYmFs LXNldC1rZXkgWyhjb250cm9sIGY1KV0gJ3N5bmNoLWZyYW1lLWNvdmVyLWNoaWxkLXRvZ2ds ZSkKCjs7IENvdmVyaW5nIHRoZSBsYXJnZXN0IGVtcHR5IGFyZWEgb2YgYSB3aW5kb3cgd2l0 aCBhIGZyYW1lLgoKKGRlZnZhciBzeW5jaC1mcmFtZS1sYXJnZXN0LXRpbWVyIG5pbAogICJT eW5jaCBmcmFtZSBsYXJnZXN0IHRpbWVyLiIpCgooZGVmdmFyIHN5bmNoLWZyYW1lLWxhcmdl c3QtZGVsYXkgMC4wCiAgIlN5bmNoIGZyYW1lIHRpbWVyIGRlbGF5IGRlbGF5LiIpCgooZGVm dW4gc3luY2gtZnJhbWUtbGFyZ2VzdC1hZGp1c3QgKCZvcHRpb25hbCBfZnJhbWUpCiAgIkZ1 bmN0aW9uIGZvciBtb3ZlIGFuZCByZXNpemUgaG9va3MuIgogIChjb25kCiAgICgobm90IChm cmFtZS1saXZlLXAgc3luY2gtZnJhbWUtYXQtZnJhbWUpKSkKICAgKChhbmQgKG9yIChub3Qg KGVxIChmcmFtZS12aXNpYmxlLXAgc3luY2gtZnJhbWUtdG8tZnJhbWUpIHQpKQoJICAgICAo bm90ICh3aW5kb3ctbGl2ZS1wIHN5bmNoLWZyYW1lLXRvLXdpbmRvdykpKQoJIChmcmFtZS12 aXNpYmxlLXAgc3luY2gtZnJhbWUtYXQtZnJhbWUpKQogICAgKG1ha2UtZnJhbWUtaW52aXNp YmxlIHN5bmNoLWZyYW1lLWF0LWZyYW1lKSkKICAgKChhbmQgKHdpbmRvdy1saXZlLXAgc3lu Y2gtZnJhbWUtdG8td2luZG93KQoJIChlcSAoZnJhbWUtdmlzaWJsZS1wIHN5bmNoLWZyYW1l LXRvLWZyYW1lKSB0KSkKICAgIChsZXQqICgoY2hpbGQgKGZyYW1lLXBhcmFtZXRlciBzeW5j aC1mcmFtZS1hdC1mcmFtZSAncGFyZW50LWZyYW1lKSkKCSAgIChlZGdlcyAod2luZG93LWVk Z2VzIHN5bmNoLWZyYW1lLXRvLXdpbmRvdyB0IChub3QgY2hpbGQpIHQpKQoJICAgKGxlZnQt YWRqdXN0IChmcmFtZS1wYXJhbWV0ZXIgc3luY2gtZnJhbWUtYXQtZnJhbWUgJ2xlZnQtYWRq dXN0KSkKCSAgIChyb3dzICh3aW5kb3ctbGFyZ2VzdC1lbXB0eS1yZWN0YW5nbGUKCQkgIHN5 bmNoLWZyYW1lLXRvLXdpbmRvdyBuaWwgbmlsIG5pbCBuaWwgbGVmdC1hZGp1c3QpKQoJICAg KHNmcmFtZSAoc2VsZWN0ZWQtZnJhbWUpKSkKICAgICAgKHdoZW4gcm93cwoJKGxldCogKChs ZWZ0IChpZiBsZWZ0LWFkanVzdAoJCQkgKG50aCAwIGVkZ2VzKQoJCSAgICAgICAoLSAobnRo IDIgZWRnZXMpIChudGggMCByb3dzKSkpKQoJICAgICAgICh0b3AgKCsgKG50aCAxIGVkZ2Vz KSAobnRoIDEgcm93cykpKQoJICAgICAgICh3aWR0aCAoKyAobnRoIDAgcm93cykpKQoJICAg ICAgIChoZWlnaHQgKC0gKG50aCAyIHJvd3MpIChudGggMSByb3dzKSkpKQoJICAoc2V0LWZy YW1lLXBvc2l0aW9uIHN5bmNoLWZyYW1lLWF0LWZyYW1lIGxlZnQgdG9wKQoJICAoc2V0LWZy YW1lLXNpemUgc3luY2gtZnJhbWUtYXQtZnJhbWUgd2lkdGggaGVpZ2h0IHQpKSkKICAgICAg KHN5bmNoLWZyYW1lLWxhcmdlc3QtdGltZXItc3RvcCkpKSkpCgooZGVmdW4gc3luY2gtZnJh bWUtbGFyZ2VzdC10aW1lci1zdGFydCAoJm9wdGlvbmFsIF9pZ25vcmUxIF9pZ25vcmUyKQog ICJTdGFydCB0aW1lciBmb3Igc3luY2ggZnJhbWUgbGFyZ2VzdC4iCiAgKHVubGVzcyAobWVt cSBzeW5jaC1mcmFtZS1sYXJnZXN0LXRpbWVyIHRpbWVyLWlkbGUtbGlzdCkKICAgIChzZXRx IHN5bmNoLWZyYW1lLWxhcmdlc3QtdGltZXIKCSAgKHJ1bi13aXRoLWlkbGUtdGltZXIKCSAg IHN5bmNoLWZyYW1lLWxhcmdlc3QtZGVsYXkgdCAnc3luY2gtZnJhbWUtbGFyZ2VzdC1hZGp1 c3QpKSkpCgooZGVmdW4gc3luY2gtZnJhbWUtbGFyZ2VzdC10aW1lci1zdG9wICgpCiAgIlN0 b3AgdGltZXIgZm9yIHN5bmNoIGZyYW1lIGxhcmdlc3QuIgogICh3aGVuIHN5bmNoLWZyYW1l LWxhcmdlc3QtdGltZXIKICAgIChjYW5jZWwtdGltZXIgc3luY2gtZnJhbWUtbGFyZ2VzdC10 aW1lcikKICAgIChzZXRxIHN5bmNoLWZyYW1lLWxhcmdlc3QtdGltZXIgbmlsKSkpCgooZGVm dW4gc3luY2gtZnJhbWUtbGFyZ2VzdC1kZWxldGUgKCZvcHRpb25hbCBmcmFtZSkKICAiRnVu Y3Rpb24gZm9yIGRlbGV0ZSBmcmFtZSBmdW5jdGlvbnMuIgogIChzZXRxIGZyYW1lIChvciAo YW5kIChmcmFtZS1saXZlLXAgZnJhbWUpIGZyYW1lKSAoc2VsZWN0ZWQtZnJhbWUpKSkKICAo d2hlbiAoZXEgZnJhbWUgc3luY2gtZnJhbWUtYXQtZnJhbWUpCiAgICAodW5sZXNzIChmcmFt ZS1wYXJhbWV0ZXIgZnJhbWUgJ3BhcmVudC1mcmFtZSkKICAgICAgKHJlbW92ZS1ob29rICdm b2N1cy1pbi1ob29rICdzeW5jaC1mcmFtZS1mb2N1cy1pbikKICAgICAgKHJlbW92ZS1ob29r ICdmb2N1cy1vdXQtaG9vayAnc3luY2gtZnJhbWUtZm9jdXMtb3V0KQogICAgICAocmVtb3Zl LWhvb2sgJ21vdmUtZnJhbWUtZnVuY3Rpb25zICdzeW5jaC1mcmFtZS1sYXJnZXN0LWFkanVz dCkpCiAgICAocmVtb3ZlLWhvb2sgJ2J1ZmZlci1saXN0LXVwZGF0ZS1ob29rICdzeW5jaC1m cmFtZS11cGRhdGUpCiAgICAocmVtb3ZlLWhvb2sgJ3dpbmRvdy1zaXplLWNoYW5nZS1mdW5j dGlvbnMgJ3N5bmNoLWZyYW1lLWxhcmdlc3QtdGltZXItc3RhcnQpCiAgICAocmVtb3ZlLWhv b2sgJ3dpbmRvdy1jb25maWd1cmF0aW9uLWNoYW5nZS1ob29rICdzeW5jaC1mcmFtZS1sYXJn ZXN0LXRpbWVyLXN0YXJ0KQogICAgKHJlbW92ZS1ob29rICd3aW5kb3ctc2Nyb2xsLWZ1bmN0 aW9ucyAnc3luY2gtZnJhbWUtbGFyZ2VzdC10aW1lci1zdGFydCkKICAgIChyZW1vdmUtaG9v ayAnZGVsZXRlLWZyYW1lLWZ1bmN0aW9ucyAnc3luY2gtZnJhbWUtbGFyZ2VzdC1kZWxldGUp CiAgICAoZGVsZXRlLWZyYW1lIHN5bmNoLWZyYW1lLWF0LWZyYW1lKSkpCgooZGVmdW4gc3lu Y2gtZnJhbWUtbGFyZ2VzdCAoJm9wdGlvbmFsIHdpbmRvdyBsZWZ0LWFkanVzdCBjaGlsZCkK ICAiRGlzcGxheSBmcmFtZSBpbiBsYXJnZXN0IGZyZWUgYXJlYSBvbiByaWdodCBvZiBzZWxl Y3RlZCB3aW5kb3cuCkxFRlQtQURKVVNUIG5vbi1uaWwgbWVhbnMgZG8gdGhhdCBhdCB0aGUg bGVmdCBzaWRlIGZvciBhIHdpbmRvdwpwcmVzdW1hYmx5IGRpc3BsYXlpbmcgcmlnaHQtdG8t bGVmdCB0ZXh0LiAgQ0hJTEQgbWVhbnMgbWFrZSBhCmNoaWxkIGZyYW1lIGluc3RlYWQgb2Yg YSB0b3AtbGV2ZWwgb25lLiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCogKCh3aW5kb3cgKHdp bmRvdy1ub3JtYWxpemUtd2luZG93IHdpbmRvdyB0KSkKCSAoZnJhbWUgKHdpbmRvdy1mcmFt ZSB3aW5kb3cpKQoJIChlZGdlcyAod2luZG93LWVkZ2VzIHdpbmRvdyB0IChub3QgY2hpbGQp IHQpKQoJIChyb3dzICh3aW5kb3ctbGFyZ2VzdC1lbXB0eS1yZWN0YW5nbGUKCQl3aW5kb3cg bmlsIG5pbCBuaWwgbmlsIGxlZnQtYWRqdXN0KSkKCSAobGVmdCAoaWYgbGVmdC1hZGp1c3QK CQkgICAobnRoIDAgZWRnZXMpCgkJICgtIChudGggMiBlZGdlcykgKG50aCAwIHJvd3MpKSkp CgkgKHRvcCAoKyAobnRoIDEgZWRnZXMpIChudGggMSByb3dzKSkpCgkgKHdpZHRoICgrIChu dGggMCByb3dzKSkpCgkgKGhlaWdodCAoLSAobnRoIDIgcm93cykgKG50aCAxIHJvd3MpKSkp CiAgICAoc2V0cSBzeW5jaC1mcmFtZS1hdC1mcmFtZQoJICAobWFrZS1mcmFtZQoJICAgYCgo LChpZiBjaGlsZCAncGFyZW50LWZyYW1lICdhYm92ZS1mcmFtZSkgLiAsZnJhbWUpCgkgICAg ICh0b29sLWJhci1saW5lcyAuIDApCgkgICAgIChtZW51LWJhci1saW5lcyAuIDApCgkgICAg ICh2ZXJ0aWNhbC1zY3JvbGwtYmFycyAuIG5pbCkKCSAgICAgKGhvcml6b250YWwtc2Nyb2xs LWJhcnMgLiBuaWwpCgkgICAgIChtaW5pYnVmZmVyIC4gLChtaW5pYnVmZmVyLXdpbmRvdyBm cmFtZSkpCgkgICAgIChsZWZ0LWZyaW5nZSAuIDApCgkgICAgIChyaWdodC1mcmluZ2UgLiAw KQoJICAgICAoYmFja2dyb3VuZC1jb2xvciAuICJ5ZWxsb3ciKQoJICAgICAodW5kZWNvcmF0 ZWQgLiB0KQoJICAgICAoc2tpcC10YXNrYmFyIC4gdCkKCSAgICAgKG5vLWF1dG8tZm9jdXMg LiB0KQoJICAgICAobm8tZm9jdXMtb24tbWFwIC4gdCkKCSAgICAgKG5vLWFjY2VwdC1mb2N1 cyAuIHQpCgkgICAgIChib3JkZXItd2lkdGggLiAwKQoJICAgICAobGVmdC1hZGp1c3QgLiAs bGVmdC1hZGp1c3QpCgkgICAgIChsZWZ0IC4gLGxlZnQpCgkgICAgICh0b3AgLiAsdG9wKQoJ ICAgICAod2lkdGggLiAodGV4dC1waXhlbHMgLiAsd2lkdGgpKQoJICAgICAoaGVpZ2h0IC4g KHRleHQtcGl4ZWxzIC4gLGhlaWdodCkpCgkgICAgIChtaW4td2lkdGggLiAyKQoJICAgICAo bWluLWhlaWdodCAuIDEpCgkgICAgIChhbHBoYSAuIDUwKQoJICAgICAoZGVsZXRlLWJlZm9y ZSAuICxmcmFtZSkKCSAgICAgKG1vdXNlLXdoZWVsLWZyYW1lIC4gLGZyYW1lKQoJICAgICAp KSkKICAgICh3aGVuIHN5bmNoLWZyYW1lLWF0LWZyYW1lCiAgICAgIChzZXRxIHN5bmNoLWZy YW1lLXRvLXdpbmRvdyB3aW5kb3cpCiAgICAgIChzZXRxIHN5bmNoLWZyYW1lLXRvLWZyYW1l IGZyYW1lKQogICAgICAoc2V0LXdpbmRvdy1idWZmZXIKICAgICAgIChmcmFtZS1yb290LXdp bmRvdyBzeW5jaC1mcmFtZS1hdC1mcmFtZSkKICAgICAgIChnZXQtYnVmZmVyLWNyZWF0ZSAi KnN5bmNoLWZyYW1lKiIpKQogICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAiKnN5bmNoLWZy YW1lKiIKCShzZXRxIG1vZGUtbGluZS1mb3JtYXQgbmlsKSkKICAgICAgKHdoZW4gKG9yIChl cSBzeW5jaC1mcmFtZS1hdC1mcmFtZSAoc2VsZWN0ZWQtZnJhbWUpKQoJCShlcSBzeW5jaC1m cmFtZS10by1mcmFtZSAoc2VsZWN0ZWQtZnJhbWUpKSkKCShzZXQtZnJhbWUtcGFyYW1ldGVy IHN5bmNoLWZyYW1lLWF0LWZyYW1lICd6LWdyb3VwICdhYm92ZSkpCiAgICAgICh1bmxlc3Mg Y2hpbGQKCShhZGQtaG9vayAnZm9jdXMtaW4taG9vayAnc3luY2gtZnJhbWUtZm9jdXMtaW4p CgkoYWRkLWhvb2sgJ2ZvY3VzLW91dC1ob29rICdzeW5jaC1mcmFtZS1mb2N1cy1vdXQpCgko YWRkLWhvb2sgJ21vdmUtZnJhbWUtZnVuY3Rpb25zICdzeW5jaC1mcmFtZS1sYXJnZXN0LWFk anVzdCkpCiAgICAgIChhZGQtaG9vayAnYnVmZmVyLWxpc3QtdXBkYXRlLWhvb2sgJ3N5bmNo LWZyYW1lLXVwZGF0ZSkKICAgICAgKGFkZC1ob29rICd3aW5kb3ctc2l6ZS1jaGFuZ2UtZnVu Y3Rpb25zICdzeW5jaC1mcmFtZS1sYXJnZXN0LXRpbWVyLXN0YXJ0KQogICAgICAoYWRkLWhv b2sgJ3dpbmRvdy1jb25maWd1cmF0aW9uLWNoYW5nZS1ob29rICdzeW5jaC1mcmFtZS1sYXJn ZXN0LXRpbWVyLXN0YXJ0KQogICAgICAoYWRkLWhvb2sgJ3dpbmRvdy1zY3JvbGwtZnVuY3Rp b25zICdzeW5jaC1mcmFtZS1sYXJnZXN0LXRpbWVyLXN0YXJ0KQogICAgICAoYWRkLWhvb2sg J2RlbGV0ZS1mcmFtZS1mdW5jdGlvbnMgJ3N5bmNoLWZyYW1lLWxhcmdlc3QtZGVsZXRlKSkp KQoKKGRlZnVuIHN5bmNoLWZyYW1lLWxhcmdlc3QtdG9nZ2xlICgpCiAgIlRvZ2dsZSBjb3Zl cmluZyBmcmVlIGFyZWEgb24gcmlnaHQgb2Ygd2luZG93IHdpdGggdG9wLWxldmVsIGZyYW1l LiIKICAoaW50ZXJhY3RpdmUpCiAgKGlmIChmcmFtZS1saXZlLXAgc3luY2gtZnJhbWUtYXQt ZnJhbWUpCiAgICAgIChkZWxldGUtZnJhbWUgc3luY2gtZnJhbWUtYXQtZnJhbWUpCiAgICAo c3luY2gtZnJhbWUtbGFyZ2VzdCkpKQoKKGRlZnVuIHN5bmNoLWZyYW1lLWxhcmdlc3QtY2hp bGQtdG9nZ2xlICgpCiAgIlRvZ2dsZSBjb3ZlcmluZyBmcmVlIGFyZWEgb2YgcmlnaHQgb2Yg d2luZG93IHdpdGggY2hpbGQgZnJhbWUuIgogIChpbnRlcmFjdGl2ZSkKICAoaWYgKGZyYW1l LWxpdmUtcCBzeW5jaC1mcmFtZS1hdC1mcmFtZSkKICAgICAgKGRlbGV0ZS1mcmFtZSBzeW5j aC1mcmFtZS1hdC1mcmFtZSkKICAgIChzeW5jaC1mcmFtZS1sYXJnZXN0IG5pbCBuaWwgdCkp KQoKKGRlZnVuIHN5bmNoLWZyYW1lLWxhcmdlc3QtbGVmdC10b2dnbGUgKCkKICAiVG9nZ2xl IGNvdmVyaW5nIGZyZWUgYXJlYSBvbiBsZWZ0IG9mIHdpbmRvdyB3aXRoIHRvcC1sZXZlbCBm cmFtZS4KRm9yIHdpbmRvd3Mgd2l0aCByaWdodC10by1sZWZ0IHRleHQuIgogIChpbnRlcmFj dGl2ZSkKICAoaWYgKGZyYW1lLWxpdmUtcCBzeW5jaC1mcmFtZS1hdC1mcmFtZSkKICAgICAg KGRlbGV0ZS1mcmFtZSBzeW5jaC1mcmFtZS1hdC1mcmFtZSkKICAgIChzeW5jaC1mcmFtZS1s YXJnZXN0IG5pbCB0KSkpCgooZGVmdW4gc3luY2gtZnJhbWUtbGFyZ2VzdC1sZWZ0LWNoaWxk LXRvZ2dsZSAoKQogICJUb2dnbGUgY292ZXJpbmcgZnJlZSBhcmVhIG9uIGxlZnQgb2Ygd2lu ZG93IHdpdGggY2hpbGQgZnJhbWUuCkZvciB3aW5kb3dzIHdpdGggcmlnaHQtdG8tbGVmdCB0 ZXh0LiIKICAoaW50ZXJhY3RpdmUpCiAgKGlmIChmcmFtZS1saXZlLXAgc3luY2gtZnJhbWUt YXQtZnJhbWUpCiAgICAgIChkZWxldGUtZnJhbWUgc3luY2gtZnJhbWUtYXQtZnJhbWUpCiAg ICAoc3luY2gtZnJhbWUtbGFyZ2VzdCBuaWwgdCB0KSkpCgooZ2xvYmFsLXNldC1rZXkgW2Y2 XSAnc3luY2gtZnJhbWUtbGFyZ2VzdC10b2dnbGUpCihnbG9iYWwtc2V0LWtleSBbKGNvbnRy b2wgZjYpXSAnc3luY2gtZnJhbWUtbGFyZ2VzdC1jaGlsZC10b2dnbGUpCihnbG9iYWwtc2V0 LWtleSBbZjddICdzeW5jaC1mcmFtZS1sYXJnZXN0LWxlZnQtdG9nZ2xlKQooZ2xvYmFsLXNl dC1rZXkgWyhjb250cm9sIGY3KV0gJ3N5bmNoLWZyYW1lLWxhcmdlc3QtbGVmdC1jaGlsZC10 b2dnbGUpCg== --------------080000050506070809040406-- From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 15 14:49:32 2017 Received: (at 25408) by debbugs.gnu.org; 15 Feb 2017 19:49:32 +0000 Received: from localhost ([127.0.0.1]:41368 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ce5a0-0006ol-3v for submit@debbugs.gnu.org; Wed, 15 Feb 2017 14:49:32 -0500 Received: from mail-oi0-f43.google.com ([209.85.218.43]:36383) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ce5Zy-0006oY-La for 25408@debbugs.gnu.org; Wed, 15 Feb 2017 14:49:31 -0500 Received: by mail-oi0-f43.google.com with SMTP id u143so91967920oif.3 for <25408@debbugs.gnu.org>; Wed, 15 Feb 2017 11:49:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=GktwjfUxZlo714R1cWFQvhRtshyPnuoN2/TNtLvlzPo=; b=TDjrdzsZsFWcG0vM0JjLHMrDCSL3Ficvn/UhPLECpa9tmBlSsXiXFR086srioa8TuV kQ0mv2nyPaasKEzfq5NyBm74YbKDEl+JXLQICD2+v9jO37YPJqIrvdZQsH00NNq+Y+MS c+IwHH2Aac4TJ3IoVRC9NC34nPT7Gb7l3ihBqoU/2W1OKiQhk6myLRaje83iaHHjZT8u vRI387r8r7YjfGBU+Lo+CQENQd62ZImaSQadPIPhGEinNOvrRhUVvry4A7FKXoujLm32 zwutirETDS+RpA6TP5+uSX93pJauVreWIh2sSk/0/N00OLD9n+6bP6fmzyPdy/GAlu8R 80aA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=GktwjfUxZlo714R1cWFQvhRtshyPnuoN2/TNtLvlzPo=; b=WfFDf66YKj5WXG+KtFg9BTxLQQSFWf+r4VxIgWq6OOWiKmfmaGqzjy0YoA+z/rfdi4 vWZE79QUNi2KNaAbbPY28goHWtZ5quvtLppZzyt3LNqCQ1jaD++X3zRTx1IUdyJVKf8K jluodocmj5jgEQ9FyTQRhaquz0embBf7eS/rbMJYdBh9Lv6bFyU3uVBHciUllmPAItaW hUfgH55S7Id4RVmH9c76Etzi2bRYwoOOyDDUMJcYxktqqpl6Wzfeh6JIAZWzPVuicVEu qupUN4XSVLtE5j5WOVym6iGm4SccW/GNwoG6eFPPzsxvLkstL1HqFF2X8FeU8J4kOcFb Docg== X-Gm-Message-State: AMke39nZnrGFV+RN+dAAqZsXwItr/s96RPFpaqKaMQziZHLuW/HRK2+OqMMQy+Snzrc9F80BfRbZUg9p3sBqvg== X-Received: by 10.202.212.79 with SMTP id l76mr20541813oig.177.1487188164793; Wed, 15 Feb 2017 11:49:24 -0800 (PST) MIME-Version: 1.0 Received: by 10.182.105.73 with HTTP; Wed, 15 Feb 2017 11:49:24 -0800 (PST) In-Reply-To: <58A0434D.6030206@gmx.at> References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> From: Arthur Miller Date: Wed, 15 Feb 2017 20:49:24 +0100 Message-ID: Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: martin rudalics Content-Type: multipart/alternative; boundary=001a113d358e46ddcb054896fa22 X-Spam-Score: -2.5 (--) X-Debbugs-Envelope-To: 25408 Cc: 25408@debbugs.gnu.org, Eli Zaretskii , =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.5 (--) --001a113d358e46ddcb054896fa22 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable That's great. Are you going to push your patch to git-repo? When it comes to other platforms than Windows, I have no idea about OS X since I don't own any macs, but for X11, we have different means to controll decorations and their looks & behaviour. On X11 we have window managers that makes it easy to configure (or remove) borders, decorations etc, so in my humble opinion I don't think you have to spend countless time to make it work with every possible window manager etc. I didn't even thought of this on Linux, I only needed it for windows, to make Emacs behave more like it does on Linux. 2017-02-12 12:13 GMT+01:00 martin rudalics : > > Thanks! The patch applied cleanly and everything compiled fine. > > Thanks for testing. Please tell me your build and window manager types. > > > =E2=9C=93, although if I create a frame with no-focus-on-map I then nee= d a > > call to raise-frame to raise it =E2=80=94 even if its z-group is 'above= . > > Maybe when z-group is "above" the frame should be automatically > > raised? > > Not so here (with a GTK 3.4.2 build on Debian running xfwm). Evaluating > > (make-frame '((no-focus-on-map . t) (z-group . above))) > > makes a new frame on top of the existing one regardless of whether xfwm > is set up to use focus follows mouse or not. > > We probably have to investigate that further. > > > =E2=9C=93, although it would be nice to automatically raise the frame w= hen > > x-group is above. I can call raise-frame, but it doesn't work > > correctly when the frame is invisible (and setting the visibility to t > > before raising the frame doesn't work either). > > I mentioned that: When a frame is made invisible, its z-group is reset > to nil by the window system or manager. x_set_z_group can't cope with > that because the last line of > > x_set_z_group (struct frame *f, Lisp_Object new_value, Lisp_Object > old_value) > { > if (!EQ (new_value, old_value)) > > still assumes that the frame is "above". For the moment try with > > (set-frame-parameter frame 'z-group nil) > ... > (set-frame-parameter frame 'z-group 'above) > > as a workaround. I'm not yet sure whether it's better to (1) have > x_make_frame_invisible and x_iconify_frame reset the z-group parameter > explicitly, (2) change x_set_z_group so it always issues a request to > the window system, or (3) remove the z-group parameter and make the > z-group setting an option of the `frame-restack' function. > > Unfortunately, the z-group equivalents in X 11 are a complete mess: You > can put a window simultaneously in the =E2=80=98above=E2=80=99 and the = =E2=80=98below=E2=80=99 groups > and it notwhere says what should prevail and what happens when you later > remove a window from one of these groups (I trioed to avoid this dilemma > with the z-group concept). And restacking may probably remove a window > from these groups and maybe not allow to put it there and so on ... > > And why not avoid z-groups at all? Because you cannot simply restack a > frame on top of the "active" frame. If you try (via a foucs-in-hooked > function) you will see that your window system uses up all available > resources because the window system wants to raise the active frame and > Emacs wants to raise the other one. So to put a frame on top of the > "active" frame you have to put that frame in the =E2=80=98above=E2=80=99 = group. > > > * Creating a frame is rather slow; the following is an excerpt of a > profile: > > > > - make-frame 442 > 29% > > - frame-creation-function 440 > 29% > > - apply 440 > 29% > > - # 440 > 29% > > - x-create-frame-with-faces 440 > 29% > > - face-set-after-frame-default 307 > 20% > > - face-spec-recalc 276 > 18% > > - make-face-x-resource-internal 217 > 14% > > - set-face-attributes-from-resources 213 > 14% > > - set-face-attribute-from-resource 190 > 12% > > - face-name 126 > 8% > > + check-face 118 > 7% > > + face-spec-reset-face 44 > 2% > > + face-spec-set-2 7 > 0% > > set-face-attribute 8 > 0% > > normal-erase-is-backspace-setup-frame > 2 0% > > But isn't that the problem I tried to tackle (for tooltip frames) with > the option =E2=80=98tooltip-reuse-hidden-frame=E2=80=99? All this face-r= elated stuff is > an ecological disaster IMHO. Here, creating a tooltip frame caused up > to two GC cycles before I added that option. > > So as a rule create your frames (lazily) once for each session and hide > them when you don't need them. > > > * Frames with z-group set to 'above are not automatically raised when > > no-focus-on-map is set, so I need to call x-raise-frame on them; this > > doesn't work when they are invisible (instead it makes them visible > > without raising them, it seems). > > I hope I described the problem and a workaround above. I attach my > functions for testing attached frames so you can see how I handle this > currently. > > > * Creating a frame / making it visible uses my WM's frame creating > animation =E2=80=94 is there a way to disable this (x-show-tip doesn't ha= ve it)? > > No idea. I can look into that (as a rule I turn off all animations > here). Do you use GTK tooltips or Emacs' native ones? > > martin > --001a113d358e46ddcb054896fa22 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
That's great. Are you going to push your patch to= git-repo?

When it comes to other platforms than Windows, I ha= ve no idea about OS X since I don't own any macs, but for X11, we have = different means to controll decorations and their looks & behaviour. On= X11 we have window managers that makes it easy to configure (or remove) bo= rders, decorations etc, so in my humble opinion I don't think you have = to spend countless time to make it work with every possible window manager = etc. I didn't even thought of this on Linux, I only needed it for windo= ws, to make Emacs behave more like it does on Linux.

2017-02-12 12:13 GMT+01:00 = martin rudalics <rudalics@gmx.at>:
> Thanks! The patch applied cleanly and everythi= ng compiled fine.

Thanks for testing.=C2=A0 Please tell me your build and window manager type= s.

> =E2=9C=93, although if I create a frame with no-focus-on-map I then ne= ed a
> call to raise-frame to raise it =E2=80=94 even if its z-group is '= above.
> Maybe when z-group is "above" the frame should be automatica= lly
> raised?

Not so here (with a GTK 3.4.2 build on Debian running xfwm).=C2=A0 Evaluati= ng

(make-frame '((no-focus-on-map . t) (z-group . above)))

makes a new frame on top of the existing one regardless of whether xfwm
is set up to use focus follows mouse or not.

We probably have to investigate that further.

> =E2=9C=93, although it would be nice to automatically raise the frame = when
> x-group is above.=C2=A0 I can call raise-frame, but it doesn't wor= k
> correctly when the frame is invisible (and setting the visibility to t=
> before raising the frame doesn't work either).

I mentioned that: When a frame is made invisible, its z-group is reset
to nil by the window system or manager.=C2=A0 x_set_z_group can't cope = with
that because the last line of

x_set_z_group (struct frame *f, Lisp_Object new_value, Lisp_Object old_valu= e)
{
=C2=A0 if (!EQ (new_value, old_value))

still assumes that the frame is "above".=C2=A0 For the moment try= with

(set-frame-parameter frame 'z-group nil)
...
(set-frame-parameter frame 'z-group 'above)

as a workaround.=C2=A0 I'm not yet sure whether it's better to (1) = have
x_make_frame_invisible and x_iconify_frame reset the z-group parameter
explicitly, (2) change x_set_z_group so it always issues a request to
the window system, or (3) remove the z-group parameter and make the
z-group setting an option of the `frame-restack' function.

Unfortunately, the z-group equivalents in X 11 are a complete mess: You
can put a window simultaneously in the =E2=80=98above=E2=80=99 and the =E2= =80=98below=E2=80=99 groups
and it notwhere says what should prevail and what happens when you later remove a window from one of these groups (I trioed to avoid this dilemma with the z-group concept).=C2=A0 And restacking may probably remove a windo= w
from these groups and maybe not allow to put it there and so on ...

And why not avoid z-groups at all?=C2=A0 Because you cannot simply restack = a
frame on top of the "active" frame.=C2=A0 If you try (via a foucs= -in-hooked
function) you will see that your window system uses up all available
resources because the window system wants to raise the active frame and
Emacs wants to raise the other one.=C2=A0 So to put a frame on top of the "active" frame you have to put that frame in the =E2=80=98above= =E2=80=99 group.

> * Creating a frame is rather slow; the following is an excerpt of a pr= ofile:
>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0- make-fr= ame=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0442=C2= =A0 29%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 - frame-= creation-function=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0440=C2=A0 29%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0- = apply=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 440=C2=A0 29%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 -= #<compiled 0x4862dd>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 440=C2=A0 29%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0- x-create-frame-with-faces=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 440=C2=A0 29%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 - face-set-after-frame-default=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 307=C2=A0 20%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0- face-spec-recalc=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0276=C2=A0 18%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 - make-face-x-resource-internal=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0217=C2=A0 14%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0- set-face-attributes-from-resources=C2=A0 =C2=A0 = =C2=A0 =C2=A0213=C2=A0 14%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 - set-face-attribute-from-resource=C2=A0 =C2=A0 = =C2=A0 =C2=A0 190=C2=A0 12%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0- face-name=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 126= =C2=A0 =C2=A08%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 + check-face=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 118=C2=A0 = =C2=A07%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 + face-spec-reset-face=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A044=C2=A0 =C2=A02%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 + face-spec-set-2=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A07=C2=A0 =C2= =A00%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0set-face-attribute=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A08=C2=A0 =C2= =A00%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 n= ormal-erase-is-backspace-setup-frame=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 2=C2=A0 =C2=A00%

But isn't that the problem I tried to tackle (for tooltip frames) with<= br> the option =E2=80=98tooltip-reuse-hidden-frame=E2=80=99?=C2=A0 All this fac= e-related stuff is
an ecological disaster IMHO.=C2=A0 Here, creating a tooltip frame caused up=
to two GC cycles before I added that option.

So as a rule create your frames (lazily) once for each session and hide
them when you don't need them.

> * Frames with z-group set to 'above are not automatically raised w= hen
> no-focus-on-map is set, so I need to call x-raise-frame on them; this<= br> > doesn't work when they are invisible (instead it makes them visibl= e
> without raising them, it seems).

I hope I described the problem and a workaround above.=C2=A0 I attach my functions for testing attached frames so you can see how I handle this
currently.

> * Creating a frame / making it visible uses my WM's frame creating= animation =E2=80=94 is there a way to disable this (x-show-tip doesn't= have it)?

No idea.=C2=A0 I can look into that (as a rule I turn off all animations here).=C2=A0 Do you use GTK tooltips or Emacs' native ones?

martin

--001a113d358e46ddcb054896fa22-- From debbugs-submit-bounces@debbugs.gnu.org Thu Feb 16 03:05:16 2017 Received: (at 25408) by debbugs.gnu.org; 16 Feb 2017 08:05:16 +0000 Received: from localhost ([127.0.0.1]:41650 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ceH40-0003fx-K0 for submit@debbugs.gnu.org; Thu, 16 Feb 2017 03:05:16 -0500 Received: from mout.gmx.net ([212.227.15.15]:62246) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ceH3y-0003fj-1j for 25408@debbugs.gnu.org; Thu, 16 Feb 2017 03:05:14 -0500 Received: from [192.168.1.100] ([213.162.68.21]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0Lu8Ri-1cDQZT3wXO-011SSf; Thu, 16 Feb 2017 09:05:06 +0100 Message-ID: <58A55D26.3010203@gmx.at> Date: Thu, 16 Feb 2017 09:04:54 +0100 From: martin rudalics MIME-Version: 1.0 To: Arthur Miller Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:4T6rDnT9Kya+ngzk0cMtrPt1ojizgvt94oIaCVjU1//n0qjpDC8 PvfBoGThbbdwEjiUBWemh7nV7qfToTZqLs24hA6XJflnloL6WSR8tOXWZ18kpF5brXLX7R+ yI+XwTwJ1V+ZiPlytzU5/WROheJNyMRfjYW5dO5U/pYqm7frOGW/U0POtqfChth1+6q92Bz M6WSqXI+lkt5K8wiYf1bA== X-UI-Out-Filterresults: notjunk:1;V01:K0:6ijyWyriqvg=:pz7NL5IVa5BvWmm9EVP4Gh yr0M8xFB4qJcaQbQktx7g4Akadctt8ayJARck95IgKYQO2tYHGaK6WyoLEw56fdWYVzSHwDAW 5eBOlIJ6BnUttYHo/MmZ/qyTCoTA6yJJKsqvhmnmPfL0McGnu5nfK9ND1RdI3eY5r5D3Ib+UN n5uIaVuWXKltjBTw0FTZozOhvn2d5rzyNBM4nula6UIAwwQchEeKjGq+iUfeL9orGnrP2eZop 4XMGSeEGpPpSyioQ/95VeiGfqmsisHkF8dlTLxG0/uFwYYnlNv0q091YqsALruvq7bCEKcbg+ e/ve9E4OOuaaCc9R7gpq+fuGzbic/73ww0dQymDtU1QALsZB0sX6e68wMchEmt0EY1EXATw0S gmNXcyFmKWYi1WYeLuVJYZYqDFx3LNkIjrHKby5VUpa8+AeHIqCBioUas83XuK9kc/w0hYjAt gPyT9Q00+dhRhsofNRSG+DzPFfl2IcXVloNbJnJ5aZHVzsBWhhTpqWlbbCqeo/DCHmMs1tbtv D0WPpciQqRs1KWI5ekxxd+tcnYoWA62CZexhVTdWyr27Z6+I2IiCrha4BaPJtLzmx7hX4A5cu K+A/QibvcN0Fa1aHaku+0Ud6mZowAE6d1rP6r4D0tBz8NhuvhV1DX4cBHh6ks4xtU0LoyLdnQ QsX83xcqoigSiLfKFJicb1GBuHSTVUIKmGfjdzudNTVFWO0uY9CUvqoCwG/r5tzMqxE+jOWnw k+2GnQqYnUomYxaNp2Mgp9n+AGfn0kbcK31XHbDcmUZ4+OIqhpJ18JFnmFP6XOmyXdWLysftM CY9fPW5 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: 25408 Cc: 25408@debbugs.gnu.org, Eli Zaretskii , =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= 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: -4.0 (----) > That's great. Are you going to push your patch to git-repo? After having resolved some remaining issues, yes. > When it comes to other platforms than Windows, I have no idea about OS X > since I don't own any macs, but for X11, we have different means to > controll decorations and their looks & behaviour. On X11 we have window > managers that makes it easy to configure (or remove) borders, decorations > etc, so in my humble opinion I don't think you have to spend countless time > to make it work with every possible window manager etc. The concern here is not how to turn off decorations for all windows (or maybe all windows of a certain application), something which themes most likely already provide to some extent. The concern is how to control aspects like appearance, placement, focusing and stacking order of some specific Emacs frames, without affecting the remaining frames. Consider the need to display some explanatory information for the editing activity you are about to accomplish. If you don't want to pop up a new "normal" window or frame for that purpose, you currently have two possibilites: Use the echo area or the tooltip frame. Both are ephemeral and have to be shared with all other applications pursuing a similar goal. Hence the need for some sort of minor frames which are OT1H less ephemeral and can be more easily replicated than tooltips or the echo area and are OTOH visually and habitually less obtrusive than normal frames or windows. Some desirable properties of such minor frames are: (1) Do not show any window manager decorations provided their visibility and placement can be controlled by the application. (2) Do not show them on the taskbar. (3) Do not focus them when they pop up. (4) Do not give them focus via mouse movements, mouse wheel scrolling or accidental mouse clicks. (5) Allow to attach them to some normal Emacs frame or window. This means to automatically move, resize and stack them along with that frame/window without affecting the appearance of any other object on your display. It may also mean to make them obscure as few as possible text of the frame they have been attached to. (6) Apart from (1)--(5) give them the full functionality of "normal" Emacs frames. Obviously, (6) is the most difficult part. For example, displaying such a frame without making it continuously vanish and reappear. martin From debbugs-submit-bounces@debbugs.gnu.org Thu Feb 16 08:22:57 2017 Received: (at 25408) by debbugs.gnu.org; 16 Feb 2017 13:22:57 +0000 Received: from localhost ([127.0.0.1]:41784 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ceM1Q-0007lu-W2 for submit@debbugs.gnu.org; Thu, 16 Feb 2017 08:22:57 -0500 Received: from mail-oi0-f46.google.com ([209.85.218.46]:36779) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ceM1P-0007li-MU for 25408@debbugs.gnu.org; Thu, 16 Feb 2017 08:22:56 -0500 Received: by mail-oi0-f46.google.com with SMTP id u143so8045263oif.3 for <25408@debbugs.gnu.org>; Thu, 16 Feb 2017 05:22:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=fBJIyIUbal80ANa8OJD21n94Bc8jGAy70MjGo+ibF/w=; b=BXokqvUENJp9a93GmPsJYfb711yX6kRIYne79RebqYvTx4soiBEBq+YMRrqPsvtGDV iyIOWVfmrXFDs/C0xgNCjkYJMHXBVcoe4O1ozz00JYycRQfavSmoWQQJv/3wE6Z862Eh wj48aCiCMDquDlcnC7ARiV6t8i0qWI0f/WU9ar4NX/pRE3/6WoVMi+gYOVJBdm2jyiFV GzPVJA19Y6YeZ6VyTPbjC3U0DgzvmObJy7u6/mWEK3QUZL9b7Y3QdYdUmDIVZ9ir4/yG AOQaE9/FE0QAIA15VfDMoikb/mFDcTLubDhOLzvnESYchZq+Q88u0BwHptu3MBSdFeE/ jY1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=fBJIyIUbal80ANa8OJD21n94Bc8jGAy70MjGo+ibF/w=; b=L3/nxCkXzbunwggfnbgQ35RMjX96Hhw5WUMomaciMz9zMJug8Q6SCd4PQTGVdvV5lg LVhhJATRW1Bau31oyUnKg8FkDSsHUlUAlzvsjVwmHEZoSZ/bUe3TzNdxQaUMGEXTxdx0 hi5Ac70EKna1yrXiLiDCiuvRzrBa4yW5Q2T9qopDyhbMDCxLM9leom8p7hy+NQrLUS+V tE4eilGlF9XEs2otd/hiYVyP+GqA2kOZ8OM1IO0P3IKWhCKCnoY32UA0wyCjQCRSi/2+ yU+VvdTIBhHecyIH0xGKdhNOudFeECFaLKT38C1Mr+6QRyMbzaCHCkWPDtX3G0VpmSia iJ1A== X-Gm-Message-State: AMke39kG/eCXYwygD1qN46tCfFIH5fl/6gk8jJ03E0PvfLLinNIWmF07Yhci4FLVKcC/WXGyElG81KmcpI917g== X-Received: by 10.202.62.138 with SMTP id l132mr1209822oia.128.1487251369910; Thu, 16 Feb 2017 05:22:49 -0800 (PST) MIME-Version: 1.0 Received: by 10.182.105.73 with HTTP; Thu, 16 Feb 2017 05:22:49 -0800 (PST) In-Reply-To: <58A55D26.3010203@gmx.at> References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58A55D26.3010203@gmx.at> From: Arthur Miller Date: Thu, 16 Feb 2017 14:22:49 +0100 Message-ID: Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: martin rudalics Content-Type: multipart/alternative; boundary=001a113cc15898b25d0548a5b14b X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 25408 Cc: 25408@debbugs.gnu.org, Eli Zaretskii , =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= 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: 0.0 (/) --001a113cc15898b25d0548a5b14b Content-Type: text/plain; charset=UTF-8 If they don't get focus when they pop-up, and not get focus via mouse and if they also don't have decorations, what is considered as full functionality of "normal" frames? That sounds to me a bit like a popup window. Do you give them focus by switching with keyboard, like moving focus to "other window"? "The concern is how to control aspects like appearance, placement, focusing and stacking order of some specific Emacs frames, without affecting the remaining frames." As you yourself point out, certain WMs does allow you to create rules per windows. On some managers one can set rule based on window title bar, window class or class name, xid, role etc. I don't know if title bar property can be used if titlebar exist but is hidden. Maybe a separate class name could be used for that kind of windows so one can set appropriate hints for that frame. Or maybe you are already doing that? Just an idea, I haven't looked at your patch to be honest. I cloned code today from git and compilations is crashing on me, when dumping lisp code: (without your patch applied): Loading /home/arthur/emacs/lisp/international/characters.el (source)... Wrong type argument: char-table-p, nil make[1]: *** [Makefile:752: bootstrap-emacs] Error 255 make[1]: Leaving directory '/home/arthur/emacs/src' make: *** [Makefile:409: src] Error 2 Will be interesting to test it once I manage to compile Emacs. 2017-02-16 9:04 GMT+01:00 martin rudalics : > > That's great. Are you going to push your patch to git-repo? > > After having resolved some remaining issues, yes. > > > When it comes to other platforms than Windows, I have no idea about OS X > > since I don't own any macs, but for X11, we have different means to > > controll decorations and their looks & behaviour. On X11 we have window > > managers that makes it easy to configure (or remove) borders, decorations > > etc, so in my humble opinion I don't think you have to spend countless > time > > to make it work with every possible window manager etc. > > The concern here is not how to turn off decorations for all windows (or > maybe all windows of a certain application), something which themes most > likely already provide to some extent. The concern is how to control > aspects like appearance, placement, focusing and stacking order of some > specific Emacs frames, without affecting the remaining frames. > > Consider the need to display some explanatory information for the > editing activity you are about to accomplish. If you don't want to pop > up a new "normal" window or frame for that purpose, you currently have > two possibilites: Use the echo area or the tooltip frame. Both are > ephemeral and have to be shared with all other applications pursuing a > similar goal. > > Hence the need for some sort of minor frames which are OT1H less > ephemeral and can be more easily replicated than tooltips or the echo > area and are OTOH visually and habitually less obtrusive than normal > frames or windows. > > Some desirable properties of such minor frames are: > > (1) Do not show any window manager decorations provided their visibility > and placement can be controlled by the application. > > (2) Do not show them on the taskbar. > > (3) Do not focus them when they pop up. > > (4) Do not give them focus via mouse movements, mouse wheel scrolling or > accidental mouse clicks. > > (5) Allow to attach them to some normal Emacs frame or window. This > means to automatically move, resize and stack them along with that > frame/window without affecting the appearance of any other object on > your display. It may also mean to make them obscure as few as > possible text of the frame they have been attached to. > > (6) Apart from (1)--(5) give them the full functionality of "normal" > Emacs frames. > > Obviously, (6) is the most difficult part. For example, displaying such > a frame without making it continuously vanish and reappear. > > martin > --001a113cc15898b25d0548a5b14b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
If they don't get focus when = they pop-up, and not get focus via mouse and if they also
don't have= decorations, what is considered as full functionality of "normal"= ; frames?
That sounds to me a bit like a popup window. Do you give them= focus by switching
with keyboard, like moving focus to "other win= dow"?

"The concern is how to control
aspects like appearance, placement, focusing and stacking order of some
specific Emacs frames, without affecting the remaining frames."
As you yourself point out, certain WMs does allow you to create rule= s per windows.=C2=A0 On some
managers one can set rule based on window = title bar, window class or class name,=C2=A0
xid, role etc. I don't= know if title bar property can be used if titlebar exist but is hidden.
Maybe a separate class name could be used for that kind of = windows so one can set
appropriate hints for that frame. Or maybe you a= re already doing that? Just an idea,
I haven't looked at your patch= to be honest.

I cloned code today from git and compilati= ons is crashing on me, when dumping lisp code:
(without your = patch applied):

Loading /home/arthur/emacs/lisp/internati= onal/characters.el (source)...
Wrong type argument: char-table-p, nilmake[1]: *** [Makefile:752: bootstrap-emacs] Error 255
make[1]: Leaving= directory '/home/arthur/emacs/src'
make: *** [Makefile:409: src= ] Error 2

Will be interesting to test it once I manage to= compile Emacs.


2017-02-16 9:= 04 GMT+01:00 martin rudalics <rudalics@gmx.at>:
> That's great. Are you going t= o push your patch to git-repo?

After having resolved some remaining issues, yes.

> When it comes to other platforms than Windows, I have no idea about OS= X
> since I don't own any macs, but for X11, we have different means t= o
> controll decorations and their looks & behaviour. On X11 we have w= indow
> managers that makes it easy to configure (or remove) borders, decorati= ons
> etc, so in my humble opinion I don't think you have to spend count= less time
> to make it work with every possible window manager etc.

The concern here is not how to turn off decorations for all windows (or
maybe all windows of a certain application), something which themes most likely already provide to some extent.=C2=A0 The concern is how to control<= br> aspects like appearance, placement, focusing and stacking order of some
specific Emacs frames, without affecting the remaining frames.

Consider the need to display some explanatory information for the
editing activity you are about to accomplish.=C2=A0 If you don't want t= o pop
up a new "normal" window or frame for that purpose, you currently= have
two possibilites: Use the echo area or the tooltip frame.=C2=A0 Both are ephemeral and have to be shared with all other applications pursuing a
similar goal.

Hence the need for some sort of minor frames which are OT1H less
ephemeral and can be more easily replicated than tooltips or the echo
area and are OTOH visually and habitually less obtrusive than normal
frames or windows.

Some desirable properties of such minor frames are:

(1) Do not show any window manager decorations provided their visibility =C2=A0 =C2=A0 and placement can be controlled by the application.

(2) Do not show them on the taskbar.

(3) Do not focus them when they pop up.

(4) Do not give them focus via mouse movements, mouse wheel scrolling or =C2=A0 =C2=A0 accidental mouse clicks.

(5) Allow to attach them to some normal Emacs frame or window.=C2=A0 This =C2=A0 =C2=A0 means to automatically move, resize and stack them along with= that
=C2=A0 =C2=A0 frame/window without affecting the appearance of any other ob= ject on
=C2=A0 =C2=A0 your display.=C2=A0 It may also mean to make them obscure as = few as
=C2=A0 =C2=A0 possible text of the frame they have been attached to.

(6) Apart from (1)--(5) give them the full functionality of "normal&qu= ot;
=C2=A0 =C2=A0 Emacs frames.

Obviously, (6) is the most difficult part.=C2=A0 For example, displaying su= ch
a frame without making it continuously vanish and reappear.

martin

--001a113cc15898b25d0548a5b14b-- From debbugs-submit-bounces@debbugs.gnu.org Thu Feb 16 09:06:14 2017 Received: (at 25408) by debbugs.gnu.org; 16 Feb 2017 14:06:14 +0000 Received: from localhost ([127.0.0.1]:41797 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ceMhJ-0000Jc-Nz for submit@debbugs.gnu.org; Thu, 16 Feb 2017 09:06:14 -0500 Received: from mail-ot0-f174.google.com ([74.125.82.174]:36482) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ceMhH-0000JO-S9 for 25408@debbugs.gnu.org; Thu, 16 Feb 2017 09:06:12 -0500 Received: by mail-ot0-f174.google.com with SMTP id 32so11501385oth.3 for <25408@debbugs.gnu.org>; Thu, 16 Feb 2017 06:06:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=gngUKzVZ0/0wyiYj0vxC0Wg50trjZV9Q2OpiKu3E1jM=; b=nwltG53FFHHH/6LbL3GnIKw7cgJy/5Wizp9zWBMpveg5XYY0474wbSbfq0q/UIuRz1 2qANzhz8JX5TYokulOiXTUhFQjsYDLhvv/FXsXmn1hXR9VXMjfSt5T2KWbZlao9rQsb5 HrvIHnNIEhEL8xmrE2dJhvwnYNPcgZ6hX/yzEJdWHm1fMQXsKb1y+jZcEAhvwZCoMOuR uXq2U0+o0KxKMjGsj8vCZtdav/02gwKYtlDU5uZkLPCl8NQSuv9hAmQv2zE87Vlam55o q2+ZteJRd/gXeAQGDSvfehAWubMi/B+vOOfd7zhb4/mMu0W7BP8wtycLUzsAexjTFpI2 xRUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=gngUKzVZ0/0wyiYj0vxC0Wg50trjZV9Q2OpiKu3E1jM=; b=fTui2VfT5rcakgocD0YCvacklpSSiTnB0dmkuXXktIgjpqn5+86nIeshNTJaX3TNQj FVvbXE7u143bRRbjq8yQrLnLl+JJ4Itg99dQuHwratViTydi1VxR290tJ5DPRSyf7hPH QUYP1NfHerUXPCdIggcA29SJP4W7QNCVKFANRhmH0suSvSRb3rgUSLHZQ8EISR/m+MWJ 2Q6ghilvbspMOREHLYhZneUfBjgnhQIdq+NAuLf5GHL/IBecxEOS7uKFHQpe/mhqvKzc A0gub3Bhjp35WYO7lFUUYD3RzxqRuTIG+hycNMWD+ZF0UHPpvsh+oRx985JALI1Icn5M YIlA== X-Gm-Message-State: AMke39m5KF77xdB0/Xn8MC6xE3zVYEdX8hF6Du9+W775+PvY8FfVTeuY0BlFbtM6omjIJ27AtLfpjPqMAaMPnw== X-Received: by 10.157.29.182 with SMTP id y51mr1161354otd.256.1487253966117; Thu, 16 Feb 2017 06:06:06 -0800 (PST) MIME-Version: 1.0 Received: by 10.182.105.73 with HTTP; Thu, 16 Feb 2017 06:06:05 -0800 (PST) In-Reply-To: References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58A55D26.3010203@gmx.at> From: Arthur Miller Date: Thu, 16 Feb 2017 15:06:05 +0100 Message-ID: Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: martin rudalics Content-Type: multipart/alternative; boundary=001a1141fb8a57618d0548a64c0b X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: 25408 Cc: 25408@debbugs.gnu.org, Eli Zaretskii , =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= 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: 0.7 (/) --001a1141fb8a57618d0548a64c0b Content-Type: text/plain; charset=UTF-8 After checking out a commit previous to Generate upcase and downcase tables from Unicode data (bug#24603) I was able to build it. 2017-02-16 14:22 GMT+01:00 Arthur Miller : > If they don't get focus when they pop-up, and not get focus via mouse and > if they also > don't have decorations, what is considered as full functionality of > "normal" frames? > That sounds to me a bit like a popup window. Do you give them focus by > switching > with keyboard, like moving focus to "other window"? > > "The concern is how to control > aspects like appearance, placement, focusing and stacking order of some > specific Emacs frames, without affecting the remaining frames." > > As you yourself point out, certain WMs does allow you to create rules per > windows. On some > managers one can set rule based on window title bar, window class or class > name, > xid, role etc. I don't know if title bar property can be used if titlebar > exist but is hidden. > > Maybe a separate class name could be used for that kind of windows so one > can set > appropriate hints for that frame. Or maybe you are already doing that? > Just an idea, > I haven't looked at your patch to be honest. > > I cloned code today from git and compilations is crashing on me, when > dumping lisp code: > (without your patch applied): > > Loading /home/arthur/emacs/lisp/international/characters.el (source)... > Wrong type argument: char-table-p, nil > make[1]: *** [Makefile:752: bootstrap-emacs] Error 255 > make[1]: Leaving directory '/home/arthur/emacs/src' > make: *** [Makefile:409: src] Error 2 > > Will be interesting to test it once I manage to compile Emacs. > > > 2017-02-16 9:04 GMT+01:00 martin rudalics : > >> > That's great. Are you going to push your patch to git-repo? >> >> After having resolved some remaining issues, yes. >> >> > When it comes to other platforms than Windows, I have no idea about OS X >> > since I don't own any macs, but for X11, we have different means to >> > controll decorations and their looks & behaviour. On X11 we have window >> > managers that makes it easy to configure (or remove) borders, >> decorations >> > etc, so in my humble opinion I don't think you have to spend countless >> time >> > to make it work with every possible window manager etc. >> >> The concern here is not how to turn off decorations for all windows (or >> maybe all windows of a certain application), something which themes most >> likely already provide to some extent. The concern is how to control >> aspects like appearance, placement, focusing and stacking order of some >> specific Emacs frames, without affecting the remaining frames. >> >> Consider the need to display some explanatory information for the >> editing activity you are about to accomplish. If you don't want to pop >> up a new "normal" window or frame for that purpose, you currently have >> two possibilites: Use the echo area or the tooltip frame. Both are >> ephemeral and have to be shared with all other applications pursuing a >> similar goal. >> >> Hence the need for some sort of minor frames which are OT1H less >> ephemeral and can be more easily replicated than tooltips or the echo >> area and are OTOH visually and habitually less obtrusive than normal >> frames or windows. >> >> Some desirable properties of such minor frames are: >> >> (1) Do not show any window manager decorations provided their visibility >> and placement can be controlled by the application. >> >> (2) Do not show them on the taskbar. >> >> (3) Do not focus them when they pop up. >> >> (4) Do not give them focus via mouse movements, mouse wheel scrolling or >> accidental mouse clicks. >> >> (5) Allow to attach them to some normal Emacs frame or window. This >> means to automatically move, resize and stack them along with that >> frame/window without affecting the appearance of any other object on >> your display. It may also mean to make them obscure as few as >> possible text of the frame they have been attached to. >> >> (6) Apart from (1)--(5) give them the full functionality of "normal" >> Emacs frames. >> >> Obviously, (6) is the most difficult part. For example, displaying such >> a frame without making it continuously vanish and reappear. >> >> martin >> > > --001a1141fb8a57618d0548a64c0b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I was able to build it.
=

2017-02-16 14:22 = GMT+01:00 Arthur Miller <arthur.miller.no1@gmail.com>:
If they don't get focus when they pop-up, and not get focus via m= ouse and if they also
don't have decorations, what is considered as = full functionality of "normal" frames?
That sounds to me a bi= t like a popup window. Do you give them focus by switching
with keyboar= d, like moving focus to "other window"?

"The concern is how to control
aspects like appearance, placement, focusing and stacking order of some
specific Emacs frames, without affecting the remaining frames."
As you yourself point out, certain WMs does allow you to crea= te rules per windows.=C2=A0 On some
managers one can set rule based on = window title bar, window class or class name,=C2=A0
xid, role etc. I do= n't know if title bar property can be used if titlebar exist but is hid= den.

Maybe a separate class name could be used for that k= ind of windows so one can set
appropriate hints for that frame. Or mayb= e you are already doing that? Just an idea,
I haven't looked at you= r patch to be honest.

I cloned code today from git and co= mpilations is crashing on me, when dumping lisp code:
(withou= t your patch applied):

Loading /home/arthur/emacs/lisp/international/characters.el (source)...
Wrong type argument: char-tab= le-p, nil
make[1]: *** [Makefile:752: bootstrap-emacs] Error 255
make= [1]: Leaving directory '/home/arthur/emacs/src'
make: *** [Makef= ile:409: src] Error 2

Will be interesting to test it once= I manage to compile Emacs.


2017-02-16 9:04 GMT+01:00 martin rud= alics <rudalics@gmx.at>:
> That's great. Are you going to push your patch to git-repo?

After having resolved some remaining issues, yes.

> When it comes to other platforms than Windows, I have no idea about OS= X
> since I don't own any macs, but for X11, we have different means t= o
> controll decorations and their looks & behaviour. On X11 we have w= indow
> managers that makes it easy to configure (or remove) borders, decorati= ons
> etc, so in my humble opinion I don't think you have to spend count= less time
> to make it work with every possible window manager etc.

The concern here is not how to turn off decorations for all windows (or
maybe all windows of a certain application), something which themes most likely already provide to some extent.=C2=A0 The concern is how to control<= br> aspects like appearance, placement, focusing and stacking order of some
specific Emacs frames, without affecting the remaining frames.

Consider the need to display some explanatory information for the
editing activity you are about to accomplish.=C2=A0 If you don't want t= o pop
up a new "normal" window or frame for that purpose, you currently= have
two possibilites: Use the echo area or the tooltip frame.=C2=A0 Both are ephemeral and have to be shared with all other applications pursuing a
similar goal.

Hence the need for some sort of minor frames which are OT1H less
ephemeral and can be more easily replicated than tooltips or the echo
area and are OTOH visually and habitually less obtrusive than normal
frames or windows.

Some desirable properties of such minor frames are:

(1) Do not show any window manager decorations provided their visibility =C2=A0 =C2=A0 and placement can be controlled by the application.

(2) Do not show them on the taskbar.

(3) Do not focus them when they pop up.

(4) Do not give them focus via mouse movements, mouse wheel scrolling or =C2=A0 =C2=A0 accidental mouse clicks.

(5) Allow to attach them to some normal Emacs frame or window.=C2=A0 This =C2=A0 =C2=A0 means to automatically move, resize and stack them along with= that
=C2=A0 =C2=A0 frame/window without affecting the appearance of any other ob= ject on
=C2=A0 =C2=A0 your display.=C2=A0 It may also mean to make them obscure as = few as
=C2=A0 =C2=A0 possible text of the frame they have been attached to.

(6) Apart from (1)--(5) give them the full functionality of "normal&qu= ot;
=C2=A0 =C2=A0 Emacs frames.

Obviously, (6) is the most difficult part.=C2=A0 For example, displaying su= ch
a frame without making it continuously vanish and reappear.

martin


--001a1141fb8a57618d0548a64c0b-- From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 17 02:03:15 2017 Received: (at 25408) by debbugs.gnu.org; 17 Feb 2017 07:03:15 +0000 Received: from localhost ([127.0.0.1]:42981 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cecZW-0007Xt-Q7 for submit@debbugs.gnu.org; Fri, 17 Feb 2017 02:03:15 -0500 Received: from mout.gmx.net ([212.227.17.22]:57040) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cecZV-0007Xe-EU for 25408@debbugs.gnu.org; Fri, 17 Feb 2017 02:03:14 -0500 Received: from [192.168.1.100] ([213.162.68.81]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0Lo3IS-1cBub13UgC-00g1jF; Fri, 17 Feb 2017 08:03:03 +0100 Message-ID: <58A6A025.5010402@gmx.at> Date: Fri, 17 Feb 2017 08:03:01 +0100 From: martin rudalics MIME-Version: 1.0 To: Arthur Miller Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58A55D26.3010203@gmx.at> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:1QOkD6FJ+QcDBulWnflmp5wV+XL1wDw0a9vpWY0HkDNsnJzw7Z9 V0ezyAznQ/zSocSActwiK96V45FE1Z7aRJ9C/cWzb1+Zn54RiByLpetnMAGEE25hwC5+pvH XWU7mLEWWIfqjmBbFWV3JWWwLTIehqiA+cjhWEJXKE8Y8L0i3m2phEMvndgtWtYwJQP32rA ERrrq6GE/uRQt1lICMK5w== X-UI-Out-Filterresults: notjunk:1;V01:K0:nr0DF6X5/gk=:iKCD0pZePDTeqEnjdg9sRr EPB0QYMXqZ1KZkeQHJLnOVUknqHrcrItNkKHWKd4JJiF7vHc3pRD4H0OCJhjQPDKs0d71r8Zl HBS6hddQs02g2r6VZ3mUr+zZJTHQBdL7zvTr+q4DdTIaBFs6EdrNtX/43izDTXTI8jRD7+bnP TCCJGXx0v0pGENyjhHWqRS/iehHqQDeHWBStV1KlT2SSR8NKkKFIe5fs0hZWUT2LUq30LtHGJ p+2jtwY/gWg3At+GRocJevrRH5yHNiSqD8ptIfBA0vO5PixDwXEbusre92/cTed1h/95iR38N 25/lsiVZHJGWkDs9tT1+E0vASc2NdY7C93RVpGHjT4FU4YIH26rD8zI44IsMzWPFJanZwFB2N NaNNhgAmV8cXajlm8gHjU8vLGtm7lmA5rjN+LgetlkSzXA3NLG5VEfnssYiGuxz1DKE69JotY pArHutuq6IuJaAC6eTLsg1BXSDzdf2YkeAfJOP6kmHCfniVQ1GhNRpm71K1xg0iLgqsGbwWjy gRcpZBlhGpuxC5TzQJ5S//FzzwgUdP9N0QRs0ZNuBUuYWJ702NwvUw4MnbJGJ1NTnKDb2d2lp aH/Y4PaoeRcUrXbS8VDiiMQvV+AawJxKnJaJtDCQ/fAxgBu1MNClDPblOM4FjH9kyBNbvhfFW /Wa11b9x+eAE7UwYjqtlkev6S9mVTwU+gwd+7B4CEBBSxQaSE3E2xxX2Nqu2KEj4iGwJv0GTk sWFT4wO806pEnDUmdL0HwvVsCsg+SzYTBVPdngcCwkqYZb2mmK2Q6v28CEZy0fp4FQJlzzqQ1 3TZPX8+cp3zL0drtohuC2CX5CE+vkKMtDltCMMMl4ZxXvk1+kbX1ZAQkgngziBBQEirpMXq5h 9PMaLoROui2luSlHYywn3l6P7Y7Fb8CfAUWSNHUpZwKKsXmj2q3F54ZM+zSyM37MrTMUAdHQl UIV2nztrBNuFrda9X893ym/Vjw3U8JVTOtufPMCEoJ72wadY3zxEm8/xghj0Wy0rNnJnycLpd eVLuWSisAY8tKtTp/zECPcXjqxImE5WCVF6GhUDCSeVu7e6LDooK4nXWq4L7W5lX4g== X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: 25408 Cc: 25408@debbugs.gnu.org, Eli Zaretskii , =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= 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: -4.0 (----) > If they don't get focus when they pop-up, and not get focus via mouse = and > if they also > don't have decorations, what is considered as full functionality of > "normal" frames? > That sounds to me a bit like a popup window. Do you give them focus by= > switching > with keyboard, like moving focus to "other window"? Unless that's forbidden too via the =E2=80=98no-other-frame=E2=80=99 para= meter ;-) But the function that created such a frame usually has a handle to it and can manipulate it like a "normal" frame. And anyone else can find out about the frame via =E2=80=98frame-list=E2=80=99 or =E2=80=98frame-ch= ild-frames=E2=80=99 and can manipulate it like a "normal" frame. > "The concern is how to control > aspects like appearance, placement, focusing and stacking order of som= e > specific Emacs frames, without affecting the remaining frames." > > As you yourself point out, certain WMs does allow you to create rules = per > windows. On some > managers one can set rule based on window title bar, window class or c= lass > name, > xid, role etc. I don't know if title bar property can be used if title= bar > exist but is hidden. > > Maybe a separate class name could be used for that kind of windows so = one > can set > appropriate hints for that frame. Or maybe you are already doing that?= Just > an idea, > I haven't looked at your patch to be honest. I'd rather leave it to the application or the end user to pick what they like most than give them some predefined classes to choose from. This way they should be able to fine-tune the behavior and appearance of a separate minibuffer frame, the ediff control panel or the speedbar to their like. > I cloned code today from git and compilations is crashing on me, when > dumping lisp code: > (without your patch applied): > > Loading /home/arthur/emacs/lisp/international/characters.el (source)..= =2E > Wrong type argument: char-table-p, nil > make[1]: *** [Makefile:752: bootstrap-emacs] Error 255 > make[1]: Leaving directory '/home/arthur/emacs/src' > make: *** [Makefile:409: src] Error 2 Next time you encounter such a thing please report it immediately (you apparently were ahead of Glenn by 15 hours). Usually, nobody on this list builds from a clean repository. martin From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 17 02:03:22 2017 Received: (at 25408) by debbugs.gnu.org; 17 Feb 2017 07:03:22 +0000 Received: from localhost ([127.0.0.1]:42984 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cecZe-0007YD-25 for submit@debbugs.gnu.org; Fri, 17 Feb 2017 02:03:22 -0500 Received: from mout.gmx.net ([212.227.17.21]:60745) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cecZc-0007Y1-NO for 25408@debbugs.gnu.org; Fri, 17 Feb 2017 02:03:21 -0500 Received: from [192.168.1.100] ([213.162.68.81]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0LjdS8-1c7UkL3gnQ-00bd61; Fri, 17 Feb 2017 08:03:14 +0100 Message-ID: <58A6A030.7060909@gmx.at> Date: Fri, 17 Feb 2017 08:03:12 +0100 From: martin rudalics MIME-Version: 1.0 To: Arthur Miller Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58A55D26.3010203@gmx.at> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:Fb+gACLtK70aB75seew8wH/3aGcwA3vJ5FdYyP/qJk5ffPlTwWP 9MzoNTQlkwl9iedXNlSDnYpQeFji/nS8DZRd2/qhz0dtm5APz3I5Gkmk/BKG/eSH99gmIeL 18PpsxWsN27K2T+d/lo2l6nC5u4UVwCwpkRqKlPZ/3SG+laaw+B0eemZQyBuYo1QATXhIlv 1O6HQuiVz3ty1dfgeFevg== X-UI-Out-Filterresults: notjunk:1;V01:K0:EgLRTtD/8uA=:fFH/P1jMnuIg135xVhYviH wIVc2k0MLytZrCif255uyV4fJxi54xa+E70q0NjacqJxzOVBOD6BBPYI37/XAvqCAvHKXIOXV I1GNWSUhgvuAedAyypRE5XmW/Gf5BOTfqbFXn4HA8ez4GnCnqIUMxY0+mhEOAYP/W83rJyZHi YV5n7YWmNQ9IuJy480NYc82P2ZG2BGzEQqLfQfZt+Pb+XYt5XKf1PDsclwMC2CelgmQFWI8Qb MaLCyFVZZxb4iZfIu/voM6ThIGO1ahfpu1yuG6nAB/Mc0pSvPGi97DLxriY0hC8VJgZb80WzB cnxt0Dvx/gjDPLBehFdJw0zDR50egm9b8pQED1vOays0yfUreC7xSnBVUwy3ksFpWUlwuaZxc kewRRPdakp4jzfXPulucaEZWL5eqH+7Hvv+g4s7P1bm3FYqOCmQZgL4/whIFsz3yU3l4fxOpU 05u6lZbCuOHHDbTgt2gbcapjjmicYPLsVRYri+F7tpaGf/VGFcgt6wiBxZZodUMs054ZIRmiH XWiJ0l4s2Pkjk01I8iMD2amGAqH806eFwo4l1Jm7+Kho7e6d9sUH4T1t2jshheL3kJtqOkmgT EvIIc88NDnZWWV0LT9enEbrmBKKrYbKF57MOa9IFSB9VQSh7573SZzaeSlDQBtOuhtvpTq/6P JWilnu9XrXepF+3DvFkWhaoaUZ9fO0oOugN/khfjXptdctot5NtQy5BsbHBUO1jyhImlRLBKy sVofWeaZYSCSMXrLljSMy4qhP12J0XmpGH8MUTBARAR/whmfcuxJY+CPrQfEBa/Yz7I0xFU4Y 87DAvbWPr2ZzE5DSsGRjIb6DRC8dA== X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: 25408 Cc: 25408@debbugs.gnu.org, Eli Zaretskii , =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= 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: -4.0 (----) > After checking out a commit previous to > > Generate upcase and downcase tables from Unicode data (bug#24603) > > > I was able to build it. If you don't read this list I can inform you as soon as people believe that master builds again. Have you tried my patch then? martin From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 12 05:28:09 2017 Received: (at 25408) by debbugs.gnu.org; 12 Apr 2017 09:28:09 +0000 Received: from localhost ([127.0.0.1]:43696 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cyEZN-0008JW-3D for submit@debbugs.gnu.org; Wed, 12 Apr 2017 05:28:09 -0400 Received: from mout.gmx.net ([212.227.17.21]:57729) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cyEZL-0008J9-ES for 25408@debbugs.gnu.org; Wed, 12 Apr 2017 05:28:08 -0400 Received: from [192.168.1.100] ([213.162.68.34]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MJXEd-1cwJYp0Odv-0032Sm; Wed, 12 Apr 2017 11:28:00 +0200 Message-ID: <58EDF316.5000205@gmx.at> Date: Wed, 12 Apr 2017 11:27:50 +0200 From: martin rudalics MIME-Version: 1.0 To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= , Arthur Miller Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> In-Reply-To: <58A0434D.6030206@gmx.at> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:Fup1bJCcJTHvmw9iI6IBin6ggqOAGeUi0C/tRxFXrDdrjKS0scU inoFIi+YdQ2Ny948aclLtaCMU5j/t7E/kzRMor1dS94+tbC7FkvYhewd84ImUlPl3IdGbqS ppV3kk5OwgBXmOifhUVGQ93fY7SaCMLXxG2d70Zmb5bVI3xbn6qIuryNWrGWIAdcR1jhLq5 NlNG1x2IHnqDNYzlkGqeQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:qxE0Fx7TDTE=:Kisqm9GTHCi73Lp/piToMU ubqWNZW93JLIwxXeuo1LAufSnkZAFG7arYb6s8fN4SSMOS/tRZtemFZbXdwDuFH4l+EGhISO5 o4hiQXXdTU16Ti0JI1Z7QThtq+dxd57sUehc7UJ4D6tWZwzMa3SHhV7uqV0Njo1uIicN53sxP WtbEt9DlNcSzmYQF4iXZ6xLZ+MKfPmwjmu/MbI7GJw7mWW0Pb+FWnaOntHZLCW4ruZ47527M/ w/9hVMHe0Ddm7mI+Z9INnnPoLX33JyrTYvYjQbUq1mIc6m7AHNRS607lUI1aN1MzCAMtiATtN BTccrswUPsADUkhDhmrqVk8oqNeKoP+Ua8jpWOxBogidCRTkMkROzWxhcZegbWnMrHR/euJ0c 3dReAtMOV/QgcpBjUQ0hWQVjE/clsitSMNpdhZtR/460At9/86QTyvAdyfuPME0znlUPMpCJp OVNOgRQamZTqeJz7/RF4NmlmBF1RwuXPBIYCCq+EmZLymbmdqKHMFe1RoTJVzluasoAE6KQai vanj6GBfZvmTkf9Aoh5qz4NKmbEgvJLgZDuM6smaI9S4yDqD0A+/Ln47wehUMVmtkBvXaveTp a3MDei9xM199S7/S9Bvo13jsQyDSo2vAT4W5bTSfOFRKB2Zu1koviakJ9LcWOK7y0qPxTeg6M E/X4L+8Z0XVqnO2XKSIAp4mHgFjxGw+Bfrpl+6aCPLdWKT18qFFIoZsinuhJuaA4LC/3jKRG7 oDLa20Wb14MIlEXu5K4Gc4DoBNZ6Le8AGtm6viUpadz9nzxHahBrThwMsoDrpQZYcyh/ivAC/ +16E8ybD6Q9wgzE9sdhS09+UHO3dQ== X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 25408 Cc: 25408@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: 0.8 (/) I now installed most of the changes from my earlier patch. Minor changes for an `internal-border' face, `x-focus-frame' and `select-window' will follow. Also a major documentation rewrite will be installed in the next days. Till then, the major purpose of installing was to check whether we get any breakage of existing code. If people can see anything fishy, please report immediately. Affected might be among others scroll bars, frame deletion and selection. Also, most of the new parameters won't work on NS. Hopefully, Alan or Anders can help us with some of them. > So as a rule create your frames (lazily) once for each session and hid= e > them when you don't need them. Did you try that in the meantime? > > * Creating a frame / making it visible uses my WM's frame creating = animation =E2=80=94 is there a way to disable this (x-show-tip doesn't ha= ve it)? > > No idea. I can look into that (as a rule I turn off all animations > here). Do you use GTK tooltips or Emacs' native ones? For X I have now also provided an `override-redirect' parameter which should replicate what the tooltip code does. If you still get animations then I think you will have to explicitly tell the WM (for example, via the frame title) to turn them off. martin From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 12 13:39:09 2017 Received: (at 25408) by debbugs.gnu.org; 12 Apr 2017 17:39:09 +0000 Received: from localhost ([127.0.0.1]:44714 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cyMEX-0007qS-Iq for submit@debbugs.gnu.org; Wed, 12 Apr 2017 13:39:09 -0400 Received: from mail-wr0-f179.google.com ([209.85.128.179]:36034) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cyMEV-0007qE-UZ for 25408@debbugs.gnu.org; Wed, 12 Apr 2017 13:39:08 -0400 Received: by mail-wr0-f179.google.com with SMTP id c55so22024818wrc.3 for <25408@debbugs.gnu.org>; Wed, 12 Apr 2017 10:39:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=7h+WFCWECgbOCyrpbVL4QWXrRGoxAEJQbEhgNfPq1bI=; b=LF2wLT5FvUxgKICEIPZyWM9aRQi3S0oZRzeJJ8Orpa4cxyMevMvT1qZOssGM+70rgm DaeOjCPAoRwpdhJZ8+J/rYGeq0wH22hXKK55t8pQXHN1qKNZHoHTIjKkOWV9i7wO75bH PNf+pqCg8VPAoZLmbauO9sos9uKwPitqQQ0cOUzNuuYpVkRW5ULAlVT6N7QsNHbMHfR/ r0llAG5Ns1pVwQVZ830rNKnKNzJdm2SlvY1YMKurLmY2C2CA0I/miP2DsH4fHcq1tAQ2 mmejpej6arZ459dGVinmAYaRM/LLk7IvWWN8xZPTw3UjmasAJIpb5//pFRdq/QLCGDwk SfIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=7h+WFCWECgbOCyrpbVL4QWXrRGoxAEJQbEhgNfPq1bI=; b=a3rmCjnsmWn0z6E7xzEKg2ad/gMVtRV92uW1QJVA86TGraeIIZGfPtCz76XvXIeoK5 zfmuNn9h45g80EXkwSMwLUOPlhOSkCefoyB8Z5WQays9Sr5/qSKeLeZjsehMGFhqd88g rZ1D8dojTUbuJtDG+ZRjGPBw8Zs/5iw1V7CMfMcNVScUbOfvJGgZmRB7tSN6uOH1KCYa yEbmjTpB6FyuntWvUVSwxJonwyo9PYHpstP/GAGxcD7x/Qcm71Qgvp+HfKXlcx8nfwiQ lO8SsJry3rdbox8Umurn+WdvS6r6udKMzBkHCWbaql27xA2bGDpSlFXdUOIQYAvZu25q 9a3g== X-Gm-Message-State: AN3rC/7IYVwz6bRP6NEfJAiD0umprwQbmN0P3sAgr4Ye41KFyrvmpPUAA9vArccAnsrypA== X-Received: by 10.223.166.9 with SMTP id k9mr4163756wrc.177.1492018742039; Wed, 12 Apr 2017 10:39:02 -0700 (PDT) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-4908-57d9-2f60-ab16.holly.idiocy.org. [2001:8b0:3f8:8129:4908:57d9:2f60:ab16]) by smtp.gmail.com with ESMTPSA id 198sm7399752wmn.30.2017.04.12.10.39.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 12 Apr 2017 10:39:00 -0700 (PDT) Date: Wed, 12 Apr 2017 18:38:58 +0100 From: Alan Third To: martin rudalics Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) Message-ID: <20170412173858.GB82486@breton.holly.idiocy.org> References: <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <589F1F58.1050807@gmx.at> User-Agent: Mutt/1.7.2 (2016-11-26) X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?iso-8859-1?Q?Cl=E9ment?= Pit--Claudel X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.6 (--) On Sat, Feb 11, 2017 at 03:27:36PM +0100, martin rudalics wrote: > > To remove a frame's decorations, use the frame parameter `undecorated' > as in > > (set-frame-parameter nil 'undecorated t) > > To give that frame back its decorations use > > (set-frame-parameter nil 'undecorated nil) > > To make a new frame undecorated use > > (make-frame '((undecorated . t))) Hi Martin, this is really good. I’ve got this semi‐working in the NS port, but I have a strange problem, and I want to check it’s not intentional. Should an undecorated frame be resizable? ie. if you run something like (set-frame-size nil 20 20) would you expect the frame to resize? Mine currently resizes if the frame was created with decorations and they were removed, but not if it was created without them. I suspect creating it without decorations is breaking some NS → Emacs event path. Thanks! -- Alan Third From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 12 15:13:48 2017 Received: (at 25408) by debbugs.gnu.org; 12 Apr 2017 19:13:48 +0000 Received: from localhost ([127.0.0.1]:44749 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cyNi7-0001ZN-Qm for submit@debbugs.gnu.org; Wed, 12 Apr 2017 15:13:47 -0400 Received: from mout.gmx.net ([212.227.17.20]:62850) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cyNi6-0001ZA-B5 for 25408@debbugs.gnu.org; Wed, 12 Apr 2017 15:13:47 -0400 Received: from [192.168.1.101] ([213.162.68.105]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MGEv5-1csYQB0gIp-00FB8u; Wed, 12 Apr 2017 21:13:28 +0200 Message-ID: <58EE7C4B.90205@gmx.at> Date: Wed, 12 Apr 2017 21:13:15 +0200 From: martin rudalics MIME-Version: 1.0 To: Alan Third Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <20170412173858.GB82486@breton.holly.idiocy.org> In-Reply-To: <20170412173858.GB82486@breton.holly.idiocy.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:GRxcQHtCUCMU6zPrxZ7J1kxPxtqKeFPjkepl5l7S6CjodXRouXe 5a8jQca5dUvLcaaP7RN+MNYVAjAP6sr5vulOKOGg/blPSr9p5ZAc9c0z8fCvVVX6Fbae88s KhQbA+HGu7cKRjUhSmnffDfxknX62SkBi6+ryySNFnJjVQqC3u6SvyLpfB5W9P8rDjgCWaq xdOtKaCLTLX2hyIc/CKgg== X-UI-Out-Filterresults: notjunk:1;V01:K0:D4lizfpiDUE=:PhsLiaGJe2r7SztgOfmxd1 U1dkyhNwCAPHSnVVLmaalf2/Jt8Fw5EntTyBat1srHkU+tN0l4M9bR1XWYp3plz8vDGInabb5 YUr1lDuK1LyFMRr1CrNvLl9Px9C+nT1BVbJ12wPbA+49CwUkj9AlGK75dQemlGXBoVL7JvJsJ Izt0hTHi1VC9BKmFVH6coJy+Uqmlfk4NrafboYx1bR0yXZ8rG+Q5jxNkflaucM0op/quQgDXY pVtpeBlDn/DWIcjppzCPlnx5OYBdYUKSOX6WgCSEE/R3IikBf8k7ztIoTo3+fxKWyRka9aypA py+7/oiDuHddnXISYPwlb6XtAm13p3PvlB8Y88820oRgak6oIw0wvlCIx1KBfrZKshmoqaC97 9YR16c6TonUhc4jsGM933dxxhmTzfFaybYOqFgAfYxOcsr8mmR08q1hq7RjMjMSCHKh8k3pGH yH6v5quV+cvZDKPHQuW2Av4sLxKcpxQdyA0QY+2LPtfrWymcavGunGBRQGCbcWjahGZHYJFun bR19Jnt+EjLhWy1dk304HHatl4p/aOQOO+e5Ae1Gi/K9Abxv1stb1/HMe3d4b4tiX3oYf7pkm F1TodzX5zPFXzCRDkUIrO5YIgq449srpYrVm3M/xMeORwKv1XzEKUrswIy++MWjoQp+swdMBT Lpue85sGwbf4U9ZvJBYsx5PSqS2Jdcxrr0ZSARQGa7DTc+Bhv4HC8zEqq2lR6h2H9qlFGReBq HfiYlH6hpkXcmGWtuoWXwBXBgoIPtS87w9RZ8SfmG1q/EraMBO1x/zydN0+8sF/ctZf1z54Zz oOeyjksKtB7VnojiiOtXqpo6Um64g== X-Spam-Score: 1.3 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > Should an undecorated frame be resizable? ie. if you run something > like > > (set-frame-size nil 20 20) > > would you expect the frame to resize? Definitively! Undecorated frames should behave like normal frames - just without decorations. [...] Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.17.20 listed in dnsbl.sorbs.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.17.20 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) 1.5 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [213.162.68.105 listed in dnsbl.sorbs.net] X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= 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.3 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > Should an undecorated frame be resizable? ie. if you run something > like > > (set-frame-size nil 20 20) > > would you expect the frame to resize? Definitively! Undecorated frames should behave like normal frames - just without decorations. [...] Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.17.20 listed in dnsbl.sorbs.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.17.20 listed in list.dnswl.org] 1.5 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [213.162.68.105 listed in dnsbl.sorbs.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) > Should an undecorated frame be resizable? ie. if you run something > like > > (set-frame-size nil 20 20) > > would you expect the frame to resize? Definitively! Undecorated frames should behave like normal frames - just without decorations. > Mine currently resizes if the frame was created with decorations and > they were removed, When can you remove the decorations? Does it flicker when you do that? > but not if it was created without them. I suspect > creating it without decorations is breaking some NS =E2=86=92 Emacs ev= ent > path. Why do you think so? I never looked into the NS event set but I would expect to receive the usual map, focus-in and visibility notifications. Nothing that would allow to derive that the window cannot be resized any more. Can you add the decorations later, resize the frame and remove the decorations afterwards? martin From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 12 15:51:33 2017 Received: (at 25408) by debbugs.gnu.org; 12 Apr 2017 19:51:33 +0000 Received: from localhost ([127.0.0.1]:44791 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cyOIe-0004Ee-N4 for submit@debbugs.gnu.org; Wed, 12 Apr 2017 15:51:32 -0400 Received: from mail-wm0-f50.google.com ([74.125.82.50]:35387) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cyOIc-0004EQ-C7 for 25408@debbugs.gnu.org; Wed, 12 Apr 2017 15:51:31 -0400 Received: by mail-wm0-f50.google.com with SMTP id w64so96348428wma.0 for <25408@debbugs.gnu.org>; Wed, 12 Apr 2017 12:51:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=v2X02PWV/IGFlsQynPWX8HCIGnXgs06RaLieMWwdXBA=; b=pGxlOx/soaG/MSR0t0blrM/z+QW44ZR7OV4LOnz/lOSAJBsucpYdJ18OFdugPi/G3A kegZw8O+ZVEliZvIMH+ycOLfta1IaUOkaisuwoxOm8UVfmd6Rmbn2E6TvjvgnxiTUx9Z bn6zE6zY8FFhpeWw/NX02VTyhUbFdlnp+sSP1Vu0y5VBnqt2vdurU8bY4w8jPfPWLkPl gWHLXEQfGnOWtU0iiVWjvXKRFMSWAgg/0PBjU4q2K4bYJDU2sRKy9/GEUM8rs7Tq89kZ /jmhlSnS0Z3my/PeFd4qLQ1zjw8OfdtAclhNhP60TM47INLDoM4oEsJXCdRDP2Xauoyq Do0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=v2X02PWV/IGFlsQynPWX8HCIGnXgs06RaLieMWwdXBA=; b=fRYfPqC2xESRAd2K3bNB6qU/n1c5Qutb0RYz91pj//iD27B6YKfapK7nDKYWn7CFgU dM5CWOteFD2eur3bkyo6LLSogBxh0c9SOs3/h+sBcjDvJKj2xIqE6vDTFBBMula0s9zS r16m2gAWizWxIWAwlLKElSBtZDuQFfMSVP3w3m13QmsCrZEQBhQrB6KzUxbAukUSjVh9 p/DtaV59QrnPS04Eyz1vXJk02gJYq01Ag9ucTcSUO1oAoXazShuQG5XOfpFHn6+2bAfY 8ZSeSVeCfzNBVpC4uQQfWn0X/qUkBOe0GsNbSnDZ2UpQwCwqX2YcppI7qfDASL4Mm0wa b2tw== X-Gm-Message-State: AN3rC/4QeJgLYZcLXMsSj1H7ZD09CxH8/EsylsIzdeSW58Qrv5BWBl01+PrxKrYzB9G2tw== X-Received: by 10.28.54.151 with SMTP id y23mr4551900wmh.90.1492026684366; Wed, 12 Apr 2017 12:51:24 -0700 (PDT) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-6ca6-4e08-5c7a-e665.holly.idiocy.org. [2001:8b0:3f8:8129:6ca6:4e08:5c7a:e665]) by smtp.gmail.com with ESMTPSA id d7sm26787618wrc.6.2017.04.12.12.51.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 12 Apr 2017 12:51:22 -0700 (PDT) Date: Wed, 12 Apr 2017 20:51:21 +0100 From: Alan Third To: martin rudalics Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) Message-ID: <20170412195121.GA95643@breton.holly.idiocy.org> References: <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <20170412173858.GB82486@breton.holly.idiocy.org> <58EE7C4B.90205@gmx.at> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="SLDf9lqlvOQaIe6s" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <58EE7C4B.90205@gmx.at> User-Agent: Mutt/1.7.2 (2016-11-26) X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?iso-8859-1?Q?Cl=E9ment?= Pit--Claudel 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: 0.2 (/) --SLDf9lqlvOQaIe6s Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit On Wed, Apr 12, 2017 at 09:13:15PM +0200, martin rudalics wrote: > > Should an undecorated frame be resizable? ie. if you run something > > like > > > > (set-frame-size nil 20 20) > > > > would you expect the frame to resize? > > Definitively! Undecorated frames should behave like normal frames - > just without decorations. Excellent, that’s what I wanted to know so I didn’t go chasing after a behaviour that wasn’t right. > > Mine currently resizes if the frame was created with decorations and > > they were removed, > > When can you remove the decorations? Does it flicker when you do that? I mean, it *can* resize after I remove the decorations. There’s no flickering, it’s all quite smooth. > > but not if it was created without them. I suspect > > creating it without decorations is breaking some NS → Emacs event > > path. > > Why do you think so? The actual macOS window resizes, but the contents of that window (Emacs) don’t. I’ve attached a screenshot that will hopefully explain it better. If I add decorations and remove them again: (set-frame-parameter nil 'undecorated nil) (set-frame-parameter nil 'undecorated t) Then I can resize it fine. So it seems like the decorations are adding something that allows the resize to work. I’ve tried turning on NSTRACE, but the output looks identical whether resizing works or not. I’ll just keep looking at it. Hopefully I’ll be able to track it down. -- Alan Third --SLDf9lqlvOQaIe6s Content-Type: image/png Content-Description: undecorated Window issue Content-Disposition: attachment; filename="Screen Shot 2017-04-12 at 20.46.06.png" Content-Transfer-Encoding: base64 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 ucRz19umtnWeDz1/8ULghXPtPu1nLnpcbL7kdunkZZfLDVecrtR3OHac+N3x9xOdTp31V52v Nna5djV1T+4+3ePVc/aa/7UL10OuX7kRcaP7ZtzN27em3+q9zbn9/E72nVd3C++O3Ft8n3C/ 9IHSg/KHWg9r/mH2j8O9Tr2n+vz7Oh7FPLr3mP34xRPhk8/9y57SnpY/031W+9zuefNA4EDX H9P+6H+R92JksORP5T+rX5q+PP6X918dQ4lD/a8Er0Zfr3qj8WbvW4e3rcNRww/f5bwbeV/6 QePDvo8uH9s/JXx6NjL7M+lzxRezL01fQ7/eH80ZHc1jCViSqwAGG5qWBsDrvQDQkuDdoQsA ioL07SURRPpelCDwn7D0fSYRJwD2egMQtxiAMHhH2QabEcRU2Iuv3rHeALW3H28yEabZ20lj UeELhvBhdPSNNgCkJgC+CEZHR7aOjn7ZDcneAaAlX/rmEwsR3u93mIlRZwcF/Cj/BN/4bAA3 TKWHAAAACXBIWXMAABYlAAAWJQFJUiTwAAABnmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAA PHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUg NS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv MDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91 dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYv MS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj42MTY8L2V4aWY6UGl4ZWxY RGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MTM1NDwvZXhpZjpQ aXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+ CjwveDp4bXBtZXRhPgoKmHTuAAAAHGlET1QAAAACAAAAAAAAAqUAAAAoAAACpQAAAqUAAHvW ouq4pwAAQABJREFUeAHsvQt8FdW59/9UBEXBCwocteIFL+irUWilfqTSxltRqKn+Pd6a2rdq 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 uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BA e4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgL CLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACB t4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQI EHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBA gACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAAB AgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQI ECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshM gAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2A zAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQ AshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBAC Ai2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAEC ISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQ IBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECA AAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAEC BAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQ IECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6P AAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i /ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLt Le6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g 0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTe AgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA 4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAAB AgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQI ECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBA gAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMB AgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAy EyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEAL IDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgI tAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiE gEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECA QAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAEC BAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQ IECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CA AAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8C BAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7 I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3 uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BA e4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgL CLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACB t4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQI EHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBA gACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAAB AgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQI ECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshM gAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2A zAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQ AshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBAC Ai2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAEC ISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQ IBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECA AAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAEC BAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQ IECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6P AAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i /ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLt Le6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA4C0g 0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAABAgTe AgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQIECBA 4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBAgAAB AgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMBAgQI ECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAyEyBA gAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEALIDMB AgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgItAAy EyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiEgEAL IDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECAQAgI tAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAECBAiE gEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQIECA QAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CAAAEC BAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8CBAgQ IECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7I0CA AAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3uD8C BAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BAe4v7 I0CAAAECBAiEgEALIDMBAgQIECBA4C0g0N7i/ggQIECAAAECISDQAshMgAABAgQIEHgLCLS3 uD8CBAgQIECAQAgItAAyEyBAgAABAgTeAgLtLe6PAAECBAgQIBACAi2AzAQIECBAgACBt4BA e4v7I0CAAAECBAiEwAAAAP//4/uAegAAQABJREFU7d0NuFxleS/824sPhQqKqBRUtKHSYiVv A61aosUoKUhPiB/xHE6TA0VaYgEpjdWIpB5KAY2tkfgiBVuM8hpPesAi8AooRIUeOYgFjmCb mkKKVKKgwZitbNgh3eeZ2XvmWTN79tfkg7UWv1wX7DUfa637+d3z8Z81a6151nD6F4V/AwMD hUvTn9xnn32mP5M5CBAgQIAAAQIE2gLPEtDaFiYIECBAgAABAqUQENBK0QZFECBAgAABAgSy gICWLUwRIECAAAECBEohIKCVog2KIECAAAECBAhkAQEtW5giQIAAAQIECJRCQEArRRsUQYAA AQIECBDIAgJatjBFgAABAgQIECiFgIBWijYoggABAgQIECCQBQS0bGGKAAECBAgQIFAKAQGt FG1QBAECBAgQIEAgCwho2cIUAQIECBAgQKAUAgJaKdqgCAIECBAgQIBAFhDQsoUpAgQIECBA gEApBAS0UrRBEQQIECBAgACBLCCgZQtTBAgQIECAAIFSCAhopWiDIggQIECAAAECWUBAyxam CBAgQIAAAQKlEBDQStEGRRAgQIAAAQIEsoCAli1MESBAgAABAgRKISCglaINiiBAgAABAgQI ZAEBLVuYIkCAAAECBAiUQkBAK0UbFEGAAAECBAgQyAICWrYwRYAAAQIECBAohYCAVoo2KIIA AQIECBAgkAUEtGxhigABAgQIECBQCgEBrRRtUAQBAgQIECBAIAsIaNnCFAECBAgQIECgFAIC WinaoAgCBAgQIECAQBYQ0LKFKQIECBAgQIBAKQQEtFK0QREECBAgQIAAgSwgoGULUwQIECBA gACBUggIaKVogyIIECBAgAABAllAQMsWpggQIECAAAECpRAQ0ErRBkUQIECAAAECBLKAgJYt TBEgQIAAAQIESiEgoJWiDYogQIAAAQIECGQBAS1bmCJAgAABAgQIlEJAQCtFGxRBgAABAgQI EMgCAlq2MEWAAAECBAgQKIWAgFaKNiiCAAECBAgQIJAFBLRsYYoAAQIECBAgUAoBAa0UbVAE AQIECBAgQCALCGjZwhQBAgQIECBAoBQCAlop2qAIAgQIECBAgEAWENCyhSkCBAgQIECAQCkE BLRStEERBAgQIECAAIEsIKBlC1MECBAgQIAAgVIICGilaIMiCBAgQIAAAQJZQEDLFqYIECBA gAABAqUQENBK0QZFECBAgAABAgSygICWLUwRIECAAAECBEohIKCVog2KIECAAAECBAhkAQEt W5giQIAAAQIECJRCQEArRRsUQYAAAQIECBDIAgJatjBFgAABAgQIECiFgIBWijYoggABAgQI ECCQBQS0bGGKAAECBAgQIFAKAQGtFG1QBAECBAgQIEAgCwho2cIUAQIECBAgQKAUAgJaKdqg CAIECBAgQIBAFhDQsoUpAgQIECBAgEApBAS0UrRBEQQIECBAgACBLCCgZQtTBAgQIECAAIFS CAhopWiDIggQIECAAAECWUBAyxamCBAgQIAAAQKlEBDQStEGRRAgQIAAAQIEsoCAli1MESBA gAABAgRKISCglaINiiBAgAABAgQIZAEBLVuYIkCAAAECBAiUQkBAK0UbFEGAAAECBAgQyAIC WrYwRYAAAQIECBAohYCAVoo2KIIAAQIECBAgkAUEtGxhigABAgQIECBQCgEBrRRtUAQBAgQI ECBAIAsIaNnCFAECBAgQIECgFAICWinaoAgCBAgQIECAQBYQ0LKFKQIECBAgQIBAKQQEtFK0 QREECBAgQIAAgSwgoGULUwQIECBAgACBUggIaKVogyIIECBAgAABAllAQMsWpggQIECAAAEC pRAQ0ErRBkUQIECAAAECBLKAgJYtTBEgQIAAAQIESiEgoJWiDYogQIAAAQIECGQBAS1bmCJA gAABAgQIlEJAQCtFGxRBgAABAgQIEMgCAlq2MEWAAAECBAgQKIWAgFaKNiiCAAECBAgQIJAF BLRsYYoAAQIECBAgUAoBAa0UbVAEAQIECBAgQCALCGjZwhQBAgQIECBAoBQCAlop2qAIAgQI ECBAgEAWENCyhSkCBAgQIECAQCkEBLRStEERBAgQIECAAIEsIKBlC1MECBAgQIAAgVIICGil aIMiCBAgQIAAAQJZQEDLFqYIECBAgAABAqUQENBK0QZFECBAgAABAgSygICWLUwRIECAAAEC BEohIKCVog2KIECAAAECBAhkAQEtW5giQIAAAQIECJRCQEArRRsUQYAAAQIECBDIAgJatjBF gAABAgQIECiFgIBWijYoggABAgQIECCQBQS0bGGKAAECBAgQIFAKAQGtFG1QBAECBAgQIEAg Cwho2cIUAQIECBAgQKAUAgJaKdqgCAIECBAgQIBAFhDQsoUpAgQIECBAgEApBAS0UrRBEQQI ECBAgACBLCCgZQtTBAgQIECAAIFSCAhopWiDIggQIECAAAECWUBAyxamCBAgQIAAAQKlEBDQ StEGRRAgQIAAAQIEsoCAli1MESBAgAABAgRKISCglaINiiBAgAABAgQIZAEBLVuYIkCAAAEC BAiUQkBAK0UbFEGAAAECBAgQyAICWrYwRYAAAQIECBAohYCAVoo2KIIAAQIECBAgkAUEtGxh igABAgQIECBQCgEBrRRtUAQBAgQIECBAIAsIaNnCFAECBAgQIECgFAICWinaoAgCBAgQIECA QBYQ0LKFKQIECBAgQIBAKQQEtFK0QREECBAgQIAAgSwgoGULUwQIECBAgACBUggIaKVogyII ECBAgAABAllAQMsWpggQIECAAAECpRAQ0ErRBkUQIECAAAECBLKAgJYtTBEgQIAAAQIESiEg oJWiDYogQIAAAQIECGQBAS1bmCJAgAABAgQIlEJAQCtFGxRBgAABAgQIEMgCAlq2MEWAAAEC BAgQKIWAgFaKNiiCAAECBAgQIJAFBLRsYYoAAQIECBAgUAoBAa0UbVAEAQIECBAgQCALCGjZ whQBAgQIECBAoBQCAlop2qAIAgQIECBAgEAWENCyhSkCBAgQIECAQCkEBLRStEERBAgQIECA AIEsIKBlC1MECBAgQIAAgVIICGilaIMiCBAgQIAAAQJZQEDLFqYIECBAgAABAqUQENBK0QZF ECBAgAABAgSygICWLUwRIECAAAECBEohIKCVog2KIECAAAECBAhkAQEtW5giQIAAAQIECJRC QEArRRsUQYAAAQIECBDIAgJatjBFgAABAgQIECiFgIBWijYoggABAgQIECCQBQS0bGGKAAEC BAgQIFAKAQGtFG1QBAECBAgQIEAgCwho2cIUAQIECBAgQKAUAgJaKdqgCAIECBAgQIBAFhDQ soUpAgQIECBAgEApBAS0UrRBEQQIECBAgACBLCCgZQtTBAgQIECAAIFSCAhopWiDIggQIECA AAECWUBAyxamCBAgQIAAAQKlEBDQStEGRRAgQIAAAQIEsoCAli1MESBAgAABAgRKISCglaIN iiBAgAABAgQIZAEBLVuYIkCAAAECBAiUQkBAK0UbFEGAAAECBAgQyAICWrYwRYAAAQIECBAo hYCAVoo2KIIAAQIECBAgkAUEtGxhigABAgQIECBQCgEBrRRtUAQBAgQIECBAIAsIaNnCFAEC BAgQIECgFAICWinaoAgCBAgQIECAQBYQ0LKFKQIECBAgQIBAKQQEtFK0QREECBAgQIAAgSwg oGULUwQIECBAgACBUggIaKVogyIIECBAgAABAllAQMsWpggQIECAAAECpRAQ0ErRBkUQIECA AAECBLKAgJYtTBEgQIAAAQIESiEgoJWiDYogQIAAAQIECGQBAS1bmCJAgAABAgQIlEJAQCtF GxRBgAABAgQIEMgCAlq2MEWAAAECBAgQKIWAgFaKNiiCAAECBAgQIJAFBLRsYYoAAQIECBAg UAoBAa0UbVAEAQIECBAgQCALCGjZwhQBAgQIECBAoBQCAlop2qAIAgQIECBAgEAWENCyhSkC BAgQIECAQCkEBLRStEERBAgQIECAAIEsIKBlC1MECBAgQIAAgVIICGilaIMiCBAgQIAAAQJZ QEDLFqYIECBAgAABAqUQENBK0QZFECBAgAABAgSygICWLUwRIECAAAECBEohIKCVog2KIECA AAECBAhkAQEtW5giQIAAAQIECJRCQEArRRsUQYAAAQIECBDIAgJatjBFgAABAgQIECiFgIBW ijYoggABAgQIECCQBQS0bGGKAAECBAgQIFAKAQGtFG1QBAECBAgQIEAgCwho2cIUAQIECBAg QKAUAgJaKdqgCAIECBAgQIBAFhDQsoUpAgQIECBAgEApBAS0UrRBEQQIECBAgACBLCCgZQtT BAgQIECAAIFSCAhopWiDIggQIECAAAECWUBAyxamCBAgQIAAAQKlEBDQStEGRRAgQIAAAQIE soCAli1MESBAgAABAgRKISCglaINiiBAgAABAgQIZAEBLVuYIkCAAAECBAiUQkBAK0UbFEGA AAECBAgQyAICWrYwRYAAAQIECBAohYCAVoo2KIIAAQIECBAgkAUEtGxhigABAgQIECBQCgEB rRRtUAQBAgQIECBAIAsIaNnCFAECBAgQIECgFAICWinaoAgCBAgQIECAQBYQ0LKFKQIECBAg QIBAKQQEtFK0QREECBAgQIAAgSwgoGULUwQIECBAgACBUggIaKVogyIIECBAgAABAllAQMsW pggQIECAAAECpRAQ0ErRBkUQIECAAAECBLKAgJYtTBEgQIAAAQIESiEgoJWiDYogQIAAAQIE CGQBAS1bmCJAgAABAgQIlEJAQCtFGxRBgAABAgQIEMgCAlq2MEWAAAECBAgQKIWAgFaKNiiC AAECBAgQIJAFBLRsYYoAAQIECBAgUAoBAa0UbVAEAQIECBAgQCALCGjZwhQBAgQIECBAoBQC Alop2qAIAgQIECBAgEAWENCyhSkCBAgQIECAQCkEBLRStEERBAgQIECAAIEsIKBlC1MECBAg QIAAgVIICGilaIMiCBAgQIAAAQJZQEDLFqYIECBAgAABAqUQENBK0QZFECBAgAABAgSygICW LUwRIECAAAECBEohIKCVog2KIECAAAECBAhkAQEtW5giQIAAAQIECJRCQEArRRsUQYAAAQIE CBDIAgJatjBFgAABAgQIECiFgIBWijYoggABAgQIECCQBQS0bGGKAAECBAgQIFAKAQGtFG1Q BAECBAgQIEAgCwho2cIUAQIECBAgQKAUAgJaKdqgCAIECBAgQIBAFhDQsoUpAgQIECBAgEAp BAS0UrRBEQQIECBAgACBLCCgZQtTBAgQIECAAIFSCAhopWiDIggQIECAAAECWUBAyxamCBAg QIAAAQKlEBDQStEGRRAgQIAAAQIEsoCAli1MESBAgAABAgRKISCglaINiiBAgAABAgQIZAEB LVuYIkCAAAECBAiUQkBAK0UbFEGAAAECBAgQyAICWrYwRYAAAQIECBAohYCAVoo2KIIAAQIE CBAgkAUEtGxhigABAgQIECBQCgEBrRRtUAQBAgQIECBAIAsIaNnCFAECBAgQIECgFAICWina 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 xefedN7g0zcV6TQGK9IHu1OOf3388i+9JPbZYzDWf/OWtAUlf/iNWBCrv3ZGNLbN+zc1geLR 5UvTObqOm/AcXf32r0ctU3ys5fpSQLsu/bpBr32PuhdfWHbz9Tid/7RzY0fxm5vpPA67V9T7 cvF1eMLnX0ed6bGbXqsPKr5/F3Z1GO9r4OK6JgvY2TI9U1LgO6MQ+Eob0BrEQ0ODkd5uY7fG kW67pYMFJvzJgcaWkZvjc59c3rHTd6tVs9MmynctPDZmPL/4bt+4dZrzFXbebC170r/jfT07 6Yzbf4fBTevjhs9emb7CLG6mKSx31rw47w8XxtGHFXbMTA/Q7qDVmKOxs+PsI2bFqw49JA6Z ccDYTzfFN7HmKno8uAur7pwsvsiM3DKV88cMbX4ovnrd1XFV2io3di+K4hpmxIVpc/RRo5uj W7cUnxyN6yZ8MvU5vuKTtbne4uMhLfOidGLI9tvZ3KVxwwePa+982lf/WoPzd4cJDKSf2zmh +XM76a2lGMTS/irL0nmjms+u1Nfr0o7y475XFV74J3yD6K663/m6lzPu5eJzb3pvjEONnwTc J+1v1rXs7v008+4TXXd0sadA8XWpnAEtb+FrbEVbvPTEOGrWIfGi/Z4fe433Pl14HI+3y9K6 tGXu9OaWud4fqHtiTfHK4uvwhM+/yeos3D5v2WdjyZsPHlNBcV0TvqekOYtb4RuWc+fu3fjB mea/nRPQ0i8JnDr6SwK9i+t8QZjoTNxjRj7JFZvXpZ3bT0+76rW+IWvef3FcfcuJ0fXe3LGk Kc831R0Ii0vv3o+peNsumU6fTOakk2v2WNfyNV/ucbqN4iHePWZqXjU3zrviPXH0jPx2VHxQ Nu9SDCLjLaZ9ffEx0bhyskPLG/sU3JROALu8vYTJJnq90BVfCBvz9368jiy53/F1z9fxqavw ZG+upeeb/HT7N1Kv/+84gTv/9tRYunrkI8CSK65Lp2JJX/c3Pjfu1jiy820jR3aO83VPu4pC ryd8g2jPMDrR73zdyxn3cvG5N72ANu4i0w2P3P7JtM/eyH5U1T8r/UQj3fG3PW1fcU71sZb2 xV2W9jXu+bF/Rton7dST4q1HHdr5LVNh2bMWfyIdVJO/3mwJ5q9O0wfqNX8dR/U40rF13+n+ Lb4OT/j8K9Z5SqrzpK46C7ePt5ziuiZ6T4kYSGecOKF5xole49kpAe2h9PMUJ4/+PEXv4gov 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 RqOcOSvviq+e1fuHjPta9nbN9FTc9Be/E2/50NfGLGXm8jvi2+9/7Zjrp3XF0z7ufsfX73zT 0nFnAgQIECBQWoGdFtA+kwLaKVMJaDNXxmPfPiv225lET9wd/22vI+NzaR3zU0D7YkkC2lPf uy72eMX80ZHPjHNW/kkc8cI9Y2hoKJ4783fihCMO2j6Vp3nc/Y6v3/m2D8vcBAgQIECgPAK7 IKAtitU3LoznptDR899zD43j3/Sr6Rced+K/pzmojDeygfsuj31nvrt58/I7Hov3v3YHx9Sn edz9jq/f+cZzdj0BAgQIEKiawM4PaPNXxeAXfz+esytl0q+yN3+4tbVvWwoqb01b0Bob9Mq0 BW3jdX8SL5nfODHwzLj24W/HCdu5wWwM8XgBrdtnzIw75op+x9fvfDumakshQIAAAQJPv8DO D2jT2sfsR3H1Rz8ed/9gMF7+9rPj9w5+KC6+6GPxoU+1viudGWdfdkmcv/gNvfdZG3ggLv/w efHuDze+zGz8mxmLzlka5515SHz0Ja+LT6VrdmxAG4hvfv6v48PLl8a196b922ZGfC39nX/2 yjjnfafFaw/qjqWj49u8V+y112B87UMfjtbeZ6edc368dK9m0TE4+Fj84m+fGWcdd8jIFf3+ vxDQFq26I8477IE475zl8blGkY1/M+fHZR//WCx+U/d6GnVeFndvTn04ZnG6veugiqc2xmc+ fEmsH4w49C1nxu+/oZUs+x1fv/ONDKPx/413XxeXfPzi+PDnWqJpeHNOi6Uf/mD83mu76m/P tjE+/xeXxHcGG+N8Xyz+7YirL/3LuPSKi5t9bNxtzvyz4/Rz3hcLXtsaY3tmEwQIECBAYOcJ DHf927Jly/D2/DeyuC3Dq+bHcKp6OOavGh7sWse4F7fcMTynMc9k/5197fDWroVsffi24bQ3 16TzpoDWNWefF7c+OLy8NcZx1rvytoc7F57GlzLcpDU2xp8OEuict59Lg3cNL5rC+uYvv63T s9CHdFDF2DVvuattPWd54fZ+x9fvfM3KtgzfeP78CU3nr+waX2tEhXHMP2f58Nkzx+nNzJXD j7Xm8ZcAAQIECOwCgZ2/BW3m2bH2c++K52/d2jNlPu9lr4pDXjS6pamwxad15zlnXxbLTnxV /PArn4qFH8pbxm58+K447qDWnms/io/+Py+OpaMbhmLO2XHth98VB/zk9jjnLe9ub6VqLHPH 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 iE9/9D/F/wWRA9GRvYh8SQAAAABJRU5ErkJggg== --SLDf9lqlvOQaIe6s-- From debbugs-submit-bounces@debbugs.gnu.org Thu Apr 13 03:10:58 2017 Received: (at 25408) by debbugs.gnu.org; 13 Apr 2017 07:10:58 +0000 Received: from localhost ([127.0.0.1]:45008 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cyYuA-0005RY-Fz for submit@debbugs.gnu.org; Thu, 13 Apr 2017 03:10:58 -0400 Received: from mout.gmx.net ([212.227.15.19]:57336) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cyYu8-0005RI-6p for 25408@debbugs.gnu.org; Thu, 13 Apr 2017 03:10:56 -0400 Received: from [192.168.1.100] ([213.162.68.106]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0M86Cn-1cC7BM3ZM9-00vizN; Thu, 13 Apr 2017 09:10:37 +0200 Message-ID: <58EF2462.9010806@gmx.at> Date: Thu, 13 Apr 2017 09:10:26 +0200 From: martin rudalics MIME-Version: 1.0 To: Alan Third Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <20170412173858.GB82486@breton.holly.idiocy.org> <58EE7C4B.90205@gmx.at> <20170412195121.GA95643@breton.holly.idiocy.org> In-Reply-To: <20170412195121.GA95643@breton.holly.idiocy.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:iiypOMkBc7J7ZkURnOTHEpNzlOfoo/+8EdP4HAklVVU8O8lq4jp D53zXYYV2nGMGGLT9f//DqKSGYk49zp7VGzMeRaplqVAESAIm10miCxAfefhw0vXzuByM/s barvPewyO8SEYjlWCqosbna9ljWW+yw8M4cX/jq4BNzOQiGl2VY3+50oa2qrsH2jMdgITTN kIw40MUb6vLymjXuw3Hkw== X-UI-Out-Filterresults: notjunk:1;V01:K0:Rr7Asf6e9Wo=:VX4WScyMj5xev7p07oZnre NtiZIpuq3G+FkybUYFzRlJmXMwl3sO8KhSVKyM6GPKdo3n2KYYuHbtvixvGz+RH+LTIMEjT4U HFo8PfNZgAO+j9FWeEI/Vg08srccd55UAN5pO9Qh9AJZTBoz9UtfQ+xiHAl6rVXe/PMrie3Dm 5NHKwJogdYBkWma94wOG0IqZZG0S5e1GhWh6R1ahgacVp3cUTbdmAQRN7IOuk3L54YZXcK2qS 5GTOsOQdJG4D2O8sEsPL5JrY8BSkdRbdIULz6Jf1Uu/A47Qa+B1a7z60Ye/D6mK5o3sRf2DMD wtQtnnC5hFvefzTZAXf8UF+iHQy5ny6qUrwX4JDAn+Z+pZTUPAwk5ngROHkRLs0t11nSDrfVi 9CccO4MzLJd+xpEESfat9KV456cou5R5q10W+7O8DxiZoYR0RLOPkfNCByVuUpA9BAfEcuEJU jbglspNP8MB4OxUPMY7vBYzAQLE9b2hNWslnSW2Sc06S+4jvW+ebAUql89S24eytw2NHaaWTP wlSkGb3ta5djKJSENNEPWBqzvP1mqRVddYAYMqyuTV/WWBXXc4rSUUs7siWSXP+7ofHdjHYLr sdYgC295I7rGQeypY6VsG75ftnfbz871JzTtIoNYxyPLIE0juJZeQmYa7pkxY5/W3VJLoYxPi A/W6v+LLNlq6/tmmEeTHkbMDUCEzqjp/+4e/kDfwmOUnfk5Hn7taUBa9i+rRqND+J/RCRoQgy g8nTsX23iv+EwW8ujbWI7jP6gmOfx2t4rQ+X+5IfDZsvjFwz/nAz+ekl8aD7vK+ZdBgYy9DUl B0il4yK X-Spam-Score: 1.3 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: >> When can you remove the decorations? Does it flicker when you do that? > > I mean, it *can* resize after I remove the decorations. I wanted to know "when" in the sense of "what do you have to wait for" to remove the decorations? Can you send two requests in a row - a first one to create a decorated frame and a second one to remove the decorations - or do you have to wait for a response for the first request before issuing the second one. [...] Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.15.19 listed in dnsbl.sorbs.net] 1.5 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [213.162.68.106 listed in dnsbl.sorbs.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.15.19 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= 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.3 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: >> When can you remove the decorations? Does it flicker when you do that? > > I mean, it *can* resize after I remove the decorations. I wanted to know "when" in the sense of "what do you have to wait for" to remove the decorations? Can you send two requests in a row - a first one to create a decorated frame and a second one to remove the decorations - or do you have to wait for a response for the first request before issuing the second one. [...] Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.15.19 listed in dnsbl.sorbs.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.15.19 listed in list.dnswl.org] 1.5 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [213.162.68.106 listed in dnsbl.sorbs.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) >> When can you remove the decorations? Does it flicker when you do tha= t? > > I mean, it *can* resize after I remove the decorations. I wanted to know "when" in the sense of "what do you have to wait for" to remove the decorations? Can you send two requests in a row - a first one to create a decorated frame and a second one to remove the decorations - or do you have to wait for a response for the first request before issuing the second one. > There=E2=80=99s no > flickering, it=E2=80=99s all quite smooth. Then I see no problems with an approach that makes the frame initially decorated and removes the decorations ASAP. > The actual macOS window resizes, but the contents of that window > (Emacs) don=E2=80=99t. I=E2=80=99ve attached a screenshot that will ho= pefully explain > it better. > > If I add decorations and remove them again: > > (set-frame-parameter nil 'undecorated nil) > (set-frame-parameter nil 'undecorated t) > > Then I can resize it fine. So it seems like the decorations are adding= > something that allows the resize to work. > > I=E2=80=99ve tried turning on NSTRACE, but the output looks identical = whether > resizing works or not. Is this in windowDidResize or windowWillResize? I have no idea how the NS API works. But if the redecorate/reundecorate approach works well, I wouldn't care too much. Can you look also into three other things I added: - Provide a `move-frame-functions' hook. - Provide "frame restacking" which should work via orderWindow. I suppose NS has no equivalent for z-groups. - Provide "child frames" which should work via parentWindow. I don't know whether NS child windows always behave like NS "drawers" or may also occlude the parent frame like under X or Windows. Eventually I'd like to have them both (like Wayland's subsurfaces if I understand them correctly). Drawers look like a pain when you are in fullscreen mode - IIUC there's no way to open them "into" a fullscreen frame. X/Windows child windows are annoying when you are in a normal, fairly small frame where they get clipped too easily. Thanks, martin From debbugs-submit-bounces@debbugs.gnu.org Thu Apr 13 06:30:40 2017 Received: (at 25408) by debbugs.gnu.org; 13 Apr 2017 10:30:40 +0000 Received: from localhost ([127.0.0.1]:45079 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cyc1Q-0001j9-0r for submit@debbugs.gnu.org; Thu, 13 Apr 2017 06:30:40 -0400 Received: from mail-wm0-f45.google.com ([74.125.82.45]:36562) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cyc1L-0001ij-Uc for 25408@debbugs.gnu.org; Thu, 13 Apr 2017 06:30:36 -0400 Received: by mail-wm0-f45.google.com with SMTP id o81so107781357wmb.1 for <25408@debbugs.gnu.org>; Thu, 13 Apr 2017 03:30:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=YQqbpE/Q0VE42+90bWlgRkQdlG6UxIP3ezui0ypcHqk=; b=NBdUkzHHl0bN1TMP5xsw2TROJGLboEGBQRlOye68Hg2zY55X/5wJsEnHax/MuZZz6j plRKnkMd+qmgfAPpefFNJbcv8oSMkGuLZxHSwaZURg6lQOFps/lTbk3npWJyLluHiQxh 5chdXEJTzp1Os0SAE+w6CBvKfPr4iSCJvYwyO0KbAxg6LMk0dGPrS9oNh0j2aNEDNWx1 j8fLEnt1jvwhJcDe3wrRoS3UGuVFOtCYHOByHN2PwKDu8LFByAkmwtddmVbhKEnFaie9 JzYlU7rmajr9WgA/L9vv/1v/JMXJ5to0MvEO2myCWl+fM2Ui4Sj1YthtZVv4ymO0p+57 PnSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=YQqbpE/Q0VE42+90bWlgRkQdlG6UxIP3ezui0ypcHqk=; b=ju06VMAesgHsmnTQM13G97Ky+9N8UBIT7ya/tIxwGlXeDu6Wp2Kt0SiSUd8tClqCvq 0Jf0NzdDWAe0i9/WOtWdCHAOyaYKjN5zlaFlblwuB/G5R5ikb9NTQAEFZziPsCCCl47J 2rCLn7yOvfw7v7khVLsbpoAg/qLlXjbNcHxxnGTxLvdGS/zw3iOAb0UBc+eNUN1Wukyw NbADWWHGlXhVpZagwa/scHLt8AbA8FSA+YEcHuFNPgiBe19UPo/al4kVFz1+dKhJ08aY QyMgi66AlOoXuo5U8CpaxrJmbI7bUdqkWI5F1DGMe1+GfF4EXzs7SPaIQggSKvLB6qOQ XHoA== X-Gm-Message-State: AN3rC/6O8Q7KUfXPs4G9djReQ+jurvgyhBjEwlyYYUu25iI73TjAdGOZ j2+pb7G/wpfdUA== X-Received: by 10.28.183.70 with SMTP id h67mr2498547wmf.115.1492079429935; Thu, 13 Apr 2017 03:30:29 -0700 (PDT) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-4908-57d9-2f60-ab16.holly.idiocy.org. [2001:8b0:3f8:8129:4908:57d9:2f60:ab16]) by smtp.gmail.com with ESMTPSA id t24sm1415604wra.44.2017.04.13.03.30.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 13 Apr 2017 03:30:28 -0700 (PDT) Date: Thu, 13 Apr 2017 11:30:26 +0100 From: Alan Third To: martin rudalics Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) Message-ID: <20170413103026.GA96045@breton.holly.idiocy.org> References: <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <20170412173858.GB82486@breton.holly.idiocy.org> <58EE7C4B.90205@gmx.at> <20170412195121.GA95643@breton.holly.idiocy.org> <58EF2462.9010806@gmx.at> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <58EF2462.9010806@gmx.at> User-Agent: Mutt/1.7.2 (2016-11-26) X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?iso-8859-1?Q?Cl=E9ment?= Pit--Claudel 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: 0.2 (/) On Thu, Apr 13, 2017 at 09:10:26AM +0200, martin rudalics wrote: > >> When can you remove the decorations? Does it flicker when you do that? > > > > I mean, it *can* resize after I remove the decorations. > > I wanted to know "when" in the sense of "what do you have to wait for" > to remove the decorations? Can you send two requests in a row - a first > one to create a decorated frame and a second one to remove the > decorations - or do you have to wait for a response for the first > request before issuing the second one. I’ve worked it out: the toolbar is considered a ‘decoration’ by Cocoa, so it is automatically removed when I change a frame to undecorated. However, when I create a new undecorated frame the frame redrawing code waits for the toolbar to be drawn, which will never happen. I think this gives me two options: 1. Get Emacs to disable the toolbar when switching to undecorated frames. 2. Use a different method of removing the titlebar when the toolbar is enabled than when the toolbar is disabled. This option will only work in macOS 10.11 and above. Option 1 seems preferable to me, although we could add option 2 later. > Can you look also into three other things I added: > > - Provide a `move-frame-functions' hook. > > - Provide "frame restacking" which should work via orderWindow. I > suppose NS has no equivalent for z-groups. > > - Provide "child frames" which should work via parentWindow. > > I don't know whether NS child windows always behave like NS "drawers" or > may also occlude the parent frame like under X or Windows. Eventually > I'd like to have them both (like Wayland's subsurfaces if I understand > them correctly). Drawers look like a pain when you are in fullscreen > mode - IIUC there's no way to open them "into" a fullscreen frame. > X/Windows child windows are annoying when you are in a normal, fairly > small frame where they get clipped too easily. I don’t know enough about NS to be able to answer this. I’ll give it a go and see what happens. -- Alan Third From debbugs-submit-bounces@debbugs.gnu.org Thu Apr 13 07:56:55 2017 Received: (at 25408) by debbugs.gnu.org; 13 Apr 2017 11:56:55 +0000 Received: from localhost ([127.0.0.1]:45156 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cydMt-0007Td-Ep for submit@debbugs.gnu.org; Thu, 13 Apr 2017 07:56:55 -0400 Received: from mout.gmx.net ([212.227.15.19]:57276) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cydMr-0007TN-R6 for 25408@debbugs.gnu.org; Thu, 13 Apr 2017 07:56:54 -0400 Received: from [192.168.1.100] ([213.162.68.32]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0Lhfu5-1cKsgU1XDF-00mohi; Thu, 13 Apr 2017 13:56:35 +0200 Message-ID: <58EF6767.6050708@gmx.at> Date: Thu, 13 Apr 2017 13:56:23 +0200 From: martin rudalics MIME-Version: 1.0 To: Alan Third Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <20170412173858.GB82486@breton.holly.idiocy.org> <58EE7C4B.90205@gmx.at> <20170412195121.GA95643@breton.holly.idiocy.org> <58EF2462.9010806@gmx.at> <20170413103026.GA96045@breton.holly.idiocy.org> In-Reply-To: <20170413103026.GA96045@breton.holly.idiocy.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:3iT7Eu/DknILTZxcDcZvCVcA3ZNVeztNhI4D3EdRpIR/khnCUPh DcD9m5giKQkaCeZyw9/2tP/20HwiaLCoQU36sYSzTHl5W5gm6MVVSuhCPE+9rl7xsXQzXvq 8SfcBH5Ld5ZMUdjoqkYgxti/julv+oumXWFm6mkVLN2z45AUm9MwfT7pK/tDXu5Uq+03QvQ nGnhRHloQVWDNOSqlYZhQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:tQ5nf13cqp8=:nICqQI16VXNa8q4HvVgtT7 4AieAQ6AfyKA7+bI9ByucalVY6uTxGwbjnqpEhi8njIoBMbnjKFRrduRu17/guNoPxgSUGgeA 6knCdn0WiUSNE1P4mSatGnns5TrdLLFsv3TzVUgGRAeY2Z8hjOeE4Z2ly1Kv5pZ02izz9+qNZ ib1mz3oYFFk5Nw4YHrlzMfCE6qCW3+53+WPvXCwTG4BcjoN4O/jN/+H6nib0vumVYfQlOnkDi UQKRUoHUmIzamnYFL6e5o/gcwYxRNobavpsDqCx3Atq+PyECr+dw5KiHlYhAQE2MLw4YBuLjI DsxxN61Zptb+HKeoE5S8KgRhB8nEvf+rKpHZI0HjJDoTr4O9msl7Vl0lu12a/lSMng3zN0CHk BLMN/AreUGPQaz/9YLH0TUYXh2z2KwYTRPGBAuAIrD2jLVIBXBW4bw9s0w6/EkmOHKZUv634j 5VyzZOqr9LaGcV49LoNAJfBiRpchcHEpso7mVSIk894/tI/G2BJ9Fs3mF9XmznQH7OdEEb24h CvSqplzg/AOKcc2/nfMW+K2gleijrPmM3ufvj6qoKHCJdUqrCzlAKEF0+GJO8ImdNdOZ9L2So TXFRn773Ah56rpvFrPNw8l3YkVpe6+VgIQKpN9UuoHQUfrfFFjUHkx0StQmACUFPozRoo5ZVP GPL8BMr6Fv/j5lkql9VF9dwWDizl+1X97guhUeGQ3iTh1/HypcBk1Pqi2bmULZy5BSJ+lz2LB 7Y5/g2VM6cfgtQXks+Koi/d96Ihciuz26Agq7N834OJ01z1LKWahvq1u7jHW+ZbJRaZR3ydhb USbriRdmB2az98deWTE8PK6+gkfCQ== X-Spam-Score: 1.3 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > I’ve worked it out: the toolbar is considered a ‘decoration’ by Cocoa, > so it is automatically removed when I change a frame to undecorated. > However, when I create a new undecorated frame the frame redrawing > code waits for the toolbar to be drawn, which will never happen. > > I think this gives me two options: > > 1. Get Emacs to disable the toolbar when switching to undecorated > frames. > > 2. Use a different method of removing the titlebar when the toolbar > is enabled than when the toolbar is disabled. This option will > only work in macOS 10.11 and above. > > Option 1 seems preferable to me, although we could add option 2 later. [...] Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.15.19 listed in dnsbl.sorbs.net] 1.5 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [213.162.68.32 listed in dnsbl.sorbs.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.15.19 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= 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.3 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > I’ve worked it out: the toolbar is considered a ‘decoration’ by Cocoa, > so it is automatically removed when I change a frame to undecorated. > However, when I create a new undecorated frame the frame redrawing > code waits for the toolbar to be drawn, which will never happen. > > I think this gives me two options: > > 1. Get Emacs to disable the toolbar when switching to undecorated > frames. > > 2. Use a different method of removing the titlebar when the toolbar > is enabled than when the toolbar is disabled. This option will > only work in macOS 10.11 and above. > > Option 1 seems preferable to me, although we could add option 2 later. [...] Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [212.227.15.19 listed in dnsbl.sorbs.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [212.227.15.19 listed in list.dnswl.org] 1.5 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [213.162.68.32 listed in dnsbl.sorbs.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) > I=E2=80=99ve worked it out: the toolbar is considered a =E2=80=98decor= ation=E2=80=99 by Cocoa, > so it is automatically removed when I change a frame to undecorated. > However, when I create a new undecorated frame the frame redrawing > code waits for the toolbar to be drawn, which will never happen. > > I think this gives me two options: > > 1. Get Emacs to disable the toolbar when switching to undecorated > frames. > > 2. Use a different method of removing the titlebar when the toolbar= > is enabled than when the toolbar is disabled. This option will > only work in macOS 10.11 and above. > > Option 1 seems preferable to me, although we could add option 2 later.= Agreed. What happens in an undecorated frame with `tool-bar-mode' turned off when you turn on `tool-bar-mode'? > I don=E2=80=99t know enough about NS to be able to answer this. I=E2=80= =99ll give it a > go and see what happens. Fine. Thanks, martin From debbugs-submit-bounces@debbugs.gnu.org Sat Apr 15 12:29:33 2017 Received: (at 25408) by debbugs.gnu.org; 15 Apr 2017 16:29:33 +0000 Received: from localhost ([127.0.0.1]:49172 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1czQZo-0004dW-W5 for submit@debbugs.gnu.org; Sat, 15 Apr 2017 12:29:33 -0400 Received: from mail-wr0-f179.google.com ([209.85.128.179]:34343) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1czQZn-0004dH-8z for 25408@debbugs.gnu.org; Sat, 15 Apr 2017 12:29:31 -0400 Received: by mail-wr0-f179.google.com with SMTP id z109so63988322wrb.1 for <25408@debbugs.gnu.org>; Sat, 15 Apr 2017 09:29:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=O2/+D2tzzshOwG1kxFFI2tQ9CnCblLdex86DhYY37ws=; b=lUinJFoWbjpODBS/FFryuwCr0FrmH657+Xc9dQHZ9AMjDuNlqqKDJaqn4WelWz+CvF n4wPjUSaC8PQpUMhWnAMUl01t18uSnHUL6gi1VyB8zZyHJUpH4pSE8McLSb2GRY0/GeL 35GqRBfSB5QdIAEuo1h5Hv9PzhCtvKAjkLwDELZRguL9iPMaiHzTxG2dXCfqkP8JeY/C G6rVGHdSSTVNRJGKBWbtSt0xJKxbJgLBb0yiXvlfHUBVHDW83BVN+3g/6FwkoCvk8J8Y 039D93aBUSPxlCXYiU+ixYMYxG0S722CNo+zOqsSKaNvUzIf0Gw+UDUffkG2j4VgKwO0 41bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=O2/+D2tzzshOwG1kxFFI2tQ9CnCblLdex86DhYY37ws=; b=BiYcAtpi3O6UIsGj6fe/pipPSWCj0lZKyBL228MspPssmYf3hLrlrlCXaaL5e4Nc78 oNbkFGJ+Kv1dAn0zenTUaMvXSimElTGdKHiV7YfMefHu3WARIVq+z32zAJonP1+O0Hsv V7nspv2ismR41ZAKUz2ZLPNzelqevip0cNaWFZ9Cbq7s5cYiU8iTZQTvfeIS6lcVRuKN NWNxr69py9+12PUFlKz0d1qmvdzKTulQ8kMr96ACW5670+P6gS47QQq3L9m86k45j+q6 6BMzYN8gIscKpGlBSDJrcJb8Rq41mgnA2dLgCGDZShTZqTipfiR5LUSu6nlNO5PKo6bW bW0A== X-Gm-Message-State: AN3rC/6S8shUlPY1coHzMUJfvtBw+lj1TQXonA8lpjeL4IHAiJH36kfw C7xK2QYBw1Uiyg== X-Received: by 10.223.176.13 with SMTP id f13mr12317825wra.124.1492273765429; Sat, 15 Apr 2017 09:29:25 -0700 (PDT) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-2908-211d-64ad-5635.holly.idiocy.org. [2001:8b0:3f8:8129:2908:211d:64ad:5635]) by smtp.gmail.com with ESMTPSA id 23sm6990556wrx.26.2017.04.15.09.29.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 15 Apr 2017 09:29:24 -0700 (PDT) Date: Sat, 15 Apr 2017 17:29:22 +0100 From: Alan Third To: martin rudalics Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) Message-ID: <20170415162922.GA47622@breton.holly.idiocy.org> References: <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <20170412173858.GB82486@breton.holly.idiocy.org> <58EE7C4B.90205@gmx.at> <20170412195121.GA95643@breton.holly.idiocy.org> <58EF2462.9010806@gmx.at> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <58EF2462.9010806@gmx.at> User-Agent: Mutt/1.7.2 (2016-11-26) X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?iso-8859-1?Q?Cl=E9ment?= Pit--Claudel X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.6 (--) I’ve done some further reading. On Thu, Apr 13, 2017 at 09:10:26AM +0200, martin rudalics wrote: > Can you look also into three other things I added: > > - Provide a `move-frame-functions' hook. > > - Provide "frame restacking" which should work via orderWindow. I > suppose NS has no equivalent for z-groups. If I understand your description right, there is a direct equivalent for z‐groups: levels. Here’s Apple’s documentation on them: > The levels you typically use are: NSNormalWindowLevel, which > specifies the default level; NSFloatingWindowLevel, which specifies > the level for floating palettes; and NSScreenSaverWindowLevel, which > specifies the level for a screen saver window. You might also use > NSStatusWindowLevel for a status window, or NSModalPanelWindowLevel > for a modal panel. This is in addition to the basic ‘layers’, which orderWindow deals with and which only affects windows in the same ‘level’. > - Provide "child frames" which should work via parentWindow. > > I don't know whether NS child windows always behave like NS "drawers" or > may also occlude the parent frame like under X or Windows. Eventually > I'd like to have them both (like Wayland's subsurfaces if I understand > them correctly). Drawers look like a pain when you are in fullscreen > mode - IIUC there's no way to open them "into" a fullscreen frame. > X/Windows child windows are annoying when you are in a normal, fairly > small frame where they get clipped too easily. It appears that a child window in NS is just a normal window which moves and closes with its parent. So I think that means it’s more like X’s child windows, except they don’t get clipped at the parent window’s edges. They can also end up below the parent window. I think this is probably what we want, for now at least. FYI: there are also drawers and something called sheets, which appear to be some sort of special modal drawer type thing used for error messages and such. I’ve pretty much got the undecorated frames sorted with only one major bug I’m aware of when the frame is nearly the full height of the screen. I think I may have to ask Anders about that as I can’t understand the code that keeps the frame on‐screen, and I think it may be the culprit. -- Alan Third From debbugs-submit-bounces@debbugs.gnu.org Sat Apr 15 15:39:57 2017 Received: (at 25408) by debbugs.gnu.org; 15 Apr 2017 19:39:58 +0000 Received: from localhost ([127.0.0.1]:49387 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1czTY5-0006In-NJ for submit@debbugs.gnu.org; Sat, 15 Apr 2017 15:39:57 -0400 Received: from mout.gmx.net ([212.227.15.18]:58910) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1czTY3-0006IZ-Un for 25408@debbugs.gnu.org; Sat, 15 Apr 2017 15:39:56 -0400 Received: from [192.168.1.100] ([213.162.68.102]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MJSx9-1d1PLm1icl-00350f; Sat, 15 Apr 2017 21:39:37 +0200 Message-ID: <58F276F4.4030805@gmx.at> Date: Sat, 15 Apr 2017 21:39:32 +0200 From: martin rudalics MIME-Version: 1.0 To: Alan Third Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <20170412173858.GB82486@breton.holly.idiocy.org> <58EE7C4B.90205@gmx.at> <20170412195121.GA95643@breton.holly.idiocy.org> <58EF2462.9010806@gmx.at> <20170415162922.GA47622@breton.holly.idiocy.org> In-Reply-To: <20170415162922.GA47622@breton.holly.idiocy.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:ETDn13cvVnFm11aGh1Lke9QTRDzQ/9sUZa/eNbiNzcs/7BrQldE rrd9l3jEMp7qrn6UC38m5v4Sa4iBsJKBHCrb4qygU/RtleqHPxYWHfe5NQ44tJwb1h/6Aos BIzxBxnf4FdursgKfTCuuaJ6Zgejk7qQlpbwfHichA+pI8mwwo16tC4kFOdywuGm0TrEh2+ pNJsNwxSGZKHr+Ca3NUxw== X-UI-Out-Filterresults: notjunk:1;V01:K0:Ao/NxUShaGA=:nj1yWlFt2odycG5Ec3Ap9S bJInZ6N9YWQv8SddqgfTXg369DrIzH8eXGJ61flPHnSMuGGNHqdRZk0f069zF7QHPjOWvMCOx hYexaovJoFPaviA3HJXlxKxDjzCLBvhBPAsjGJ+LY03VtWX0MY4WoVHOBuaHXUGXIWJkB9Gck RanlTL5z8MZ8IAdqmebKIZWX2Xwzkv3xvDqZV9a7srq0M3ynz8Qn/6rXxgAN73L1/GW8fMS64 y3jWbI8vYyBCHCk2Z2de3ArGVct3WNklAN3+vaxVUAcSzgnPKZ+FGl2zdtKPovM7dyD2XOcSd bOaoP9q+Y1ku3ttsLBOb6g/4HCwNi33dOlFmz9gkyaDqM1M0YZztqIjyLttkwBUhlhjbMac/v erO2zO2u/RD5P0hZBzyZlVDkNO6iHInB22EluInXxZ9QFrOKuiqvnjvkQQsGmeYzQHlxhM36f JDkCKmKmJsdAet6Ke3i7oFdVX08X3EYv2LKLYfNhDZcLVgs39PPFP+YRC4o//ow8CAVaBDDUg RMCvhSOl1kOzAy+6lUYM1L3SfjBzFIlc5mLIPZLA4tZM9OQiFVIYva1gNOGbFt7jtNScn+gv7 69x5UC2jREzRP5RF2nlbF4kdxAAeScw90uKet25F+0VZxYzhMRpUmM2UV9+v9p2QXB/u94vLC sNBtEb34mJpf47cxARdTezDzzQPKTIC3FxAnOHDW1QBvAwJOUEl/QYLhnBEe9lBy2iB3BYIxI q16lFsTN281+3xtZOyoYM6OP4uYovgYzzXWdQb6BCshi9pyS6S0+tHsYzD5VWZNfOMtAV6H3I 1Xz0Yu4VUdLbFBFjykXB5X0NWq7dg== X-Spam-Score: -2.0 (--) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.0 (--) > If I understand your description right, there is a direct equivalent > for z=E2=80=90groups: levels. Here=E2=80=99s Apple=E2=80=99s documenta= tion on them: > >> The levels you typically use are: NSNormalWindowLevel, which >> specifies the default level; NSFloatingWindowLevel, which specifies >> the level for floating palettes; and NSScreenSaverWindowLevel, which >> specifies the level for a screen saver window. You might also use >> NSStatusWindowLevel for a status window, or NSModalPanelWindowLevel >> for a modal panel. Maybe the last two could be used for emulating the 'above' group. It would be nice to have a common interface for that. > This is in addition to the basic =E2=80=98layers=E2=80=99, which order= Window deals > with and which only affects windows in the same =E2=80=98level=E2=80=99= =2E This should conform with what we have on X and Windows. > It appears that a child window in NS is just a normal window which > moves and closes with its parent. So I think that means it=E2=80=99s m= ore like > X=E2=80=99s child windows, except they don=E2=80=99t get clipped at th= e parent > window=E2=80=99s edges. They can also end up below the parent window. It sounds like NS can do more than Windows and X here. The clipping issue is a nuisance. Could you try to create one and play around with it a bit? > I think this is probably what we want, for now at least. Certainly. > FYI: there are also drawers and something called sheets, which appear > to be some sort of special modal drawer type thing used for error > messages and such. > > I=E2=80=99ve pretty much got the undecorated frames sorted with only o= ne major > bug I=E2=80=99m aware of when the frame is nearly the full height of t= he > screen. I think I may have to ask Anders about that as I can=E2=80=99t= > understand the code that keeps the frame on=E2=80=90screen, and I thin= k it may > be the culprit. On X decorating an undecorated maximized frame can be funny too. There may be no visible change. martin From debbugs-submit-bounces@debbugs.gnu.org Mon Apr 17 10:56:30 2017 Received: (at 25408) by debbugs.gnu.org; 17 Apr 2017 14:56:30 +0000 Received: from localhost ([127.0.0.1]:52614 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d084r-0007Dr-Fh for submit@debbugs.gnu.org; Mon, 17 Apr 2017 10:56:30 -0400 Received: from mail-wm0-f46.google.com ([74.125.82.46]:35287) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d084o-0007Dc-Fy for 25408@debbugs.gnu.org; Mon, 17 Apr 2017 10:56:27 -0400 Received: by mail-wm0-f46.google.com with SMTP id w64so35561988wma.0 for <25408@debbugs.gnu.org>; Mon, 17 Apr 2017 07:56:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=OhST4ICkLxrEqAOCMLKDuSrzYirsb6WntEY3slaHojs=; b=pOjaDNXlevcvdgDZHYPlGbCWy9voCRtkHGNAiwtTOYra0bIwQsX0cgkJITAFmRn0q/ VNQMtg6YrUBkvpFLqln05LvKZaNCpTuBlZEacUncRGBCoiDHPME3fc3DinpzXe0PPdI2 cfsIPYowZUoOleMG8meo9xsqpgsFksC1ZohttAi8iuXaTyrhU4O2tZj9PYGL2DwMm1n/ HOQir5emXffhazaM6S01O80kOKh9OxN5Uu1TOaJLapo3Z8oqQ6SYiIoOQ0cE/Q+AiGit Qj77NqZr7ZiVIEKSJEF3a69vtbhn79G5Fv0i5l3P3WeZrxSIJYEdXC+uPwbr4YIJP8E4 U3sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=OhST4ICkLxrEqAOCMLKDuSrzYirsb6WntEY3slaHojs=; b=Fo6orTFeCFpsOpVNWAql1CplixEYyAwTHsNzwwBFCJ62citNsOoLDWbEQ4tgyIzIXT GZzQWkYYikEmra9yf/sQua6bV8j1sGbfqli88hQUCQA2DWSwHB40tIFhOR0Rtkri9fRp wkVp6lBd5qKoBIr1DxulDzTVnj/KouqieFGYR6gsnV3viWicJvJJW19L81TNfNRmBYXY quKRiETarbY9wkjHHDvhj/B0Dc3Ngh6VAnl4w7sXrcrM1AHvoVU9BQXJCm8L4ni3lDZ0 59j9+Npb+pGEkQ+Q6DKt2z5o/uE7p/LUhSscKnnghWpH4HYba4LIss7jC3TAMEdNUsLO tJXw== X-Gm-Message-State: AN3rC/5+9+p2igaNwtf7X/l1x7p10GJhIGSZMRyOAioPN52e19LKGmCG 3VINZgwiubuY7Q== X-Received: by 10.28.209.13 with SMTP id i13mr8431616wmg.31.1492440980788; Mon, 17 Apr 2017 07:56:20 -0700 (PDT) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-2908-211d-64ad-5635.holly.idiocy.org. [2001:8b0:3f8:8129:2908:211d:64ad:5635]) by smtp.gmail.com with ESMTPSA id 94sm14581392wrp.34.2017.04.17.07.56.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 17 Apr 2017 07:56:19 -0700 (PDT) Date: Mon, 17 Apr 2017 15:56:13 +0100 From: Alan Third To: martin rudalics Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) Message-ID: <20170417145613.GA78089@breton.holly.idiocy.org> References: <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <20170412173858.GB82486@breton.holly.idiocy.org> <58EE7C4B.90205@gmx.at> <20170412195121.GA95643@breton.holly.idiocy.org> <58EF2462.9010806@gmx.at> <20170415162922.GA47622@breton.holly.idiocy.org> <58F276F4.4030805@gmx.at> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="M9NhX3UHpAaciwkO" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <58F276F4.4030805@gmx.at> User-Agent: Mutt/1.7.2 (2016-11-26) X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?iso-8859-1?Q?Cl=E9ment?= Pit--Claudel , Anders Lindgren 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: 0.2 (/) --M9NhX3UHpAaciwkO Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit On Sat, Apr 15, 2017 at 09:39:32PM +0200, martin rudalics wrote: > > It appears that a child window in NS is just a normal window which > > moves and closes with its parent. So I think that means it’s more like > > X’s child windows, except they don’t get clipped at the parent > > window’s edges. They can also end up below the parent window. > > It sounds like NS can do more than Windows and X here. The clipping > issue is a nuisance. Could you try to create one and play around with > it a bit? I’ve attached a partial patch for NS. It should handle undecorated frames and parent‐child frame relationships. I’ll keep working on the rest, but thought I’d throw this out there in case anyone can spot anything obviously wrong. Anders, I hope it’s OK CCing you in. I think you might appreciate the following (after applying the patch): emacs -Q (set-frame-parameter nil 'undecorated t) (setq ns-auto-hide-menu-bar t) (toggle-frame-maximized) More info at: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=25408#77 -- Alan Third --M9NhX3UHpAaciwkO Content-Type: text/plain; charset=utf-8 Content-Description: parent and undecorated frames on NS Content-Disposition: attachment; filename="0001-Add-undecorated-and-parent-frames-to-NS-port.patch" Content-Transfer-Encoding: 8bit >From bd8ffa277c1af68a3ed8008683b01a0249fa108e Mon Sep 17 00:00:00 2001 From: Alan Third Date: Fri, 14 Apr 2017 10:02:38 +0100 Subject: [PATCH] Add undecorated and parent frames to NS port MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * src/frame.h: * src/frame.c: Enable ‘undecorated’ and ‘parent’ frame definitions. * src/nsfns.m: Add x_set_parent_frame and x_set_undecorated to handler struct. (Fx-create_frame): Handle ‘parent-frame’ and ‘undecorated’ frame parameter. * src/nsmenu.m (free_frame_tool_bar, update_frame_tool_bar): FRAME_TOOLBAR_HEIGHT is no longer a variable. * src/nsterm.h (NS_PARENT_WINDOW_LEFT_POS, NS_PARENT_WINDOW_TOP_POS): Add #defines to find the screen position of the parent frame. (EmacsView): Remove redundant toolbar variables and add createToolbar method. (FRAME_NS_TITLEBAR_HEIGHT, FRAME_TOOLBAR_HEIGHT): Always calculate the values instead of storing them in a variable. * src/nsterm.m (x_set_offset, windowDidMove): Take parent frame position into account when positioning frames. (initFrameFromEmacs): Link parent frame, and take position into account when creating new frame. (x_set_window_size): Remove toolbar height calculation. (x_set_parent_frame): (x_set_undecorated): New function. (updateFrameSize): Change NSTRACE message to reflect new reality and no longer reset frame size. (windowWillResize): Don’t change NS window name when the titlebar is invisible. (createToolbar): Move toolbar creation code into it’s own method. (initFrameFromEmacs): Handle case where frame is created without a titlebar and remove toolbar creation code. (toggleFullScreen): FRAME_TOOLBAR_HEIGHT and FRAME_NS_TITLEBAR_HEIGHT are no longer variables. --- src/frame.c | 2 - src/frame.h | 14 ++-- src/nsfns.m | 23 ++++++- src/nsmenu.m | 8 --- src/nsterm.h | 39 ++++++++++- src/nsterm.m | 217 +++++++++++++++++++++++++++++++++++++++++++---------------- 6 files changed, 221 insertions(+), 82 deletions(-) diff --git a/src/frame.c b/src/frame.c index 282b691c27..681a245ee0 100644 --- a/src/frame.c +++ b/src/frame.c @@ -683,7 +683,6 @@ make_frame (bool mini_p) f->vertical_scroll_bar_type = vertical_scroll_bar_none; f->horizontal_scroll_bars = false; f->want_fullscreen = FULLSCREEN_NONE; -#if ! defined (HAVE_NS) f->undecorated = false; #ifndef HAVE_NTGUI f->override_redirect = false; @@ -692,7 +691,6 @@ make_frame (bool mini_p) f->no_focus_on_map = false; f->no_accept_focus = false; f->z_group = z_group_none; -#endif #if ! defined (USE_GTK) && ! defined (HAVE_NS) f->last_tool_bar_item = -1; #endif diff --git a/src/frame.h b/src/frame.h index 36af6e6780..4aa7c34a29 100644 --- a/src/frame.h +++ b/src/frame.h @@ -75,10 +75,10 @@ struct frame Usually it is nil. */ Lisp_Object title; -#if defined (HAVE_WINDOW_SYSTEM) && !defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) /* This frame's parent frame, if it has one. */ Lisp_Object parent_frame; -#endif /* HAVE_WINDOW_SYSTEM and not HAVE_NS */ +#endif /* HAVE_WINDOW_SYSTEM */ /* The frame which should receive keystrokes that occur in this frame, or nil if they should go to the frame itself. This is @@ -332,7 +332,7 @@ struct frame bool_bf horizontal_scroll_bars : 1; #endif /* HAVE_WINDOW_SYSTEM */ -#if defined (HAVE_WINDOW_SYSTEM) && !defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) /* True if this is an undecorated frame. */ bool_bf undecorated : 1; @@ -570,7 +570,7 @@ fset_face_alist (struct frame *f, Lisp_Object val) { f->face_alist = val; } -#if defined (HAVE_WINDOW_SYSTEM) && !defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) INLINE void fset_parent_frame (struct frame *f, Lisp_Object val) { @@ -914,7 +914,7 @@ default_pixels_per_inch_y (void) #define FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT(f) ((void) f, 0) #endif /* HAVE_WINDOW_SYSTEM */ -#if defined (HAVE_WINDOW_SYSTEM) && !defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) #define FRAME_UNDECORATED(f) ((f)->undecorated) #ifdef HAVE_NTGUI #define FRAME_OVERRIDE_REDIRECT(f) ((void) f, 0) @@ -934,7 +934,7 @@ default_pixels_per_inch_y (void) #define FRAME_Z_GROUP_ABOVE_SUSPENDED(f) \ ((f)->z_group == z_group_above_suspended) #define FRAME_Z_GROUP_BELOW(f) ((f)->z_group == z_group_below) -#else /* not HAVE_WINDOW_SYSTEM or HAVE_NS */ +#else /* not HAVE_WINDOW_SYSTEM */ #define FRAME_UNDECORATED(f) ((void) f, 0) #define FRAME_OVERRIDE_REDIRECT(f) ((void) f, 0) #define FRAME_PARENT_FRAME(f) ((void) f, NULL) @@ -945,7 +945,7 @@ default_pixels_per_inch_y (void) #define FRAME_Z_GROUP_NONE(f) ((void) f, true) #define FRAME_Z_GROUP_ABOVE(f) ((void) f, false) #define FRAME_Z_GROUP_BELOW(f) ((void) f, false) -#endif /* HAVE_WINDOW_SYSTEM and not HAVE_NS */ +#endif /* HAVE_WINDOW_SYSTEM */ /* Whether horizontal scroll bars are currently enabled for frame F. */ #if USE_HORIZONTAL_SCROLL_BARS diff --git a/src/nsfns.m b/src/nsfns.m index 8a923dd393..6dddc64cb4 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -972,8 +972,8 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side 0, /* x_set_sticky */ 0, /* x_set_tool_bar_position */ 0, /* x_set_inhibit_double_buffering */ - 0, /* x_set_undecorated */ - 0, /* x_set_parent_frame */ + x_set_undecorated, /* x_set_undecorated */ + x_set_parent_frame, /* x_set_parent_frame */ 0, /* x_set_skip_taskbar */ 0, /* x_set_no_focus_on_map */ 0, /* x_set_no_accept_focus */ @@ -1087,7 +1087,7 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side ptrdiff_t count = specpdl_ptr - specpdl; Lisp_Object display; struct ns_display_info *dpyinfo = NULL; - Lisp_Object parent; + Lisp_Object parent, parent_frame; struct kboard *kb; static int desc_ctr = 1; int x_width = 0, x_height = 0; @@ -1265,6 +1265,23 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side FRAME_LINES (f) * FRAME_LINE_HEIGHT (f), 5, 1, Qx_create_frame_1); + tem = x_get_arg (dpyinfo, parms, Qundecorated, NULL, NULL, RES_TYPE_BOOLEAN); + FRAME_UNDECORATED (f) = !NILP (tem) && !EQ (tem, Qunbound); + store_frame_param (f, Qundecorated, FRAME_UNDECORATED (f) ? Qt : Qnil); + + parent_frame = x_get_arg (dpyinfo, parms, Qparent_frame, NULL, NULL, + RES_TYPE_SYMBOL); + /* Accept parent-frame iff parent-id was not specified. */ + if (!NILP (parent) + || EQ (parent_frame, Qunbound) + || NILP (parent_frame) + || !FRAMEP (parent_frame) + || !FRAME_LIVE_P (XFRAME (parent_frame))) + parent_frame = Qnil; + + fset_parent_frame (f, parent_frame); + store_frame_param (f, Qparent_frame, parent_frame); + /* The resources controlling the menu-bar and tool-bar are processed specially at startup, and reflected in the mode variables; ignore them here. */ diff --git a/src/nsmenu.m b/src/nsmenu.m index 59ea3855ed..1262c9cb4d 100644 --- a/src/nsmenu.m +++ b/src/nsmenu.m @@ -995,8 +995,6 @@ - (Lisp_Object)runMenuAt: (NSPoint)p forFrame: (struct frame *)f block_input (); view->wait_for_tool_bar = NO; - FRAME_TOOLBAR_HEIGHT (f) = 0; - /* Note: This trigger an animation, which calls windowDidResize repeatedly. */ f->output_data.ns->in_animation = 1; @@ -1129,12 +1127,6 @@ - (Lisp_Object)runMenuAt: (NSPoint)p forFrame: (struct frame *)f } #endif - FRAME_TOOLBAR_HEIGHT (f) = - NSHeight ([window frameRectForContentRect: NSMakeRect (0, 0, 0, 0)]) - - FRAME_NS_TITLEBAR_HEIGHT (f); - if (FRAME_TOOLBAR_HEIGHT (f) < 0) // happens if frame is fullscreen. - FRAME_TOOLBAR_HEIGHT (f) = 0; - if (oldh != FRAME_TOOLBAR_HEIGHT (f)) [view updateFrameSize:YES]; if (view->wait_for_tool_bar && FRAME_TOOLBAR_HEIGHT (f) > 0) diff --git a/src/nsterm.h b/src/nsterm.h index 53d9344cc7..34aab9c543 100644 --- a/src/nsterm.h +++ b/src/nsterm.h @@ -430,7 +430,7 @@ char const * nstrace_fullscreen_type_name (int); NSString *workingText; BOOL processingCompose; int fs_state, fs_before_fs, next_maximized; - int tibar_height, tobar_height, bwidth; + int bwidth; int maximized_width, maximized_height; NSWindow *nonfs_window; BOOL fs_is_native; @@ -454,6 +454,7 @@ char const * nstrace_fullscreen_type_name (int); /* Emacs-side interface */ - initFrameFromEmacs: (struct frame *) f; +- (void) createToolbar: (struct frame *)f; - (void) setRows: (int) r andColumns: (int) c; - (void) setWindowClosing: (BOOL)closing; - (EmacsToolbar *) toolbar; @@ -1012,8 +1013,6 @@ struct x_output #define NS_FACE_FOREGROUND(f) ((f)->foreground) #define NS_FACE_BACKGROUND(f) ((f)->background) -#define FRAME_NS_TITLEBAR_HEIGHT(f) ((f)->output_data.ns->titlebar_height) -#define FRAME_TOOLBAR_HEIGHT(f) ((f)->output_data.ns->toolbar_height) #define FRAME_DEFAULT_FACE(f) FACE_FROM_ID_OR_NULL (f, DEFAULT_FACE_ID) @@ -1029,6 +1028,25 @@ struct x_output #define XNS_SCROLL_BAR(vec) XSAVE_POINTER (vec, 0) #endif +/* Compute pixel height of the frame's titlebar. */ +#define FRAME_NS_TITLEBAR_HEIGHT(f) \ + (NSHeight([FRAME_NS_VIEW (f) frame]) == 0 ? \ + 0 \ + : (int)(NSHeight([FRAME_NS_VIEW (f) window].frame) \ + - NSHeight([NSWindow contentRectForFrameRect: \ + [[FRAME_NS_VIEW (f) window] frame] \ + styleMask:[[FRAME_NS_VIEW (f) window] styleMask]]))) + +/* Compute pixel height of the toolbar. */ +#define FRAME_TOOLBAR_HEIGHT(f) \ + (([[FRAME_NS_VIEW (f) window] toolbar] == nil \ + || ! [[FRAME_NS_VIEW (f) window] toolbar].visible) ? \ + 0 \ + : (int)(NSHeight([NSWindow contentRectForFrameRect: \ + [[FRAME_NS_VIEW (f) window] frame] \ + styleMask:[[FRAME_NS_VIEW (f) window] styleMask]]) \ + - NSHeight([[[FRAME_NS_VIEW (f) window] contentView] frame]))) + /* Compute pixel size for vertical scroll bars */ #define NS_SCROLL_BAR_WIDTH(f) \ (FRAME_HAS_VERTICAL_SCROLL_BARS (f) \ @@ -1066,6 +1084,17 @@ struct x_output #define NS_TOP_POS(f) ((f)->top_pos) #endif +/* Calculate system coordinates of the left and top of the parent + window or, if there is no parent window, the screen. */ +#define NS_PARENT_WINDOW_LEFT_POS(f) \ + (FRAME_PARENT_FRAME (f) != nil \ + ? [[FRAME_NS_VIEW (f) window] parentWindow].frame.origin.x : 0) +#define NS_PARENT_WINDOW_TOP_POS(f) \ + (FRAME_PARENT_FRAME (f) != nil \ + ? ([[FRAME_NS_VIEW (f) window] parentWindow].frame.origin.y \ + + [[FRAME_NS_VIEW (f) window] parentWindow].frame.size.height) \ + : [[[FRAME_NS_VIEW (f) window] screen] frame].size.height) + #define FRAME_NS_FONT_TABLE(f) (FRAME_DISPLAY_INFO (f)->font_table) #define FRAME_FONTSET(f) ((f)->output_data.ns->fontset) @@ -1185,6 +1214,10 @@ extern int x_display_pixel_width (struct ns_display_info *); /* This in nsterm.m */ extern float ns_antialias_threshold; extern void x_destroy_window (struct frame *f); +extern void x_set_undecorated (struct frame *f, Lisp_Object new_value, + Lisp_Object old_value); +extern void x_set_parent_frame (struct frame *f, Lisp_Object new_value, + Lisp_Object old_value); extern int ns_select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timespec const *timeout, sigset_t const *sigmask); diff --git a/src/nsterm.m b/src/nsterm.m index 162980a651..d614322ad1 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -1711,8 +1711,9 @@ -(void)remove #endif /* Constrain the setFrameTopLeftPoint so we don't move behind the menu bar. */ - NSPoint pt = NSMakePoint (SCREENMAXBOUND (f->left_pos), - SCREENMAXBOUND ([fscreen frame].size.height + NSPoint pt = NSMakePoint (SCREENMAXBOUND (f->left_pos + + NS_PARENT_WINDOW_LEFT_POS (f)), + SCREENMAXBOUND (NS_PARENT_WINDOW_TOP_POS (f) - NS_TOP_POS (f))); NSTRACE_POINT ("setFrameTopLeftPoint", pt); [[view window] setFrameTopLeftPoint: pt]; @@ -1764,25 +1765,6 @@ -(void)remove pixelheight = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, height); } - /* If we have a toolbar, take its height into account. */ - if (tb && ! [view isFullscreen]) - { - /* NOTE: previously this would generate wrong result if toolbar not - yet displayed and fixing toolbar_height=32 helped, but - now (200903) seems no longer needed */ - FRAME_TOOLBAR_HEIGHT (f) = - NSHeight ([window frameRectForContentRect: NSMakeRect (0, 0, 0, 0)]) - - FRAME_NS_TITLEBAR_HEIGHT (f); -#if 0 - /* Only breaks things here, removed by martin 2015-09-30. */ -#ifdef NS_IMPL_GNUSTEP - FRAME_TOOLBAR_HEIGHT (f) -= 3; -#endif -#endif - } - else - FRAME_TOOLBAR_HEIGHT (f) = 0; - wr.size.width = pixelwidth + f->border_width; wr.size.height = pixelheight; if (! [view isFullscreen]) @@ -1811,6 +1793,106 @@ -(void)remove unblock_input (); } +/** + * x_set_undecorated: + * + * Set frame F's `undecorated' parameter. If non-nil, F's window-system + * window is drawn without decorations, title, minimize/maximize boxes + * and external borders. This usually means that the window cannot be + * dragged, resized, iconified, maximized or deleted with the mouse. If + * nil, draw the frame with all the elements listed above unless these + * have been suspended via window manager settings. + * + * Some window managers may not honor this parameter. + */ +void +x_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) +{ + EmacsView *view = (EmacsView *)FRAME_NS_VIEW (f); + NSWindow *window = [view window]; + + if (!EQ (new_value, old_value)) + { + block_input (); + + if (NILP (new_value)) + { + FRAME_UNDECORATED (f) = false; + [window setStyleMask: ((window.styleMask | NSWindowStyleMaskTitled) + ^ NSWindowStyleMaskBorderless)]; + + [view createToolbar: f]; + } + else + { + [window setToolbar: nil]; + /* Do I need to release the toolbar here? */ + + FRAME_UNDECORATED (f) = true; + [window setStyleMask: ((window.styleMask | NSWindowStyleMaskBorderless) + ^ NSWindowStyleMaskTitled)]; + } + + /* At this point it seems we don't have an active NSResponder, + so some key presses (TAB) are swallowed by the system. */ + [window makeFirstResponder: view]; + + [view updateFrameSize: NO]; + unblock_input (); + } +} + +/** + * x_set_parent_frame: + * + * Set frame F's `parent-frame' parameter. If non-nil, make F a child + * frame of the frame specified by that parameter. Technically, this + * makes F's window-system window a child window of the parent frame's + * window-system window. If nil, make F's window-system window a + * top-level window--a child of its display's root window. + * + * A child frame's `left' and `top' parameters specify positions + * relative to the top-left corner of its parent frame's native + * rectangle. Usually, moving a parent frame moves all its child + * frames too, keeping their position relative to the parent + * unaltered. When a parent frame is iconified or made invisible, its + * child frames are made invisible. When a parent frame is deleted, + * its child frames are deleted too. + * + * Whether a child frame has a tool bar may be window-system or window + * manager dependent. It's advisable to disable it via the frame + * parameter settings. + * + * Some window managers may not honor this parameter. + */ +void +x_set_parent_frame (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) +{ + struct frame *p = NULL; + NSWindow *parent, *child; + + if (!NILP (new_value) + && (!FRAMEP (new_value) + || !FRAME_LIVE_P (p = XFRAME (new_value)) + || !FRAME_X_P (p))) + { + store_frame_param (f, Qparent_frame, old_value); + error ("Invalid specification of `parent-frame'"); + } + + if (p != FRAME_PARENT_FRAME (f)) + { + parent = [FRAME_NS_VIEW (p) window]; + child = [FRAME_NS_VIEW (f) window]; + + block_input (); + [parent addChildWindow: child + ordered: NSWindowAbove]; + unblock_input (); + + fset_parent_frame (f, new_value); + } +} static void ns_fullscreen_hook (struct frame *f) @@ -6399,7 +6481,8 @@ - (void) updateFrameSize: (BOOL) delay; newh = (int)wr.size.height - extra; NSTRACE_SIZE ("New size", NSMakeSize (neww, newh)); - NSTRACE_MSG ("tool_bar_height: %d", emacsframe->tool_bar_height); + NSTRACE_MSG ("FRAME_TOOLBAR_HEIGHT: %d", FRAME_TOOLBAR_HEIGHT (emacsframe)); + NSTRACE_MSG ("FRAME_NS_TITLEBAR_HEIGHT: %d", FRAME_NS_TITLEBAR_HEIGHT (emacsframe)); cols = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (emacsframe, neww); rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (emacsframe, newh); @@ -6424,9 +6507,11 @@ - (void) updateFrameSize: (BOOL) delay; SET_FRAME_GARBAGED (emacsframe); cancel_mouse_face (emacsframe); - wr = NSMakeRect (0, 0, neww, newh); + /* The next two lines appear to be setting the frame to the same + size as it already is. Why are they there? */ + // wr = NSMakeRect (0, 0, neww, newh); - [view setFrame: wr]; + // [view setFrame: wr]; // to do: consider using [NSNotificationCenter postNotificationName:]. [self windowDidMove: // Update top/left. @@ -6489,7 +6574,8 @@ - (NSSize)windowWillResize: (NSWindow *)sender toSize: (NSSize)frameSize old_title = 0; } } - else if (fs_state == FULLSCREEN_NONE && ! maximizing_resize) + else if (fs_state == FULLSCREEN_NONE && ! maximizing_resize + && [[self window] titleVisibility]) { char *size_title; NSWindow *window = [self window]; @@ -6692,6 +6778,34 @@ - (BOOL)isOpaque } +- (void)createToolbar: (struct frame *)f +{ + EmacsView *view = (EmacsView *)FRAME_NS_VIEW (f); + NSWindow *window = [view window]; + + toolbar = [[EmacsToolbar alloc] initForView: self withIdentifier: + [NSString stringWithFormat: @"Emacs Frame %d", + ns_window_num]]; + [window setToolbar: toolbar]; + [toolbar setVisible: NO]; + + /* Don't set frame garbaged until tool bar is up to date? + This avoids an extra clear and redraw (flicker) at frame creation. */ + if (FRAME_EXTERNAL_TOOL_BAR (f)) wait_for_tool_bar = YES; + else wait_for_tool_bar = NO; + + +#ifdef NS_IMPL_COCOA + { + NSButton *toggleButton; + toggleButton = [window standardWindowButton: NSWindowToolbarButton]; + [toggleButton setTarget: self]; + [toggleButton setAction: @selector (toggleToolbar: )]; + } +#endif +} + + - initFrameFromEmacs: (struct frame *)f { NSRect r, wr; @@ -6729,11 +6843,13 @@ - (BOOL)isOpaque maximizing_resize = NO; #endif - win = [[EmacsWindow alloc] + win = [[EmacsFSWindow alloc] initWithContentRect: r styleMask: (NSWindowStyleMaskResizable | #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 - NSWindowStyleMaskTitled | + (FRAME_UNDECORATED (f) ? + NSWindowStyleMaskBorderless : + NSWindowStyleMaskTitled) | #endif NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskClosable) @@ -6746,7 +6862,6 @@ - (BOOL)isOpaque wr = [win frame]; bwidth = f->border_width = wr.size.width - r.size.width; - tibar_height = FRAME_NS_TITLEBAR_HEIGHT (f) = wr.size.height - r.size.height; [win setAcceptsMouseMovedEvents: YES]; [win setDelegate: self]; @@ -6766,42 +6881,32 @@ - (BOOL)isOpaque [win setTitle: name]; /* toolbar support */ - toolbar = [[EmacsToolbar alloc] initForView: self withIdentifier: - [NSString stringWithFormat: @"Emacs Frame %d", - ns_window_num]]; - [win setToolbar: toolbar]; - [toolbar setVisible: NO]; - - /* Don't set frame garbaged until tool bar is up to date? - This avoids an extra clear and redraw (flicker) at frame creation. */ - if (FRAME_EXTERNAL_TOOL_BAR (f)) wait_for_tool_bar = YES; - else wait_for_tool_bar = NO; - - -#ifdef NS_IMPL_COCOA - { - NSButton *toggleButton; - toggleButton = [win standardWindowButton: NSWindowToolbarButton]; - [toggleButton setTarget: self]; - [toggleButton setAction: @selector (toggleToolbar: )]; - } -#endif - FRAME_TOOLBAR_HEIGHT (f) = 0; + if (! FRAME_UNDECORATED (f)) + [self createToolbar: f]; tem = f->icon_name; if (!NILP (tem)) [win setMiniwindowTitle: [NSString stringWithUTF8String: SSDATA (tem)]]; + if (FRAME_PARENT_FRAME (f) != nil) + { + EmacsWindow *parent = [FRAME_NS_VIEW (FRAME_PARENT_FRAME (f)) window]; + [parent addChildWindow: win + ordered: NSWindowAbove]; + } + { NSScreen *screen = [win screen]; if (screen != 0) { NSPoint pt = NSMakePoint - (IN_BOUND (-SCREENMAX, f->left_pos, SCREENMAX), + (IN_BOUND (-SCREENMAX, f->left_pos + + NS_PARENT_WINDOW_LEFT_POS (f), SCREENMAX), IN_BOUND (-SCREENMAX, - [screen frame].size.height - NS_TOP_POS (f), SCREENMAX)); + NS_PARENT_WINDOW_TOP_POS (f) - NS_TOP_POS (f), + SCREENMAX)); [win setFrameTopLeftPoint: pt]; @@ -6843,9 +6948,9 @@ - (void)windowDidMove: sender return; if (screen != nil) { - emacsframe->left_pos = r.origin.x; + emacsframe->left_pos = r.origin.x - NS_PARENT_WINDOW_LEFT_POS (emacsframe); emacsframe->top_pos = - [screen frame].size.height - (r.origin.y + r.size.height); + NS_PARENT_WINDOW_TOP_POS (emacsframe) - (r.origin.y + r.size.height); } } @@ -7262,9 +7367,6 @@ - (void)toggleFullScreen: (id)sender [fw setOpaque: NO]; f->border_width = 0; - FRAME_NS_TITLEBAR_HEIGHT (f) = 0; - tobar_height = FRAME_TOOLBAR_HEIGHT (f); - FRAME_TOOLBAR_HEIGHT (f) = 0; nonfs_window = w; @@ -7298,9 +7400,6 @@ - (void)toggleFullScreen: (id)sender [w setOpaque: NO]; f->border_width = bwidth; - FRAME_NS_TITLEBAR_HEIGHT (f) = tibar_height; - if (FRAME_EXTERNAL_TOOL_BAR (f)) - FRAME_TOOLBAR_HEIGHT (f) = tobar_height; // to do: consider using [NSNotificationCenter postNotificationName:] to send notifications. -- 2.12.0 --M9NhX3UHpAaciwkO-- From debbugs-submit-bounces@debbugs.gnu.org Mon Apr 17 11:44:24 2017 Received: (at 25408) by debbugs.gnu.org; 17 Apr 2017 15:44:24 +0000 Received: from localhost ([127.0.0.1]:52678 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d08pE-0008Nh-DB for submit@debbugs.gnu.org; Mon, 17 Apr 2017 11:44:24 -0400 Received: from mout.gmx.net ([212.227.17.22]:49637) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d08pB-0008NT-Vf for 25408@debbugs.gnu.org; Mon, 17 Apr 2017 11:44:22 -0400 Received: from [192.168.1.100] ([213.162.68.112]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MbrR4-1chvRi1Zqg-00JL82; Mon, 17 Apr 2017 17:44:04 +0200 Message-ID: <58F4E2BD.3090704@gmx.at> Date: Mon, 17 Apr 2017 17:43:57 +0200 From: martin rudalics MIME-Version: 1.0 To: Alan Third Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) References: <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <20170412173858.GB82486@breton.holly.idiocy.org> <58EE7C4B.90205@gmx.at> <20170412195121.GA95643@breton.holly.idiocy.org> <58EF2462.9010806@gmx.at> <20170415162922.GA47622@breton.holly.idiocy.org> <58F276F4.4030805@gmx.at> <20170417145613.GA78089@breton.holly.idiocy.org> In-Reply-To: <20170417145613.GA78089@breton.holly.idiocy.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:EGP3lmdbGDpsWexEAceXRN8Jfnwzf4LRSyjhCTA4fByMZPMAgYv 2PHcyVbNivuvBPe+h6VnY+smy59dlIbOtUWd1bs19xR8kAOrmzp5F7cspHw4bd3cp1nlxmo Z/u5xmz8xZSR3NM4OZCZfF9/rbjR0h8CPLKioGP8rEsYFjTd7ESgSBFwEz8Rhg7c+T6ZSLq GXO/MYmyt8eIBjz56GBPw== X-UI-Out-Filterresults: notjunk:1;V01:K0:+q6FxwjE1Tg=:g/4JFqohGBCO1mghDCMfJ5 KWN5ngOqPNNG3fIyMWOXuIDlvGTtopJFQoJW43QOAjPrwFaFNu0CFJly6tj+0neVdkkLoSY+9 EP/VInJLrS5IfJdfp/Yp3c2jv+F3PDim8pqUXLER2q/VVhFvk8vofaYXOZbz0X7af1HYrf9np KTd6gAze659ZQOvIcVWS5MzfpdeSuQ55pV8ZNTYHtJoCam1gxNG/HrqLyiM5V8m54x9a8Wn5X XkUeU2AvlpqNit29LuY/EsyLNnJQVVz2aId4YectEqkp8Iaez1zPavTKAqoaagF/s19hYMBNN B8Wzjf0Eidbv4z0Ba3CCKZbVd2KCt2X7NCPs4+aAfHfJqlK9fR2FGnRp4VrkMDIJq3WI/fwqD Cui9gzgYxVLPbZ2wQVGJx4iYN3sqrMFaDuoA24Ro3w88OZro7oTFvYc14Z56W8kno4UMfrhBF umz7v/fM/bOX1lol3nBQ/6lpeU2yA3NmenTDevBetv+u971VdqQvHGMCns0p0NQBAhupeVbre 90gjAnRJxKufNMU35fO/tmhUAKdQj9iTbxDZ7tufwVaciR/YeL6qBGU0rHvfFCH4QSahP/OPU 0ER7Lp9j5fPNxatOGffLOBYUSiiYguSUhWjlJBcZtObQjoxWHCLqfFZ383gGnqrDdCizdStyX eMd+mt8uhMaskfdofiEWp3atzqO3gBDUNzIjcv50TQWlwLlAExFZvjMpQ18qbn1OIYl//ZjVX 8BHRD+Ruy+FPV9A+XvLl1ExENCGRB8KVmCxyPH74/AYUAe4lohCvMuat74Q7E2suVV1yh0UUW 71guO7M8cW22/TcbbZXo39jYdVa/w== X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= , Anders Lindgren 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.5 (---) Looks good to me. I suppose though this won't work with GNUStep so I can't try it. Two remarks below. > + * Set frame F's `undecorated' parameter. If non-nil, F's window-system > + * window is drawn without decorations, title, minimize/maximize boxes > + * and external borders. I suppose you want to mention the removal of the toolbar here. If so, we'll have to mention that in the manual as well. When you re-add the decorations, does the inner frame move or are the decorations drawn around an unmoved inner frame? > + * A child frame's `left' and `top' parameters specify positions > + * relative to the top-left corner of its parent frame's native > + * rectangle. Does the above hold for NS? Does a (set-frame-position child 0 0) really put child in the upper left corner of its parent? Also we would have to describe the deviant clipping behavior for NS. Many thanks, martin From debbugs-submit-bounces@debbugs.gnu.org Mon Apr 17 12:22:00 2017 Received: (at 25408) by debbugs.gnu.org; 17 Apr 2017 16:22:00 +0000 Received: from localhost ([127.0.0.1]:52707 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d09Pc-0000ns-36 for submit@debbugs.gnu.org; Mon, 17 Apr 2017 12:22:00 -0400 Received: from mail-wm0-f41.google.com ([74.125.82.41]:36749) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d09Pb-0000nf-7r for 25408@debbugs.gnu.org; Mon, 17 Apr 2017 12:21:59 -0400 Received: by mail-wm0-f41.google.com with SMTP id o81so37042515wmb.1 for <25408@debbugs.gnu.org>; Mon, 17 Apr 2017 09:21:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=5TuIREX/3BRIgO9EQQER1wmixWMLQmyKRUXVtx/7L+A=; b=sCmNdjNYQ/J10fuokou/H3yk7IPax2MX0vUUdfuw42DUpBsMxF8TI48NS+W0wYBc6l H+Kry/WoBcMODF3PqSusNLs/VjOHy8duumBkNfyvXutdoOLjSSkRHpn1+Ssw6rn7eSuj zSyOy39IlN3gBNDLGz8+mOia0EmMN9qrYweBMaeSNBf1SlBTPXhRn7DkEjrBKDPNymU3 CseRO+Lecyn9xzaLAHEJ8fmOvCe6vJ8DsyYGaBT1Kh0Sap2t+b3BKE3U2h58pi+rNAP9 HELyKwEks7rIZGxR2f9gCocJs2jyjH52ppWAY4pNzxZ8UGZU2hIr+Pvgo91PO5hYEVKV VThw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=5TuIREX/3BRIgO9EQQER1wmixWMLQmyKRUXVtx/7L+A=; b=kby2ClEHYvSOGERceRqeACv00zyfI2vsNx7ub19VjV69exTkCgngnBIby4zxVg2r5x F6WDyAQ39lf4zJqiNgvcyrxV7FTHM02fRWYRhDeNeFCdBmoacHASpETpp6suyOT1MnjH lqt3v1ASRPSHHXCXCMBNriKOfDOX1tJnpyPqMPYetsCIOeeK+LuKsrqUZTgK5hKRUjwB YCOBrBk/mwaYcGUsIHCVZ1hfeJk1k9RC2MO7cdYaLJOMu9GeWpxKx93d4xACuCf9IRP1 yK2LQJfqVADBTGAdMmeV6Ot5obA6V2q0ptIk1eVGRCFThsTENbzRpUdjhWE7SGvLSHAy VtJQ== X-Gm-Message-State: AN3rC/5/3ATOw0pj6hEMfGeAqct5O3+LSB0vGMyEH7wNuZUM4aHtXxnD D+CGBQEcyD+Rpw== X-Received: by 10.28.94.194 with SMTP id s185mr1969552wmb.103.1492446112409; Mon, 17 Apr 2017 09:21:52 -0700 (PDT) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-2908-211d-64ad-5635.holly.idiocy.org. [2001:8b0:3f8:8129:2908:211d:64ad:5635]) by smtp.gmail.com with ESMTPSA id c5sm10028287wre.60.2017.04.17.09.21.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 17 Apr 2017 09:21:51 -0700 (PDT) Date: Mon, 17 Apr 2017 17:21:49 +0100 From: Alan Third To: martin rudalics Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) Message-ID: <20170417162149.GB78089@breton.holly.idiocy.org> References: <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <20170412173858.GB82486@breton.holly.idiocy.org> <58EE7C4B.90205@gmx.at> <20170412195121.GA95643@breton.holly.idiocy.org> <58EF2462.9010806@gmx.at> <20170415162922.GA47622@breton.holly.idiocy.org> <58F276F4.4030805@gmx.at> <20170417145613.GA78089@breton.holly.idiocy.org> <58F4E2BD.3090704@gmx.at> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <58F4E2BD.3090704@gmx.at> User-Agent: Mutt/1.7.2 (2016-11-26) X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?iso-8859-1?Q?Cl=E9ment?= Pit--Claudel , Anders Lindgren 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: 0.7 (/) On Mon, Apr 17, 2017 at 05:43:57PM +0200, martin rudalics wrote: > Looks good to me. I suppose though this won't work with GNUStep so I > can't try it. Two remarks below. I’m not sure about the decoration stuff, but I think, from a quick glance at the GNUStep docs, the parent/child window stuff should work. I’ll try and build it under GNUStep at some point to check it works. I’ve got a GNU/Linux virtual machine around here somewhere... > > + * Set frame F's `undecorated' parameter. If non-nil, F's window-system > > + * window is drawn without decorations, title, minimize/maximize boxes > > + * and external borders. > > I suppose you want to mention the removal of the toolbar here. If so, > we'll have to mention that in the manual as well. Yes, good point. > When you re-add the decorations, does the inner frame move or are > the decorations drawn around an unmoved inner frame? There are only two situations where the inner frame will move. The first is if you have the toolbar enabled, when you re‐add the decorations the toolbar reappears and slides the rest of the frame down. (Similarly when you remove the toolbar the rest of the frame slides up.) The other is if the titlebar would be behind the menubar, then the system moves the whole frame down just enough to keep it completely visible. > > + * A child frame's `left' and `top' parameters specify positions > > + * relative to the top-left corner of its parent frame's native > > + * rectangle. > > Does the above hold for NS? Does a (set-frame-position child 0 0) > really put child in the upper left corner of its parent? Most of the time spent implementing the child/parent frames was getting that working right, so yes, it does. Now, one thing that may be wrong is that (0 0) is actually the very top, including the titlebar. I could probably fix that if it’s not right just by offsetting by the height of the titlebar. -- Alan Third From debbugs-submit-bounces@debbugs.gnu.org Mon Apr 17 13:20:48 2017 Received: (at 25408) by debbugs.gnu.org; 17 Apr 2017 17:20:48 +0000 Received: from localhost ([127.0.0.1]:52794 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0AKW-000424-Hw for submit@debbugs.gnu.org; Mon, 17 Apr 2017 13:20:48 -0400 Received: from mout.gmx.net ([212.227.15.18]:54181) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0AKU-00041r-Gt for 25408@debbugs.gnu.org; Mon, 17 Apr 2017 13:20:47 -0400 Received: from [192.168.1.100] ([213.162.68.112]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MNq8p-1cylXj0nUJ-007Sf1; Mon, 17 Apr 2017 19:20:28 +0200 Message-ID: <58F4F954.10709@gmx.at> Date: Mon, 17 Apr 2017 19:20:20 +0200 From: martin rudalics MIME-Version: 1.0 To: Alan Third Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) References: <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <20170412173858.GB82486@breton.holly.idiocy.org> <58EE7C4B.90205@gmx.at> <20170412195121.GA95643@breton.holly.idiocy.org> <58EF2462.9010806@gmx.at> <20170415162922.GA47622@breton.holly.idiocy.org> <58F276F4.4030805@gmx.at> <20170417145613.GA78089@breton.holly.idiocy.org> <58F4E2BD.3090704@gmx.at> <20170417162149.GB78089@breton.holly.idiocy.org> In-Reply-To: <20170417162149.GB78089@breton.holly.idiocy.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:8UrkBXLKXbYoV6HXsaq6oUKKput33o6B6imlFVf869QGhhsFQ3G 8SxQsJaQsrzpVLrq00iethLO67okb4N7zffX2461ZJFmKWAccF324jzR1WsWCqUqd2zLHhJ N+TEzm0/57d1saMwET9uVJHcJCrElQTUuAqtX5Ay0G4qbR0BwWiyAI3EflDVFj2vI3iSUmo IDLvlf5hLp6B/lMjC2/BA== X-UI-Out-Filterresults: notjunk:1;V01:K0:iRxIEaqARbc=:YzVBKvxldhUeFZjSrfM+Q+ NJ7D51yUfj0VeOpvEOzIZpjXYel6qb4G/kk6JSE3NMz2zOIP24sdQ6ebNToi5qdAwNz3h/+uN DMUF1Q55yZ6aVK5OUHWEBPGY7BJOezqCxPw0+1PUThCWn8FN8KA94pUHjcj3Utq6eoS0ZTrTz 00eWs07zL8OcYcPune2eB84w13JrOCLOjXNDpofQFe/RIHKMykcIhE2niUgD7yz/1HzVCn4Vh xSo2kGyMtofYoQz/8+yNZ3VInozHrPLxCZ+ekROyspNtKHfwnEsuV/AcbL34sOWmxub/bwAKK JrhE+iUOGEBJw9Q4wwjIGlETdBToBuncjjLHOBWSwsDMO8FD8mElDuT13AFaCBbQz6iWmYoa1 2YsjB3igQxYbAV0SlEa9jkW4MhigKu915CAAjmF1mSFppI59a4us9Ym38Z6JQFu0YAbgd3i8o byxOo2d9mrto1TGiygUnCRTOLU90KB46xPHgrt1cyfpPBjTRFP9Dm4HNwmN1b1EeSU9dR2osI v1yb2zrbYHyUP5S0FA6Nh1sMfFpdtnEFsLys4tyTbCngVARIKjFRr+MWS2kqA3rHzBCV7KPLc Tl3eJ92e0TxnyZ6lZFpTwIN/n8edaCJwkOlEMiU1kX6yhN3fG2N6ydndDnnRd7fWBBDe9OaDB jwKrR2JEpuNOK7poGm0LKAcRw8f+jDqYszbU+mJL1kkgF0B2M/kVtmYth0SRFN2/6EWBjsfa6 GjhhqB4Ia8W4J5zyLJ5aR9DQgBF5Y/Lxtm87K+EfUn/xC/sUYxqhEQ5gP8Rp1fyOq7kdBxqAU bkY0Ox4bCukQW7Kt9Zy44ilABfPjQ== X-Spam-Score: -3.0 (---) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= , Anders Lindgren 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.0 (---) > I=E2=80=99m not sure about the decoration stuff, but I think, from a q= uick > glance at the GNUStep docs, the parent/child window stuff should work.= > > I=E2=80=99ll try and build it under GNUStep at some point to check it = works. > I=E2=80=99ve got a GNU/Linux virtual machine around here somewhere... Here, building with GNUStep currently fails as follows: =2E./../src/nsterm.m: In function =E2=80=98x_set_offset=E2=80=99: =2E./../src/nsterm.m:1714:33: warning: comparison of distinct pointer typ= es lacks a cast [enabled by default] =2E./../src/nsterm.m:1714:33: warning: comparison of distinct pointer typ= es lacks a cast [enabled by default] =2E./../src/nsterm.m:1714:33: warning: comparison of distinct pointer typ= es lacks a cast [enabled by default] =2E./../src/nsterm.m:1716:33: warning: comparison of distinct pointer typ= es lacks a cast [enabled by default] =2E./../src/nsterm.m:1716:33: warning: comparison of distinct pointer typ= es lacks a cast [enabled by default] =2E./../src/nsterm.m:1716:33: warning: comparison of distinct pointer typ= es lacks a cast [enabled by default] =2E./../src/nsterm.m: In function =E2=80=98x_set_window_size=E2=80=99: =2E./../src/nsterm.m:1742:7: warning: unused variable =E2=80=98tb=E2=80=99= [-Wunused-variable] =2E./../src/nsterm.m: In function =E2=80=98x_set_undecorated=E2=80=99: =2E./../src/nsterm.m:1822:34: warning: =E2=80=98NSWindow=E2=80=99 may not= respond to =E2=80=98-setStyleMask:=E2=80=99 [enabled by default] =2E./../src/nsterm.m:1822:34: warning: (Messages without a matching metho= d signature [enabled by default] =2E./../src/nsterm.m:1822:34: warning: will be assumed to return =E2=80=98= id=E2=80=99 and accept [enabled by default] =2E./../src/nsterm.m:1822:34: warning: =E2=80=98...=E2=80=99 as arguments= =2E) [enabled by default] =2E./../src/nsterm.m:1833:34: warning: =E2=80=98NSWindow=E2=80=99 may not= respond to =E2=80=98-setStyleMask:=E2=80=99 [enabled by default] =2E./../src/nsterm.m: In function =E2=80=98ns_read_socket=E2=80=99: =2E./../src/nsterm.m:4160:21: warning: unused variable =E2=80=98specpdl_c= ount=E2=80=99 [-Wunused-variable] =2E./../src/nsfns.m: In function =E2=80=98frame_geometry=E2=80=99: =2E./../src/nsfns.m:2853:3: error: no =E2=80=98visible=E2=80=99 getter fo= und =2E./../src/nsterm.m: In function =E2=80=98-[EmacsView initFrameFromEmacs= :]=E2=80=99: =2E./../src/nsterm.m:6892:30: warning: comparison of distinct pointer typ= es lacks a cast [enabled by default] =2E./../src/nsterm.m:6894:30: warning: initialization from distinct Objec= tive-C type [enabled by default] =2E./../src/nsterm.m:6905:12: warning: comparison of distinct pointer typ= es lacks a cast [enabled by default] =2E./../src/nsterm.m:6905:12: warning: comparison of distinct pointer typ= es lacks a cast [enabled by default] =2E./../src/nsterm.m:6905:12: warning: comparison of distinct pointer typ= es lacks a cast [enabled by default] =2E./../src/nsterm.m:6907:12: warning: comparison of distinct pointer typ= es lacks a cast [enabled by default] =2E./../src/nsterm.m:6907:12: warning: comparison of distinct pointer typ= es lacks a cast [enabled by default] =2E./../src/nsterm.m:6907:12: warning: comparison of distinct pointer typ= es lacks a cast [enabled by default] =2E./../src/nsterm.m: In function =E2=80=98-[EmacsView windowDidMove:]=E2= =80=99: =2E./../src/nsterm.m:6951:43: warning: comparison of distinct pointer typ= es lacks a cast [enabled by default] =2E./../src/nsterm.m:6953:9: warning: comparison of distinct pointer type= s lacks a cast [enabled by default] make[1]: *** [nsfns.o] Fehler 1 make[1]: *** Warte auf noch nicht beendete Prozesse... =2E./../src/nsterm.m: In function =E2=80=98-[EmacsView updateFrameSize:]=E2= =80=99: =2E./../src/nsterm.m:6467:9: error: no =E2=80=98visible=E2=80=99 getter f= ound =2E./../src/nsterm.m:6472:7: error: no =E2=80=98visible=E2=80=99 getter f= ound =2E./../src/nsterm.m: In function =E2=80=98-[EmacsView windowWillResize:t= oSize:]=E2=80=99: =2E./../src/nsterm.m:6554:9: error: no =E2=80=98visible=E2=80=99 getter f= ound =2E./../src/nsterm.m: In function =E2=80=98x_set_window_size=E2=80=99: =2E./../src/nsterm.m:1772:7: error: no =E2=80=98visible=E2=80=99 getter f= ound =2E./../src/nsterm.m:1788:5: error: no =E2=80=98visible=E2=80=99 getter f= ound =2E./../src/nsterm.m: In function =E2=80=98x_set_offset=E2=80=99: =2E./../src/nsterm.m:1706:12: error: no =E2=80=98visible=E2=80=99 getter = found make[1]: *** [nsterm.o] Fehler 1 make[1]: Leaving directory `/home/martin/emacs-git/trunk/obj-ns/src' make: *** [src] Fehler 2 No good idea what made it choke. The plethora of warnings is terribly confusing. > Now, one thing that may be wrong is that (0 0) is actually the very > top, including the titlebar. I could probably fix that if it=E2=80=99s= not > right just by offsetting by the height of the titlebar. No really great deal. If you don't, we'll mention it in the documentation. martin From debbugs-submit-bounces@debbugs.gnu.org Mon Apr 17 14:55:51 2017 Received: (at 25408) by debbugs.gnu.org; 17 Apr 2017 18:55:51 +0000 Received: from localhost ([127.0.0.1]:52903 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0BoU-0006JB-6b for submit@debbugs.gnu.org; Mon, 17 Apr 2017 14:55:51 -0400 Received: from mail-wm0-f41.google.com ([74.125.82.41]:35613) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0BoR-0006Iv-GV for 25408@debbugs.gnu.org; Mon, 17 Apr 2017 14:55:48 -0400 Received: by mail-wm0-f41.google.com with SMTP id w64so39879266wma.0 for <25408@debbugs.gnu.org>; Mon, 17 Apr 2017 11:55:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=BqFxiUkqLw1TJhkqMl8xaWPDKf8eFq/PMSUgFyad9+s=; b=ouLM2j6ZTjW2Q1uj14N5RY+XjpnpkYIlKr9zos9g1f0S07aV8F0aj3jWN9B2Q8oSLb +fNKleVT1QrYkbhSCnLMHtFdItt00UP/ZLpIf0Y6aw4tzFjGLTBk9RrPWvLuF/RDac9e BfF9ueuMeGSRkLM62CjOYrE/0vSaK7aa3EXrjK9RjI4PTsroP+/pmZao8TjY+asK8L7L nzdG3upS6bwDncyg9YXVqVKThBx/tIWJK69ho/NzaOEK5MznjSyfmBpq6ir9ATpsXLIo 35lE9MwX5M4WK/uAwhF86uq6NpGqdqwBBfVeMKRPeXwNrBFAhRdPJ2CSn28uYuAT2BV7 ah2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=BqFxiUkqLw1TJhkqMl8xaWPDKf8eFq/PMSUgFyad9+s=; b=Q8RpNEmmj8EaofEgxxOSv2e6RvUAIgwli8pnaSmgfSli6zn5bNIKeQdy/K0nTdFjm5 1Lls3q+LG9p79jPWpXY/ZlOEPQHgLtq8/jTpYqmllLaQw+MDdaHelEDi2/bLExC0N31P viF+MQfBXyIR4461Pu7fax9/2EPdfPYUaEWbCYSpYV64usNbvFUlKZM8WKhbXqDhrzgE 0NmKgbA7mZ4GnToMlZaIVMCfI2vrwOlQykrn1EkWhE1f6BnaaSTY/y+7RdCd9+k/EP67 +bY4L/Q7ZB7T41i5UvYaJJ3m0gkytz4iM6Yizvpzg19yhzymHi6i0qM81WELi2ud8sFr bxQA== X-Gm-Message-State: AN3rC/5NcKKvoj4jz+6pqZK3PS0vRWjKx/zhFvXZhZF3wiiawMmwuGA/ btvRC0+2jsptKg== X-Received: by 10.28.181.69 with SMTP id e66mr9700995wmf.33.1492455341627; Mon, 17 Apr 2017 11:55:41 -0700 (PDT) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-c942-e657-0685-1838.holly.idiocy.org. [2001:8b0:3f8:8129:c942:e657:685:1838]) by smtp.gmail.com with ESMTPSA id k26sm15364775wre.9.2017.04.17.11.55.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 17 Apr 2017 11:55:40 -0700 (PDT) Date: Mon, 17 Apr 2017 19:55:37 +0100 From: Alan Third To: martin rudalics Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) Message-ID: <20170417185537.GA78689@breton.holly.idiocy.org> References: <20170412173858.GB82486@breton.holly.idiocy.org> <58EE7C4B.90205@gmx.at> <20170412195121.GA95643@breton.holly.idiocy.org> <58EF2462.9010806@gmx.at> <20170415162922.GA47622@breton.holly.idiocy.org> <58F276F4.4030805@gmx.at> <20170417145613.GA78089@breton.holly.idiocy.org> <58F4E2BD.3090704@gmx.at> <20170417162149.GB78089@breton.holly.idiocy.org> <58F4F954.10709@gmx.at> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="MGYHOYXEY6WxJCY8" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <58F4F954.10709@gmx.at> User-Agent: Mutt/1.7.2 (2016-11-26) X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?iso-8859-1?Q?Cl=E9ment?= Pit--Claudel , Anders Lindgren 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: 0.7 (/) --MGYHOYXEY6WxJCY8 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit On Mon, Apr 17, 2017 at 07:20:20PM +0200, martin rudalics wrote: > > I’m not sure about the decoration stuff, but I think, from a quick > > glance at the GNUStep docs, the parent/child window stuff should work. > > > > I’ll try and build it under GNUStep at some point to check it works. > > I’ve got a GNU/Linux virtual machine around here somewhere... > > Here, building with GNUStep currently fails as follows: > > > No good idea what made it choke. The plethora of warnings is terribly > confusing. I think it was the use of the ‘visible’ method on NSToolbar, which it appears I’ve made up, but which works on Cocoa. I’ve changed it to look directly at the ‘isVisible’ instance variable. I also noticed that it doesn’t like NSWindow:setStyleMask, so I’ve changed that to directly update the relevant instance variable too. I think some of the warnings are related to comparing an Objective C object to NULL instead of nil, or vice versa. I can’t see any difference between them here, and I don’t get any warnings from clang. New patch attached. -- Alan Third --MGYHOYXEY6WxJCY8 Content-Type: text/plain; charset=utf-8 Content-Description: Add parent/child & undecorate to NS Content-Disposition: attachment; filename="0001-Add-undecorated-and-parent-frames-to-NS-port.patch" Content-Transfer-Encoding: 8bit >From 7456d41a9aeac4f252cc98a5396fd7cf38451a38 Mon Sep 17 00:00:00 2001 From: Alan Third Date: Fri, 14 Apr 2017 10:02:38 +0100 Subject: [PATCH] Add undecorated and parent frames to NS port MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * src/frame.h: * src/frame.c: Enable ‘undecorated’ and ‘parent’ frame definitions. * src/nsfns.m: Add x_set_parent_frame and x_set_undecorated to handler struct. (Fx-create_frame): Handle ‘parent-frame’ and ‘undecorated’ frame parameter. * src/nsmenu.m (free_frame_tool_bar, update_frame_tool_bar): FRAME_TOOLBAR_HEIGHT is no longer a variable. * src/nsterm.h (NS_PARENT_WINDOW_LEFT_POS, NS_PARENT_WINDOW_TOP_POS): Add #defines to find the screen position of the parent frame. (EmacsView): Remove redundant toolbar variables and add createToolbar method. (FRAME_NS_TITLEBAR_HEIGHT, FRAME_TOOLBAR_HEIGHT): Always calculate the values instead of storing them in a variable. * src/nsterm.m (x_set_offset, windowDidMove): Take parent frame position into account when positioning frames. (initFrameFromEmacs): Link parent frame, and take position into account when creating new frame. (x_set_window_size): Remove toolbar height calculation. (x_set_parent_frame): (x_set_undecorated): New function. (updateFrameSize): Change NSTRACE message to reflect new reality and no longer reset frame size. (windowWillResize): Don’t change NS window name when the titlebar is invisible. (createToolbar): Move toolbar creation code into it’s own method. (initFrameFromEmacs): Handle case where frame is created without a titlebar and remove toolbar creation code. (toggleFullScreen): FRAME_TOOLBAR_HEIGHT and FRAME_NS_TITLEBAR_HEIGHT are no longer variables. --- src/frame.c | 2 - src/frame.h | 14 ++-- src/nsfns.m | 23 ++++++- src/nsmenu.m | 8 --- src/nsterm.h | 40 ++++++++++- src/nsterm.m | 217 +++++++++++++++++++++++++++++++++++++++++++---------------- 6 files changed, 222 insertions(+), 82 deletions(-) diff --git a/src/frame.c b/src/frame.c index 282b691c27..681a245ee0 100644 --- a/src/frame.c +++ b/src/frame.c @@ -683,7 +683,6 @@ make_frame (bool mini_p) f->vertical_scroll_bar_type = vertical_scroll_bar_none; f->horizontal_scroll_bars = false; f->want_fullscreen = FULLSCREEN_NONE; -#if ! defined (HAVE_NS) f->undecorated = false; #ifndef HAVE_NTGUI f->override_redirect = false; @@ -692,7 +691,6 @@ make_frame (bool mini_p) f->no_focus_on_map = false; f->no_accept_focus = false; f->z_group = z_group_none; -#endif #if ! defined (USE_GTK) && ! defined (HAVE_NS) f->last_tool_bar_item = -1; #endif diff --git a/src/frame.h b/src/frame.h index 36af6e6780..4aa7c34a29 100644 --- a/src/frame.h +++ b/src/frame.h @@ -75,10 +75,10 @@ struct frame Usually it is nil. */ Lisp_Object title; -#if defined (HAVE_WINDOW_SYSTEM) && !defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) /* This frame's parent frame, if it has one. */ Lisp_Object parent_frame; -#endif /* HAVE_WINDOW_SYSTEM and not HAVE_NS */ +#endif /* HAVE_WINDOW_SYSTEM */ /* The frame which should receive keystrokes that occur in this frame, or nil if they should go to the frame itself. This is @@ -332,7 +332,7 @@ struct frame bool_bf horizontal_scroll_bars : 1; #endif /* HAVE_WINDOW_SYSTEM */ -#if defined (HAVE_WINDOW_SYSTEM) && !defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) /* True if this is an undecorated frame. */ bool_bf undecorated : 1; @@ -570,7 +570,7 @@ fset_face_alist (struct frame *f, Lisp_Object val) { f->face_alist = val; } -#if defined (HAVE_WINDOW_SYSTEM) && !defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) INLINE void fset_parent_frame (struct frame *f, Lisp_Object val) { @@ -914,7 +914,7 @@ default_pixels_per_inch_y (void) #define FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT(f) ((void) f, 0) #endif /* HAVE_WINDOW_SYSTEM */ -#if defined (HAVE_WINDOW_SYSTEM) && !defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) #define FRAME_UNDECORATED(f) ((f)->undecorated) #ifdef HAVE_NTGUI #define FRAME_OVERRIDE_REDIRECT(f) ((void) f, 0) @@ -934,7 +934,7 @@ default_pixels_per_inch_y (void) #define FRAME_Z_GROUP_ABOVE_SUSPENDED(f) \ ((f)->z_group == z_group_above_suspended) #define FRAME_Z_GROUP_BELOW(f) ((f)->z_group == z_group_below) -#else /* not HAVE_WINDOW_SYSTEM or HAVE_NS */ +#else /* not HAVE_WINDOW_SYSTEM */ #define FRAME_UNDECORATED(f) ((void) f, 0) #define FRAME_OVERRIDE_REDIRECT(f) ((void) f, 0) #define FRAME_PARENT_FRAME(f) ((void) f, NULL) @@ -945,7 +945,7 @@ default_pixels_per_inch_y (void) #define FRAME_Z_GROUP_NONE(f) ((void) f, true) #define FRAME_Z_GROUP_ABOVE(f) ((void) f, false) #define FRAME_Z_GROUP_BELOW(f) ((void) f, false) -#endif /* HAVE_WINDOW_SYSTEM and not HAVE_NS */ +#endif /* HAVE_WINDOW_SYSTEM */ /* Whether horizontal scroll bars are currently enabled for frame F. */ #if USE_HORIZONTAL_SCROLL_BARS diff --git a/src/nsfns.m b/src/nsfns.m index 8a923dd393..6dddc64cb4 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -972,8 +972,8 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side 0, /* x_set_sticky */ 0, /* x_set_tool_bar_position */ 0, /* x_set_inhibit_double_buffering */ - 0, /* x_set_undecorated */ - 0, /* x_set_parent_frame */ + x_set_undecorated, /* x_set_undecorated */ + x_set_parent_frame, /* x_set_parent_frame */ 0, /* x_set_skip_taskbar */ 0, /* x_set_no_focus_on_map */ 0, /* x_set_no_accept_focus */ @@ -1087,7 +1087,7 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side ptrdiff_t count = specpdl_ptr - specpdl; Lisp_Object display; struct ns_display_info *dpyinfo = NULL; - Lisp_Object parent; + Lisp_Object parent, parent_frame; struct kboard *kb; static int desc_ctr = 1; int x_width = 0, x_height = 0; @@ -1265,6 +1265,23 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side FRAME_LINES (f) * FRAME_LINE_HEIGHT (f), 5, 1, Qx_create_frame_1); + tem = x_get_arg (dpyinfo, parms, Qundecorated, NULL, NULL, RES_TYPE_BOOLEAN); + FRAME_UNDECORATED (f) = !NILP (tem) && !EQ (tem, Qunbound); + store_frame_param (f, Qundecorated, FRAME_UNDECORATED (f) ? Qt : Qnil); + + parent_frame = x_get_arg (dpyinfo, parms, Qparent_frame, NULL, NULL, + RES_TYPE_SYMBOL); + /* Accept parent-frame iff parent-id was not specified. */ + if (!NILP (parent) + || EQ (parent_frame, Qunbound) + || NILP (parent_frame) + || !FRAMEP (parent_frame) + || !FRAME_LIVE_P (XFRAME (parent_frame))) + parent_frame = Qnil; + + fset_parent_frame (f, parent_frame); + store_frame_param (f, Qparent_frame, parent_frame); + /* The resources controlling the menu-bar and tool-bar are processed specially at startup, and reflected in the mode variables; ignore them here. */ diff --git a/src/nsmenu.m b/src/nsmenu.m index 59ea3855ed..1262c9cb4d 100644 --- a/src/nsmenu.m +++ b/src/nsmenu.m @@ -995,8 +995,6 @@ - (Lisp_Object)runMenuAt: (NSPoint)p forFrame: (struct frame *)f block_input (); view->wait_for_tool_bar = NO; - FRAME_TOOLBAR_HEIGHT (f) = 0; - /* Note: This trigger an animation, which calls windowDidResize repeatedly. */ f->output_data.ns->in_animation = 1; @@ -1129,12 +1127,6 @@ - (Lisp_Object)runMenuAt: (NSPoint)p forFrame: (struct frame *)f } #endif - FRAME_TOOLBAR_HEIGHT (f) = - NSHeight ([window frameRectForContentRect: NSMakeRect (0, 0, 0, 0)]) - - FRAME_NS_TITLEBAR_HEIGHT (f); - if (FRAME_TOOLBAR_HEIGHT (f) < 0) // happens if frame is fullscreen. - FRAME_TOOLBAR_HEIGHT (f) = 0; - if (oldh != FRAME_TOOLBAR_HEIGHT (f)) [view updateFrameSize:YES]; if (view->wait_for_tool_bar && FRAME_TOOLBAR_HEIGHT (f) > 0) diff --git a/src/nsterm.h b/src/nsterm.h index 53d9344cc7..03cf399aad 100644 --- a/src/nsterm.h +++ b/src/nsterm.h @@ -430,7 +430,7 @@ char const * nstrace_fullscreen_type_name (int); NSString *workingText; BOOL processingCompose; int fs_state, fs_before_fs, next_maximized; - int tibar_height, tobar_height, bwidth; + int bwidth; int maximized_width, maximized_height; NSWindow *nonfs_window; BOOL fs_is_native; @@ -454,6 +454,7 @@ char const * nstrace_fullscreen_type_name (int); /* Emacs-side interface */ - initFrameFromEmacs: (struct frame *) f; +- (void) createToolbar: (struct frame *)f; - (void) setRows: (int) r andColumns: (int) c; - (void) setWindowClosing: (BOOL)closing; - (EmacsToolbar *) toolbar; @@ -1012,8 +1013,6 @@ struct x_output #define NS_FACE_FOREGROUND(f) ((f)->foreground) #define NS_FACE_BACKGROUND(f) ((f)->background) -#define FRAME_NS_TITLEBAR_HEIGHT(f) ((f)->output_data.ns->titlebar_height) -#define FRAME_TOOLBAR_HEIGHT(f) ((f)->output_data.ns->toolbar_height) #define FRAME_DEFAULT_FACE(f) FACE_FROM_ID_OR_NULL (f, DEFAULT_FACE_ID) @@ -1029,6 +1028,25 @@ struct x_output #define XNS_SCROLL_BAR(vec) XSAVE_POINTER (vec, 0) #endif +/* Compute pixel height of the frame's titlebar. */ +#define FRAME_NS_TITLEBAR_HEIGHT(f) \ + (NSHeight([FRAME_NS_VIEW (f) frame]) == 0 ? \ + 0 \ + : (int)(NSHeight([FRAME_NS_VIEW (f) window].frame) \ + - NSHeight([NSWindow contentRectForFrameRect: \ + [[FRAME_NS_VIEW (f) window] frame] \ + styleMask:[[FRAME_NS_VIEW (f) window] styleMask]]))) + +/* Compute pixel height of the toolbar. */ +#define FRAME_TOOLBAR_HEIGHT(f) \ + (([[FRAME_NS_VIEW (f) window] toolbar] == nil \ + || ! [[FRAME_NS_VIEW (f) window] toolbar].isVisible) ? \ + 0 \ + : (int)(NSHeight([NSWindow contentRectForFrameRect: \ + [[FRAME_NS_VIEW (f) window] frame] \ + styleMask:[[FRAME_NS_VIEW (f) window] styleMask]]) \ + - NSHeight([[[FRAME_NS_VIEW (f) window] contentView] frame]))) + /* Compute pixel size for vertical scroll bars */ #define NS_SCROLL_BAR_WIDTH(f) \ (FRAME_HAS_VERTICAL_SCROLL_BARS (f) \ @@ -1066,6 +1084,18 @@ struct x_output #define NS_TOP_POS(f) ((f)->top_pos) #endif +/* Calculate system coordinates of the left and top of the parent + window or, if there is no parent window, the screen. */ +#define NS_PARENT_WINDOW_LEFT_POS(f) \ + (FRAME_PARENT_FRAME (f) != NULL \ + ? [[FRAME_NS_VIEW (f) window] parentWindow].frame.origin.x : 0) +#define NS_PARENT_WINDOW_TOP_POS(f) \ + (FRAME_PARENT_FRAME (f) != NULL \ + ? ([[FRAME_NS_VIEW (f) window] parentWindow].frame.origin.y \ + + [[FRAME_NS_VIEW (f) window] parentWindow].frame.size.height \ + - FRAME_NS_TITLEBAR_HEIGHT (FRAME_PARENT_FRAME (f))) \ + : [[[FRAME_NS_VIEW (f) window] screen] frame].size.height) + #define FRAME_NS_FONT_TABLE(f) (FRAME_DISPLAY_INFO (f)->font_table) #define FRAME_FONTSET(f) ((f)->output_data.ns->fontset) @@ -1185,6 +1215,10 @@ extern int x_display_pixel_width (struct ns_display_info *); /* This in nsterm.m */ extern float ns_antialias_threshold; extern void x_destroy_window (struct frame *f); +extern void x_set_undecorated (struct frame *f, Lisp_Object new_value, + Lisp_Object old_value); +extern void x_set_parent_frame (struct frame *f, Lisp_Object new_value, + Lisp_Object old_value); extern int ns_select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timespec const *timeout, sigset_t const *sigmask); diff --git a/src/nsterm.m b/src/nsterm.m index 162980a651..07c48bc0e3 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -1711,8 +1711,9 @@ -(void)remove #endif /* Constrain the setFrameTopLeftPoint so we don't move behind the menu bar. */ - NSPoint pt = NSMakePoint (SCREENMAXBOUND (f->left_pos), - SCREENMAXBOUND ([fscreen frame].size.height + NSPoint pt = NSMakePoint (SCREENMAXBOUND (f->left_pos + + NS_PARENT_WINDOW_LEFT_POS (f)), + SCREENMAXBOUND (NS_PARENT_WINDOW_TOP_POS (f) - NS_TOP_POS (f))); NSTRACE_POINT ("setFrameTopLeftPoint", pt); [[view window] setFrameTopLeftPoint: pt]; @@ -1764,25 +1765,6 @@ -(void)remove pixelheight = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, height); } - /* If we have a toolbar, take its height into account. */ - if (tb && ! [view isFullscreen]) - { - /* NOTE: previously this would generate wrong result if toolbar not - yet displayed and fixing toolbar_height=32 helped, but - now (200903) seems no longer needed */ - FRAME_TOOLBAR_HEIGHT (f) = - NSHeight ([window frameRectForContentRect: NSMakeRect (0, 0, 0, 0)]) - - FRAME_NS_TITLEBAR_HEIGHT (f); -#if 0 - /* Only breaks things here, removed by martin 2015-09-30. */ -#ifdef NS_IMPL_GNUSTEP - FRAME_TOOLBAR_HEIGHT (f) -= 3; -#endif -#endif - } - else - FRAME_TOOLBAR_HEIGHT (f) = 0; - wr.size.width = pixelwidth + f->border_width; wr.size.height = pixelheight; if (! [view isFullscreen]) @@ -1811,6 +1793,106 @@ -(void)remove unblock_input (); } +/** + * x_set_undecorated: + * + * Set frame F's `undecorated' parameter. If non-nil, F's window-system + * window is drawn without decorations, title, minimize/maximize boxes + * and external borders. This usually means that the window cannot be + * dragged, resized, iconified, maximized or deleted with the mouse. If + * nil, draw the frame with all the elements listed above unless these + * have been suspended via window manager settings. + * + * Some window managers may not honor this parameter. + */ +void +x_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) +{ + EmacsView *view = (EmacsView *)FRAME_NS_VIEW (f); + NSWindow *window = [view window]; + + if (!EQ (new_value, old_value)) + { + block_input (); + + if (NILP (new_value)) + { + FRAME_UNDECORATED (f) = false; + window.styleMask = ((window.styleMask | NSWindowStyleMaskTitled) + ^ NSWindowStyleMaskBorderless); + + [view createToolbar: f]; + } + else + { + [window setToolbar: nil]; + /* Do I need to release the toolbar here? */ + + FRAME_UNDECORATED (f) = true; + window.styleMask = ((window.styleMask | NSWindowStyleMaskBorderless) + ^ NSWindowStyleMaskTitled); + } + + /* At this point it seems we don't have an active NSResponder, + so some key presses (TAB) are swallowed by the system. */ + [window makeFirstResponder: view]; + + [view updateFrameSize: NO]; + unblock_input (); + } +} + +/** + * x_set_parent_frame: + * + * Set frame F's `parent-frame' parameter. If non-nil, make F a child + * frame of the frame specified by that parameter. Technically, this + * makes F's window-system window a child window of the parent frame's + * window-system window. If nil, make F's window-system window a + * top-level window--a child of its display's root window. + * + * A child frame's `left' and `top' parameters specify positions + * relative to the top-left corner of its parent frame's native + * rectangle. Usually, moving a parent frame moves all its child + * frames too, keeping their position relative to the parent + * unaltered. When a parent frame is iconified or made invisible, its + * child frames are made invisible. When a parent frame is deleted, + * its child frames are deleted too. + * + * Whether a child frame has a tool bar may be window-system or window + * manager dependent. It's advisable to disable it via the frame + * parameter settings. + * + * Some window managers may not honor this parameter. + */ +void +x_set_parent_frame (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) +{ + struct frame *p = NULL; + NSWindow *parent, *child; + + if (!NILP (new_value) + && (!FRAMEP (new_value) + || !FRAME_LIVE_P (p = XFRAME (new_value)) + || !FRAME_X_P (p))) + { + store_frame_param (f, Qparent_frame, old_value); + error ("Invalid specification of `parent-frame'"); + } + + if (p != FRAME_PARENT_FRAME (f)) + { + parent = [FRAME_NS_VIEW (p) window]; + child = [FRAME_NS_VIEW (f) window]; + + block_input (); + [parent addChildWindow: child + ordered: NSWindowAbove]; + unblock_input (); + + fset_parent_frame (f, new_value); + } +} static void ns_fullscreen_hook (struct frame *f) @@ -6399,7 +6481,8 @@ - (void) updateFrameSize: (BOOL) delay; newh = (int)wr.size.height - extra; NSTRACE_SIZE ("New size", NSMakeSize (neww, newh)); - NSTRACE_MSG ("tool_bar_height: %d", emacsframe->tool_bar_height); + NSTRACE_MSG ("FRAME_TOOLBAR_HEIGHT: %d", FRAME_TOOLBAR_HEIGHT (emacsframe)); + NSTRACE_MSG ("FRAME_NS_TITLEBAR_HEIGHT: %d", FRAME_NS_TITLEBAR_HEIGHT (emacsframe)); cols = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (emacsframe, neww); rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (emacsframe, newh); @@ -6424,9 +6507,11 @@ - (void) updateFrameSize: (BOOL) delay; SET_FRAME_GARBAGED (emacsframe); cancel_mouse_face (emacsframe); - wr = NSMakeRect (0, 0, neww, newh); + /* The next two lines appear to be setting the frame to the same + size as it already is. Why are they there? */ + // wr = NSMakeRect (0, 0, neww, newh); - [view setFrame: wr]; + // [view setFrame: wr]; // to do: consider using [NSNotificationCenter postNotificationName:]. [self windowDidMove: // Update top/left. @@ -6489,7 +6574,8 @@ - (NSSize)windowWillResize: (NSWindow *)sender toSize: (NSSize)frameSize old_title = 0; } } - else if (fs_state == FULLSCREEN_NONE && ! maximizing_resize) + else if (fs_state == FULLSCREEN_NONE && ! maximizing_resize + && [[self window] titleVisibility]) { char *size_title; NSWindow *window = [self window]; @@ -6692,6 +6778,34 @@ - (BOOL)isOpaque } +- (void)createToolbar: (struct frame *)f +{ + EmacsView *view = (EmacsView *)FRAME_NS_VIEW (f); + NSWindow *window = [view window]; + + toolbar = [[EmacsToolbar alloc] initForView: self withIdentifier: + [NSString stringWithFormat: @"Emacs Frame %d", + ns_window_num]]; + [window setToolbar: toolbar]; + [toolbar setVisible: NO]; + + /* Don't set frame garbaged until tool bar is up to date? + This avoids an extra clear and redraw (flicker) at frame creation. */ + if (FRAME_EXTERNAL_TOOL_BAR (f)) wait_for_tool_bar = YES; + else wait_for_tool_bar = NO; + + +#ifdef NS_IMPL_COCOA + { + NSButton *toggleButton; + toggleButton = [window standardWindowButton: NSWindowToolbarButton]; + [toggleButton setTarget: self]; + [toggleButton setAction: @selector (toggleToolbar: )]; + } +#endif +} + + - initFrameFromEmacs: (struct frame *)f { NSRect r, wr; @@ -6729,11 +6843,13 @@ - (BOOL)isOpaque maximizing_resize = NO; #endif - win = [[EmacsWindow alloc] + win = [[EmacsFSWindow alloc] initWithContentRect: r styleMask: (NSWindowStyleMaskResizable | #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 - NSWindowStyleMaskTitled | + (FRAME_UNDECORATED (f) ? + NSWindowStyleMaskBorderless : + NSWindowStyleMaskTitled) | #endif NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskClosable) @@ -6746,7 +6862,6 @@ - (BOOL)isOpaque wr = [win frame]; bwidth = f->border_width = wr.size.width - r.size.width; - tibar_height = FRAME_NS_TITLEBAR_HEIGHT (f) = wr.size.height - r.size.height; [win setAcceptsMouseMovedEvents: YES]; [win setDelegate: self]; @@ -6766,42 +6881,32 @@ - (BOOL)isOpaque [win setTitle: name]; /* toolbar support */ - toolbar = [[EmacsToolbar alloc] initForView: self withIdentifier: - [NSString stringWithFormat: @"Emacs Frame %d", - ns_window_num]]; - [win setToolbar: toolbar]; - [toolbar setVisible: NO]; - - /* Don't set frame garbaged until tool bar is up to date? - This avoids an extra clear and redraw (flicker) at frame creation. */ - if (FRAME_EXTERNAL_TOOL_BAR (f)) wait_for_tool_bar = YES; - else wait_for_tool_bar = NO; - - -#ifdef NS_IMPL_COCOA - { - NSButton *toggleButton; - toggleButton = [win standardWindowButton: NSWindowToolbarButton]; - [toggleButton setTarget: self]; - [toggleButton setAction: @selector (toggleToolbar: )]; - } -#endif - FRAME_TOOLBAR_HEIGHT (f) = 0; + if (! FRAME_UNDECORATED (f)) + [self createToolbar: f]; tem = f->icon_name; if (!NILP (tem)) [win setMiniwindowTitle: [NSString stringWithUTF8String: SSDATA (tem)]]; + if (FRAME_PARENT_FRAME (f) != NULL) + { + NSWindow *parent = [FRAME_NS_VIEW (FRAME_PARENT_FRAME (f)) window]; + [parent addChildWindow: win + ordered: NSWindowAbove]; + } + { NSScreen *screen = [win screen]; if (screen != 0) { NSPoint pt = NSMakePoint - (IN_BOUND (-SCREENMAX, f->left_pos, SCREENMAX), + (IN_BOUND (-SCREENMAX, f->left_pos + + NS_PARENT_WINDOW_LEFT_POS (f), SCREENMAX), IN_BOUND (-SCREENMAX, - [screen frame].size.height - NS_TOP_POS (f), SCREENMAX)); + NS_PARENT_WINDOW_TOP_POS (f) - NS_TOP_POS (f), + SCREENMAX)); [win setFrameTopLeftPoint: pt]; @@ -6843,9 +6948,9 @@ - (void)windowDidMove: sender return; if (screen != nil) { - emacsframe->left_pos = r.origin.x; + emacsframe->left_pos = r.origin.x - NS_PARENT_WINDOW_LEFT_POS (emacsframe); emacsframe->top_pos = - [screen frame].size.height - (r.origin.y + r.size.height); + NS_PARENT_WINDOW_TOP_POS (emacsframe) - (r.origin.y + r.size.height); } } @@ -7262,9 +7367,6 @@ - (void)toggleFullScreen: (id)sender [fw setOpaque: NO]; f->border_width = 0; - FRAME_NS_TITLEBAR_HEIGHT (f) = 0; - tobar_height = FRAME_TOOLBAR_HEIGHT (f); - FRAME_TOOLBAR_HEIGHT (f) = 0; nonfs_window = w; @@ -7298,9 +7400,6 @@ - (void)toggleFullScreen: (id)sender [w setOpaque: NO]; f->border_width = bwidth; - FRAME_NS_TITLEBAR_HEIGHT (f) = tibar_height; - if (FRAME_EXTERNAL_TOOL_BAR (f)) - FRAME_TOOLBAR_HEIGHT (f) = tobar_height; // to do: consider using [NSNotificationCenter postNotificationName:] to send notifications. -- 2.12.0 --MGYHOYXEY6WxJCY8-- From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 19 03:26:54 2017 Received: (at 25408) by debbugs.gnu.org; 19 Apr 2017 07:26:54 +0000 Received: from localhost ([127.0.0.1]:55441 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0k0s-000471-Gd for submit@debbugs.gnu.org; Wed, 19 Apr 2017 03:26:54 -0400 Received: from mout.gmx.net ([212.227.17.21]:62258) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0k0q-00046m-Fg for 25408@debbugs.gnu.org; Wed, 19 Apr 2017 03:26:53 -0400 Received: from [192.168.1.100] ([213.162.68.69]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0McR00-1cjD9l2ca0-00HfmG; Wed, 19 Apr 2017 09:26:33 +0200 Message-ID: <58F7111F.6050004@gmx.at> Date: Wed, 19 Apr 2017 09:26:23 +0200 From: martin rudalics MIME-Version: 1.0 To: Alan Third Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) References: <20170412173858.GB82486@breton.holly.idiocy.org> <58EE7C4B.90205@gmx.at> <20170412195121.GA95643@breton.holly.idiocy.org> <58EF2462.9010806@gmx.at> <20170415162922.GA47622@breton.holly.idiocy.org> <58F276F4.4030805@gmx.at> <20170417145613.GA78089@breton.holly.idiocy.org> <58F4E2BD.3090704@gmx.at> <20170417162149.GB78089@breton.holly.idiocy.org> <58F4F954.10709@gmx.at> <20170417185537.GA78689@breton.holly.idiocy.org> In-Reply-To: <20170417185537.GA78689@breton.holly.idiocy.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:H6Z+4mN95h4Rf6J44WbpiVijCh5wr9ilXXvuSBdkp8lw0YDwdAI DE1PWmGlY5dt2ligxdViX2ckBEzrvMx2SV+9k13HZ44qiIGRCAcH/qqOJW5Q+gI5APrpBWW +HGAv8xTk+TODVvnDBNjy/Xj2fVexhpqk/UL85Caav8B8YXFajc1e+DUBSHvbt+rWSUfNAV o+bYwAE7aZweFg7sCGWtQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:jSW120BeTXI=:RseOKtPwvIZB9+Jh6OIjpY Ka2QOtTr+/1JnDAVw6aHcmfQqs+wi21FD8FApmp9dj69JaOjsasa2YQWI/AMGk0u2kD5tsHuW YfDZwa2IaROCLxtk3+oWwM+s8GeDJhP+rItigSh1S6ZulCu0dkU0yTjRFxswhkJunWyg99mdX cMvH+av3s5UjpMkSlS/60F+kfcHU/abHx8P/wLhL/eb/qoX5xoWMvWIStIV+W3Quy7jvHevTy kdMUryPdFt2aYDwv92HPMWsgP3JpFSP0NfsClBF6U61LNJLXZ+0hDoyRtVo1JC+fWMVWSjs1F DhwxGOQ5y8P/TbooOnkmI/JQV9GN4KnziPmraG+VhR2jUXVWIgYxj+4g2ttAx5R5f9buHCJjv UG54H/3hwX8CWJpYJkAPC4Qbj0i5BG4adQ3uBLQ3+EFetUct4ViVtyFVqsObhStAhqqixxbGg N0h9PGmbrz19tCei4uhwsMHi2JVVBB0MJ7aL4vbYGY0k/t3gy0I3tS0L5fysCtsneEynPX6Sx IylSP3LiEVBPUgajIHm5Uzj6ScHlmTpmqR+FcH+CvZcNjXRL7NFlVi1f2QLGvKyOwPRtjftjE ZQPH4y7eqq0wQtnxbjN3qIcQc+dINunqZuDOsm6/hOPj8yy52vNpUBRR798EUd3YMVIgG5OaD YKz7MdnlbgisW5yL/pDuKMAun8+Qmb3xJdxRhUqlGstk8sOa/TZmBTyuPfBagAEYUX+FK1UZ0 layK5BWw/um6TlznMTB23PHezx6ADBOy2pjU5QJAzNUt8RTPGqXiCeq1O0MTix0yYw6HADx8d pNE447MIxse/s6YrwAHp/6MLtixFg== X-Spam-Score: -2.0 (--) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= , Anders Lindgren X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.0 (--) > New patch attached. Thank you. Building works now. Invoking a "non-installed" emacs gets me 2017-04-19 09:16:03.808 emacs[5292] FTC_ImageCache_Lookup() failed with error 00000006 2017-04-19 09:16:03.921 emacs[5292] FTC_ImageCache_Lookup() failed with error 00000006 2017-04-19 09:16:03.953 emacs[5292] KeySym NoSymbol not found; disabling GSSecondControlKey 2017-04-19 09:16:03.953 emacs[5292] KeySym NoSymbol not found; disabling GSFirstCommandKey 2017-04-19 09:16:03.953 emacs[5292] KeySym NoSymbol not found; disabling GSSecondCommandKey which is normal here. If at this time I do within the just started Emacs (set-frame-parameter nil 'undecorated t) I get /home/martin/emacs-git/trunk/obj-ns/src/emacs: Uncaught exception NSInvalidArgumentException, reason: -[EmacsFSWindow setStyleMask:]: unrecognized selector sent to instance 0x30a37d0 Setting the 'parent-frame' parameter of a frame has no impact, neither when I do it during frame creation not when doing it at any later time. martin From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 19 07:24:07 2017 Received: (at 25408) by debbugs.gnu.org; 19 Apr 2017 11:24:07 +0000 Received: from localhost ([127.0.0.1]:55603 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0niR-0001SH-K3 for submit@debbugs.gnu.org; Wed, 19 Apr 2017 07:24:07 -0400 Received: from mail-ua0-f176.google.com ([209.85.217.176]:36318) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0niQ-0001Rk-7W for 25408@debbugs.gnu.org; Wed, 19 Apr 2017 07:24:06 -0400 Received: by mail-ua0-f176.google.com with SMTP id a1so12698606uaf.3 for <25408@debbugs.gnu.org>; Wed, 19 Apr 2017 04:24:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=MGjVPdptDix/8SCxYL8L6dSo0Op4lOnn0aDJmto9YyY=; b=UeMmHG9XVERj7oSFN30X1WDuqtj8iRXYLJd2LHsZlENColch0NAvQvaxcVhyx5whZN 1s0yPKoabBS5hZpV2Oi6h3+kCpWaBwwyCI6JFNBqKIKLQXR+46iZQF97zUDtumgwEyVt 6wk+DlXANiE1MHBsrI5ChIMeu02YBzcBLUmAltdIxquGVhOfV0VQuExJGvDCnViz5d5V d7Vbr0i/6NK9PBbm/xw1mFbVRXUB7Mv9v77AA0nmBOIuWCRUzbfCkSKGb67WmtQrqwHn M5J4QBiKIE0egXhXs4Z7Tvv0rL4fvQXQKG337PeO++Pw/MCCdkXTbgCXnnETtWOLq/Kj cVvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=MGjVPdptDix/8SCxYL8L6dSo0Op4lOnn0aDJmto9YyY=; b=iXOksay1ErPW8ebCmH2Z5rIgUf7DFizmoVmFhysr+U6O2/0kdm6rVsTeFfZs2atM/Q bgOldpM+5zoR2tRuheKB2VXsZ7bfsOgxy0NZ7eI1vrWgwtw/OnJqw016DcmeQTONkHjA hnIwjReAgD/loq2/hiYO8aSgfiTyJ3ncpu2YSP9D66NnTJ2eBP/4ZXtYgHtaAnYoUPWp b4ZRaiVcr2gU0CIHtTsCrgAE9NtQ/u85+CjGMqjb7KMhxdvStnYeE71OxoT+xBVW+PG/ uLtfAFwqaqR80MvelL1Y86t9Z7MCZUCcRijId5aGPyO/Nb9QZXooX9RceqGsy4eany7s dC5g== X-Gm-Message-State: AN3rC/6K6ZEDfXzf8+fB+8sObNyurw8+W1aoJ9K1G0Kq6de6OGT4nTkf /PKOj0vAg8SwDUlaII44c3VohRXBtg== X-Received: by 10.176.69.65 with SMTP id r59mr930238uar.93.1492601040720; Wed, 19 Apr 2017 04:24:00 -0700 (PDT) MIME-Version: 1.0 Received: by 10.31.74.5 with HTTP; Wed, 19 Apr 2017 04:24:00 -0700 (PDT) In-Reply-To: <20170417145613.GA78089@breton.holly.idiocy.org> References: <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <20170412173858.GB82486@breton.holly.idiocy.org> <58EE7C4B.90205@gmx.at> <20170412195121.GA95643@breton.holly.idiocy.org> <58EF2462.9010806@gmx.at> <20170415162922.GA47622@breton.holly.idiocy.org> <58F276F4.4030805@gmx.at> <20170417145613.GA78089@breton.holly.idiocy.org> From: Anders Lindgren Date: Wed, 19 Apr 2017 13:24:00 +0200 Message-ID: Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) To: Alan Third Content-Type: multipart/alternative; boundary=94eb2c0b9898d2d98e054d834290 X-Spam-Score: -2.8 (--) X-Debbugs-Envelope-To: 25408 Cc: martin rudalics , 25408@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= , Arthur Miller X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.8 (--) --94eb2c0b9898d2d98e054d834290 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi! > Anders, I hope it=E2=80=99s OK CCing you in. I think you might appreciate= the > following (after applying the patch): > I really appreciate that you are keeping me in the loop! emacs -Q > > (set-frame-parameter nil 'undecorated t) > (setq ns-auto-hide-menu-bar t) > (toggle-frame-maximized) > This looks very promising! It's a cleaner solution than the one I use today -- placing the title bar above the top of the screen. The only issue I've came across was when the bottom edge of a frame was close to the bottom of the display (or when maximized). When `undocorated' goes from t to nil, the window shrinks. When positioned in the middle of the screen, it looks like the frame, for a fraction of a second, increases its size before returning to it's original shape. My guess is that, when at the bottom of the screen, the frame gets truncated when the frame is temporarily increased, and when it tries to return to it's original size, it shrinks. I made an attempt at adapting/modernizing my "multicolumn" ( https://github.com/Lindydancer/multicolumn) package (which, among else, can resize and reposition a frame). Currently, I have hardcoded the title size for various systems -- on macOS I use "24". However, `frame-geometry' says that the title height is 22 pixels. I'm not sure how to account for the missing 2 pixels, any thoughts? Martin, I also notices that `menu-bar-external' says `nil', but I guess is should say non-nil, right? -- Anders --94eb2c0b9898d2d98e054d834290 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi!
=C2=A0
emacs -= Q

(set-frame-parameter nil 'undecorated t)
(setq ns-auto-hide-menu-bar t)
(toggle-frame-maximized)

This looks ver= y promising! It's a cleaner solution than the one I use today -- placin= g the title bar above the top of the screen.

The o= nly issue I've came across was when the bottom edge of a frame was clos= e to the bottom of the display (or when maximized). When `undocorated' = goes from t to nil, the window shrinks. When positioned in the middle of th= e screen, it looks like the frame, for a fraction of a second, increases it= s size before returning to it's original shape. My guess is that, when = at the bottom of the screen, the frame gets truncated when the frame is tem= porarily increased, and when it tries to return to it's original size, = it shrinks.

I made an attempt at adapting/moderniz= ing my "multicolumn" (https://github.com/Lindydancer/multicolumn) package (which,= among else, can resize and reposition a frame). Currently, I have hardcode= d the title size for various systems -- on macOS I use "24". Howe= ver, `frame-geometry' says that the title height is 22 pixels. I'm = not sure how to account for the missing 2 pixels, any thoughts?
<= br>
Martin, I also notices that `menu-bar-external' says `nil= ', but I guess is should say non-nil, right?

= =C2=A0 =C2=A0 -- Anders

--94eb2c0b9898d2d98e054d834290-- From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 19 08:51:29 2017 Received: (at 25408) by debbugs.gnu.org; 19 Apr 2017 12:51:30 +0000 Received: from localhost ([127.0.0.1]:55666 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0p4z-0005Ja-N8 for submit@debbugs.gnu.org; Wed, 19 Apr 2017 08:51:29 -0400 Received: from mout.gmx.net ([212.227.17.22]:64360) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0p4y-0005JM-Bl for 25408@debbugs.gnu.org; Wed, 19 Apr 2017 08:51:29 -0400 Received: from [192.168.1.100] ([213.162.68.27]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0LwJko-1bxS8B2n9S-017zBF; Wed, 19 Apr 2017 14:51:09 +0200 Message-ID: <58F75D33.6000208@gmx.at> Date: Wed, 19 Apr 2017 14:50:59 +0200 From: martin rudalics MIME-Version: 1.0 To: Anders Lindgren , Alan Third Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) References: <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <20170412173858.GB82486@breton.holly.idiocy.org> <58EE7C4B.90205@gmx.at> <20170412195121.GA95643@breton.holly.idiocy.org> <58EF2462.9010806@gmx.at> <20170415162922.GA47622@breton.holly.idiocy.org> <58F276F4.4030805@gmx.at> <20170417145613.GA78089@breton.holly.idiocy.org> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:bt0ji3nwcXBxo+KX1DmFTDjStmUudUZbGJanjzETNfB6oRCB0YM xLe+Du71vYRjEd0C25uEI+IvT83+7PItLclXyZrpcbNcMy6USuV1e/27Gbj8p7w6u+dwDyo dAdZyj6CuhZThFtShggVTrFxdMAJiev/MocTwhb5pp2Bm4nNnCT3ZwrJQze8bUavm9ayr+v JbeO0Rsxkgjs4kARDKh2w== X-UI-Out-Filterresults: notjunk:1;V01:K0:O9Z5fSaqSqU=:/6EbxP75A62cOEPirxJs6i l02rkiEJCbT6MFRNzwuO7RRlu84ibMq5ruGKYWv7cikyiuJ+pXIHAgMmxEeiqB9VfGbWHoqaY b0N/fY4wgNAWl3+W49AxHaa/TxioO9vRQYipQb5TjHx7bn0TM2u8R03dIEDvVESsjGRG+f6C7 KTzj/+fOoggOVx+Wab01u2KC+zvTNA0FYSJFw82YMKlCt5LaFfKIaKoYj3S+C9C9x7h92/jLE iQPE0WcPXQa+G8ub9lFO+1/GfLW389DKIsaF25BT92ZpBMRF+Ynac5Bvjwd498izmEXX8OJ++ ekedepZ3ybGxotJzA7ThdGRyM1WXP0aFCqAhcQ2KK7S0t8HGruG1rDfaACVyWmF6bHVMsIWuK 3VAQziZxz/kuUT9ztsO8Ro90Pkl6Fqojv+2+B2IjLixWqyYbzGql8WBNbeFjxwVNjYiWKcpjE wAvSFiIdqD7bliOQSy2OPPHLRwRakPU8l9ar/KmqirB7d08/qYEv/F5M5QUqzqOGhzymiLPeE Op93EgnqIz12mB7JCEb9jL7aQk6kcAJE+nYxVfqcLA0uWazaSOPxQw1S4H/fBX9nnMjrOZmu6 39S5T8RICwx/b0JZ6luF5f2Vn3p3uaz2ErM8OlDH4KkXFZldADFIwvTtLNZnTMVi8yKXurlpR 2ulELAY8+QZZwc8LwgO8m4T5kpHWXAhXQO9nqFxzOeWINvIQjq85REnBrbmSZMWyK9hCrvKqN hQgkH38665zciN8Sd7wfvcsbl8oV7uXUUoTnoDdUyKAYZnGvKgwybT6r1752x3YO/BBE6i0tx 9GXn3swx/BjkR16pGnAWS7OIqVgXw== X-Spam-Score: -2.0 (--) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.0 (--) > I made an attempt at adapting/modernizing my "multicolumn" ( > https://github.com/Lindydancer/multicolumn) package (which, among else= , can > resize and reposition a frame). Currently, I have hardcoded the title = size > for various systems -- on macOS I use "24". However, `frame-geometry' = says > that the title height is 22 pixels. I'm not sure how to account for th= e > missing 2 pixels, any thoughts? The value returned by =E2=80=98frame-geometry=E2=80=99 should be correct.= Look at all the occurrences of FRAME_NS_TITLEBAR_HEIGHT in nsterm.m. In contrast with other platforms, NS uses that value internally all the time. > Martin, I also notices that `menu-bar-external' says `nil', but I gues= s is > should say non-nil, right? Right. It should say non-nil. If possible, however, please check the function =E2=80=98ns-frame-edges=E2= =80=99 for all values of TYPE whether it handles the menu bar height correctly, i.e., ignores it. Thanks, martin From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 19 09:51:54 2017 Received: (at 25408) by debbugs.gnu.org; 19 Apr 2017 13:51:54 +0000 Received: from localhost ([127.0.0.1]:55753 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0q1R-0000LG-SN for submit@debbugs.gnu.org; Wed, 19 Apr 2017 09:51:54 -0400 Received: from mail-wr0-f178.google.com ([209.85.128.178]:35476) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0q1Q-0000L0-79 for 25408@debbugs.gnu.org; Wed, 19 Apr 2017 09:51:52 -0400 Received: by mail-wr0-f178.google.com with SMTP id o21so16038718wrb.2 for <25408@debbugs.gnu.org>; Wed, 19 Apr 2017 06:51:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=ULntSSbLso6b755JnrEQ5YOCy2LCWMjry51jh40DFvc=; b=urK/XMZEsxOwFYvXMmGLddsx/tXemJ89PB0QsXEUnvg33lyVwdrooW0y8Ai1OntHjG PjDa/0HShUE+MlcQE99mox0qY/b4ySQ5O+GL6iPPVykMy8TjfKYqfWmutfS1LSob+Uy3 v38uoCfZN6tI62cizLczgr6WrZtBM2Sef+TOGsLfrrIeY46XA3xd6vVMw5ieEtXGP8vt 3u9Iwq2t3haszteJLtNFIlFDQpxpHFnGaerNs0SWFe+lJd3GN+2J3AoAJ6SM83M7FG9M pPj/E6YmHT6Wn2F/1zM/5EK7l7kIgInd4rMcTkwVdG1OR0i6/Rnjm+1G/xWWNPe3aisC Mtfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=ULntSSbLso6b755JnrEQ5YOCy2LCWMjry51jh40DFvc=; b=B6n9QvCUt5lRs/yOqAqv8/sXeKbcCKTUXYlQ6Hn1VKwjqD1/R2qd1OSxGoDI7cFEE/ igwR2WZATqUaURQqV7qTGsUJGAa9lr7iIBefgi+7wVxaThRgaXg9mX3gCRxPxXb/5MDc XyxUCInYWQOd70pEXOPPwLkLZTBsz9gMu+gJnzFK/eC9z9q7k8RudngGZQJaB/7yEoAV NE4v/NXyQrlJ7LIWmP131y0VzQtOqLCfzDO4iOXxotCCW3oONGMvFXppNNZ9lzxrWiRM R1UlfC7NKHTHmrpBGbSib/jBxW0P6AChlQx5TSV6jWJ/m451gnyBQAt3TIZH4ICsFdDf B41w== X-Gm-Message-State: AN3rC/6SqD38abi8O5ptW7Q1u0I2yBxd4zWwYocZ60BdZETgdBS9qVFx RpgaGxgOi5Rmgw== X-Received: by 10.223.172.54 with SMTP id v51mr3180214wrc.1.1492609906463; Wed, 19 Apr 2017 06:51:46 -0700 (PDT) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-2908-211d-64ad-5635.holly.idiocy.org. [2001:8b0:3f8:8129:2908:211d:64ad:5635]) by smtp.gmail.com with ESMTPSA id 59sm3401769wrl.48.2017.04.19.06.51.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 19 Apr 2017 06:51:45 -0700 (PDT) Date: Wed, 19 Apr 2017 14:51:42 +0100 From: Alan Third To: Anders Lindgren Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) Message-ID: <20170419135142.GA10595@breton.holly.idiocy.org> References: <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <20170412173858.GB82486@breton.holly.idiocy.org> <58EE7C4B.90205@gmx.at> <20170412195121.GA95643@breton.holly.idiocy.org> <58EF2462.9010806@gmx.at> <20170415162922.GA47622@breton.holly.idiocy.org> <58F276F4.4030805@gmx.at> <20170417145613.GA78089@breton.holly.idiocy.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.7.2 (2016-11-26) X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 25408 Cc: martin rudalics , 25408@debbugs.gnu.org, =?iso-8859-1?Q?Cl=E9ment?= Pit--Claudel , Arthur Miller X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.6 (--) On Wed, Apr 19, 2017 at 01:24:00PM +0200, Anders Lindgren wrote: > The only issue I've came across was when the bottom edge of a frame was > close to the bottom of the display (or when maximized). When `undocorated' > goes from t to nil, the window shrinks. When positioned in the middle of > the screen, it looks like the frame, for a fraction of a second, increases > its size before returning to it's original shape. My guess is that, when at > the bottom of the screen, the frame gets truncated when the frame is > temporarily increased, and when it tries to return to it's original size, > it shrinks. It appears this was being caused by the recreation of the toolbar when switching from undecorated to decorated. The toolbar was being added to the window, then made invisible, but I guess not before the new toolbar animation kicked in. I’ve swapped the two lines around and it seems much smoother now. > I made an attempt at adapting/modernizing my "multicolumn" ( > https://github.com/Lindydancer/multicolumn) package (which, among else, can > resize and reposition a frame). Currently, I have hardcoded the title size > for various systems -- on macOS I use "24". However, `frame-geometry' says > that the title height is 22 pixels. I'm not sure how to account for the > missing 2 pixels, any thoughts? I’m sure that 22 pixels is correct. I notice that internal-border-width defaults to two pixels, could that explain it? I’ve got an updated patch, but I’ll reply to Martin’s email and attach it there. -- Alan Third From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 19 10:33:29 2017 Received: (at 25408) by debbugs.gnu.org; 19 Apr 2017 14:33:29 +0000 Received: from localhost ([127.0.0.1]:57003 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0qfg-0001lJ-Ex for submit@debbugs.gnu.org; Wed, 19 Apr 2017 10:33:29 -0400 Received: from mail-wm0-f43.google.com ([74.125.82.43]:36335) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0qfd-0001l6-S1 for 25408@debbugs.gnu.org; Wed, 19 Apr 2017 10:33:27 -0400 Received: by mail-wm0-f43.google.com with SMTP id o81so81704760wmb.1 for <25408@debbugs.gnu.org>; Wed, 19 Apr 2017 07:33:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=RXC9kapE7sR7sGqw8omX7cQqI4EqZ94ob120O8dknYI=; b=ELBcdpp2MdLHuHiUHUA5Y87T3UoYJijH4pl1AFvSwsLWUZrPesfgTYAoNFB2aRRCF5 bJ7DhXNJgqWQ5DsZxUhUcIy0C3fG8aVjur4KXsf37E/VnntYQmpdPVg/hwhQYzhiOKi7 80b1JtLQkiBbN+FFXYDw9mtUKb6yPtPkHUlip95orcKJEEwoa/LgIYJu4PbkuGWd7RHH ODfHa8k4oN8abo/JDxgAR7kjGtC+LCqejD14aPW8GkBe5ZjBq8fKYu+T8FSoCg7YaKe9 izZ2IqTZvYhNUugefKON83VNC/aNp6AGdx8zsh4lhr6qeOE9rtLZ/Anb1l13AJA2KLe6 5xgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=RXC9kapE7sR7sGqw8omX7cQqI4EqZ94ob120O8dknYI=; b=CLD/Pi7ITYKPpH0L/ckcM1vdW9lr9BoxhOgukLHnCnBAkVoBzUx09qjnfD5PU90sGR zPELZkmhW/rmXa3N026Tui2+jeN85HzwqhZhDQrSVrCeFMNYgsb3LGXbhWcsy6gFLIVf +jln1VUaYjeiLkgAuLn7jh76rDmC/aBhRWSBANgJNEZw8pJVbnnirMr+0Xr6wZQso8UH 7O41//X22Ie1Jf2eT0sfJhr06PRFHIpUceMD2UF2DSPJounTBqGD1NnUWY5HIbJhgmS6 7VRmekuy1cDRC+F3p6zAW4acVdgQ/eSFJ5wKWuT6yd9uGLai2Hbob486JUwRdQtg7BS0 hrhw== X-Gm-Message-State: AN3rC/7sLPHNXsdXKaMG1Schg26xyTjsZkA4a2N4zvb3dLtwEZb9Dbdo gGaWQCAACI3wKQ== X-Received: by 10.28.11.69 with SMTP id 66mr19526401wml.38.1492612400106; Wed, 19 Apr 2017 07:33:20 -0700 (PDT) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-c942-e657-0685-1838.holly.idiocy.org. [2001:8b0:3f8:8129:c942:e657:685:1838]) by smtp.gmail.com with ESMTPSA id v8sm3531911wrd.42.2017.04.19.07.33.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 19 Apr 2017 07:33:18 -0700 (PDT) Date: Wed, 19 Apr 2017 15:33:16 +0100 From: Alan Third To: martin rudalics Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) Message-ID: <20170419143316.GB10595@breton.holly.idiocy.org> References: <20170412195121.GA95643@breton.holly.idiocy.org> <58EF2462.9010806@gmx.at> <20170415162922.GA47622@breton.holly.idiocy.org> <58F276F4.4030805@gmx.at> <20170417145613.GA78089@breton.holly.idiocy.org> <58F4E2BD.3090704@gmx.at> <20170417162149.GB78089@breton.holly.idiocy.org> <58F4F954.10709@gmx.at> <20170417185537.GA78689@breton.holly.idiocy.org> <58F7111F.6050004@gmx.at> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="jI8keyz6grp/JLjh" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <58F7111F.6050004@gmx.at> User-Agent: Mutt/1.7.2 (2016-11-26) X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?iso-8859-1?Q?Cl=E9ment?= Pit--Claudel , Anders Lindgren 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: 0.2 (/) --jI8keyz6grp/JLjh Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit On Wed, Apr 19, 2017 at 09:26:23AM +0200, martin rudalics wrote: > If at this time I do within the just started Emacs > > (set-frame-parameter nil 'undecorated t) > > I get > > /home/martin/emacs-git/trunk/obj-ns/src/emacs: Uncaught exception NSInvalidArgumentException, reason: -[EmacsFSWindow setStyleMask:]: unrecognized selector sent to instance 0x30a37d0 It turns out that GNUStep doesn’t let you change the decorated state of an existing window. It should be able to create a new undecorated window. > Setting the 'parent-frame' parameter of a frame has no impact, neither > when I do it during frame creation not when doing it at any later time. I believe it is setting the parent/child relationship, but in GNUStep it doesn’t seem to mean the child moves with the parent. I think this is a bug in GNUStep, but the behaviour isn’t documented yet, so I’m not sure if it’s intentional. The child will minimise and close with the parent and moving it to (0 0) will put it in the top left corner of the parent. Except it doesn’t quite, because there’s a hard‐coded titlebar height for GNUStep which is guaranteed to be wrong for every WM. At least I think that’s what going on. Z‐groups are working, but again in GNUStep it seems a bit hit and miss as the frames seem to forget their state if you click on their titlebars. -- Alan Third --jI8keyz6grp/JLjh Content-Type: text/plain; charset=utf-8 Content-Description: NS frame patch Content-Disposition: attachment; filename="0001-Add-new-frame-functionality-to-NS-port.patch" Content-Transfer-Encoding: 8bit >From 5584fbe6402083853b71b3de251670752a5d7af2 Mon Sep 17 00:00:00 2001 From: Alan Third Date: Fri, 14 Apr 2017 10:02:38 +0100 Subject: [PATCH] Add new frame functionality to NS port MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * lisp/frame.el (frame-restack): Call ns-frame-restack. * src/keyboard.c (kbd_buffer_get_event) [HAVE_NS]: Enable MOVE_FRAME_EVENT handling. * src/frame.h: * src/frame.c: Enable 'z-group', 'undecorated' and 'parent' frame definitions. * src/nsfns.m: Add x_set_z_group, x_set_parent_frame and x_set_undecorated (Cocoa only) to handler struct. (Fx-create_frame): Handle 'z-code', 'parent-frame' and 'undecorated' frame parameter. (Fns_frame_restack): New function. * src/nsmenu.m (free_frame_tool_bar, update_frame_tool_bar): FRAME_TOOLBAR_HEIGHT is no longer a variable. * src/nsterm.h (NS_PARENT_WINDOW_LEFT_POS, NS_PARENT_WINDOW_TOP_POS): Add #defines to find the screen position of the parent frame. (NS_TOP_POS): Remove defun. (EmacsView): Remove redundant toolbar variables and add createToolbar method. (FRAME_NS_TITLEBAR_HEIGHT, FRAME_TOOLBAR_HEIGHT): Always calculate the values instead of storing them in a variable. * src/nsterm.m (x_set_offset, windowDidMove): Take parent frame position into account when positioning frames. (initFrameFromEmacs): Remove toolbar creation code and handle new frame parameters. (x_set_window_size): Remove toolbar height calculation. (x_set_z_group): (x_set_parent_frame): (x_set_undecorated) [NS_IMPL_COCOA]: New function. (x_destroy_window): Detach parent if child closes. (updateFrameSize): Change NSTRACE message to reflect new reality and no longer reset frame size. (windowWillResize): Don’t change NS window name when the titlebar is invisible. (createToolbar): Move toolbar creation code into it’s own method. (toggleFullScreen): FRAME_TOOLBAR_HEIGHT and FRAME_NS_TITLEBAR_HEIGHT are no longer variables. (windowDidMove): Fire MOVE_FRAME_EVENT Emacs event. --- lisp/frame.el | 4 +- src/frame.c | 2 - src/frame.h | 14 +-- src/keyboard.c | 2 +- src/nsfns.m | 63 +++++++++++- src/nsmenu.m | 8 -- src/nsterm.h | 47 +++++++-- src/nsterm.m | 302 ++++++++++++++++++++++++++++++++++++++++++++------------- 8 files changed, 341 insertions(+), 101 deletions(-) diff --git a/lisp/frame.el b/lisp/frame.el index 86a0e26e39..e632b5943f 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -1548,7 +1548,9 @@ frame-restack ((eq frame-type 'x) (x-frame-restack frame1 frame2 above)) ((eq frame-type 'w32) - (w32-frame-restack frame1 frame2 above)))) + (w32-frame-restack frame1 frame2 above)) + ((eq frame-type 'ns) + (ns-frame-restack frame1 frame2 above)))) (error "Cannot restack frames"))) (defun frame-size-changed-p (&optional frame) diff --git a/src/frame.c b/src/frame.c index 282b691c27..681a245ee0 100644 --- a/src/frame.c +++ b/src/frame.c @@ -683,7 +683,6 @@ make_frame (bool mini_p) f->vertical_scroll_bar_type = vertical_scroll_bar_none; f->horizontal_scroll_bars = false; f->want_fullscreen = FULLSCREEN_NONE; -#if ! defined (HAVE_NS) f->undecorated = false; #ifndef HAVE_NTGUI f->override_redirect = false; @@ -692,7 +691,6 @@ make_frame (bool mini_p) f->no_focus_on_map = false; f->no_accept_focus = false; f->z_group = z_group_none; -#endif #if ! defined (USE_GTK) && ! defined (HAVE_NS) f->last_tool_bar_item = -1; #endif diff --git a/src/frame.h b/src/frame.h index 36af6e6780..4aa7c34a29 100644 --- a/src/frame.h +++ b/src/frame.h @@ -75,10 +75,10 @@ struct frame Usually it is nil. */ Lisp_Object title; -#if defined (HAVE_WINDOW_SYSTEM) && !defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) /* This frame's parent frame, if it has one. */ Lisp_Object parent_frame; -#endif /* HAVE_WINDOW_SYSTEM and not HAVE_NS */ +#endif /* HAVE_WINDOW_SYSTEM */ /* The frame which should receive keystrokes that occur in this frame, or nil if they should go to the frame itself. This is @@ -332,7 +332,7 @@ struct frame bool_bf horizontal_scroll_bars : 1; #endif /* HAVE_WINDOW_SYSTEM */ -#if defined (HAVE_WINDOW_SYSTEM) && !defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) /* True if this is an undecorated frame. */ bool_bf undecorated : 1; @@ -570,7 +570,7 @@ fset_face_alist (struct frame *f, Lisp_Object val) { f->face_alist = val; } -#if defined (HAVE_WINDOW_SYSTEM) && !defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) INLINE void fset_parent_frame (struct frame *f, Lisp_Object val) { @@ -914,7 +914,7 @@ default_pixels_per_inch_y (void) #define FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT(f) ((void) f, 0) #endif /* HAVE_WINDOW_SYSTEM */ -#if defined (HAVE_WINDOW_SYSTEM) && !defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) #define FRAME_UNDECORATED(f) ((f)->undecorated) #ifdef HAVE_NTGUI #define FRAME_OVERRIDE_REDIRECT(f) ((void) f, 0) @@ -934,7 +934,7 @@ default_pixels_per_inch_y (void) #define FRAME_Z_GROUP_ABOVE_SUSPENDED(f) \ ((f)->z_group == z_group_above_suspended) #define FRAME_Z_GROUP_BELOW(f) ((f)->z_group == z_group_below) -#else /* not HAVE_WINDOW_SYSTEM or HAVE_NS */ +#else /* not HAVE_WINDOW_SYSTEM */ #define FRAME_UNDECORATED(f) ((void) f, 0) #define FRAME_OVERRIDE_REDIRECT(f) ((void) f, 0) #define FRAME_PARENT_FRAME(f) ((void) f, NULL) @@ -945,7 +945,7 @@ default_pixels_per_inch_y (void) #define FRAME_Z_GROUP_NONE(f) ((void) f, true) #define FRAME_Z_GROUP_ABOVE(f) ((void) f, false) #define FRAME_Z_GROUP_BELOW(f) ((void) f, false) -#endif /* HAVE_WINDOW_SYSTEM and not HAVE_NS */ +#endif /* HAVE_WINDOW_SYSTEM */ /* Whether horizontal scroll bars are currently enabled for frame F. */ #if USE_HORIZONTAL_SCROLL_BARS diff --git a/src/keyboard.c b/src/keyboard.c index 3e50142f7c..c9fa2a9f5e 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -4056,7 +4056,7 @@ kbd_buffer_get_event (KBOARD **kbp, kbd_fetch_ptr = event + 1; } #endif -#if defined (HAVE_X11) || defined (HAVE_NTGUI) +#if defined (HAVE_X11) || defined (HAVE_NTGUI) || defined (HAVE_NS) else if (event->kind == MOVE_FRAME_EVENT) { /* Make an event (move-frame (FRAME)). */ diff --git a/src/nsfns.m b/src/nsfns.m index 8a923dd393..f1a5df8f27 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -972,12 +972,16 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side 0, /* x_set_sticky */ 0, /* x_set_tool_bar_position */ 0, /* x_set_inhibit_double_buffering */ - 0, /* x_set_undecorated */ - 0, /* x_set_parent_frame */ +#ifdef NS_IMPL_COCOA + x_set_undecorated, /* x_set_undecorated */ +#else + 0, /*x_set_undecorated */ +#endif + x_set_parent_frame, /* x_set_parent_frame */ 0, /* x_set_skip_taskbar */ 0, /* x_set_no_focus_on_map */ 0, /* x_set_no_accept_focus */ - 0, /* x_set_z_group */ + x_set_z_group, /* x_set_z_group */ 0, /* x_set_override_redirect */ }; @@ -1087,7 +1091,7 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side ptrdiff_t count = specpdl_ptr - specpdl; Lisp_Object display; struct ns_display_info *dpyinfo = NULL; - Lisp_Object parent; + Lisp_Object parent, parent_frame; struct kboard *kb; static int desc_ctr = 1; int x_width = 0, x_height = 0; @@ -1265,6 +1269,25 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side FRAME_LINES (f) * FRAME_LINE_HEIGHT (f), 5, 1, Qx_create_frame_1); + tem = x_get_arg (dpyinfo, parms, Qundecorated, NULL, NULL, RES_TYPE_BOOLEAN); + FRAME_UNDECORATED (f) = !NILP (tem) && !EQ (tem, Qunbound); + store_frame_param (f, Qundecorated, FRAME_UNDECORATED (f) ? Qt : Qnil); + + parent_frame = x_get_arg (dpyinfo, parms, Qparent_frame, NULL, NULL, + RES_TYPE_SYMBOL); + /* Accept parent-frame iff parent-id was not specified. */ + if (!NILP (parent) + || EQ (parent_frame, Qunbound) + || NILP (parent_frame) + || !FRAMEP (parent_frame) + || !FRAME_LIVE_P (XFRAME (parent_frame))) + parent_frame = Qnil; + + fset_parent_frame (f, parent_frame); + store_frame_param (f, Qparent_frame, parent_frame); + + x_default_parameter (f, parms, Qz_group, Qnil, NULL, NULL, RES_TYPE_SYMBOL); + /* The resources controlling the menu-bar and tool-bar are processed specially at startup, and reflected in the mode variables; ignore them here. */ @@ -1405,6 +1428,37 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side } } +DEFUN ("ns-frame-restack", Fns_frame_restack, Sns_frame_restack, 2, 3, 0, + doc: /* Restack FRAME1 below FRAME2. +This means that if both frames are visible and the display areas of +these frames overlap, FRAME2 (partially) obscures FRAME1. If optional +third argument ABOVE is non-nil, restack FRAME1 above FRAME2. This +means that if both frames are visible and the display areas of these +frames overlap, FRAME1 (partially) obscures FRAME2. + +Some window managers may refuse to restack windows. */) + (Lisp_Object frame1, Lisp_Object frame2, Lisp_Object above) +{ + struct frame *f1 = decode_live_frame (frame1); + struct frame *f2 = decode_live_frame (frame2); + + if (FRAME_NS_VIEW (f1) && FRAME_NS_VIEW (f2)) + { + NSWindow *window = [FRAME_NS_VIEW (f1) window]; + NSInteger window2 = [[FRAME_NS_VIEW (f2) window] windowNumber]; + NSWindowOrderingMode flag = NILP (above) ? NSWindowBelow : NSWindowAbove; + + [window orderWindow: flag + relativeTo: window2]; + + return Qt; + } + else + { + error ("Cannot restack frames"); + return Qnil; + } +} DEFUN ("ns-popup-font-panel", Fns_popup_font_panel, Sns_popup_font_panel, 0, 1, "", @@ -3134,6 +3188,7 @@ - (NSString *)panel: (id)sender userEnteredFilename: (NSString *)filename defsubr (&Sns_display_monitor_attributes_list); defsubr (&Sns_frame_geometry); defsubr (&Sns_frame_edges); + defsubr (&Sns_frame_restack); defsubr (&Sx_display_mm_width); defsubr (&Sx_display_mm_height); defsubr (&Sx_display_screens); diff --git a/src/nsmenu.m b/src/nsmenu.m index 59ea3855ed..1262c9cb4d 100644 --- a/src/nsmenu.m +++ b/src/nsmenu.m @@ -995,8 +995,6 @@ - (Lisp_Object)runMenuAt: (NSPoint)p forFrame: (struct frame *)f block_input (); view->wait_for_tool_bar = NO; - FRAME_TOOLBAR_HEIGHT (f) = 0; - /* Note: This trigger an animation, which calls windowDidResize repeatedly. */ f->output_data.ns->in_animation = 1; @@ -1129,12 +1127,6 @@ - (Lisp_Object)runMenuAt: (NSPoint)p forFrame: (struct frame *)f } #endif - FRAME_TOOLBAR_HEIGHT (f) = - NSHeight ([window frameRectForContentRect: NSMakeRect (0, 0, 0, 0)]) - - FRAME_NS_TITLEBAR_HEIGHT (f); - if (FRAME_TOOLBAR_HEIGHT (f) < 0) // happens if frame is fullscreen. - FRAME_TOOLBAR_HEIGHT (f) = 0; - if (oldh != FRAME_TOOLBAR_HEIGHT (f)) [view updateFrameSize:YES]; if (view->wait_for_tool_bar && FRAME_TOOLBAR_HEIGHT (f) > 0) diff --git a/src/nsterm.h b/src/nsterm.h index 53d9344cc7..2f8c4269b0 100644 --- a/src/nsterm.h +++ b/src/nsterm.h @@ -430,7 +430,7 @@ char const * nstrace_fullscreen_type_name (int); NSString *workingText; BOOL processingCompose; int fs_state, fs_before_fs, next_maximized; - int tibar_height, tobar_height, bwidth; + int bwidth; int maximized_width, maximized_height; NSWindow *nonfs_window; BOOL fs_is_native; @@ -454,6 +454,7 @@ char const * nstrace_fullscreen_type_name (int); /* Emacs-side interface */ - initFrameFromEmacs: (struct frame *) f; +- (void) createToolbar: (struct frame *)f; - (void) setRows: (int) r andColumns: (int) c; - (void) setWindowClosing: (BOOL)closing; - (EmacsToolbar *) toolbar; @@ -1012,8 +1013,6 @@ struct x_output #define NS_FACE_FOREGROUND(f) ((f)->foreground) #define NS_FACE_BACKGROUND(f) ((f)->background) -#define FRAME_NS_TITLEBAR_HEIGHT(f) ((f)->output_data.ns->titlebar_height) -#define FRAME_TOOLBAR_HEIGHT(f) ((f)->output_data.ns->toolbar_height) #define FRAME_DEFAULT_FACE(f) FACE_FROM_ID_OR_NULL (f, DEFAULT_FACE_ID) @@ -1029,6 +1028,25 @@ struct x_output #define XNS_SCROLL_BAR(vec) XSAVE_POINTER (vec, 0) #endif +/* Compute pixel height of the frame's titlebar. */ +#define FRAME_NS_TITLEBAR_HEIGHT(f) \ + (NSHeight([FRAME_NS_VIEW (f) frame]) == 0 ? \ + 0 \ + : (int)(NSHeight([FRAME_NS_VIEW (f) window].frame) \ + - NSHeight([NSWindow contentRectForFrameRect: \ + [[FRAME_NS_VIEW (f) window] frame] \ + styleMask:[[FRAME_NS_VIEW (f) window] styleMask]]))) + +/* Compute pixel height of the toolbar. */ +#define FRAME_TOOLBAR_HEIGHT(f) \ + (([[FRAME_NS_VIEW (f) window] toolbar] == nil \ + || ! [[FRAME_NS_VIEW (f) window] toolbar].isVisible) ? \ + 0 \ + : (int)(NSHeight([NSWindow contentRectForFrameRect: \ + [[FRAME_NS_VIEW (f) window] frame] \ + styleMask:[[FRAME_NS_VIEW (f) window] styleMask]]) \ + - NSHeight([[[FRAME_NS_VIEW (f) window] contentView] frame]))) + /* Compute pixel size for vertical scroll bars */ #define NS_SCROLL_BAR_WIDTH(f) \ (FRAME_HAS_VERTICAL_SCROLL_BARS (f) \ @@ -1059,12 +1077,17 @@ struct x_output (FRAME_SCROLL_BAR_LINES (f) * FRAME_LINE_HEIGHT (f) \ - NS_SCROLL_BAR_HEIGHT (f)) : 0) -/* XXX: fix for GNUstep inconsistent accounting for titlebar */ -#ifdef NS_IMPL_GNUSTEP -#define NS_TOP_POS(f) ((f)->top_pos + 18) -#else -#define NS_TOP_POS(f) ((f)->top_pos) -#endif +/* Calculate system coordinates of the left and top of the parent + window or, if there is no parent window, the screen. */ +#define NS_PARENT_WINDOW_LEFT_POS(f) \ + (FRAME_PARENT_FRAME (f) != NULL \ + ? [[FRAME_NS_VIEW (f) window] parentWindow].frame.origin.x : 0) +#define NS_PARENT_WINDOW_TOP_POS(f) \ + (FRAME_PARENT_FRAME (f) != NULL \ + ? ([[FRAME_NS_VIEW (f) window] parentWindow].frame.origin.y \ + + [[FRAME_NS_VIEW (f) window] parentWindow].frame.size.height \ + - FRAME_NS_TITLEBAR_HEIGHT (FRAME_PARENT_FRAME (f))) \ + : [[[FRAME_NS_VIEW (f) window] screen] frame].size.height) #define FRAME_NS_FONT_TABLE(f) (FRAME_DISPLAY_INFO (f)->font_table) @@ -1185,6 +1208,12 @@ extern int x_display_pixel_width (struct ns_display_info *); /* This in nsterm.m */ extern float ns_antialias_threshold; extern void x_destroy_window (struct frame *f); +extern void x_set_undecorated (struct frame *f, Lisp_Object new_value, + Lisp_Object old_value); +extern void x_set_parent_frame (struct frame *f, Lisp_Object new_value, + Lisp_Object old_value); +extern void x_set_z_group (struct frame *f, Lisp_Object new_value, + Lisp_Object old_value); extern int ns_select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timespec const *timeout, sigset_t const *sigmask); diff --git a/src/nsterm.m b/src/nsterm.m index 4725991aff..fbbcdbe4bc 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -1668,6 +1668,17 @@ -(void)remove -------------------------------------------------------------------------- */ { NSTRACE ("x_destroy_window"); + + /* If this frame has a parent window, detach it as not doing so can + cause a crash in GNUStep. */ + if (FRAME_PARENT_FRAME (f) != NULL) + { + NSWindow *child = [FRAME_NS_VIEW (f) window]; + NSWindow *parent = [FRAME_NS_VIEW (FRAME_PARENT_FRAME (f)) window]; + + [parent removeChildWindow: child]; + } + check_window_system (f); x_free_frame_resources (f); ns_window_num--; @@ -1706,14 +1717,18 @@ -(void)remove - FRAME_TOOLBAR_HEIGHT (f)) : f->top_pos; #ifdef NS_IMPL_GNUSTEP - if (f->left_pos < 100) - f->left_pos = 100; /* don't overlap menu */ + if (FRAME_PARENT_FRAME (f) == NULL) + { + if (f->left_pos < 100) + f->left_pos = 100; /* don't overlap menu */ + } #endif /* Constrain the setFrameTopLeftPoint so we don't move behind the menu bar. */ - NSPoint pt = NSMakePoint (SCREENMAXBOUND (f->left_pos), - SCREENMAXBOUND ([fscreen frame].size.height - - NS_TOP_POS (f))); + NSPoint pt = NSMakePoint (SCREENMAXBOUND (f->left_pos + + NS_PARENT_WINDOW_LEFT_POS (f)), + SCREENMAXBOUND (NS_PARENT_WINDOW_TOP_POS (f) + - f->top_pos)); NSTRACE_POINT ("setFrameTopLeftPoint", pt); [[view window] setFrameTopLeftPoint: pt]; f->size_hint_flags &= ~(XNegative|YNegative); @@ -1738,7 +1753,6 @@ -(void)remove EmacsView *view = FRAME_NS_VIEW (f); NSWindow *window = [view window]; NSRect wr = [window frame]; - int tb = FRAME_EXTERNAL_TOOL_BAR (f); int pixelwidth, pixelheight; int orig_height = wr.size.height; @@ -1764,25 +1778,6 @@ -(void)remove pixelheight = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, height); } - /* If we have a toolbar, take its height into account. */ - if (tb && ! [view isFullscreen]) - { - /* NOTE: previously this would generate wrong result if toolbar not - yet displayed and fixing toolbar_height=32 helped, but - now (200903) seems no longer needed */ - FRAME_TOOLBAR_HEIGHT (f) = - NSHeight ([window frameRectForContentRect: NSMakeRect (0, 0, 0, 0)]) - - FRAME_NS_TITLEBAR_HEIGHT (f); -#if 0 - /* Only breaks things here, removed by martin 2015-09-30. */ -#ifdef NS_IMPL_GNUSTEP - FRAME_TOOLBAR_HEIGHT (f) -= 3; -#endif -#endif - } - else - FRAME_TOOLBAR_HEIGHT (f) = 0; - wr.size.width = pixelwidth + f->border_width; wr.size.height = pixelheight; if (! [view isFullscreen]) @@ -1811,6 +1806,150 @@ -(void)remove unblock_input (); } +#ifdef NS_IMPL_COCOA +void +x_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) +/* -------------------------------------------------------------------------- + Set frame F's `undecorated' parameter. If non-nil, F's window-system + window is drawn without decorations, title, minimize/maximize boxes + and external borders. This usually means that the window cannot be + dragged, resized, iconified, maximized or deleted with the mouse. If + nil, draw the frame with all the elements listed above unless these + have been suspended via window manager settings. + + GNUStep cannot change an existing window's style. + -------------------------------------------------------------------------- */ +{ + EmacsView *view = (EmacsView *)FRAME_NS_VIEW (f); + NSWindow *window = [view window]; + + if (!EQ (new_value, old_value)) + { + block_input (); + + if (NILP (new_value)) + { + FRAME_UNDECORATED (f) = false; + [window setStyleMask: ((window.styleMask + | NSWindowStyleMaskTitled + | NSWindowStyleMaskResizable + | NSWindowStyleMaskMiniaturizable + | NSWindowStyleMaskClosable) + ^ NSWindowStyleMaskBorderless)]; + + [view createToolbar: f]; + } + else + { + [window setToolbar: nil]; + /* Do I need to release the toolbar here? */ + + FRAME_UNDECORATED (f) = true; + [window setStyleMask: ((window.styleMask | NSWindowStyleMaskBorderless) + ^ (NSWindowStyleMaskTitled + | NSWindowStyleMaskResizable + | NSWindowStyleMaskMiniaturizable + | NSWindowStyleMaskClosable))]; + } + + /* At this point it seems we don't have an active NSResponder, + so some key presses (TAB) are swallowed by the system. */ + [window makeFirstResponder: view]; + + [view updateFrameSize: NO]; + unblock_input (); + } +} +#endif /* NS_IMPL_COCOA */ + +void +x_set_parent_frame (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) +/* -------------------------------------------------------------------------- + Set frame F's `parent-frame' parameter. If non-nil, make F a child + frame of the frame specified by that parameter. Technically, this + makes F's window-system window a child window of the parent frame's + window-system window. If nil, make F's window-system window a + top-level window--a child of its display's root window. + + A child frame's `left' and `top' parameters specify positions + relative to the top-left corner of its parent frame's native + rectangle. On macOS moving a parent frame moves all its child + frames too, keeping their position relative to the parent + unaltered. When a parent frame is iconified or made invisible, its + child frames are made invisible. When a parent frame is deleted, + its child frames are deleted too. + + Whether a child frame has a tool bar may be window-system or window + manager dependent. It's advisable to disable it via the frame + parameter settings. + + Some window managers may not honor this parameter. + -------------------------------------------------------------------------- */ +{ + struct frame *p = NULL; + NSWindow *parent, *child; + + if (!NILP (new_value) + && (!FRAMEP (new_value) + || !FRAME_LIVE_P (p = XFRAME (new_value)) + || !FRAME_X_P (p))) + { + store_frame_param (f, Qparent_frame, old_value); + error ("Invalid specification of `parent-frame'"); + } + + if (p != FRAME_PARENT_FRAME (f)) + { + parent = [FRAME_NS_VIEW (p) window]; + child = [FRAME_NS_VIEW (f) window]; + + block_input (); + [parent addChildWindow: child + ordered: NSWindowAbove]; + unblock_input (); + + fset_parent_frame (f, new_value); + } +} + +void +x_set_z_group (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) +/* Set frame F's `z-group' parameter. If `above', F's window-system + window is displayed above all windows that do not have the `above' + property set. If nil, F's window is shown below all windows that + have the `above' property set and above all windows that have the + `below' property set. If `below', F's window is displayed below + all windows that do. + + Some window managers may not honor this parameter. */ +{ + EmacsView *view = (EmacsView *)FRAME_NS_VIEW (f); + NSWindow *window = [view window]; + + if (NILP (new_value)) + { + window.level = NSNormalWindowLevel; + FRAME_Z_GROUP (f) = z_group_none; + } + else if (EQ (new_value, Qabove)) + { + window.level = NSNormalWindowLevel + 1; + FRAME_Z_GROUP (f) = z_group_above; + } + else if (EQ (new_value, Qabove_suspended)) + { + /* Not sure what level this should be. */ + window.level = NSNormalWindowLevel + 1; + FRAME_Z_GROUP (f) = z_group_above_suspended; + } + else if (EQ (new_value, Qbelow)) + { + window.level = NSNormalWindowLevel - 1; + FRAME_Z_GROUP (f) = z_group_below; + } + else + error ("Invalid z-group specification"); +} static void ns_fullscreen_hook (struct frame *f) @@ -2683,7 +2822,7 @@ -(void)remove for (i = 0; i < full_height; i++) cbits[i] = bits[i]; - img = [[EmacsImage alloc] initFromXBM: cbits width: 8 + img = [[EmacsImage alloc] XBM: cbits width: 8 height: full_height fg: 0 bg: 0]; bimgs[p->which - 1] = img; @@ -6399,7 +6538,8 @@ - (void) updateFrameSize: (BOOL) delay; newh = (int)wr.size.height - extra; NSTRACE_SIZE ("New size", NSMakeSize (neww, newh)); - NSTRACE_MSG ("tool_bar_height: %d", emacsframe->tool_bar_height); + NSTRACE_MSG ("FRAME_TOOLBAR_HEIGHT: %d", FRAME_TOOLBAR_HEIGHT (emacsframe)); + NSTRACE_MSG ("FRAME_NS_TITLEBAR_HEIGHT: %d", FRAME_NS_TITLEBAR_HEIGHT (emacsframe)); cols = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (emacsframe, neww); rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (emacsframe, newh); @@ -6424,9 +6564,11 @@ - (void) updateFrameSize: (BOOL) delay; SET_FRAME_GARBAGED (emacsframe); cancel_mouse_face (emacsframe); - wr = NSMakeRect (0, 0, neww, newh); + /* The next two lines appear to be setting the frame to the same + size as it already is. Why are they there? */ + // wr = NSMakeRect (0, 0, neww, newh); - [view setFrame: wr]; + // [view setFrame: wr]; // to do: consider using [NSNotificationCenter postNotificationName:]. [self windowDidMove: // Update top/left. @@ -6489,7 +6631,8 @@ - (NSSize)windowWillResize: (NSWindow *)sender toSize: (NSSize)frameSize old_title = 0; } } - else if (fs_state == FULLSCREEN_NONE && ! maximizing_resize) + else if (fs_state == FULLSCREEN_NONE && ! maximizing_resize + && [[self window] titleVisibility]) { char *size_title; NSWindow *window = [self window]; @@ -6692,6 +6835,34 @@ - (BOOL)isOpaque } +- (void)createToolbar: (struct frame *)f +{ + EmacsView *view = (EmacsView *)FRAME_NS_VIEW (f); + NSWindow *window = [view window]; + + toolbar = [[EmacsToolbar alloc] initForView: self withIdentifier: + [NSString stringWithFormat: @"Emacs Frame %d", + ns_window_num]]; + [toolbar setVisible: NO]; + [window setToolbar: toolbar]; + + /* Don't set frame garbaged until tool bar is up to date? + This avoids an extra clear and redraw (flicker) at frame creation. */ + if (FRAME_EXTERNAL_TOOL_BAR (f)) wait_for_tool_bar = YES; + else wait_for_tool_bar = NO; + + +#ifdef NS_IMPL_COCOA + { + NSButton *toggleButton; + toggleButton = [window standardWindowButton: NSWindowToolbarButton]; + [toggleButton setTarget: self]; + [toggleButton setAction: @selector (toggleToolbar: )]; + } +#endif +} + + - initFrameFromEmacs: (struct frame *)f { NSRect r, wr; @@ -6729,14 +6900,14 @@ - (BOOL)isOpaque maximizing_resize = NO; #endif - win = [[EmacsWindow alloc] + win = [[EmacsFSWindow alloc] initWithContentRect: r - styleMask: (NSWindowStyleMaskResizable | -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 - NSWindowStyleMaskTitled | -#endif - NSWindowStyleMaskMiniaturizable | - NSWindowStyleMaskClosable) + styleMask: (FRAME_UNDECORATED (f) + ? NSWindowStyleMaskBorderless + : NSWindowStyleMaskTitled + | NSWindowStyleMaskResizable + | NSWindowStyleMaskMiniaturizable + | NSWindowStyleMaskClosable) backing: NSBackingStoreBuffered defer: YES]; @@ -6746,7 +6917,6 @@ - (BOOL)isOpaque wr = [win frame]; bwidth = f->border_width = wr.size.width - r.size.width; - tibar_height = FRAME_NS_TITLEBAR_HEIGHT (f) = wr.size.height - r.size.height; [win setAcceptsMouseMovedEvents: YES]; [win setDelegate: self]; @@ -6766,42 +6936,36 @@ - (BOOL)isOpaque [win setTitle: name]; /* toolbar support */ - toolbar = [[EmacsToolbar alloc] initForView: self withIdentifier: - [NSString stringWithFormat: @"Emacs Frame %d", - ns_window_num]]; - [win setToolbar: toolbar]; - [toolbar setVisible: NO]; - - /* Don't set frame garbaged until tool bar is up to date? - This avoids an extra clear and redraw (flicker) at frame creation. */ - if (FRAME_EXTERNAL_TOOL_BAR (f)) wait_for_tool_bar = YES; - else wait_for_tool_bar = NO; - - -#ifdef NS_IMPL_COCOA - { - NSButton *toggleButton; - toggleButton = [win standardWindowButton: NSWindowToolbarButton]; - [toggleButton setTarget: self]; - [toggleButton setAction: @selector (toggleToolbar: )]; - } -#endif - FRAME_TOOLBAR_HEIGHT (f) = 0; + if (! FRAME_UNDECORATED (f)) + [self createToolbar: f]; tem = f->icon_name; if (!NILP (tem)) [win setMiniwindowTitle: [NSString stringWithUTF8String: SSDATA (tem)]]; + if (FRAME_PARENT_FRAME (f) != NULL) + { + NSWindow *parent = [FRAME_NS_VIEW (FRAME_PARENT_FRAME (f)) window]; + [parent addChildWindow: win + ordered: NSWindowAbove]; + } + + if (!NILP (FRAME_Z_GROUP (f))) + win.level = NSNormalWindowLevel + + (FRAME_Z_GROUP_BELOW (f) ? -1 : 1); + { NSScreen *screen = [win screen]; if (screen != 0) { NSPoint pt = NSMakePoint - (IN_BOUND (-SCREENMAX, f->left_pos, SCREENMAX), + (IN_BOUND (-SCREENMAX, f->left_pos + + NS_PARENT_WINDOW_LEFT_POS (f), SCREENMAX), IN_BOUND (-SCREENMAX, - [screen frame].size.height - NS_TOP_POS (f), SCREENMAX)); + NS_PARENT_WINDOW_TOP_POS (f) - f->top_pos, + SCREENMAX)); [win setFrameTopLeftPoint: pt]; @@ -6843,9 +7007,15 @@ - (void)windowDidMove: sender return; if (screen != nil) { - emacsframe->left_pos = r.origin.x; + emacsframe->left_pos = r.origin.x - NS_PARENT_WINDOW_LEFT_POS (emacsframe); emacsframe->top_pos = - [screen frame].size.height - (r.origin.y + r.size.height); + NS_PARENT_WINDOW_TOP_POS (emacsframe) - (r.origin.y + r.size.height); + + if (emacs_event) + { + emacs_event->kind = MOVE_FRAME_EVENT; + EV_TRAILER ((id)nil); + } } } @@ -7262,9 +7432,6 @@ - (void)toggleFullScreen: (id)sender [fw setOpaque: NO]; f->border_width = 0; - FRAME_NS_TITLEBAR_HEIGHT (f) = 0; - tobar_height = FRAME_TOOLBAR_HEIGHT (f); - FRAME_TOOLBAR_HEIGHT (f) = 0; nonfs_window = w; @@ -7298,9 +7465,6 @@ - (void)toggleFullScreen: (id)sender [w setOpaque: NO]; f->border_width = bwidth; - FRAME_NS_TITLEBAR_HEIGHT (f) = tibar_height; - if (FRAME_EXTERNAL_TOOL_BAR (f)) - FRAME_TOOLBAR_HEIGHT (f) = tobar_height; // to do: consider using [NSNotificationCenter postNotificationName:] to send notifications. -- 2.12.0 --jI8keyz6grp/JLjh-- From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 19 12:02:25 2017 Received: (at 25408) by debbugs.gnu.org; 19 Apr 2017 16:02:25 +0000 Received: from localhost ([127.0.0.1]:57150 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0s3l-00049H-0A for submit@debbugs.gnu.org; Wed, 19 Apr 2017 12:02:25 -0400 Received: from mout.gmx.net ([212.227.15.19]:49382) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0s3i-000491-SQ for 25408@debbugs.gnu.org; Wed, 19 Apr 2017 12:02:23 -0400 Received: from [192.168.1.100] ([213.162.68.27]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MA91t-1cu1Lx1InB-00BI8d; Wed, 19 Apr 2017 18:02:04 +0200 Message-ID: <58F789F0.9000608@gmx.at> Date: Wed, 19 Apr 2017 18:01:52 +0200 From: martin rudalics MIME-Version: 1.0 To: Alan Third Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) References: <20170412195121.GA95643@breton.holly.idiocy.org> <58EF2462.9010806@gmx.at> <20170415162922.GA47622@breton.holly.idiocy.org> <58F276F4.4030805@gmx.at> <20170417145613.GA78089@breton.holly.idiocy.org> <58F4E2BD.3090704@gmx.at> <20170417162149.GB78089@breton.holly.idiocy.org> <58F4F954.10709@gmx.at> <20170417185537.GA78689@breton.holly.idiocy.org> <58F7111F.6050004@gmx.at> <20170419143316.GB10595@breton.holly.idiocy.org> In-Reply-To: <20170419143316.GB10595@breton.holly.idiocy.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:SuCc0j51THuIgE5zAz657Vp7P311XNO3Y/noEmEMn4b8UmQKOUh eKA9Ro4EZga30bnZ23INol1UjDv+s9LbpmBcdVwhwx4W2q36wKyzDWCS2zD6lQ1yWMALjq0 WQsFHzzkQIGHqsNL961YE1+BBzTpQvbPJ/NQF+KM5ArouRRsSE4VyqfnEnXm/mhtzgUBemB YmOZ9WwHf1Xcd+Cc3J7qg== X-UI-Out-Filterresults: notjunk:1;V01:K0:06LbU+NGPdk=:RqQCGZpvaXZFc45Kq1Tm2A QdgyIFjb7mfUmbXbD+ZZJwE9luLhxwDLZE1wzgxI0BTJCc28XpNRxn/i8mfjJX69q9wuIAU7T +xTwXCM59gppOXH6kRGCvcBnXHzLtuYioZH5GC6EUiN0xk7Ft9mY/UqPbDmbXKcKSo/rdYsuN UrTAmgHc3ccvkF7YVuxxBG2XGofzb0wj5tlUZ4CvnjMi0kEBIyaxcrbjytaYFIDU7CRUo6HU3 65pXRc94kWcxH5LdqfEBJPFTkBqZsPIOAOJW8WsT7uCQscgAYkjtw6FP8W5YdcNInrrnIwlxJ F4Awti2i+KAnfYF7UtIERyqi0n91zKFuP36cO1wRdDMUrEMg03NQaL1N+c3hpDNNyc0C4R6t/ W1Hr7v9mq+Y9KMUz8+RBKZd8BJFGmLYGrPpP08P+mQAy/00wDql0OLHhtA1ZJXbsNC12aPfkw T3VoKJU4nvxtgl8tNdXIk4Lh/5y9qsFPvZQoiDsotR4URv7j6GDnfZcQZkyrjYByNzGxMJzRV 4KFlAnuDPUeIaeStCuVi9G3xD4B4MGFhHTPnypVISuCicov1Jxw+2LYR9DtJHtTMtP9SdIsVF afd5NnYfbAWooBFXsAiFru2ogVNFzKmpKsdorLh4MEbGwCP9W1sxac28pxYmR/6TN9WYdIXSI pjWxGl0XwI8YMN+u8rEmTtg80/WSsPReyc1/bSck+Cdphd5kO1TkOtS5OiyGr1vKpVkwn1HJm MO8+ASh3dod2e9H3rilBXZgJD2GzPx+4PTn8TuMPgXZEqo4unY4n1lMGu2QGzyAFyve5SOQqL zKvVMN3e5ev2lQTLfEkLkQZdWuVRA== X-Spam-Score: -1.5 (-) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= , Anders Lindgren 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.5 (-) > It turns out that GNUStep doesn=E2=80=99t let you change the decorated= state > of an existing window. OK. It's not important that the GNUStep build is capable of doing anything useful. It should build and if possible not crash. The only person currently using it (only for checking whether a change might break the NS build) is me, I presume. > It should be able to create a new undecorated > window. It does so. > I believe it is setting the parent/child relationship, but in GNUStep > it doesn=E2=80=99t seem to mean the child moves with the parent. I thi= nk this > is a bug in GNUStep, but the behaviour isn=E2=80=99t documented yet, s= o I=E2=80=99m > not sure if it=E2=80=99s intentional. > > The child will minimise and close with the parent and moving it to (0 > 0) will put it in the top left corner of the parent. It is created initially at the top left corner of the parent frame and inconifies and deiconifies correctly with its parent. > Except it doesn=E2=80=99t quite, because there=E2=80=99s a hard=E2=80=90= coded titlebar height > for GNUStep which is guaranteed to be wrong for every WM. At least I > think that=E2=80=99s what going on. The top edge is below the native top edge of the parent by a few pixels, maybe the two Anders mentioned. Nothing to worry about. > Z=E2=80=90groups are working, but again in GNUStep it seems a bit hit = and miss > as the frames seem to forget their state if you click on their > titlebars. Don't worry. I just tried to type something and when I reached the right edge of the window I got an abort as 2017-04-19 17:36:59.480 emacs[4423] Problem posting notification: NAME:NSInvalidArgumentException REASON:-[EmacsImage XBM= :width:height:fg:bg:]: unrecognized selector sent to instance 0x3e0bf40 I= NFO:(null) /home/martin/emacs-git/trunk/obj-ns/src/emacs: Uncaught exception NSInval= idArgumentException, reason: -[EmacsImage XBM:width:height:fg:bg:]: unrec= ognized selector sent to instance 0x3ec20a0 As it is, the GNUStep build is certainly not suited for doing anything useful at the moment. I think you should install your changes so people can test them. In the ChangeLog please fix the below: > (Fx-create_frame): Handle 'z-code', 'parent-frame' and 'undecorated' Fx_create_frame 'z-group' Many thanks, martin From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 19 13:04:33 2017 Received: (at 25408) by debbugs.gnu.org; 19 Apr 2017 17:04:33 +0000 Received: from localhost ([127.0.0.1]:57271 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0t1s-0005jD-FF for submit@debbugs.gnu.org; Wed, 19 Apr 2017 13:04:33 -0400 Received: from mail-wm0-f41.google.com ([74.125.82.41]:34866) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0t1q-0005ie-5k for 25408@debbugs.gnu.org; Wed, 19 Apr 2017 13:04:30 -0400 Received: by mail-wm0-f41.google.com with SMTP id w64so85465833wma.0 for <25408@debbugs.gnu.org>; Wed, 19 Apr 2017 10:04:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=aQPi8eRqa5MlhMyydtUte2kONOO77tfRiQEkCqY9igM=; b=OE01foMLgd3MZmIifsKgDXaSSA9l9seP6RS7ikuEGkxlGLWlaUgtOPoic4J+a7gPlm CO2OpT8pzLQOikm6AzKMgcxb7u1ckgCzqSYIwVH8r4xryK8oUezwx7Oi6Ct7TSKNZmAi SrM4kfbIOy7i8Fd4RCvo+8bLsBlbPQUResfBHw7E/CnRyD3MnjGoy50s09RHo9WfvbdH WPLtuCx6rQXQOd46soeZUXug3ImDpn1KPkBeb5+ZMBTveySkZbXv0XN6csXqOUSgGhCG Fw0weknBVDEy0gDnFYtyjm4aK0+9Cma4WvTpmYV5yX3F3UwCi0UtBrW5NGuJd+Xik4yV ettQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=aQPi8eRqa5MlhMyydtUte2kONOO77tfRiQEkCqY9igM=; b=QVYWCY9H33i3coWs5+kHS1VpAk1Yh4XWp2RBwDGWJsGJWkXiQ2VWFRO+kSC0PKV9Mq IH378727b3gRLgD5N8fhixdLy8o0CxvsMQrO3E3gjyoZNVU+8pJV9LFsie6EInitfaKj 0taZOW5WNq+phEHt4YTMgBGpC5UXrjwT/MCOlv2/SR6nn5I7Pb1CuRyg9VXXeFs2nkfk 1mrU9TkfH6yq37zN/v9NNjmCpm3861k7VPyYAwDOAI5BpMqv0QoYZgrywhlseNn88GlI IIy4yw4QO5HS/2L+kJ7co0+lkBUfj/BIvre/l7Z5Jl47lf+Md6HOPymH5MIilTxk9yLd 2yEA== X-Gm-Message-State: AN3rC/7n0goRx3eq5hJCaVAv9OZJUY6pPB7i+GtBsrQBAVispzE8DYVC JbvVJFewvjuYqg== X-Received: by 10.28.198.65 with SMTP id w62mr18260830wmf.80.1492621464472; Wed, 19 Apr 2017 10:04:24 -0700 (PDT) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-c942-e657-0685-1838.holly.idiocy.org. [2001:8b0:3f8:8129:c942:e657:685:1838]) by smtp.gmail.com with ESMTPSA id w76sm4055574wrb.49.2017.04.19.10.04.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 19 Apr 2017 10:04:23 -0700 (PDT) Date: Wed, 19 Apr 2017 18:04:20 +0100 From: Alan Third To: martin rudalics Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) Message-ID: <20170419170420.GA12166@breton.holly.idiocy.org> References: <20170415162922.GA47622@breton.holly.idiocy.org> <58F276F4.4030805@gmx.at> <20170417145613.GA78089@breton.holly.idiocy.org> <58F4E2BD.3090704@gmx.at> <20170417162149.GB78089@breton.holly.idiocy.org> <58F4F954.10709@gmx.at> <20170417185537.GA78689@breton.holly.idiocy.org> <58F7111F.6050004@gmx.at> <20170419143316.GB10595@breton.holly.idiocy.org> <58F789F0.9000608@gmx.at> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <58F789F0.9000608@gmx.at> User-Agent: Mutt/1.7.2 (2016-11-26) X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?iso-8859-1?Q?Cl=E9ment?= Pit--Claudel , Anders Lindgren 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: 0.7 (/) On Wed, Apr 19, 2017 at 06:01:52PM +0200, martin rudalics wrote: > > It turns out that GNUStep doesn’t let you change the decorated state > > of an existing window. > > OK. It's not important that the GNUStep build is capable of doing > anything useful. It should build and if possible not crash. The only > person currently using it (only for checking whether a change might > break the NS build) is me, I presume. I have had this suspicion. If I can get it working in GNUStep without too much hassle it’s probably best, though. > I just tried to type something and when I reached the > right edge of the window I got an abort as > > 2017-04-19 17:36:59.480 emacs[4423] Problem posting notification: > NAME:NSInvalidArgumentException REASON:-[EmacsImage XBM:width:height:fg:bg:]: unrecognized selector sent to instance > 0x3e0bf40 INFO:(null) > /home/martin/emacs-git/trunk/obj-ns/src/emacs: Uncaught exception NSInvalidArgumentException, reason: -[EmacsImage > XBM:width:height:fg:bg:]: unrecognized selector sent to instance 0x3ec20a0 That was my fault. I think I mashed the keys in the wrong place and deleted something without realising. I’ve pushed another commit to fix it. (I don’t know how I didn’t notice it before now!) > I think you should install your changes so people can test them. Done. Thanks for your help. Oh, I just remembered I’ve not yet done frame-list-z-order. It should be easy enough, NSApplication has an orderedWindows function which, I think, should return an ordered array of NSWindow objects. Should I look into no-focus-on-map and no-accept-focus too? -- Alan Third From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 19 14:07:37 2017 Received: (at 25408) by debbugs.gnu.org; 19 Apr 2017 18:07:37 +0000 Received: from localhost ([127.0.0.1]:57317 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0u0v-0007EU-0S for submit@debbugs.gnu.org; Wed, 19 Apr 2017 14:07:37 -0400 Received: from mout.gmx.net ([212.227.15.15]:57561) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0u0t-0007EG-3J for 25408@debbugs.gnu.org; Wed, 19 Apr 2017 14:07:35 -0400 Received: from [192.168.1.100] ([213.162.68.27]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0LaooK-1cKwUm2FUu-00kMKM; Wed, 19 Apr 2017 20:07:16 +0200 Message-ID: <58F7A749.6070906@gmx.at> Date: Wed, 19 Apr 2017 20:07:05 +0200 From: martin rudalics MIME-Version: 1.0 To: Alan Third Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) References: <20170415162922.GA47622@breton.holly.idiocy.org> <58F276F4.4030805@gmx.at> <20170417145613.GA78089@breton.holly.idiocy.org> <58F4E2BD.3090704@gmx.at> <20170417162149.GB78089@breton.holly.idiocy.org> <58F4F954.10709@gmx.at> <20170417185537.GA78689@breton.holly.idiocy.org> <58F7111F.6050004@gmx.at> <20170419143316.GB10595@breton.holly.idiocy.org> <58F789F0.9000608@gmx.at> <20170419170420.GA12166@breton.holly.idiocy.org> In-Reply-To: <20170419170420.GA12166@breton.holly.idiocy.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:m3/tHn9Jgabts/qF7zhMGeRP66USQQrJCwN0oCl352t/BvTqkwj u4iQkXsp1yR8UPayR/giT2HBr50XMlIOc5BevgWACLfw5D86Q514bBad+WtzEtsRIJVta0w W1plG3sCF6Bmw/98b7oiRLRKFWH8TSNvIfZFjSEMvq88+0CPFPkDF3buxKqgRpSi8KP4GSz jO7emDJ+rg7P1DgVTKJhw== X-UI-Out-Filterresults: notjunk:1;V01:K0:QwP3v7uqrFM=:hJ04rsjy9CSTpUPsdxX/ok GqhkNIzkHINojzOVy1hyVaq1ccfsjJ/NVb/X0KnioigyjUGngBGsax9qAx/8ymDiAmHOZRBY6 VBvXJaAuYbsnpKBkiU9ku9qTKQ3Ui5iBVeV4DYzlNoJm/4UerbxZS6fd20cOtAseH0LnrH6ix EgdRBGPhAKwQ2mAUXMgmy6pYdcDlgCTwLOtfnqvi/ztYe7M0eWHX4aa5b4aPg5Lb1VKOx30QJ tpDbP3cyfkoNsFcfMrzkcib/z+LsYy3Z4nSplGBq1RTxJ92p8U6eeImk4mVttUO9gMwpt2Hz8 k1Yitwbr0xE0H5+OUPOKj778ZR5PF234nK1neU90BH2Us9ktHJz56jMiPIp8h1YfhPoxmTSmB t/gdUWb2C1KN8rOd1KHHh+2/z9MNEljGQzRWQSLyt68VUMwgRwkmWtAdMIyP0RXfclMVr7aHf Emy5cq8pG0SH0+rNeQtZemM+tHRvnrRQ5gT/abbKp/4sxaQE5SeFxQ2jiTy4dcMUKlEd9K6NJ n8QidunmuDl57KUTYnMO6/Wd+u7vo7gF2KClASzcrmh8nJFJXgswyYGmPujBahq69hQqZd/et CZjI3X0TNUGZDRPp75oQVQDcQohFrgvYDlssVpjj27FiHVN+4QdIiY01zRUJJJv8my952sqVU 5H+adJa0ixwyEsLTgP90TJTtpjnVOn6912MiKjMAvQEwXmNHjNpy+8grfi875qfWZfnR8G+du iRrkoGKDysahe5MMwH0THdFBt3VDpW+QmPxxWvasivr/bdx4HfCBo8UOrR6AFBVM/YB5qKKeo h0oP/cA1nLcg4R49FEpkbpz06u3oA== X-Spam-Score: -1.5 (-) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= , Anders Lindgren 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.5 (-) >> I just tried to type something and when I reached the >> right edge of the window I got an abort as >> >> 2017-04-19 17:36:59.480 emacs[4423] Problem posting notification: >> NAME:NSInvalidArgumentException REASON:-[EmacsImage XBM:width:height:= fg:bg:]: unrecognized selector sent to instance >> 0x3e0bf40 INFO:(null) >> /home/martin/emacs-git/trunk/obj-ns/src/emacs: Uncaught exception NSI= nvalidArgumentException, reason: -[EmacsImage >> XBM:width:height:fg:bg:]: unrecognized selector sent to instance 0x3e= c20a0 > > That was my fault. I think I mashed the keys in the wrong place and > deleted something without realising. I=E2=80=99ve pushed another commi= t to fix > it. Ahh.. it was you. Anyway, works now. And frame restacking works well too. There's only one incredible hassle at the moment which must have started somewhere in 2015. Whenever I mouse scroll a window the menu redraws itself so it flickers continuously. > Oh, I just remembered I=E2=80=99ve not yet done frame-list-z-order. It= should > be easy enough, NSApplication has an orderedWindows function which, I > think, should return an ordered array of NSWindow objects. Please do that. > Should I look into no-focus-on-map and no-accept-focus too? That would be fine. There's also the 'skip-taskbar' parameter but I have no idea whether NS allows that and whether NS provides Alt-tabbing. And please have a look into the Elisp manual: Maybe you find something worth mentioning (the fact that removing decorations removes the tool bar should certainly go there). martin From debbugs-submit-bounces@debbugs.gnu.org Fri May 05 20:06:55 2017 Received: (at 25408) by debbugs.gnu.org; 6 May 2017 00:06:56 +0000 Received: from localhost ([127.0.0.1]:56932 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d6nFP-0006n9-N8 for submit@debbugs.gnu.org; Fri, 05 May 2017 20:06:55 -0400 Received: from mail-it0-f42.google.com ([209.85.214.42]:37234) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d6nFN-0006mw-Jw for 25408@debbugs.gnu.org; Fri, 05 May 2017 20:06:53 -0400 Received: by mail-it0-f42.google.com with SMTP id x188so17234269itb.0 for <25408@debbugs.gnu.org>; Fri, 05 May 2017 17:06:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=bD7QRqg/0K/yIO0r+uqcqhK9VcfDOWb2Tu44V97P6Gg=; b=J2MjasX18Vcd7Uzls9/gbBRyqtSbqkwN4iPFJA1OF92XzuLNaYZaxYuD8vhqwswXZ1 kSASghY/w1AebdNt+EPGWu5Wyrx1DiWK3csQoRuLbGTUjqxD4rwnHYJvHXjEpxlBBXij 2wfdtMmyW51YTZRJI2UEnSVAh9OoGULevCYqJr2jtX2+f5tQXFIeNp89/67/NH8t3PZj rcsABn78I2CjenRQHd59Mh1u2xTat3Zugl0c7mHshscepg6xmmShKmXARrcQemTr9g0o VR/azBWVNqTeKWfhM+NCW4V4Qc1rykgx462d+l8P87qVCCLPmVyepCYFDtET5xpeCUIB k2JQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=bD7QRqg/0K/yIO0r+uqcqhK9VcfDOWb2Tu44V97P6Gg=; b=eU0XvPdchzkL/Yk6rQ+ZEyga2aHm01fiAY2lvLh6U+TRmEsScTbC7Rowex/g6QEII6 MCjSQaGFFIXeUelJDUlc69XSfCuBSXO7rCVR1271unTqEBpNKmgCik1xUX/9tX3gWmHg GvXj679Ojh3QJ8KzQUJ7x48zEosYKxYXu4xDo5C5p58NGbChswhWjxvRjf4MbHkML31y p0a4dXWtYD3/ZY0XsHF42zERpdA03uHT//+vdOHgX1IuVOQvSEEmgWNctsiF9HPWvBgg c9L/3Lq4KqWr1w0XWxz4h8/kDCDIUX0PZUpFhKH1HjmdXx78eh7RTZH72EePLBpCeV3b pMFg== X-Gm-Message-State: AN3rC/5XPFtimD4vr+AYQMl6wpdYXOS8XLje03jdcvNPvBe9C5AwlW6N OIv/ToWunKA93w== X-Received: by 10.36.127.85 with SMTP id r82mr11212522itc.33.1494029207946; Fri, 05 May 2017 17:06:47 -0700 (PDT) Received: from ?IPv6:2001:470:8b2d:1a:9bab:c177:73b2:20a9? ([2001:470:8b2d:1a:9bab:c177:73b2:20a9]) by smtp.gmail.com with ESMTPSA id m31sm10341271iod.27.2017.05.05.17.06.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 05 May 2017 17:06:47 -0700 (PDT) Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: martin rudalics , Arthur Miller References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> Date: Fri, 5 May 2017 20:06:46 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <58EDF316.5000205@gmx.at> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 25408 Cc: 25408@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: 0.5 (/) On 2017-04-12 05:27, martin rudalics wrote: > I now installed most of the changes from my earlier patch. Minor > changes for an `internal-border' face, `x-focus-frame' and > `select-window' will follow. Also a major documentation rewrite will be > installed in the next days. Till then, the major purpose of installing > was to check whether we get any breakage of existing code. > > If people can see anything fishy, please report immediately. Affected > might be among others scroll bars, frame deletion and selection. Also, > most of the new parameters won't work on NS. Hopefully, Alan or Anders > can help us with some of them. > >> So as a rule create your frames (lazily) once for each session and hide >> them when you don't need them. > > Did you try that in the meantime? Yes :) I just did. It works great. >> > * Creating a frame / making it visible uses my WM's frame creating animation — is there a way to disable this (x-show-tip doesn't have it)? >> >> No idea. I can look into that (as a rule I turn off all animations >> here). Do you use GTK tooltips or Emacs' native ones? > > For X I have now also provided an `override-redirect' parameter which > should replicate what the tooltip code does. If you still get > animations then I think you will have to explicitly tell the WM (for > example, via the frame title) to turn them off. This works perfectly. I've run into another small issue: there doesn't seem to be a way to turn off truncation marks in tooltip frames. Is that correct? This bit of xdisp.c seems to take care of that for Emacs' default tip frame; is there a way to emulate this for Lisp-created frames? /* Get dimensions of truncation and continuation glyphs. These are displayed as fringe bitmaps under X, but we need them for such frames when the fringes are turned off. But leave the dimensions zero for tooltip frames, as these glyphs look ugly there and also sabotage calculations of tooltip dimensions in x-show-tip. */ #ifdef HAVE_WINDOW_SYSTEM if (!(FRAME_WINDOW_P (it->f) && FRAMEP (tip_frame) && it->f == XFRAME (tip_frame))) #endif Thanks! Clément. From debbugs-submit-bounces@debbugs.gnu.org Sat May 06 03:13:55 2017 Received: (at 25408) by debbugs.gnu.org; 6 May 2017 07:13:55 +0000 Received: from localhost ([127.0.0.1]:57066 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d6tuc-0005Gw-Q3 for submit@debbugs.gnu.org; Sat, 06 May 2017 03:13:54 -0400 Received: from eggs.gnu.org ([208.118.235.92]:51922) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d6tub-0005Gl-OQ for 25408@debbugs.gnu.org; Sat, 06 May 2017 03:13:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d6tuS-0003a8-KY for 25408@debbugs.gnu.org; Sat, 06 May 2017 03:13:48 -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,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:46863) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d6tuS-0003a3-Gx; Sat, 06 May 2017 03:13:44 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1927 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1d6tuO-000764-QJ; Sat, 06 May 2017 03:13:41 -0400 Date: Sat, 06 May 2017 10:13:16 +0300 Message-Id: <83k25ufofn.fsf@gnu.org> From: Eli Zaretskii To: =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel In-reply-to: <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> (message from =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel on Fri, 5 May 2017 20:06:46 -0400) Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 25408 Cc: rudalics@gmx.at, 25408@debbugs.gnu.org, arthur.miller.no1@gmail.com 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: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > From: Clément Pit-Claudel > Date: Fri, 5 May 2017 20:06:46 -0400 > Cc: 25408@debbugs.gnu.org > > I've run into another small issue: there doesn't seem to be a way to turn off truncation marks in tooltip frames. Is that correct? This bit of xdisp.c seems to take care of that for Emacs' default tip frame; is there a way to emulate this for Lisp-created frames? > > /* Get dimensions of truncation and continuation glyphs. These are > displayed as fringe bitmaps under X, but we need them for such > frames when the fringes are turned off. But leave the dimensions > zero for tooltip frames, as these glyphs look ugly there and also > sabotage calculations of tooltip dimensions in x-show-tip. */ > #ifdef HAVE_WINDOW_SYSTEM > if (!(FRAME_WINDOW_P (it->f) > && FRAMEP (tip_frame) > && it->f == XFRAME (tip_frame))) > #endif Doing that will have a disadvantage: text will be truncated on display, but there will be no visual cue for that truncation. Tooltip frames don't suffer from this problem, because their size is computed in advance to have the text fit exactly on the line, but AFAIU these "undecorated" frames are just normal frames in that regard, so they will be adversely affected. Therefore, if we are going to allow disabling truncation and continuation glyphs on such frames, it should be via a frame parameter which is by default off. From debbugs-submit-bounces@debbugs.gnu.org Sat May 06 03:40:41 2017 Received: (at 25408) by debbugs.gnu.org; 6 May 2017 07:40:42 +0000 Received: from localhost ([127.0.0.1]:57083 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d6uKX-0005vP-LK for submit@debbugs.gnu.org; Sat, 06 May 2017 03:40:41 -0400 Received: from mout.gmx.net ([212.227.17.22]:59760) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d6uKV-0005vB-8Z for 25408@debbugs.gnu.org; Sat, 06 May 2017 03:40:39 -0400 Received: from [192.168.1.100] ([213.162.68.49]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0LfkJC-1drjWv2cTi-00pMCs; Sat, 06 May 2017 09:40:31 +0200 Message-ID: <590D7DEC.1@gmx.at> Date: Sat, 06 May 2017 09:40:28 +0200 From: martin rudalics MIME-Version: 1.0 To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LUNsYXVkZWw=?= , Arthur Miller Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> In-Reply-To: <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> Content-Type: multipart/mixed; boundary="------------000504080806070208090205" X-Provags-ID: V03:K0:aKQydO4RRewWzhSbJDNTnBv6BSs8Fs1NkQNaGt/KHCT6SzrC8T6 PaWgyiVZhvZForBxtmMGq1AwR+LfAPiwggb6U9GEVvvyiF5ZBaU95nPRIzg6AYR2b7+4LoQ pNl7kkfC2UZ/0SkUmcpd3ujaP+2VTYTywp0BxgkcTDBJeNP9J7CDmgNblgPBy08tUmnEgdV 3rdjdz6SX9ilVJh8DBZHA== X-UI-Out-Filterresults: notjunk:1;V01:K0:hjPgE3gzQok=:XkN1eliz1oIB97lYhL7Rpa TG/z0RFwyrowDYem9ZTeZxDfGgbfumWR2/kwz5EpPPihup/YQA7eym8TudeAqOkXEzbAAGZna m0kG8hV5g8zCNIyr8py8wjuYa+B4qhmxtfpyAFxo4wZCY6aWlL6Yzmap2gosv2px6IBJ/8qM9 0zsUHUtaAQyh4WINr8FT2UY9uXpxpQVFQl+u1B4+mNS/BdlLsHQHBcAHlzUmoygWzD68Kmnvq ZxDk/3kyKWqzo2Gu3SJTigwYboVmJ1LX8h0VeRU1TWPa7Pl8xjxhMUyrDtR64oAT9sWHeAndS XGZ5OZxua6Dp01suyo+HLHHgBzfmRyAJd+U6iubvKf8Da38MTuZnS6Ukedv1l/dzWFSJcQp3J 0+yo/pEU+5pixRUXQxZoJUIT4UbmyZ0jTf53+qFsTogqK4V7C19A8G/QPIKtFTMlIFVxscCxY 2f+rPBtiw6bE+TRuBmE4W7U+ol04P+1zsqjZjVq7pBAZPXT35dAVWUpAmPIWqiAW0Y9VRbqTq d7crh25Xh7mNU+WGPbSSvdbi0DhyTmp/iIU4nqsCXXmMGjCOpkUR/BumXhG6zJ50JHdG329gg v5MqgqIpdyO6lB1UTFEgt7SHC0O3ofu1ugbIVp+bOnLPCgcFRerhmQTGDJ4HnLDQLEIV5IjNo iSXtaXD2V1Yzoz/Sg7FNbqNFGVViiggK+6ivnsulT+Foleqy3ON5wXHvQLL8OTLeuVsIVCxX/ hCXqtlg5r7CeyfH7oEdFwDPIwjSv/FMNRoUnvOV/hMyT0YrPhk3Wtwwuf7w= X-Spam-Score: -1.5 (-) X-Debbugs-Envelope-To: 25408 Cc: 25408@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.5 (-) This is a multi-part message in MIME format. --------------000504080806070208090205 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit > I've run into another small issue: there doesn't seem to be a way to turn off truncation marks in tooltip frames. Is that correct? This bit of xdisp.c seems to take care of that for Emacs' default tip frame; is there a way to emulate this for Lisp-created frames? > > /* Get dimensions of truncation and continuation glyphs. These are > displayed as fringe bitmaps under X, but we need them for such > frames when the fringes are turned off. But leave the dimensions > zero for tooltip frames, as these glyphs look ugly there and also > sabotage calculations of tooltip dimensions in x-show-tip. */ > #ifdef HAVE_WINDOW_SYSTEM > if (!(FRAME_WINDOW_P (it->f) > && FRAMEP (tip_frame) > && it->f == XFRAME (tip_frame))) > #endif Please try the attached patch (I only checked whether it compiles and builds on Windows). You have to add a non-nil 'no-special-glyphs' frame parameter to suppress such glyphs. And please test the new behavior for tooltip frames as well. Thanks, martin --------------000504080806070208090205 Content-Type: text/plain; charset=windows-1252; name="no-special-glyphs.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="no-special-glyphs.diff" ZGlmZiAtLWdpdCBhL2xpc3AvdG9vbHRpcC5lbCBiL2xpc3AvdG9vbHRpcC5lbAppbmRleCAz NjcxMTRiLi41MjYwYmUyIDEwMDY0NAotLS0gYS9saXNwL3Rvb2x0aXAuZWwKKysrIGIvbGlz cC90b29sdGlwLmVsCkBAIC0xMTksNyArMTE5LDggQEAgdG9vbHRpcC15LW9mZnNldAogKGRl ZmN1c3RvbSB0b29sdGlwLWZyYW1lLXBhcmFtZXRlcnMKICAgJygobmFtZSAuICJ0b29sdGlw IikKICAgICAoaW50ZXJuYWwtYm9yZGVyLXdpZHRoIC4gMikKLSAgICAoYm9yZGVyLXdpZHRo IC4gMSkpCisgICAgKGJvcmRlci13aWR0aCAuIDEpCisgICAgKG5vLXNwZWNpYWwtZ2x5cGhz IC4gdCkpCiAgICJGcmFtZSBwYXJhbWV0ZXJzIHVzZWQgZm9yIHRvb2x0aXBzLgoKIElmIGBs ZWZ0JyBvciBgdG9wJyBwYXJhbWV0ZXJzIGFyZSBpbmNsdWRlZCwgdGhleSBzcGVjaWZ5IHRo ZSBhYnNvbHV0ZQpkaWZmIC0tZ2l0IGEvc3JjL2ZyYW1lLmMgYi9zcmMvZnJhbWUuYwppbmRl eCA0ZDE3YTA3Li45MjBkZjIyIDEwMDY0NAotLS0gYS9zcmMvZnJhbWUuYworKysgYi9zcmMv ZnJhbWUuYwpAQCAtNjg0LDYgKzY4NCw3IEBAIHN0cnVjdCBmcmFtZSAqCiAgIGYtPmhvcml6 b250YWxfc2Nyb2xsX2JhcnMgPSBmYWxzZTsKICAgZi0+d2FudF9mdWxsc2NyZWVuID0gRlVM TFNDUkVFTl9OT05FOwogICBmLT51bmRlY29yYXRlZCA9IGZhbHNlOworICBmLT5ub19zcGVj aWFsX2dseXBocyA9IGZhbHNlOwogI2lmbmRlZiBIQVZFX05UR1VJCiAgIGYtPm92ZXJyaWRl X3JlZGlyZWN0ID0gZmFsc2U7CiAjZW5kaWYKQEAgLTMyODksNiArMzI5MCw3IEBAIHN0cnVj dCBmcmFtZV9wYXJtX3RhYmxlIHsKICAgeyJuby1hY2NlcHQtZm9jdXMiLAkJU1lNQk9MX0lO REVYIChRbm9fYWNjZXB0X2ZvY3VzKX0sCiAgIHsiei1ncm91cCIsCQkJU1lNQk9MX0lOREVY IChRel9ncm91cCl9LAogICB7Im92ZXJyaWRlLXJlZGlyZWN0IiwJCVNZTUJPTF9JTkRFWCAo UW92ZXJyaWRlX3JlZGlyZWN0KX0sCisgIHsibm8tc3BlY2lhbC1nbHlwaHMiLAkJU1lNQk9M X0lOREVYIChRbm9fc3BlY2lhbF9nbHlwaHMpfSwKIH07CgogI2lmZGVmIEhBVkVfV0lORE9X X1NZU1RFTQpAQCAtNTA3Nyw2ICs1MDc5LDcgQEAgb3IgYSBsaXN0ICgtIE4pIG1lYW5pbmcg LU4gcGl4ZWxzIHJlbGF0aXZlIHRvIGJvdHRvbS9yaWdodCBjb3JuZXIuCiAgIERFRlNZTSAo UWljb24sICJpY29uIik7CiAgIERFRlNZTSAoUW1pbmlidWZmZXIsICJtaW5pYnVmZmVyIik7 CiAgIERFRlNZTSAoUXVuZGVjb3JhdGVkLCAidW5kZWNvcmF0ZWQiKTsKKyAgREVGU1lNIChR bm9fc3BlY2lhbF9nbHlwaHMsICJuby1zcGVjaWFsLWdseXBocyIpOwogICBERUZTWU0gKFFw YXJlbnRfZnJhbWUsICJwYXJlbnQtZnJhbWUiKTsKICAgREVGU1lNIChRc2tpcF90YXNrYmFy LCAic2tpcC10YXNrYmFyIik7CiAgIERFRlNZTSAoUW5vX2ZvY3VzX29uX21hcCwgIm5vLWZv Y3VzLW9uLW1hcCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2ZyYW1lLmggYi9zcmMvZnJhbWUuaApp bmRleCA0YWE3YzM0Li42OTkxNTgzIDEwMDY0NAotLS0gYS9zcmMvZnJhbWUuaAorKysgYi9z cmMvZnJhbWUuaApAQCAtMzU0LDcgKzM1NCwxMSBAQCBzdHJ1Y3QgZnJhbWUKCiAgIC8qIFRo ZSB6LWdyb3VwIHRoaXMgZnJhbWUncyB3aW5kb3cgYmVsb25ncyB0by4gKi8KICAgRU5VTV9C RiAoel9ncm91cCkgel9ncm91cCA6IDI7Ci0jZW5kaWYgLyogSEFWRV9XSU5ET1dfU1lTVEVN IGFuZCBub3QgSEFWRV9OUyAqLworCisgIC8qIE5vbi16ZXJvIGlmIGRpc3BsYXkgb2YgdHJ1 bmNhdGlvbiBhbmQgY29udGludWF0aW9uIGdseXBocyBvdXRzaWRlCisgICAgIHRoZSBmcmlu Z2VzIGlzIHN1cHByZXNzZWQuICAqLworICBib29sX2JmIG5vX3NwZWNpYWxfZ2x5cGhzIDog MTsKKyNlbmRpZiAvKiBIQVZFX1dJTkRPV19TWVNURU0gKi8KCiAgIC8qIFdoZXRoZXIgbmV3 X2hlaWdodCBhbmQgbmV3X3dpZHRoIHNoYWxsIGJlIGludGVycHJldGVkCiAgICAgIGluIHBp eGVscy4gICovCmRpZmYgLS1naXQgYS9zcmMveGRpc3AuYyBiL3NyYy94ZGlzcC5jCmluZGV4 IDQxNDU4YzMuLjk1YjhhMzQgMTAwNjQ0Ci0tLSBhL3NyYy94ZGlzcC5jCisrKyBiL3NyYy94 ZGlzcC5jCkBAIC0yODM4LDkgKzI4MzgsNyBAQCBzdGF0aWMgTGlzcF9PYmplY3QgY2FsY19s aW5lX2hlaWdodF9wcm9wZXJ0eSAoc3RydWN0IGl0ICosIExpc3BfT2JqZWN0LAogICAgICB6 ZXJvIGZvciB0b29sdGlwIGZyYW1lcywgYXMgdGhlc2UgZ2x5cGhzIGxvb2sgdWdseSB0aGVy ZSBhbmQgYWxzbwogICAgICBzYWJvdGFnZSBjYWxjdWxhdGlvbnMgb2YgdG9vbHRpcCBkaW1l bnNpb25zIGluIHgtc2hvdy10aXAuICAqLwogI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQot ICBpZiAoIShGUkFNRV9XSU5ET1dfUCAoaXQtPmYpCi0JJiYgRlJBTUVQICh0aXBfZnJhbWUp Ci0JJiYgaXQtPmYgPT0gWEZSQU1FICh0aXBfZnJhbWUpKSkKKyAgaWYgKCEoRlJBTUVfV0lO RE9XX1AgKGl0LT5mKSAmJiBpdC0+Zi0+bm9fc3BlY2lhbF9nbHlwaHMpKQogI2VuZGlmCiAg ICAgewogICAgICAgaWYgKGl0LT5saW5lX3dyYXAgPT0gVFJVTkNBVEUpCg== --------------000504080806070208090205-- From debbugs-submit-bounces@debbugs.gnu.org Sat May 06 05:41:43 2017 Received: (at 25408) by debbugs.gnu.org; 6 May 2017 09:41:43 +0000 Received: from localhost ([127.0.0.1]:57159 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d6wDf-0000HH-Bc for submit@debbugs.gnu.org; Sat, 06 May 2017 05:41:43 -0400 Received: from mout.gmx.net ([212.227.17.20]:56790) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d6wDd-0000H4-JW for 25408@debbugs.gnu.org; Sat, 06 May 2017 05:41:42 -0400 Received: from [192.168.1.100] ([213.162.68.117]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0M6730-1e0O7Y0OhG-00yBWv; Sat, 06 May 2017 11:41:34 +0200 Message-ID: <590D9A4A.6030700@gmx.at> Date: Sat, 06 May 2017 11:41:30 +0200 From: martin rudalics MIME-Version: 1.0 To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LUNsYXVkZWw=?= , Arthur Miller Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> <590D7DEC.1@gmx.at> In-Reply-To: <590D7DEC.1@gmx.at> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:5k4bF3Y+O1moqLYJbVszR8JRU8mZmpYtTCgwEf6Uv37wQHoPZBy /RRfu2LlA3N6ePXT+e7K1jBqT+oYLEZL7mVa6Gw7XTC0eKqOP2QeGHsl3Z2gxck3+k4mudQ hTmLlt85xluLbUXdQgqWJfPerK2sIzKg8BDxGnLL8gCuoFq7JEWwISsSbLIlt4Sr5NykY54 mu+rrvxJdrMrVCB+rYMNA== X-UI-Out-Filterresults: notjunk:1;V01:K0:yDnFaWDF/ug=:dcUby5Y+MDms2SjdgGC/Oq GgeOMpZv83VYuk7ZI4vFpaXZxO5uPuIZ2B8hCQIWHWAR5SfxE37+dpiHVddUiT/M03xV/a2jA g59IB6BAgjPZitNqXGUoHtatEhs7BsKybas2fBmJOtlPkWdV+Q12c/jmpIfUfx/ASIBT/9JtY hm5hwxshV08UpX0bViSzRG+CzON+/kBJE6xdqEhNCToEH6MArnvyc6xe+OyO2d+2B0qzAqxeg 71JNYqSfqINOL1YV99vBntmwnskoQc3fo/nCIm5Yyr4hNKeVkSYEznY0OpafdSmKbpnaLxIfe SZLE1MSgCgLq2CEEUUmeiYGxpZj0aZDqV2ejsHONU6MYW9IKOwtr3dgjAAqj3TncitYKEmp+N T0Moa5+aY8MppioO7VUF0BUO8oIEYDKxxPIkto1nW7r+nsUGlhMcdkJ8OqNrdVFWgyfOsN4Yz TMv7M3zG1Wfw6nfGPa7gnUgVcXPw2S3GWYW4c1ZaDI7V/V8TwehTd93irpmW7cxgbmOvhK6+B lSezzjG83+qWy4sJwx1LjQS3Lk/o1odFTzSa1Zdwhk2X7KU/EdgSauqnFzvNbzJrVszrQVS+D RcKojhoD64TElNnWud8Uls4WnF4cCnwEJJOVGGwLRP55hpAFMsSxNjJ7j7BMLE3w9FGeD3ugU LU/zQ0di4OZ08hvLU0vPR+obMXszKAhJwYRFGVbaLziyVtFjilVlM+rzEZUnqqKdga+ltVl+a YPj8IEdGLdwGIEKqPgn7IqbYcfbrQHl5JTv1QnZily7zFJ96Kbt0puyMqG7+bYj0WXxBz34Ss jEoiuwqirwV4PNirRhSclnRmhBf1A== X-Spam-Score: -3.0 (---) X-Debbugs-Envelope-To: 25408 Cc: 25408@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.0 (---) > Please try the attached patch (I only checked whether it compiles and > builds on Windows). You have to add a non-nil 'no-special-glyphs' frame > parameter to suppress such glyphs. Sorry, that patch was complete scrap. Hopefully, I'll come up with a better one later. What do those glyphs look like - "\" for continuation and "$" for truncation? martin From debbugs-submit-bounces@debbugs.gnu.org Sat May 06 09:27:05 2017 Received: (at 25408) by debbugs.gnu.org; 6 May 2017 13:27:05 +0000 Received: from localhost ([127.0.0.1]:57311 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d6zjl-0007SA-4Q for submit@debbugs.gnu.org; Sat, 06 May 2017 09:27:05 -0400 Received: from mail-qk0-f196.google.com ([209.85.220.196]:34545) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d6zjj-0007Ro-AM for 25408@debbugs.gnu.org; Sat, 06 May 2017 09:27:03 -0400 Received: by mail-qk0-f196.google.com with SMTP id u75so4405532qka.1 for <25408@debbugs.gnu.org>; Sat, 06 May 2017 06:27:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=m/IsogGl2zn8DN8QsyFC7XH5l5o3j7WxyurUhABJgck=; b=cCArsl4Ngo3aHmhO/gZAeI4OAG61lBDlg8UmxeXSgo4/hvKP5VsxM+EKh+TrhL4W3o 6s3umiIL/kHFzNh3hNJYQJeR7/7nxYx9MFMacnvW+fLXFPLm1xVi1F+r+k24n/gk3Y9y qlmnZFbp/i0+CJVYXMtwoPWGAMdLiPfKkTZDbgCbYc6ikyY1wrQ7ZjUBfKvBHPeHmFta g+IcTa+QX9daFsecnQo4zqbrdhE2r93zDway/ASU4UYeVg7bLHSlp7wbRImaoDqZNoNe Ao5JIzezPc7czuBh3ZrNLmE5+2ANTn8jaSxzFfTr2I8O+I6HrgOsVNscEaxziHBrE/oz t7Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=m/IsogGl2zn8DN8QsyFC7XH5l5o3j7WxyurUhABJgck=; b=RkFKVQLJZ5VOJ7WeW2oYl1HdviOMthtKkTqSh89ZuJ/hlaxtq5ZaLzVU3VDkSTM+gh ocrykzcNiBc+XMO/QE+pPZtBvUYTRvvMODqM49WyUkGKRuWZFb8r1aSSG17uVvzuWg+l 4/MMkqmr45BGqFx3OuDRb0ZGiDdzrNfJgvm4gxWiBZhTFa15qHNt24Q2OiP4XECbSXoa 5n+xvYA5Tb1THZ3VxV1HuxGlDFGi9jMKVdciHd76DVJpijA6N4mtL52ukgcTF+VDXrjw cXHOeQJuci4B3zTm14L8CeIz1lxq9kJ0LSZWvzNxRxxDqYe5YKsrFZsoNu1MIkPuCmDV cUjQ== X-Gm-Message-State: AODbwcBWccaqNB3SeVp9PGkegp1/bMjgZFa/uyqvHgOXYQ1XQ/+OKM2u bq6AhFaw1MKjQw== X-Received: by 10.55.18.163 with SMTP id 35mr19578004qks.228.1494077217594; Sat, 06 May 2017 06:26:57 -0700 (PDT) Received: from [18.111.31.178] (dhcp-18-111-31-178.dyn.mit.edu. [18.111.31.178]) by smtp.gmail.com with ESMTPSA id x67sm5391077qkd.67.2017.05.06.06.26.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 06 May 2017 06:26:57 -0700 (PDT) Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: Eli Zaretskii References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> <83k25ufofn.fsf@gnu.org> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: Date: Sat, 6 May 2017 09:26:55 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <83k25ufofn.fsf@gnu.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 25408 Cc: rudalics@gmx.at, 25408@debbugs.gnu.org, arthur.miller.no1@gmail.com 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: 0.5 (/) On 2017-05-06 03:13, Eli Zaretskii wrote: > Therefore, if we are going to allow disabling truncation and > continuation glyphs on such frames, it should be via a frame parameter > which is by default off. Yes, of course :) From debbugs-submit-bounces@debbugs.gnu.org Sat May 06 09:28:10 2017 Received: (at 25408) by debbugs.gnu.org; 6 May 2017 13:28:10 +0000 Received: from localhost ([127.0.0.1]:57315 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d6zko-0007U1-Dr for submit@debbugs.gnu.org; Sat, 06 May 2017 09:28:10 -0400 Received: from mail-qt0-f175.google.com ([209.85.216.175]:36458) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d6zkn-0007To-5A for 25408@debbugs.gnu.org; Sat, 06 May 2017 09:28:09 -0400 Received: by mail-qt0-f175.google.com with SMTP id m91so23313243qte.3 for <25408@debbugs.gnu.org>; Sat, 06 May 2017 06:28:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=aNISCDTFwsBHlm96vgsrHbCNOOzOllaYl9SkwW97BCM=; b=BLfSZ5KjvX06YeAfXhcBRjMQ1x9EmeHLsZk/brsBCUbqhAS/nXMxbfItO6okprzE4B zcyrt4qWlAJKonKPx+gLYBq6IrGFLG0nS848/GIfKDM5R7c6H5v7Lz6D4T1xF29mS8cd rolY1/Km6BBYVVaI1xylxk+E18VJ8KUessc+bDR+TUF7tOP3SS0dFs2uTCFtSDcm0b0t XEL+NlrDFSJGN4oJ3zOqq7flmSNN2wyp8DHdBolgpyM6rDxOaN9i+CdUv7tV8BiFXmAv sKiyaeQL0JSSdlRw34p7R2mp5Ony3F9jkhyac/FEFut+Fz2t+buM63+SmZhJBGDxZ7Rd Ztkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=aNISCDTFwsBHlm96vgsrHbCNOOzOllaYl9SkwW97BCM=; b=ty/f/lWEJ1WP+PZPtDw8LS/cgx1EEICagsOClVJ9AaXnMKPUV+2QnAUe3XDcp8G6pE zXT5d9yc5+Ssc0fQwlli1LR+lMQBra6fBPBaIACxeRdGZOWkBGzZ648KRjkIEQkQeIvE 8FphsqWmFzPOoTxdm4/COq7bw6fM4QzhdYTF8tRHMiHTk8rW4yG8iaSb9ZZoTEPOwjJa StXXNPotcmgM8NDCf/q4RtMisovD+cRLZJsN5mBalXGOnEfneR6AxKiRylvq6HlfG/jn vaM2W9tlz0YmRNLSttMRIA13okVRbjzJzMf5ce+SXaxl+kjqhJAysyz2J8CEb9w5mq6W TvGA== X-Gm-Message-State: AN3rC/6uIqW+xEuOl4aJz1eBi+AdcMwFpC5CEguNfQHUgwXGHMtTM+H+ jV85EQO8hdVIfw== X-Received: by 10.200.52.232 with SMTP id x37mr45106378qtb.34.1494077283590; Sat, 06 May 2017 06:28:03 -0700 (PDT) Received: from [18.111.31.178] (dhcp-18-111-31-178.dyn.mit.edu. [18.111.31.178]) by smtp.gmail.com with ESMTPSA id g129sm5724455qke.9.2017.05.06.06.28.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 06 May 2017 06:28:03 -0700 (PDT) Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: martin rudalics , Arthur Miller References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> <590D7DEC.1@gmx.at> <590D9A4A.6030700@gmx.at> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: <3472c19d-bfb4-4628-780d-4f0554e5b329@gmail.com> Date: Sat, 6 May 2017 09:28:02 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <590D9A4A.6030700@gmx.at> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 25408 Cc: 25408@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: -0.0 (/) On 2017-05-06 05:41, martin rudalics wrote: >> Please try the attached patch (I only checked whether it compiles and >> builds on Windows). You have to add a non-nil 'no-special-glyphs' frame >> parameter to suppress such glyphs. > > Sorry, that patch was complete scrap. Hopefully, I'll come up with a > better one later. > > What do those glyphs look like - "\" for continuation and "$" for > truncation? Yup, exactly :) Thanks for your help! From debbugs-submit-bounces@debbugs.gnu.org Sat May 06 10:20:52 2017 Received: (at 25408) by debbugs.gnu.org; 6 May 2017 14:20:52 +0000 Received: from localhost ([127.0.0.1]:58164 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d70Zn-0000US-Qe for submit@debbugs.gnu.org; Sat, 06 May 2017 10:20:52 -0400 Received: from eggs.gnu.org ([208.118.235.92]:34052) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d70Zl-0000UD-Oa for 25408@debbugs.gnu.org; Sat, 06 May 2017 10:20:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d70Zb-0003Za-Q3 for 25408@debbugs.gnu.org; Sat, 06 May 2017 10:20:44 -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,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:50248) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d70Zb-0003ZW-ML; Sat, 06 May 2017 10:20:39 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3023 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1d70Zb-0004ww-09; Sat, 06 May 2017 10:20:39 -0400 Date: Sat, 06 May 2017 17:20:16 +0300 Message-Id: <83zieqdq3j.fsf@gnu.org> From: Eli Zaretskii To: =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel In-reply-to: <3472c19d-bfb4-4628-780d-4f0554e5b329@gmail.com> (message from =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel on Sat, 6 May 2017 09:28:02 -0400) Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> <590D7DEC.1@gmx.at> <590D9A4A.6030700@gmx.at> <3472c19d-bfb4-4628-780d-4f0554e5b329@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 25408 Cc: rudalics@gmx.at, 25408@debbugs.gnu.org, arthur.miller.no1@gmail.com 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: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > From: Clément Pit-Claudel > Date: Sat, 6 May 2017 09:28:02 -0400 > Cc: 25408@debbugs.gnu.org > > On 2017-05-06 05:41, martin rudalics wrote: > >> Please try the attached patch (I only checked whether it compiles and > >> builds on Windows). You have to add a non-nil 'no-special-glyphs' frame > >> parameter to suppress such glyphs. > > > > Sorry, that patch was complete scrap. Hopefully, I'll come up with a > > better one later. > > > > What do those glyphs look like - "\" for continuation and "$" for > > truncation? > > Yup, exactly :) Thanks for your help! Not sure why Martin asked, but to be more accurate: the actual glyphs are stored in a display-table, and can be changed. From debbugs-submit-bounces@debbugs.gnu.org Sat May 06 17:01:22 2017 Received: (at 25408) by debbugs.gnu.org; 6 May 2017 21:01:22 +0000 Received: from localhost ([127.0.0.1]:58653 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d76pO-0003uG-Bc for submit@debbugs.gnu.org; Sat, 06 May 2017 17:01:22 -0400 Received: from mail-qk0-f177.google.com ([209.85.220.177]:34529) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d76pN-0003u2-1E for 25408@debbugs.gnu.org; Sat, 06 May 2017 17:01:21 -0400 Received: by mail-qk0-f177.google.com with SMTP id k74so28535259qke.1 for <25408@debbugs.gnu.org>; Sat, 06 May 2017 14:01:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=WL7CEk09a+6SBePdX6HjJIJZntcKhzdUDJlX19RHjg0=; b=sGMz1PYeUdZNCtCqpWpUpg8MhVdYCosWMDwW0dHOiqb72gStCQ+I01kLWoRihZ8NWu +JCTnadO5deS6NOieBjLGQLRzM0HMNOwHxIknaVxak3LWbhhyi+6cWUOcx+mDGq1xBtB HpmkoG3VXfcQqD5CMSzZTEY3kBULXNHUM7fVOcTzloYP+MrmGlh/oKLYDt2LC+SAHANE Z+rKG6f2RzIY1sW/9HjDWpWy6fEI36ARcN7khGvQ/ck0zhQU2DwBKRmmgcv8eet0vSZz RwQ0IketNJdBgGDHxbsZBEDKPdR1Orno24UTAxTDYx5sgHLD0vv7Ikl9wKNw2MD7P94C N1vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=WL7CEk09a+6SBePdX6HjJIJZntcKhzdUDJlX19RHjg0=; b=O9CJS+vEE9cI53gEUU9GVyznnJ06k95k8gqooFiwMQjjB6yaQDDlkAHgZDt1KX5jWS 8Kc09PPKP8sJIIND8yIkFPXAZR84cZyo6zDYdBGJ9iZNIYPsm5o/oO7m9xym5uwR73hN v/j3rHkigVO5HmLShRrsZwpCtptMnp3bbGsRiXG96KY009JMtfsflhq7FENYXL5rU9zQ Isa6dfY/iYcxFFGjpR6y9kcTGcx9y6zIZ8XHTNSLPlr6ZDdXpdQ2HBC9uXkJaumu8lyo ti+E1SdRdhovJV58g/dNZ638S01wFWCu29FKmc9b04dbjufNH2cjmWQy4KkjoD/MC523 Wsng== X-Gm-Message-State: AN3rC/7nhO7a+Yzqst+51rQvNT8wzsj2qN5ML5LJrw6qR4/F7+m0fjB4 L3D3Uk7FUgg1QA== X-Received: by 10.233.216.68 with SMTP id u65mr17799317qkf.37.1494104475454; Sat, 06 May 2017 14:01:15 -0700 (PDT) Received: from [18.111.31.178] (dhcp-18-111-31-178.dyn.mit.edu. [18.111.31.178]) by smtp.gmail.com with ESMTPSA id r5sm6599177qki.24.2017.05.06.14.01.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 06 May 2017 14:01:15 -0700 (PDT) Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: Eli Zaretskii References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> <590D7DEC.1@gmx.at> <590D9A4A.6030700@gmx.at> <3472c19d-bfb4-4628-780d-4f0554e5b329@gmail.com> <83zieqdq3j.fsf@gnu.org> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: Date: Sat, 6 May 2017 17:01:14 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <83zieqdq3j.fsf@gnu.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 25408 Cc: rudalics@gmx.at, 25408@debbugs.gnu.org, arthur.miller.no1@gmail.com 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: 0.5 (/) On 2017-05-06 10:20, Eli Zaretskii wrote: >> From: Clément Pit-Claudel >> Date: Sat, 6 May 2017 09:28:02 -0400 >> Cc: 25408@debbugs.gnu.org >> >> On 2017-05-06 05:41, martin rudalics wrote: >>>> Please try the attached patch (I only checked whether it compiles and >>>> builds on Windows). You have to add a non-nil 'no-special-glyphs' frame >>>> parameter to suppress such glyphs. >>> >>> Sorry, that patch was complete scrap. Hopefully, I'll come up with a >>> better one later. >>> >>> What do those glyphs look like - "\" for continuation and "$" for >>> truncation? >> >> Yup, exactly :) Thanks for your help! > > Not sure why Martin asked, but to be more accurate: the actual glyphs > are stored in a display-table, and can be changed. Right (though not, AFAICT, fully disabled, right?) From debbugs-submit-bounces@debbugs.gnu.org Sat May 06 22:30:42 2017 Received: (at 25408) by debbugs.gnu.org; 7 May 2017 02:30:42 +0000 Received: from localhost ([127.0.0.1]:58919 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d7By6-00033e-3F for submit@debbugs.gnu.org; Sat, 06 May 2017 22:30:42 -0400 Received: from eggs.gnu.org ([208.118.235.92]:40330) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d7By5-00033O-2Z for 25408@debbugs.gnu.org; Sat, 06 May 2017 22:30:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d7Bxr-0005KU-9I for 25408@debbugs.gnu.org; Sat, 06 May 2017 22:30:31 -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.0 required=5.0 tests=BAYES_40,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:58778) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d7Bxr-0005KQ-5v; Sat, 06 May 2017 22:30:27 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3741 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1d7Bxq-0002cc-AN; Sat, 06 May 2017 22:30:26 -0400 Date: Sun, 07 May 2017 05:30:04 +0300 Message-Id: <83shkhe6vn.fsf@gnu.org> From: Eli Zaretskii To: =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel In-reply-to: (message from =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel on Sat, 6 May 2017 17:01:14 -0400) Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> <590D7DEC.1@gmx.at> <590D9A4A.6030700@gmx.at> <3472c19d-bfb4-4628-780d-4f0554e5b329@gmail.com> <83zieqdq3j.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 25408 Cc: rudalics@gmx.at, 25408@debbugs.gnu.org, arthur.miller.no1@gmail.com 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: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > Cc: rudalics@gmx.at, arthur.miller.no1@gmail.com, 25408@debbugs.gnu.org > From: Clément Pit-Claudel > Date: Sat, 6 May 2017 17:01:14 -0400 > > > Not sure why Martin asked, but to be more accurate: the actual glyphs > > are stored in a display-table, and can be changed. > > Right (though not, AFAICT, fully disabled, right?) Right. From debbugs-submit-bounces@debbugs.gnu.org Sun May 07 04:41:03 2017 Received: (at 25408) by debbugs.gnu.org; 7 May 2017 08:41:03 +0000 Received: from localhost ([127.0.0.1]:59030 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d7HkV-0003VN-H9 for submit@debbugs.gnu.org; Sun, 07 May 2017 04:41:03 -0400 Received: from mout.gmx.net ([212.227.15.18]:62233) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d7HkT-0003Uf-RZ for 25408@debbugs.gnu.org; Sun, 07 May 2017 04:41:02 -0400 Received: from [192.168.1.101] ([213.162.68.31]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0Lpbqo-1dj4jZ0A5u-00fQ0K; Sun, 07 May 2017 10:40:55 +0200 Message-ID: <590EDD92.6080303@gmx.at> Date: Sun, 07 May 2017 10:40:50 +0200 From: martin rudalics MIME-Version: 1.0 To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LUNsYXVkZWw=?= , Arthur Miller Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> <590D7DEC.1@gmx.at> <590D9A4A.6030700@gmx.at> <3472c19d-bfb4-4628-780d-4f0554e5b329@gmail.com> In-Reply-To: <3472c19d-bfb4-4628-780d-4f0554e5b329@gmail.com> Content-Type: multipart/mixed; boundary="------------050202030009000407050404" X-Provags-ID: V03:K0:QEVYOIvJQThBmGEzIb3a8hozzD1FPZGOxSfTwRmWaZY87P3/xK/ 2yg3KFRtjelMnDSStZRuHaxlfavDHS/VnpXe0UodlxNSy3l+zcy4IxXqI+hfB3eX9GvQPT2 JC1KTwHaVXradzld4ZoC29CRPsjSWywcHY6HEEKYK9FEx2pUTnmWX51NfsKaPscuXPONMmU i2+tNgcx4LMgDTkX4xoCA== X-UI-Out-Filterresults: notjunk:1;V01:K0:vpaahXSNwuc=:+A0L7TliXwhtzK0qyYf/Yo 0VaBBKOB/15gy9bd/7UiYQ+u/6ryRv7XW537Mh9rXeq88cYCPj6DIiSeLPT2izwXKm0ZpgjgV dHReDDvGA2cvIykP7Vxhz5qlo90OjoJLlEn4GErH4vTdVLd0hBSGYddnkUq779FsI/pLIUWqw vKvt9+W3t0UTcEdUzHwk5mI6tNKo93PzYleKHyXXuAPOyWnWdvG2aq/0PyB8PLyUwJiZ99/0S F4WqBHye1zBVvResOb++349FefnxrJwRi5dOSb5ZMiPaywMS9/7riLEpGU1yfoHDPhisu3Lfq Z2V0ZypK4KN4SM2yoFW5S79JXbZZNbkqdnGHTwICQmdt41/v0Auuqj7XJIR6uowj7SzGWvC99 LCrR2zms/sm+gG4l2VWMz7ilLAOIDiZ+At2/2qsUNlS7u6wfFBuOM/OumROqEWoBluTWWCyYR /kjLSy5QWE6nyPJ0SEVaAhvvJxTcJJQH4E1QBGOJVchjp3rkzY0cr1Yn6rwpOrozFfFQendEp 6NnpanaqPFAHoWWuyj/NgUlCW6GUuB/7k4MK3kvYIeaJ+/evi4tsbTQiLFTj94KboxCrZk+Mx XNW1q9w6MXCG5iG3s3drIOEACZ2OXjs8Gb52u0wFuKwMUmSSbRgcp/lJYTae327klRktryvwQ RCNEMGaIfrNKdafKD00tF6LVNrHxdlZxHFHQX8Jug/hTyzXx2k0p4cJwC28g3XbHcNLvxeHnu jlUY2BZdXrf34T/tyfGZxbkXrN4RX4eUQkIGS+do7a7aUfPiwqHq/mUCafA= X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 25408 Cc: 25408@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.5 (---) This is a multi-part message in MIME format. --------------050202030009000407050404 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit >>> Please try the attached patch (I only checked whether it compiles and >>> builds on Windows). You have to add a non-nil 'no-special-glyphs' frame >>> parameter to suppress such glyphs. >> >> Sorry, that patch was complete scrap. Hopefully, I'll come up with a >> better one later. >> >> What do those glyphs look like - "\" for continuation and "$" for >> truncation? > > Yup, exactly :) Thanks for your help! Please try the revised patch I attached. Thanks, martin --------------050202030009000407050404 Content-Type: text/plain; charset=windows-1252; name="no-special-glyphs.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="no-special-glyphs.diff" ZGlmZiAtLWdpdCBhL2xpc3AvdG9vbHRpcC5lbCBiL2xpc3AvdG9vbHRpcC5lbAppbmRleCAz NjcxMTRiLi5jMDExZjFiIDEwMDY0NAotLS0gYS9saXNwL3Rvb2x0aXAuZWwKKysrIGIvbGlz cC90b29sdGlwLmVsCkBAIC0xMTksNyArMTE5LDggQEAgdG9vbHRpcC15LW9mZnNldAogKGRl ZmN1c3RvbSB0b29sdGlwLWZyYW1lLXBhcmFtZXRlcnMKICAgJygobmFtZSAuICJ0b29sdGlw IikKICAgICAoaW50ZXJuYWwtYm9yZGVyLXdpZHRoIC4gMikKLSAgICAoYm9yZGVyLXdpZHRo IC4gMSkpCisgICAgKGJvcmRlci13aWR0aCAuIDEpCisgICAgKG5vLXNwZWNpYWwtZ2x5cGhz IC4gdCkpCiAgICJGcmFtZSBwYXJhbWV0ZXJzIHVzZWQgZm9yIHRvb2x0aXBzLgoKIElmIGBs ZWZ0JyBvciBgdG9wJyBwYXJhbWV0ZXJzIGFyZSBpbmNsdWRlZCwgdGhleSBzcGVjaWZ5IHRo ZSBhYnNvbHV0ZQpAQCAtMTMwLDcgKzEzMSw4IEBAIHRvb2x0aXAtZnJhbWUtcGFyYW1ldGVy cwogICA6dHlwZSAnKHJlcGVhdCAoY29ucyA6Zm9ybWF0ICIldiIKIAkJICAgICAgIChzeW1i b2wgOnRhZyAiUGFyYW1ldGVyIikKIAkJICAgICAgIChzZXhwIDp0YWcgIlZhbHVlIikpKQot ICA6Z3JvdXAgJ3Rvb2x0aXApCisgIDpncm91cCAndG9vbHRpcAorICA6dmVyc2lvbiAiMjYu MSIpCgogKGRlZmZhY2UgdG9vbHRpcAogICAnKCgoKGNsYXNzIGNvbG9yKSkKZGlmZiAtLWdp dCBhL3NyYy9mcmFtZS5jIGIvc3JjL2ZyYW1lLmMKaW5kZXggNGQxN2EwNy4uNjQ0MmMzYiAx MDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmMKKysrIGIvc3JjL2ZyYW1lLmMKQEAgLTY4NCw2ICs2 ODQsNyBAQCBzdHJ1Y3QgZnJhbWUgKgogICBmLT5ob3Jpem9udGFsX3Njcm9sbF9iYXJzID0g ZmFsc2U7CiAgIGYtPndhbnRfZnVsbHNjcmVlbiA9IEZVTExTQ1JFRU5fTk9ORTsKICAgZi0+ dW5kZWNvcmF0ZWQgPSBmYWxzZTsKKyAgZi0+bm9fc3BlY2lhbF9nbHlwaHMgPSBmYWxzZTsK ICNpZm5kZWYgSEFWRV9OVEdVSQogICBmLT5vdmVycmlkZV9yZWRpcmVjdCA9IGZhbHNlOwog I2VuZGlmCkBAIC0zMjg5LDYgKzMyOTAsNyBAQCBzdHJ1Y3QgZnJhbWVfcGFybV90YWJsZSB7 CiAgIHsibm8tYWNjZXB0LWZvY3VzIiwJCVNZTUJPTF9JTkRFWCAoUW5vX2FjY2VwdF9mb2N1 cyl9LAogICB7InotZ3JvdXAiLAkJCVNZTUJPTF9JTkRFWCAoUXpfZ3JvdXApfSwKICAgeyJv dmVycmlkZS1yZWRpcmVjdCIsCQlTWU1CT0xfSU5ERVggKFFvdmVycmlkZV9yZWRpcmVjdCl9 LAorICB7Im5vLXNwZWNpYWwtZ2x5cGhzIiwJCVNZTUJPTF9JTkRFWCAoUW5vX3NwZWNpYWxf Z2x5cGhzKX0sCiB9OwoKICNpZmRlZiBIQVZFX1dJTkRPV19TWVNURU0KQEAgLTQyMDQsMTIg KzQyMDYsMjkgQEAgc3RydWN0IGZyYW1lX3Bhcm1fdGFibGUgewogICByZXR1cm47CiB9Cgor CisvKioKKyAqIHhfc2V0X25vX3NwZWNpYWxfZ2x5cGhzOgorICoKKyAqIFNldCBmcmFtZSBG J3MgYG5vLXNwZWNpYWwtZ2x5cGhzJyBwYXJhbWV0ZXIgd2hpY2gsIGlmIG5vbi1uaWwsCisg KiBzdXBwcmVzc2VzIHRoZSBkaXNwbGF5IG9mIHRydW5jYXRpb24gYW5kIGNvbnRpbnVhdGlv biBnbHlwaHMKKyAqIG91dHNpZGUgZnJpbmdlcy4KKyAqLwordm9pZAoreF9zZXRfbm9fc3Bl Y2lhbF9nbHlwaHMgKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmplY3QgbmV3X3ZhbHVlLCBM aXNwX09iamVjdCBvbGRfdmFsdWUpCit7CisgIGlmICghRVEgKG5ld192YWx1ZSwgb2xkX3Zh bHVlKSkKKyAgICBGUkFNRV9OT19TUEVDSUFMX0dMWVBIUyAoZikgPSAhTklMUCAobmV3X3Zh bHVlKTsKK30KKworCiAjaWZuZGVmIEhBVkVfTlMKCiAvKiBOb24temVybyBpZiBtb3VzZSBp cyBncmFiYmVkIG9uIERQWUlORk8KICAgIGFuZCB3ZSBrbm93IHRoZSBmcmFtZSB3aGVyZSBp dCBpcy4gICovCgotYm9vbCB4X21vdXNlX2dyYWJiZWQgKERpc3BsYXlfSW5mbyAqZHB5aW5m bykKK2Jvb2wKK3hfbW91c2VfZ3JhYmJlZCAoRGlzcGxheV9JbmZvICpkcHlpbmZvKQogewog ICByZXR1cm4gKGRweWluZm8tPmdyYWJiZWQKIAkgICYmIGRweWluZm8tPmxhc3RfbW91c2Vf ZnJhbWUKQEAgLTUwNzcsNiArNTA5Niw3IEBAIG9yIGEgbGlzdCAoLSBOKSBtZWFuaW5nIC1O IHBpeGVscyByZWxhdGl2ZSB0byBib3R0b20vcmlnaHQgY29ybmVyLgogICBERUZTWU0gKFFp Y29uLCAiaWNvbiIpOwogICBERUZTWU0gKFFtaW5pYnVmZmVyLCAibWluaWJ1ZmZlciIpOwog ICBERUZTWU0gKFF1bmRlY29yYXRlZCwgInVuZGVjb3JhdGVkIik7CisgIERFRlNZTSAoUW5v X3NwZWNpYWxfZ2x5cGhzLCAibm8tc3BlY2lhbC1nbHlwaHMiKTsKICAgREVGU1lNIChRcGFy ZW50X2ZyYW1lLCAicGFyZW50LWZyYW1lIik7CiAgIERFRlNZTSAoUXNraXBfdGFza2Jhciwg InNraXAtdGFza2JhciIpOwogICBERUZTWU0gKFFub19mb2N1c19vbl9tYXAsICJuby1mb2N1 cy1vbi1tYXAiKTsKZGlmZiAtLWdpdCBhL3NyYy9mcmFtZS5oIGIvc3JjL2ZyYW1lLmgKaW5k ZXggNGFhN2MzNC4uZGJiMzY3NSAxMDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmgKKysrIGIvc3Jj L2ZyYW1lLmgKQEAgLTM1NCw3ICszNTQsMTEgQEAgc3RydWN0IGZyYW1lCgogICAvKiBUaGUg ei1ncm91cCB0aGlzIGZyYW1lJ3Mgd2luZG93IGJlbG9uZ3MgdG8uICovCiAgIEVOVU1fQkYg KHpfZ3JvdXApIHpfZ3JvdXAgOiAyOwotI2VuZGlmIC8qIEhBVkVfV0lORE9XX1NZU1RFTSBh bmQgbm90IEhBVkVfTlMgKi8KKworICAvKiBOb24temVybyBpZiBkaXNwbGF5IG9mIHRydW5j YXRpb24gYW5kIGNvbnRpbnVhdGlvbiBnbHlwaHMgb3V0c2lkZQorICAgICB0aGUgZnJpbmdl cyBpcyBzdXBwcmVzc2VkLiAgKi8KKyAgYm9vbF9iZiBub19zcGVjaWFsX2dseXBocyA6IDE7 CisjZW5kaWYgLyogSEFWRV9XSU5ET1dfU1lTVEVNICovCgogICAvKiBXaGV0aGVyIG5ld19o ZWlnaHQgYW5kIG5ld193aWR0aCBzaGFsbCBiZSBpbnRlcnByZXRlZAogICAgICBpbiBwaXhl bHMuICAqLwpAQCAtOTI4LDYgKzkzMiw3IEBAIHN0cnVjdCBmcmFtZQogI2RlZmluZSBGUkFN RV9TS0lQX1RBU0tCQVIoZikgKChmKS0+c2tpcF90YXNrYmFyKQogI2RlZmluZSBGUkFNRV9O T19GT0NVU19PTl9NQVAoZikgKChmKS0+bm9fZm9jdXNfb25fbWFwKQogI2RlZmluZSBGUkFN RV9OT19BQ0NFUFRfRk9DVVMoZikgKChmKS0+bm9fYWNjZXB0X2ZvY3VzKQorI2RlZmluZSBG UkFNRV9OT19TUEVDSUFMX0dMWVBIUyhmKSAoKGYpLT5ub19zcGVjaWFsX2dseXBocykKICNk ZWZpbmUgRlJBTUVfWl9HUk9VUChmKSAoKGYpLT56X2dyb3VwKQogI2RlZmluZSBGUkFNRV9a X0dST1VQX05PTkUoZikgKChmKS0+el9ncm91cCA9PSB6X2dyb3VwX25vbmUpCiAjZGVmaW5l IEZSQU1FX1pfR1JPVVBfQUJPVkUoZikgKChmKS0+el9ncm91cCA9PSB6X2dyb3VwX2Fib3Zl KQpAQCAtOTQxLDYgKzk0Niw3IEBAIHN0cnVjdCBmcmFtZQogI2RlZmluZSBGUkFNRV9TS0lQ X1RBU0tCQVIoZikgKCh2b2lkKSBmLCAwKQogI2RlZmluZSBGUkFNRV9OT19GT0NVU19PTl9N QVAoZikgKCh2b2lkKSBmLCAwKQogI2RlZmluZSBGUkFNRV9OT19BQ0NFUFRfRk9DVVMoZikg KCh2b2lkKSBmLCAwKQorI2RlZmluZSBGUkFNRV9OT19TUEVDSUFMX0dMWVBIUyhmKSAoKHZv aWQpIGYsIDApCiAjZGVmaW5lIEZSQU1FX1pfR1JPVVAoZikgKCh2b2lkKSBmLCB6X2dyb3Vw X25vbmUpCiAjZGVmaW5lIEZSQU1FX1pfR1JPVVBfTk9ORShmKSAoKHZvaWQpIGYsIHRydWUp CiAjZGVmaW5lIEZSQU1FX1pfR1JPVVBfQUJPVkUoZikgKCh2b2lkKSBmLCBmYWxzZSkKQEAg LTE0OTgsNiArMTUwNCw3IEBAIGV4dGVybiB2b2lkIHhfc2V0X2JvdHRvbV9kaXZpZGVyX3dp ZHRoIChzdHJ1Y3QgZnJhbWUgKiwgTGlzcF9PYmplY3QsCiBleHRlcm4gbG9uZyB4X2ZpZ3Vy ZV93aW5kb3dfc2l6ZSAoc3RydWN0IGZyYW1lICosIExpc3BfT2JqZWN0LCBib29sLCBpbnQg KiwgaW50ICopOwoKIGV4dGVybiB2b2lkIHhfc2V0X2FscGhhIChzdHJ1Y3QgZnJhbWUgKiwg TGlzcF9PYmplY3QsIExpc3BfT2JqZWN0KTsKK2V4dGVybiB2b2lkIHhfc2V0X25vX3NwZWNp YWxfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKiwgTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0KTsK CiBleHRlcm4gdm9pZCB2YWxpZGF0ZV94X3Jlc291cmNlX25hbWUgKHZvaWQpOwoKZGlmZiAt LWdpdCBhL3NyYy9uc2Zucy5tIGIvc3JjL25zZm5zLm0KaW5kZXggY2JlMGZmYi4uMzg5NDVi OCAxMDA2NDQKLS0tIGEvc3JjL25zZm5zLm0KKysrIGIvc3JjL25zZm5zLm0KQEAgLTk4Myw2 ICs5ODMsNyBAQCBUdXJuIHRoZSBpbnB1dCBtZW51IChhbiBOU01lbnUpIGludG8gYSBsaXNw IGxpc3QgZm9yIHRyYWNraW5nIG9uIGxpc3Agc2lkZQogICB4X3NldF9ub19hY2NlcHRfZm9j dXMsCiAgIHhfc2V0X3pfZ3JvdXAsIC8qIHhfc2V0X3pfZ3JvdXAgKi8KICAgMCwgLyogeF9z ZXRfb3ZlcnJpZGVfcmVkaXJlY3QgKi8KKyAgeF9zZXRfbm9fc3BlY2lhbF9nbHlwaHMsCiB9 OwoKCkBAIC0xMjU1LDYgKzEyNTYsOCBAQCBUdXJuIHRoZSBpbnB1dCBtZW51IChhbiBOU01l bnUpIGludG8gYSBsaXNwIGxpc3QgZm9yIHRyYWNraW5nIG9uIGxpc3Agc2lkZQogCQkgICAg ICAgImxlZnRGcmluZ2UiLCAiTGVmdEZyaW5nZSIsIFJFU19UWVBFX05VTUJFUik7CiAgIHhf ZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRcmlnaHRfZnJpbmdlLCBRbmlsLAogCQkg ICAgICAgInJpZ2h0RnJpbmdlIiwgIlJpZ2h0RnJpbmdlIiwgUkVTX1RZUEVfTlVNQkVSKTsK KyAgeF9kZWZhdWx0X3BhcmFtZXRlciAoZiwgcGFyYW1ldGVycywgUW5vX3NwZWNpYWxfZ2x5 cGhzLCBRbmlsLAorCQkgICAgICAgTlVMTCwgTlVMTCwgUkVTX1RZUEVfQk9PTEVBTik7Cgog ICBpbml0X2ZyYW1lX2ZhY2VzIChmKTsKCmRpZmYgLS1naXQgYS9zcmMvdzMyZm5zLmMgYi9z cmMvdzMyZm5zLmMKaW5kZXggZTQ5MDU4OC4uYmI3MzI1MyAxMDA2NDQKLS0tIGEvc3JjL3cz MmZucy5jCisrKyBiL3NyYy93MzJmbnMuYwpAQCAtNTg4OSw2ICs1ODg5LDggQEAgc3RydWN0 IGZyYW1lICoKIAkJICAgICAgIE5VTEwsIE5VTEwsIFJFU19UWVBFX0JPT0xFQU4pOwogICB4 X2RlZmF1bHRfcGFyYW1ldGVyIChmLCBwYXJhbWV0ZXJzLCBRbm9fYWNjZXB0X2ZvY3VzLCBR bmlsLAogCQkgICAgICAgTlVMTCwgTlVMTCwgUkVTX1RZUEVfQk9PTEVBTik7CisgIHhfZGVm YXVsdF9wYXJhbWV0ZXIgKGYsIHBhcmFtZXRlcnMsIFFub19zcGVjaWFsX2dseXBocywgUW5p bCwKKwkJICAgICAgIE5VTEwsIE5VTEwsIFJFU19UWVBFX0JPT0xFQU4pOwoKICAgLyogUHJv Y2VzcyBhbHBoYSBoZXJlIChCdWcjMTY2MTkpLiAgT24gWFAgdGhpcyBmYWlscyB3aXRoIGNo aWxkCiAgICAgIGZyYW1lcy4gIEZvciBgbm8tZm9jdXMtb24tbWFwJyBmcmFtZXMgZGVsYXkg cHJvY2Vzc2luZyBvZiBhbHBoYQpAQCAtMTAzMzAsNiArMTAzMzIsNyBAQCBlbnVtIE5JX1Nl dmVyaXR5IHsKICAgeF9zZXRfbm9fYWNjZXB0X2ZvY3VzLAogICB4X3NldF96X2dyb3VwLAog ICAwLCAvKiB4X3NldF9vdmVycmlkZV9yZWRpcmVjdCAqLworICB4X3NldF9ub19zcGVjaWFs X2dseXBocywKIH07Cgogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL3hkaXNwLmMgYi9zcmMveGRp c3AuYwppbmRleCA0MTQ1OGMzLi5jNTQ2MTk4IDEwMDY0NAotLS0gYS9zcmMveGRpc3AuYwor KysgYi9zcmMveGRpc3AuYwpAQCAtMjgzNCwxMyArMjgzNCwxMiBAQCBzdGF0aWMgTGlzcF9P YmplY3QgY2FsY19saW5lX2hlaWdodF9wcm9wZXJ0eSAoc3RydWN0IGl0ICosIExpc3BfT2Jq ZWN0LAoKICAgLyogR2V0IGRpbWVuc2lvbnMgb2YgdHJ1bmNhdGlvbiBhbmQgY29udGludWF0 aW9uIGdseXBocy4gIFRoZXNlIGFyZQogICAgICBkaXNwbGF5ZWQgYXMgZnJpbmdlIGJpdG1h cHMgdW5kZXIgWCwgYnV0IHdlIG5lZWQgdGhlbSBmb3Igc3VjaAotICAgICBmcmFtZXMgd2hl biB0aGUgZnJpbmdlcyBhcmUgdHVybmVkIG9mZi4gIEJ1dCBsZWF2ZSB0aGUgZGltZW5zaW9u cwotICAgICB6ZXJvIGZvciB0b29sdGlwIGZyYW1lcywgYXMgdGhlc2UgZ2x5cGhzIGxvb2sg dWdseSB0aGVyZSBhbmQgYWxzbwotICAgICBzYWJvdGFnZSBjYWxjdWxhdGlvbnMgb2YgdG9v bHRpcCBkaW1lbnNpb25zIGluIHgtc2hvdy10aXAuICAqLworICAgICBmcmFtZXMgd2hlbiB0 aGUgZnJpbmdlcyBhcmUgdHVybmVkIG9mZi4gIFRoZSBub19zcGVjaWFsX2dseXBocyBzbG90 CisgICAgIG9mIHRoZSBpdGVyYXRvcidzIGZyYW1lLCB3aGVuIHNldCwgc3VwcHJlc3NlcyB0 aGVpciBkaXNwbGF5IC0gYnkKKyAgICAgZGVmYXVsdCBmb3IgdG9vbHRpcCBmcmFtZXMgYW5k IHdoZW4gc2V0IHZpYSB0aGUgJ25vLXNwZWNpYWwtZ2x5cGhzJworICAgICBmcmFtZSBwYXJh bWV0ZXIuICAqLwogI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQotICBpZiAoIShGUkFNRV9X SU5ET1dfUCAoaXQtPmYpCi0JJiYgRlJBTUVQICh0aXBfZnJhbWUpCi0JJiYgaXQtPmYgPT0g WEZSQU1FICh0aXBfZnJhbWUpKSkKKyAgaWYgKCEoRlJBTUVfV0lORE9XX1AgKGl0LT5mKSAm JiBpdC0+Zi0+bm9fc3BlY2lhbF9nbHlwaHMpKQogI2VuZGlmCiAgICAgewogICAgICAgaWYg KGl0LT5saW5lX3dyYXAgPT0gVFJVTkNBVEUpCmRpZmYgLS1naXQgYS9zcmMveGZucy5jIGIv c3JjL3hmbnMuYwppbmRleCBlNDYzMzkxLi4zZjJhNDk5IDEwMDY0NAotLS0gYS9zcmMveGZu cy5jCisrKyBiL3NyYy94Zm5zLmMKQEAgLTM4MTQsNiArMzgxNCw4IEBAIHN0cnVjdCBtb3Vz ZV9jdXJzb3JfZGF0YSB7CiAJCSAgICAgICAibGVmdEZyaW5nZSIsICJMZWZ0RnJpbmdlIiwg UkVTX1RZUEVfTlVNQkVSKTsKICAgeF9kZWZhdWx0X3BhcmFtZXRlciAoZiwgcGFybXMsIFFy aWdodF9mcmluZ2UsIFFuaWwsCiAJCSAgICAgICAicmlnaHRGcmluZ2UiLCAiUmlnaHRGcmlu Z2UiLCBSRVNfVFlQRV9OVU1CRVIpOworICB4X2RlZmF1bHRfcGFyYW1ldGVyIChmLCBwYXJt cywgUW5vX3NwZWNpYWxfZ2x5cGhzLCBRbmlsLAorCQkgICAgICAgTlVMTCwgTlVMTCwgUkVT X1RZUEVfQk9PTEVBTik7CgogICB4X2RlZmF1bHRfc2Nyb2xsX2Jhcl9jb2xvcl9wYXJhbWV0 ZXIgKGYsIHBhcm1zLCBRc2Nyb2xsX2Jhcl9mb3JlZ3JvdW5kLAogCQkJCQkic2Nyb2xsQmFy Rm9yZWdyb3VuZCIsCkBAIC03NDg2LDYgKzc0ODgsNyBAQCBGUkFNRVMgc2hvdWxkIGJlIG5p bCAodGhlIHNlbGVjdGVkIGZyYW1lKSwgYSBmcmFtZSwgb3IgYSBsaXN0IG9mCiAgIHhfc2V0 X25vX2FjY2VwdF9mb2N1cywKICAgeF9zZXRfel9ncm91cCwKICAgeF9zZXRfb3ZlcnJpZGVf cmVkaXJlY3QsCisgIHhfc2V0X25vX3NwZWNpYWxfZ2x5cGhzLAogfTsKCiB2b2lkCg== --------------050202030009000407050404-- From debbugs-submit-bounces@debbugs.gnu.org Sun May 07 04:41:17 2017 Received: (at 25408) by debbugs.gnu.org; 7 May 2017 08:41:17 +0000 Received: from localhost ([127.0.0.1]:59034 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d7Hki-0003Vo-UJ for submit@debbugs.gnu.org; Sun, 07 May 2017 04:41:17 -0400 Received: from mout.gmx.net ([212.227.15.15]:57584) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d7Hkg-0003Va-Ht for 25408@debbugs.gnu.org; Sun, 07 May 2017 04:41:14 -0400 Received: from [192.168.1.101] ([213.162.68.31]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MYfre-1dbU4v1N4c-00VRAA; Sun, 07 May 2017 10:41:07 +0200 Message-ID: <590EDD9E.2000207@gmx.at> Date: Sun, 07 May 2017 10:41:02 +0200 From: martin rudalics MIME-Version: 1.0 To: Eli Zaretskii , =?UTF-8?B?Q2zDqW1lbnQgUGl0LUNsYXVkZWw=?= Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> <590D7DEC.1@gmx.at> <590D9A4A.6030700@gmx.at> <3472c19d-bfb4-4628-780d-4f0554e5b329@gmail.com> <83zieqdq3j.fsf@gnu.org> In-Reply-To: <83zieqdq3j.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:tQ2OW5d/bIMVgBwnkKLR8Ytd8UYFjft4Bjc6CGTZfmTHRquo7+l jFf/BrizJwHVDros/6Fp1iikFE8SBfyaLUP8sS/25paMWgPUz2mrML9bv0VrjHI0DU4hY2x +oIDBTFuu+9wygXjnoC0X/j/gKc6Y+2MhyZO2s+Y5IeW131bMARf2ZyrHES3KmgMD1qO/jI rHCqxDNHJ25ti7DGO/Cig== X-UI-Out-Filterresults: notjunk:1;V01:K0:dHp1q9H0kDI=:HJEuzDBmZYa7+uHedvim/w CLNEyQ7YteJkj1u+6RV+KhSb+sw7/r9YxELQjF3SFi8oJ/0neuUiPHAu3vcmYQk+l+Se+qxs9 l6V+OThE9vv7sbDVHOThOmJ1Yf+H8hxF1QvcmC1osaOXZyVoPz0cL2vHNIhmwD6AWCWrjvA0x qor26qB3qWD+ZYyIDBtFs0wuuOYdqkjQNHSyvowhXW81o7tV2xotyKehQkxuW4X+c60mT8V40 UkjZEEuTOgwsC1NqQ6mnRqoSKGLnxtO2He1zooWuA/lF0HKUadGJVK8wcYqAEfhysfI8so74k HGzb1I8wcH/llI4c1WL0UdWd1+GKeCrghBHk+MwO5/THmAPrEqXlpVEwbbUa6/gFL90Ix4DCg 2WURvGEndUDgxWt1enRBCsupMhAVY2VY2PdtXzLYKPE8Ue6K+IjacKtOh9gx5QCiOlnvsSOHO bxDfhOItBDoIbFF2W3qzhPuvVje32aQ0IsCNGiLxXgXSlfytfHDDqHr9jLoJGy7MZVEGJgA0b mUqKMwQQ0QTEc3B+P8zLbos7ZKkckSOFzbAzI2MlfRVbHwDFRXE9miN3+//nZDG0E1Bo9VP6s 1ML60i6NZzD3DJb9Gp5auMistJjg6nsvrjV44DKVYSmxR/zZpZNodzLghEzYQ1hvx2xf3BnPU 3acxy4M8UkaK8iFYUubV+vfXLDWkBzxGjTib+yoGhpyrPaAPeaKUzTV9Xul8N7mV0Oy9J60as NrBV9NC78vCd3Ajje3l/klonWRYww3GTnurJzFjNxLfjEG/oBDJBotUa8eLng2RJ3Dt8nHtKi s37Gjt+ X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 25408 Cc: arthur.miller.no1@gmail.com, 25408@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.5 (---) > Not sure why Martin asked, My initial attempts failed due to a number of silly bugs and I was no more sure whether Cl=C3=A9ment and I even meant the same thing. > but to be more accurate: the actual glyphs > are stored in a display-table, and can be changed. martin From debbugs-submit-bounces@debbugs.gnu.org Sun May 07 13:20:07 2017 Received: (at 25408) by debbugs.gnu.org; 7 May 2017 17:20:07 +0000 Received: from localhost ([127.0.0.1]:60586 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d7Pqp-0002kM-GE for submit@debbugs.gnu.org; Sun, 07 May 2017 13:20:07 -0400 Received: from eggs.gnu.org ([208.118.235.92]:55413) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d7Pqo-0002jp-F8 for 25408@debbugs.gnu.org; Sun, 07 May 2017 13:20:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d7Pqg-0005uW-05 for 25408@debbugs.gnu.org; Sun, 07 May 2017 13:20:01 -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.0 required=5.0 tests=BAYES_20,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:39416) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d7Pqf-0005uS-Sc; Sun, 07 May 2017 13:19:57 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4376 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1d7Pqf-00040v-2S; Sun, 07 May 2017 13:19:57 -0400 Date: Sun, 07 May 2017 20:19:37 +0300 Message-Id: <8360hceg9i.fsf@gnu.org> From: Eli Zaretskii To: martin rudalics In-reply-to: <590EDD92.6080303@gmx.at> (message from martin rudalics on Sun, 07 May 2017 10:40:50 +0200) Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> <590D7DEC.1@gmx.at> <590D9A4A.6030700@gmx.at> <3472c19d-bfb4-4628-780d-4f0554e5b329@gmail.com> <590EDD92.6080303@gmx.at> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 25408 Cc: arthur.miller.no1@gmail.com, cpitclaudel@gmail.com, 25408@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: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > Date: Sun, 07 May 2017 10:40:50 +0200 > From: martin rudalics > Cc: 25408@debbugs.gnu.org > > Please try the revised patch I attached. Please test vertical cursor motion in frames with this parameter set, including when visual-line-mode is turned on. There might be dragons. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Sun May 07 14:08:01 2017 Received: (at 25408) by debbugs.gnu.org; 7 May 2017 18:08:01 +0000 Received: from localhost ([127.0.0.1]:60619 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d7QbA-0003rd-TW for submit@debbugs.gnu.org; Sun, 07 May 2017 14:08:01 -0400 Received: from mout.gmx.net ([212.227.15.15]:65205) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d7Qb8-0003rO-J0 for 25408@debbugs.gnu.org; Sun, 07 May 2017 14:07:58 -0400 Received: from [192.168.1.101] ([213.162.68.31]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0LngRb-1dh4G01Yo3-00htcG; Sun, 07 May 2017 20:07:51 +0200 Message-ID: <590F6272.8070301@gmx.at> Date: Sun, 07 May 2017 20:07:46 +0200 From: martin rudalics MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> <590D7DEC.1@gmx.at> <590D9A4A.6030700@gmx.at> <3472c19d-bfb4-4628-780d-4f0554e5b329@gmail.com> <590EDD92.6080303@gmx.at> <8360hceg9i.fsf@gnu.org> In-Reply-To: <8360hceg9i.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:ayW1XrXEl5joyOXlXU9lIPsuKylwuOquauSdDXbLhIdIWuqVPm/ cFxhhxMm67EyPxmfHwqGJOn/guRNwdoz4RcDTcwXOQe3dYqh6qwxhvFMdnnvmPTnxd888Ff INYQxkuLEX4NQuOmY5qxtsrPa+2K2ZEXnKvPI1uy80v2T574bSCCpM9E60uWvHdqVZPCN/2 dxaMZoqC8JpgqUJu6WBYA== X-UI-Out-Filterresults: notjunk:1;V01:K0:wASyOfUfyrM=:3HoNWxH9tHZUON5dMwCMMC D0CjBmZg/NcQ8/eLYfMpk+mLzH10jpxbnQwufUUT6BL4f6Ek1JK5tyzxFN2hVLAbIBIAv2yJu X9DxqJl1/+ZYFTFBZHF2GmYVPiv48l+EiHZFnRAsI1pWAAg/nT3XLWZ7aixRgRvWq7EGw6Jtl yJF/2WKdtgjUbt4K++DHLOZVKOAkOzmwq3sQ1rqZVNxL/lPAxNJSxGB1AkEwqN4NAeIVqJjur ZgUEuQJfHj/H3CDH3aZ72pt3YUgyXbzmoPstZooera1OymFX611KNFg4yiZ78DKKWnHXy3gyl q8jY773lotdUvSEuh4FP/2fSL9dOz7KhuqwPZQ85vgCg0mLiU0V1G9CwYUDIlAv+wNuwo0WW7 vi2wu4h8ZKCrnSaDDRZMjtAdj24EOAqo9egYSCkuYxI4vRN2Bj9OGk+zkE2q6LQoVLIhvf2Vc qqhVCspSu4h4UtFd/KgSrmeXznFPIUhPXMkwW+h8WmW9b+NMhOluaG39/gozE7Wiibtu6tf8W EV4BAPvUhaYfnrpS3oHt7elGkQTE9r7A12WIGC897QNDioj1cqUXasLCrMKiQ39DETUSy/lEo 32XFteU+tYLgl8mDuXIzewd2GcGQciGY+ZXTJJ0CcGIyX/CmYufJdPVN12JVbWpbGV6HZWe8d e3nPmtSdjX24zZ0/QyuTwfeGGZaaODexuoprscb/Iq8L129nA3Mem7Y4+fsfB7zSEPCKc4qAD YJX6ogKjHO+0/XWmFP1Vqjh4Q5wpsVbeQGkECbWx8chCRW/GHfMsfl131kUxp7ZY7iCg27wMh /MKJ63y X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 25408 Cc: arthur.miller.no1@gmail.com, cpitclaudel@gmail.com, 25408@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.5 (---) > Please test vertical cursor motion in frames with this parameter set, > including when visual-line-mode is turned on. There might be dragons.= I've seen nothing special here. But if you can think of a specific location where they might hide please tell me. Also, IIUC Cl=C3=A9ment has no intention to make such buffers scrollable,= editable or focusable. So if necessary we can also forbid such actions. Thanks, martin From debbugs-submit-bounces@debbugs.gnu.org Sun May 07 14:33:49 2017 Received: (at 25408) by debbugs.gnu.org; 7 May 2017 18:33:49 +0000 Received: from localhost ([127.0.0.1]:60656 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d7R08-0004V2-Ud for submit@debbugs.gnu.org; Sun, 07 May 2017 14:33:49 -0400 Received: from eggs.gnu.org ([208.118.235.92]:36620) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d7R06-0004Up-Oq for 25408@debbugs.gnu.org; Sun, 07 May 2017 14:33:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d7Qzy-0000Fp-83 for 25408@debbugs.gnu.org; Sun, 07 May 2017 14:33:41 -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,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:40432) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d7Qzy-0000Fj-4X; Sun, 07 May 2017 14:33:38 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4744 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1d7Qzx-00010C-Ba; Sun, 07 May 2017 14:33:37 -0400 Date: Sun, 07 May 2017 21:33:16 +0300 Message-Id: <831ss0ecur.fsf@gnu.org> From: Eli Zaretskii To: martin rudalics In-reply-to: <590F6272.8070301@gmx.at> (message from martin rudalics on Sun, 07 May 2017 20:07:46 +0200) Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> <590D7DEC.1@gmx.at> <590D9A4A.6030700@gmx.at> <3472c19d-bfb4-4628-780d-4f0554e5b329@gmail.com> <590EDD92.6080303@gmx.at> <8360hceg9i.fsf@gnu.org> <590F6272.8070301@gmx.at> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 25408 Cc: arthur.miller.no1@gmail.com, cpitclaudel@gmail.com, 25408@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: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > Date: Sun, 07 May 2017 20:07:46 +0200 > From: martin rudalics > CC: cpitclaudel@gmail.com, arthur.miller.no1@gmail.com, > 25408@debbugs.gnu.org > > > Please test vertical cursor motion in frames with this parameter set, > > including when visual-line-mode is turned on. There might be dragons. > > I've seen nothing special here. But if you can think of a specific > location where they might hide please tell me. What happens when the line is full-width, i.e. the last character is flushed all the way to the right edge of the window? What happens when you set wrap-prefix to some string value and then turn on visual-line-mode in a buffer with lines longer than the window width? > Also, IIUC Clément has no intention to make such buffers scrollable, > editable or focusable. So if necessary we can also forbid such actions. ??? This is a general-purpose feature, not something created for a single use case. And I don't quite see how you can forbid cursor motion without also forbidding a lot of other useful features. From debbugs-submit-bounces@debbugs.gnu.org Mon May 08 02:48:29 2017 Received: (at 25408) by debbugs.gnu.org; 8 May 2017 06:48:29 +0000 Received: from localhost ([127.0.0.1]:32814 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d7cT7-0001gU-1Q for submit@debbugs.gnu.org; Mon, 08 May 2017 02:48:29 -0400 Received: from mout.gmx.net ([212.227.15.19]:64743) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d7cT4-0001gH-VO for 25408@debbugs.gnu.org; Mon, 08 May 2017 02:48:27 -0400 Received: from [192.168.1.100] ([212.95.7.86]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MhiPD-1dLhMv3dJr-00MwhG; Mon, 08 May 2017 08:48:18 +0200 Message-ID: <591014AC.5020207@gmx.at> Date: Mon, 08 May 2017 08:48:12 +0200 From: martin rudalics MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> <590D7DEC.1@gmx.at> <590D9A4A.6030700@gmx.at> <3472c19d-bfb4-4628-780d-4f0554e5b329@gmail.com> <590EDD92.6080303@gmx.at> <8360hceg9i.fsf@gnu.org> <590F6272.8070301@gmx.at> <831ss0ecur.fsf@gnu.org> In-Reply-To: <831ss0ecur.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:G0Bj6UuBzgmlrSenP53FruEOnWWk5EB9oXILRKvveb7vFbCk4ZJ 7KVPkygIrtOxBPIMqYzEt8r+BS9VmunndaZbcTCXR1n1rcE3EfSw0VG6pK4kbXWeyq1HgAB QtMizKex50wASg/Hb8A5rPpQTOepoRVQnJ8KSK08QtVZZyaO5hGk4NioJNSPeXBMDHYRt0g g93hLfdiM+CFwKKQCmpuA== X-UI-Out-Filterresults: notjunk:1;V01:K0:tSKP3nsBTPM=:QUeA1m9J2qKO6kJWFxOlHN g2NlXtaHpqev3EkLkdtsALTm9m/6xAnQxRGpSF3G2WwEwJP/T5sJYVLpzLiny4Lv98BEKvfP4 rRlchZnLz+n3Rt0A3hs6ZQljQBNIeEAJ22VoQy657IQ4An90lITve2u0tqUJlq1ffEVrYkPoe PmhhFYfM0tH7eGKZO0zUl+IBbE+RDDLOvOiAge/Fa6ZASd2MJrz6qLn5cRt6vgeEP3QFW4Qdm UshPfWTzYSkzLkLKyKCA/JnEz3JP9eGD9HI75/t4i/iEEmMvJtWf5vgUgrqx5x1UpI52b4Zv9 PQd7DQqlbPQb41gzCV8ekg3TJcO+Fb4OWMCHDo92fh76q0511VnMzKxc/fVpDI4yLlqPzy4ZC W3VCKwPrrQ9rsMZwftGjkHVqhkIYkfVJLEPVHgick4U/zWQcyxUiUNKvPmyH4GdHCYT+lvMeS etSOVlJt6RPLjqXM52MNOOAq+ZNnCi7XiMLWuVP5nyeJQ6fviQaPw3+KrMBiT6+/8fGnxPxVo OKeTxg1RJN0T9nVFZ+AdF5crDh10feKxl4q2guyd2tICiM9gBCzejf7FAqbIel3zV5TXh5QTf lM1BALjKyIWYGYDlkRUUYEdA/QQzmvR/8S+LMW0EgrWkNfsuV05NF0rWgtatnD5P4yNhdhfhE 8E1lbFOtxhuxIcMjqF9FXGsDQJet9QO/GoEfd9sN/EEkjnbPAGeB4V23ZMPLyHFxvPYkLhb7q qWa5ero/h/XRB1Cq1/oQo7Mr4ACgedNSVXbfR/qeMeRT2mJa2A7jrtQPGZdlkSnlbrsYEtus/ KTN6KPy X-Spam-Score: -2.0 (--) X-Debbugs-Envelope-To: 25408 Cc: arthur.miller.no1@gmail.com, cpitclaudel@gmail.com, 25408@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: -2.0 (--) > What happens when the line is full-width, i.e. the last character is > flushed all the way to the right edge of the window? Tested with normal continuation lines, truncated line and visual line mode and all sorts of window widths. No problems. > What happens > when you set wrap-prefix to some string value and then turn on > visual-line-mode in a buffer with lines longer than the window width? No special problems found but for one: If the window is narrower than the wrap-prefix, Emacs may hang with all processor cycles it can get. But this is easily reproducible here without setting the new parameter. I use the following recipe: With emacs -Q I evaluate (let ((frame (make-frame))) (find-file-noselect "dnd.el") (set-window-buffer (frame-root-window frame) "dnd.el") (with-current-buffer (window-buffer (frame-root-window frame)) (setq wrap-prefix "-------------") (visual-line-mode 1))) Then I make the new frame as narrow as possible by dragging one of its borders with the mouse. Now alternatively using (1) to move the cursor towards the end of the buffer _and_ (2) to scroll the buffer end out of view sooner or later hangs my Emacs 25.2 here. >> Also, IIUC Cl=C3=A9ment has no intention to make such buffers scrolla= ble, >> editable or focusable. So if necessary we can also forbid such actio= ns. > > ??? This is a general-purpose feature, not something created for a > single use case. And I don't quite see how you can forbid cursor > motion without also forbidding a lot of other useful features. We could treat such frames like tooltip frames. But I currently see no need for such harsh measures. martin From debbugs-submit-bounces@debbugs.gnu.org Mon May 08 10:41:33 2017 Received: (at 25408) by debbugs.gnu.org; 8 May 2017 14:41:33 +0000 Received: from localhost ([127.0.0.1]:34485 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d7jqt-0006VL-7V for submit@debbugs.gnu.org; Mon, 08 May 2017 10:41:31 -0400 Received: from eggs.gnu.org ([208.118.235.92]:47939) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d7jqr-0006V6-FG for 25408@debbugs.gnu.org; Mon, 08 May 2017 10:41:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d7jql-0005Aa-EI for 25408@debbugs.gnu.org; Mon, 08 May 2017 10:41:24 -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,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:52864) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d7jql-0005AU-AM; Mon, 08 May 2017 10:41:23 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1473 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1d7jqk-0007wD-Fp; Mon, 08 May 2017 10:41:22 -0400 Date: Mon, 08 May 2017 17:41:02 +0300 Message-Id: <83r2zzcsxt.fsf@gnu.org> From: Eli Zaretskii To: martin rudalics In-reply-to: <591014AC.5020207@gmx.at> (message from martin rudalics on Mon, 08 May 2017 08:48:12 +0200) Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> <590D7DEC.1@gmx.at> <590D9A4A.6030700@gmx.at> <3472c19d-bfb4-4628-780d-4f0554e5b329@gmail.com> <590EDD92.6080303@gmx.at> <8360hceg9i.fsf@gnu.org> <590F6272.8070301@gmx.at> <831ss0ecur.fsf@gnu.org> <591014AC.5020207@gmx.at> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 25408 Cc: arthur.miller.no1@gmail.com, cpitclaudel@gmail.com, 25408@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: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > Date: Mon, 08 May 2017 08:48:12 +0200 > From: martin rudalics > CC: cpitclaudel@gmail.com, arthur.miller.no1@gmail.com, > 25408@debbugs.gnu.org > > > What happens > > when you set wrap-prefix to some string value and then turn on > > visual-line-mode in a buffer with lines longer than the window width? > > No special problems found but for one: If the window is narrower than > the wrap-prefix, Emacs may hang with all processor cycles it can get. > But this is easily reproducible here without setting the new parameter. This should probably be reported as a separate bug, but if it exists with previous code, it's unrelated to this feature. > >> Also, IIUC Clément has no intention to make such buffers scrollable, > >> editable or focusable. So if necessary we can also forbid such actions. > > > > ??? This is a general-purpose feature, not something created for a > > single use case. And I don't quite see how you can forbid cursor > > motion without also forbidding a lot of other useful features. > > We could treat such frames like tooltip frames. But I currently see no > need for such harsh measures. Agreed. From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 10 11:38:54 2017 Received: (at 25408) by debbugs.gnu.org; 10 Jun 2017 15:38:54 +0000 Received: from localhost ([127.0.0.1]:39065 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dJiTW-00073H-1F for submit@debbugs.gnu.org; Sat, 10 Jun 2017 11:38:54 -0400 Received: from mail-wr0-f195.google.com ([209.85.128.195]:36592) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dJiTU-000734-LK for 25408@debbugs.gnu.org; Sat, 10 Jun 2017 11:38:53 -0400 Received: by mail-wr0-f195.google.com with SMTP id e23so12814385wre.3 for <25408@debbugs.gnu.org>; Sat, 10 Jun 2017 08:38:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=WKmhP6l0FyVFD3JSyihpmNlEgEE0yDMdU8HXj7y5WRU=; b=cgM/ZE/vDYLp/mgrXqlNFQcU+xs0D09ybSHFIwk/SNSDCrQ1wx/ygn4UnrWGB8x1WV A7h5DUs3SO/Z1CHOjcIT5h1qWKUPZU02BMktoVd+HL9bS8qO0ozRfZp9ZAkldOobWGpp NtRx0xqLZkh6kvD61e9P7AgRKY5GpdwGaIxnRpI1P3ITY5cU+mscmEtBq36uT4CsKRyH 13Ux7Aadwahlsl043NBsva6RHT8glg3G6uAOx0fu6MVANy7zHuNrRywQaxBoXIk6jUlt acpAn4gKSHUWl209LOqbFx3KnZVZCuQZWYs5dWN5UDLPSdgGb/D2Di1vdXPhNCOqrvlg 3WYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=WKmhP6l0FyVFD3JSyihpmNlEgEE0yDMdU8HXj7y5WRU=; b=khbmVYcRqOHhIwr86EkuC3PDmtOQmEPsEwVQW2KA4gBlL7U7zkykgq2Lspk9SLWEiC rAzsssV+uhHNS6nMkilxTHQZO97ro5T9qk7o76l6F7eDH3TuLglkkHdsMEJ5FpUk/rBM oPKBWGD7SFA/aafKr8TaUh5b9kv4u2diLG7xajskN3iaG776Q4XVA1sfEGs41d6BOhhn GvB3QtJ50k6faGfALBeK5RZZr/VbTc5Zcca+A50jrNtdtaAApHhLtpanbyf6lQYCbjCO hX+unoACxf0HgQT69JfhhsQBu7NAKnL47WD59M54XWdq1XF4wMVM2/Q5jlRI/17bf3Sw o6Ig== X-Gm-Message-State: AKS2vOxrv5QnzBv8bpk1HlWbOnap7e48xXaXJz5puj72D7tImh1BH4nw qPXBZeaRgvH9UA== X-Received: by 10.28.99.7 with SMTP id x7mr3174441wmb.39.1497109126912; Sat, 10 Jun 2017 08:38:46 -0700 (PDT) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-cca2-bae7-97d4-1425.holly.idiocy.org. [2001:8b0:3f8:8129:cca2:bae7:97d4:1425]) by smtp.gmail.com with ESMTPSA id n92sm7370004wrb.62.2017.06.10.08.38.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 10 Jun 2017 08:38:45 -0700 (PDT) Date: Sat, 10 Jun 2017 16:38:53 +0100 From: Alan Third To: martin rudalics Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) Message-ID: <20170610153853.GA95401@breton.holly.idiocy.org> References: <20170417145613.GA78089@breton.holly.idiocy.org> <58F4E2BD.3090704@gmx.at> <20170417162149.GB78089@breton.holly.idiocy.org> <58F4F954.10709@gmx.at> <20170417185537.GA78689@breton.holly.idiocy.org> <58F7111F.6050004@gmx.at> <20170419143316.GB10595@breton.holly.idiocy.org> <58F789F0.9000608@gmx.at> <20170419170420.GA12166@breton.holly.idiocy.org> <58F7A749.6070906@gmx.at> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <58F7A749.6070906@gmx.at> User-Agent: Mutt/1.7.2 (2016-11-26) X-Spam-Score: -1.0 (-) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?iso-8859-1?Q?Cl=E9ment?= Pit--Claudel , Anders Lindgren 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 (-) I forgot that this bug is still open. Is it waiting for me to finish up the NS stuff? On Wed, Apr 19, 2017 at 08:07:05PM +0200, martin rudalics wrote: > > Oh, I just remembered I’ve not yet done frame-list-z-order. It should > > be easy enough, NSApplication has an orderedWindows function which, I > > think, should return an ordered array of NSWindow objects. > > Please do that. This is done. > > Should I look into no-focus-on-map and no-accept-focus too? > > That would be fine. There's also the 'skip-taskbar' parameter but I > have no idea whether NS allows that and whether NS provides Alt-tabbing. no-accept-focus is done, but no-focus-on-map is harder. I believe I can get a new frame to not be focused on creation, but I don’t see any way to prevent a minimized frame from becoming focused when unminimized. macOS has alt‐tabbing between applications, but also alt‐` switches between application windows. I haven’t yet found a way to disable this. FWIW, no-accept-focus, as implemented, prevents a frame from *ever* accepting focus (although it can still accept input, which is strange!). Rereading your description makes me wonder if I’ve done that wrong and the current behaviour is closer to no-accept-focus, no-focus-on-map and skip-taskbar all being on? I’m not sure I can do it any other way, though. > And please have a look into the Elisp manual: Maybe you find something > worth mentioning (the fact that removing decorations removes the tool > bar should certainly go there). This is done. -- Alan Third From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 11 04:11:12 2017 Received: (at 25408) by debbugs.gnu.org; 11 Jun 2017 08:11:12 +0000 Received: from localhost ([127.0.0.1]:39718 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dJxxo-0004v8-FW for submit@debbugs.gnu.org; Sun, 11 Jun 2017 04:11:12 -0400 Received: from mout.gmx.net ([212.227.17.22]:55510) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dJxxj-0004uq-UF for 25408@debbugs.gnu.org; Sun, 11 Jun 2017 04:11:08 -0400 Received: from [192.168.1.101] ([46.125.249.57]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MaE4a-1dZHur21UG-00JrE9; Sun, 11 Jun 2017 10:10:49 +0200 Message-ID: <593CFB04.8000600@gmx.at> Date: Sun, 11 Jun 2017 10:10:44 +0200 From: martin rudalics MIME-Version: 1.0 To: Alan Third Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) References: <20170417145613.GA78089@breton.holly.idiocy.org> <58F4E2BD.3090704@gmx.at> <20170417162149.GB78089@breton.holly.idiocy.org> <58F4F954.10709@gmx.at> <20170417185537.GA78689@breton.holly.idiocy.org> <58F7111F.6050004@gmx.at> <20170419143316.GB10595@breton.holly.idiocy.org> <58F789F0.9000608@gmx.at> <20170419170420.GA12166@breton.holly.idiocy.org> <58F7A749.6070906@gmx.at> <20170610153853.GA95401@breton.holly.idiocy.org> In-Reply-To: <20170610153853.GA95401@breton.holly.idiocy.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:AScoI3/wmxAP8nPJTry0XOqV60eB8ODfmAZ1PzQcVEpLYDzipFf fChI8g/lWPwURfUGPSJuLOe92phu9CFV8auBBYlbWLhYgO1sob5s5hhZutcUHZTWSLXfRr/ /WP+vxRbUaYC7I38DIHpBbFET7UQE6Lvz8nQLXe6A6/K8KwI7lqthstnHO0vK8TLyTGUDg3 2dWQdlhMsz1zmzMswdwaQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:YB0bAaPDQc4=:YmoJxE0M+d5tNrHrzy/fB1 Vt6r66KtNv+GEEsOrpEyG1eEdEH/eOGH69HBIWLXVE//nksoJ+bN3UM5l3ByUf5/9gsnSsltM 6eO0ebXfFaeUHrOeJZTZ9JtHVdtKhxNiLFBPxaOxb+TDaSkZoZnoV0G+9d/idhoRO4IuDWpx0 y+Py/e52dZruGqlc4QAFqWNMPnr48BiAb8e0Fj1N45RTAXehtOHdv8bqP2yXJNWr1cnNqLRfp LHOsIoivcz2DIwO9/4+YTpX35vMFhASi5GteLpRtqj5MUNqXlgpG0LaXFPu0p4JznTct6nbB/ GF9/vDhB2MKWL0EmP1jOWGJynwIjtZM0P/Z7Qm7gfMsmus2B8WZRx1AdQ6V73IOKzLoB9dLqD azSpRomI0gSMz8Na+yFeE1tt3253RQHNyYxlbd9D39niuNdNxxBZqCawzLnvQ1eOpZ85lc+3G zlMYl0pCoEF6LI73DBL9pB7WOZ0+A2gOODls1ENEuFSYaIDdprtCxjq3MIdaZWOc8TfH9lvp9 l9JccbMriJsSZUiLz9OupcyGEMFzlE/lY+tofun4zlo0MuL1MRC82fB3pPsHhG00NH8ruQ6Br de1RA3x3sQ6iplois1tLUU+1ISOaGmAqeVXPagMB+iNJj8QVSi43tkOPTDparn5xxJbM7hWDt kPBJ0eRxHATZSuJd11/ltFjpoKFoQgsOaTpf9D9z8Rzez1nv6kBRYuOXoScMip3NiQOpN6zrC eLu12cb53N+k4WYbRULQcY9Hflg+yBsVQqqUGzwJAO4F6sRfJlSoEe7E2mtJ1L1ddQB2rgvfP ZL/uaczOXHmd9rapnLGZ8MYKUfrtw== X-Spam-Score: -1.0 (-) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= , Anders Lindgren 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 (-) > I forgot that this bug is still open. Is it waiting for me to finish > up the NS stuff? By no means. You've already accomplished much more than I would have expected. I still want to check in the =E2=80=98no-special-glyphs=E2=80=99= parameter code mentioned elsewhere in this thread. Then I intend to close this bug. >>> Should I look into no-focus-on-map and no-accept-focus too? >> >> That would be fine. There's also the 'skip-taskbar' parameter but I >> have no idea whether NS allows that and whether NS provides Alt-tabbi= ng. > > no-accept-focus is done, but no-focus-on-map is harder. I believe I > can get a new frame to not be focused on creation, but I don=E2=80=99t= see any > way to prevent a minimized frame from becoming focused when > unminimized. Don't worry. Unminimizing is different from mapping. The former works on already mapped frames only, the latter on invisible frames only. "on-map" stands for "on making the frame visible" which might happen some time after the frame was created. Once visible you cannot map the frame until you make it invisible again. Alt-tabbing and unminimizing OTOH work on visible frames only, you cannot really unminimize an invisible window (although the window manager might remember the requested fullscreen status somewhere and later, when it makes the window visible, apply that state). =E2=80=98no-focus-on-map=E2=80=99 behaves well for all platforms and buil= ds I tried so far. It would be nice to have it for NS builds too. So all that is afforded by =E2=80=98no-focus-on-map=E2=80=99 is that, whenever a frame c= hanges from the invisible to the visible state, it does not get focus. > macOS has alt=E2=80=90tabbing between applications, but also alt=E2=80= =90` switches > between application windows. I haven=E2=80=99t yet found a way to disa= ble > this. There's certainly no need to do that. I wouldn't even know how to type alt-` with my keyboard layout. > FWIW, no-accept-focus, as implemented, prevents a frame from *ever* > accepting focus (although it can still accept input, which is > strange!). Rereading your description makes me wonder if I=E2=80=99ve = done > that wrong and the current behaviour is closer to no-accept-focus, > no-focus-on-map and skip-taskbar all being on? =E2=80=98no-accept-focus=E2=80=99 is not overly dear to me. I provided i= t because it works out of the box on GNU Linux. But the workaround I wrote for Windows is very harsh and I don't recommend it. The idea is to provide a behavior similar to tooltips - you cannot focus a tooltip window - with something like "but you can still focus it via C-x 5 o, if you need to". > I=E2=80=99m not sure I can do it any other way, though. Never mind. If it has some very special behavior and you feel like it, add a remark about it in the Elisp documentation. >> And please have a look into the Elisp manual: Maybe you find somethin= g >> worth mentioning (the fact that removing decorations removes the tool= >> bar should certainly go there). This one still stupefies me because it's a deviation from the other builds. It certainly should be documented. Did you document that a fullscreen NS screen doesn't have a toolbar either? BTW, I meanwhile wrote some code to resize and move undecorated frames with the mouse. For this purpose I need some mouse pointers indicating that a frame corner (not a frame edge) can be dragged. Under X I use XC_top_left_corner, XC_top_right_corner, ... On Windows I use the IDC_SIZENWSE and IDC_SIZENESW arrows. I have not found any equivalent for NS. How does NS indicate that the corner of a decorated frame can be dragged when the mouse is over it? Thanks for all your work, martin From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 11 12:35:56 2017 Received: (at 25408) by debbugs.gnu.org; 11 Jun 2017 16:35:56 +0000 Received: from localhost ([127.0.0.1]:41326 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dK5qF-0003Pb-TF for submit@debbugs.gnu.org; Sun, 11 Jun 2017 12:35:56 -0400 Received: from mail-wr0-f170.google.com ([209.85.128.170]:36403) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dK5qD-0003PO-Ru for 25408@debbugs.gnu.org; Sun, 11 Jun 2017 12:35:54 -0400 Received: by mail-wr0-f170.google.com with SMTP id v111so74177537wrc.3 for <25408@debbugs.gnu.org>; Sun, 11 Jun 2017 09:35:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=JYvKCQcBSTzpP/snXxa7hbTxp342nm/8Y93E7QC1cZE=; b=Jsi8EHWwhRudli4j9EhdGN01wC5ZFDPiTzAOAIqU3RIiS0aN612iNgrgDkwwQQ/jxi 8w/hu0rZOc+dKN06m8pdxZg3gR062kaPWRST/U6moNFETwsFQ15Iq6gkn4m3caGB4blR 6dMGma/UOIE7ftUh7k4VB+cwTBMnWUnB6f+7TfdsKZ8q3OInzmUWsV40hSyAbZ85dsu9 yCh25cUFV2tL310A9vjtcbj1fLx2/x45Z6yi72J8W+/frDziDI1u/mxvmOPux/oTo1Kl ddHRkm13jXoRxhyj0Y852xgB6PD5Bz6iJQDieuciLmuhGnUl+KIMjjDSq5/85vapYjL2 OXFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=JYvKCQcBSTzpP/snXxa7hbTxp342nm/8Y93E7QC1cZE=; b=ljC49/CLvVKWkam+270KHsd/QIZBhzoazNk7SDJ6JTxsjD9e81PHIlvJsJqJQXpeeg t6g4bVgvl1OvCYVK3kOK/W3J709WGdXrVhHZnvMthSbtsdJ3XG92M7HuRdwNUwgaJqYG icBfM8cAhzvUE381tmclXMl9YL0vxhRBqktxzFL0HOFn8FemRy5rLEAchwgamXKnjX27 89loyl0YdrJeXo+9I1UN1aFY+eikyH8UHruylaBkRmY16XaPhx8j9dO4DqcyfUlzehVE ZQHUT4KApRx9AVRWD9Rq7rBkPvaPb38IFVbJNRsVzbcg46GmqOatIAZSoo3pKvsRLU1N qi2A== X-Gm-Message-State: AKS2vOz7Lup+ZhITB8k2A5mtVtbNN/Q3kPWFY0sFn443pWO83WurY/jF x91YA+boAutFew== X-Received: by 10.28.203.65 with SMTP id b62mr5387085wmg.9.1497198947659; Sun, 11 Jun 2017 09:35:47 -0700 (PDT) Received: from breton.holly.idiocy.org ([2a02:c7d:6a50:ee00:e424:29e3:c0:8101]) by smtp.gmail.com with ESMTPSA id y17sm9758725wrb.39.2017.06.11.09.35.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 11 Jun 2017 09:35:46 -0700 (PDT) Date: Sun, 11 Jun 2017 17:35:44 +0100 From: Alan Third To: martin rudalics Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) Message-ID: <20170611163544.GA70844@breton.holly.idiocy.org> References: <20170417162149.GB78089@breton.holly.idiocy.org> <58F4F954.10709@gmx.at> <20170417185537.GA78689@breton.holly.idiocy.org> <58F7111F.6050004@gmx.at> <20170419143316.GB10595@breton.holly.idiocy.org> <58F789F0.9000608@gmx.at> <20170419170420.GA12166@breton.holly.idiocy.org> <58F7A749.6070906@gmx.at> <20170610153853.GA95401@breton.holly.idiocy.org> <593CFB04.8000600@gmx.at> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Q68bSM7Ycu6FN28Q" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <593CFB04.8000600@gmx.at> User-Agent: Mutt/1.7.2 (2016-11-26) X-Spam-Score: -1.0 (-) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?iso-8859-1?Q?Cl=E9ment?= Pit--Claudel , Anders Lindgren 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 (-) --Q68bSM7Ycu6FN28Q Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit On Sun, Jun 11, 2017 at 10:10:44AM +0200, martin rudalics wrote: > > no-accept-focus is done, but no-focus-on-map is harder. I believe I > > can get a new frame to not be focused on creation, but I don’t see any > > way to prevent a minimized frame from becoming focused when > > unminimized. > > Don't worry. Unminimizing is different from mapping. The former works > on already mapped frames only, the latter on invisible frames only. > "on-map" stands for "on making the frame visible" which might happen > some time after the frame was created. Once visible you cannot map the > frame until you make it invisible again. > > Alt-tabbing and unminimizing OTOH work on visible frames only, you > cannot really unminimize an invisible window (although the window > manager might remember the requested fullscreen status somewhere and > later, when it makes the window visible, apply that state). > > ‘no-focus-on-map’ behaves well for all platforms and builds I tried so > far. It would be nice to have it for NS builds too. So all that is > afforded by ‘no-focus-on-map’ is that, whenever a frame changes from the > invisible to the visible state, it does not get focus. Your explanation made it much clearer what was required. I believe I’ve got it sorted now. I’ve attached a patch. > >> And please have a look into the Elisp manual: Maybe you find something > >> worth mentioning (the fact that removing decorations removes the tool > >> bar should certainly go there). > > This one still stupefies me because it's a deviation from the other > builds. It certainly should be documented. Did you document that a > fullscreen NS screen doesn't have a toolbar either? It actually does, it’s just hidden, along with the title‐bar and menu‐bar. At least that’s how it works on macOS, I’m unsure how GNUStep deals with full‐screen as it’s using a different mechanism, if it handles it at all. I’m struggling to find where this should be documented. Any ideas which part of the manual covers full‐screen? > BTW, I meanwhile wrote some code to resize and move undecorated frames > with the mouse. For this purpose I need some mouse pointers indicating > that a frame corner (not a frame edge) can be dragged. Under X I use > XC_top_left_corner, XC_top_right_corner, ... On Windows I use the > IDC_SIZENWSE and IDC_SIZENESW arrows. I have not found any equivalent > for NS. How does NS indicate that the corner of a decorated frame can > be dragged when the mouse is over it? macOS uses double‐headed diagonal arrows, but they’re undocumented: https://stackoverflow.com/questions/27242353/cocoa-predefined-resize-mouse-cursor GNUStep doesn’t implement them and doesn’t seem to have any equivalent. On macOS we can actually make undecorated frames resizable quite easily just by including the resizable style mask. GNUstep doesn’t like that, of course. -- Alan Third --Q68bSM7Ycu6FN28Q Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="0001-Add-no-focus-on-map-to-NS-build-bug-25408.patch" >From 72ec4de5701cb3029cb3ae2c4c3262144c4eff76 Mon Sep 17 00:00:00 2001 From: Alan Third Date: Sun, 11 Jun 2017 17:07:28 +0100 Subject: [PATCH] Add no-focus-on-map to NS build (bug#25408) * src/nsfns.m (ns_frame_parm_handlers): Add x_set_no_focus_on_map. (x-create-frame): Check for no-focus-on-map. * src/nsterm.h (x_set_no_focus_on_map): New function. * src/nsterm.m (x_set_no_focus_on_map): New function. (ns_raise_frame): Add parameter for specifying whether to focus the frame. (ns_frame_raise_lower): (x_make_frame_visible): Handle new parameter for ns_raise_frame. --- src/nsfns.m | 4 +++- src/nsterm.h | 2 ++ src/nsterm.m | 33 +++++++++++++++++++++++++++++---- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/src/nsfns.m b/src/nsfns.m index 0c865070fb..dbce279da6 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -980,7 +980,7 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side #endif x_set_parent_frame, 0, /* x_set_skip_taskbar */ - 0, /* x_set_no_focus_on_map */ + x_set_no_focus_on_map, x_set_no_accept_focus, x_set_z_group, /* x_set_z_group */ 0, /* x_set_override_redirect */ @@ -1288,6 +1288,8 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side store_frame_param (f, Qparent_frame, parent_frame); x_default_parameter (f, parms, Qz_group, Qnil, NULL, NULL, RES_TYPE_SYMBOL); + x_default_parameter (f, parms, Qno_focus_on_map, Qnil, + NULL, NULL, RES_TYPE_BOOLEAN); x_default_parameter (f, parms, Qno_accept_focus, Qnil, NULL, NULL, RES_TYPE_BOOLEAN); diff --git a/src/nsterm.h b/src/nsterm.h index f75e3759e4..bed0b92c79 100644 --- a/src/nsterm.h +++ b/src/nsterm.h @@ -1218,6 +1218,8 @@ extern void x_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Object old_value); extern void x_set_parent_frame (struct frame *f, Lisp_Object new_value, Lisp_Object old_value); +extern void x_set_no_focus_on_map (struct frame *f, Lisp_Object new_value, + Lisp_Object old_value); extern void x_set_no_accept_focus (struct frame *f, Lisp_Object new_value, Lisp_Object old_value); extern void x_set_z_group (struct frame *f, Lisp_Object new_value, diff --git a/src/nsterm.m b/src/nsterm.m index 633ca3bf76..b298e4a153 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -1463,7 +1463,7 @@ -(void)remove static void -ns_raise_frame (struct frame *f) +ns_raise_frame (struct frame *f, BOOL make_key) /* -------------------------------------------------------------------------- Bring window to foreground and make it active -------------------------------------------------------------------------- */ @@ -1474,7 +1474,12 @@ -(void)remove view = FRAME_NS_VIEW (f); block_input (); if (FRAME_VISIBLE_P (f)) - [[view window] makeKeyAndOrderFront: NSApp]; + { + if (make_key) + [[view window] makeKeyAndOrderFront: NSApp]; + else + [[view window] orderFront: NSApp]; + } unblock_input (); } @@ -1504,7 +1509,7 @@ -(void)remove NSTRACE ("ns_frame_raise_lower"); if (raise) - ns_raise_frame (f); + ns_raise_frame (f, YES); else ns_lower_frame (f); } @@ -1567,7 +1572,7 @@ -(void)remove EmacsView *view = (EmacsView *)FRAME_NS_VIEW (f); SET_FRAME_VISIBLE (f, 1); - ns_raise_frame (f); + ns_raise_frame (f, ! FRAME_NO_FOCUS_ON_MAP (f)); /* Making a new frame from a fullscreen frame will make the new frame fullscreen also. So skip handleFS as this will print an error. */ @@ -1926,6 +1931,26 @@ so some key presses (TAB) are swallowed by the system. */ } } +/** + * x_set_no_focus_on_map: + * + * Set frame F's `no-focus-on-map' parameter which, if non-nil, means + * that F's window-system window does not want to receive input focus + * when it is mapped. (A frame's window is mapped when the frame is + * displayed for the first time and when the frame changes its state + * from `iconified' or `invisible' to `visible'.) + * + * Some window managers may not honor this parameter. + */ +void +x_set_no_focus_on_map (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) +{ + if (!EQ (new_value, old_value)) + { + FRAME_NO_FOCUS_ON_MAP (f) = !NILP (new_value); + } +} + void x_set_no_accept_focus (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) /* Set frame F's `no-accept-focus' parameter which, if non-nil, hints -- 2.12.0 --Q68bSM7Ycu6FN28Q-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 12 02:09:30 2017 Received: (at 25408) by debbugs.gnu.org; 12 Jun 2017 06:09:30 +0000 Received: from localhost ([127.0.0.1]:41751 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dKIXa-0004WQ-Ea for submit@debbugs.gnu.org; Mon, 12 Jun 2017 02:09:30 -0400 Received: from mout.gmx.net ([212.227.17.21]:59741) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dKIXZ-0004WD-13 for 25408@debbugs.gnu.org; Mon, 12 Jun 2017 02:09:29 -0400 Received: from [192.168.1.100] ([46.125.250.21]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MA9FV-1d9Y6h3EjZ-00BNe5; Mon, 12 Jun 2017 08:09:10 +0200 Message-ID: <593E2FFF.2090806@gmx.at> Date: Mon, 12 Jun 2017 08:09:03 +0200 From: martin rudalics MIME-Version: 1.0 To: Alan Third Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) References: <20170417162149.GB78089@breton.holly.idiocy.org> <58F4F954.10709@gmx.at> <20170417185537.GA78689@breton.holly.idiocy.org> <58F7111F.6050004@gmx.at> <20170419143316.GB10595@breton.holly.idiocy.org> <58F789F0.9000608@gmx.at> <20170419170420.GA12166@breton.holly.idiocy.org> <58F7A749.6070906@gmx.at> <20170610153853.GA95401@breton.holly.idiocy.org> <593CFB04.8000600@gmx.at> <20170611163544.GA70844@breton.holly.idiocy.org> In-Reply-To: <20170611163544.GA70844@breton.holly.idiocy.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:LlAtJqUgN0YZubr7Ji4umvSdIz0gQtq5eLsuf32XaELH0Qn+doT sJ59lxUCuUByid7lMHVHqTkcjpfFwiPkr4JnzR5Dz4U5gmb5ghZYm1mITwHwBE8NFAU2pT3 fT4Q9W+lsXYOuBPN+fIW0EUIEEmvSRdV4YRs5BUSWFjHjVG6zPlP0Q5iTekMp/RceNC8gmq Lj77KUMy9VAmqmznp4TCA== X-UI-Out-Filterresults: notjunk:1;V01:K0:IlPZ1sqpSJ4=:1MP8uchqvglr53/uyx4q/g JF8qjGVhhStI6SwDyvtJ1eO41ghsOzphoi359N7cuypksK7vGSDMn6HuXXmbDCqfeVmP6I54r 8H/Coy6Rvx832tm0FtVOwEq8iCabEM5t/lw3CA1yIbvnd4EIfjOMpSAQdmrsFpWfOH4dwQu/K DXtBC5SnbvYzuifrQ4/+/Su7/Kf/wf96qxRi8qcK1SLZBacIe2PYcAqEQvqbWn4A6eP24nPC+ O/xEfTiSg4/ruPw9zgZPudVqsEHr22caY3d4Ty0Dp7ZxZMAcxCZb2n465Qzv/PZXk1EqB3JI9 yeNpxLrdG31ICBlT4G9fWdNtPpWy4gCEqrc2ovbYMc7WZF6e4ESNSIFaF91l4hYRhjPQ209+7 DLQv3nSpXxVBHQI90OR9Clo9VqSw2nMUZtbiqL8PuwTcf2wuCifJZ9tPuirqZMXSTGWCj9/CK UDTgHccyiKupDuI/U6Q+B8PSvGj5Q0zcsnpAsu3NshpmDGf4VkKi4lOI/+EF9cZ7ga/AHSagc LCuqpBEZMKP/Kq73s2yxXnEcWqjV3YpVvYuLkCE6bn18sjGua9LPzkjGONHwaCjeYnCK49fpG 6hgpd/HZXgIecxmrYyBJaYkXw5G0FPlyj1ZG8+Ddh7kTHG+IvXPWz/1RIgbZBUqro2TDrAXET R1KQbX/IwC+IbR5gDrnsJGjK0oax3notL3oJxJPZyhngVgVU74wubxF1wotoB6a02sTsECF1E e4wxf7ylL92SfXB6DfHVURYf6PjitzVaJoe5VL6S3DwGaretn90nUbRig3oc/3PwHqmaXPmZd 4wBJajL X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= , Anders Lindgren 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: -0.0 (/) > Your explanation made it much clearer what was required. I believe > I=E2=80=99ve got it sorted now. I=E2=80=99ve attached a patch. The second part of this comment /* --------------------------------------------------------------------= ------ Bring window to foreground and make it active --------------------------------------------------------------------= ------ */ seems to be a bit misleading then. > I=E2=80=99m struggling to find where this should be documented. Any id= eas > which part of the manual covers full=E2=80=90screen? The Elisp manual in section 29.4.3.3 Size Parameters. > macOS uses double=E2=80=90headed diagonal arrows, but they=E2=80=99re = undocumented: > > https://stackoverflow.com/questions/27242353/cocoa-predefined-res= ize-mouse-cursor In NSCursor.h I can find these + (id)_windowResizeNorthWestSouthEastCursor; + (id)_windowResizeNorthEastSouthWestCursor; But there I see also + (id)_windowResizeSouthWestCursor; + (id)_windowResizeSouthEastCursor; + (id)_windowResizeNorthWestCursor; + (id)_windowResizeNorthEastCursor; so NS apparently can implement both, the X and the Windows ones. > GNUStep doesn=E2=80=99t implement them and doesn=E2=80=99t seem to hav= e any > equivalent. > > On macOS we can actually make undecorated frames resizable quite > easily just by including the resizable style mask. GNUstep doesn=E2=80= =99t > like that, of course. I added code for manual mouse-moving and -resizing of frames because under X there's apparently no support to do that for child frames. Since the Windows API provides such support I have to find some substitute on X and want to make that as uniform as possible for other platforms as well. martin From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 12 13:59:36 2017 Received: (at 25408) by debbugs.gnu.org; 12 Jun 2017 17:59:36 +0000 Received: from localhost ([127.0.0.1]:43962 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dKTcm-0005VI-J1 for submit@debbugs.gnu.org; Mon, 12 Jun 2017 13:59:36 -0400 Received: from mail-wr0-f182.google.com ([209.85.128.182]:32790) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dKTcl-0005V6-GG for 25408@debbugs.gnu.org; Mon, 12 Jun 2017 13:59:35 -0400 Received: by mail-wr0-f182.google.com with SMTP id v104so104875776wrb.0 for <25408@debbugs.gnu.org>; Mon, 12 Jun 2017 10:59:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=bqDAv1ondYRGbUIzK0XGpUR80FLtStlsFtkWDAHweEk=; b=S16xvZgzrifBWRxKwA6mmtuG294DF0k8Wh77e14M5u1jze30xd8sBK9XFNZ0LX4Mk6 m7+UfusLnT/C9NXUmSyaZV7ygBSnnTKaOJNXMV3LM+TOSNC5E7iprd09gASxGDuSMd6e UtBYS1tkiTzQTCz0/H73ytDk8QT+9Ewh42T+0D4Fo25VXLoLHDhpxlzTMWzpgBYgYf3v vALBeHA5HRqAglY2+RvrokB1kg9wAjVzGNnkvmtk9eSKtT9lxsyfxlyL/eKSbC6uuA2D GJdeJmASuZi+cOAmLtPVJGTeimJ6xRdmCL8s/ffIOop8+YM2XNnIw8K40uHv6sBY9G9K mDsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=bqDAv1ondYRGbUIzK0XGpUR80FLtStlsFtkWDAHweEk=; b=pkGAT6/GihfTJcwQ7SsJd2VfJwxmeusmICjToFgKtWVtbTvAj823InpJgCcGXM+CFR ERGPG8dz6t5+rSeqfBOxYA/sqQsVNvs8euZm7ic83QV46LaVP/QJX9m45kWJ2OP2pE6n uwx9E30/S98pEksEKbm5A0z+41IrALcJgOwzue01qjHTauOOdRacZhlvWl+mPYE/XGFm JHdzl6ORS7QxJmis+zp2daZ16gujy3g/lWb4vAFN4Trzh9COH4mrdGQI5Hoy1PGPK2RD ZrJKtYoDC7vWSxH1ivVnLz6a+sm8MUDMAYT8tzkH2n/hiaXMOJwNo44ICyl8UHq8ZU4U zROg== X-Gm-Message-State: AKS2vOy8RyPHNS43jQ1eiFgKcvpTxDJrTzf9/fgIYdrzFKNIE1YW91DL CSB6Xs7JoOfBdw== X-Received: by 10.223.133.167 with SMTP id 36mr147358wrt.86.1497290368200; Mon, 12 Jun 2017 10:59:28 -0700 (PDT) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-58c7-5550-e6e7-d91f.holly.idiocy.org. [2001:8b0:3f8:8129:58c7:5550:e6e7:d91f]) by smtp.gmail.com with ESMTPSA id z32sm15807497wrc.12.2017.06.12.10.59.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Jun 2017 10:59:27 -0700 (PDT) Date: Mon, 12 Jun 2017 18:59:26 +0100 From: Alan Third To: martin rudalics Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) Message-ID: <20170612175926.GA74044@breton.holly.idiocy.org> References: <20170417185537.GA78689@breton.holly.idiocy.org> <58F7111F.6050004@gmx.at> <20170419143316.GB10595@breton.holly.idiocy.org> <58F789F0.9000608@gmx.at> <20170419170420.GA12166@breton.holly.idiocy.org> <58F7A749.6070906@gmx.at> <20170610153853.GA95401@breton.holly.idiocy.org> <593CFB04.8000600@gmx.at> <20170611163544.GA70844@breton.holly.idiocy.org> <593E2FFF.2090806@gmx.at> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <593E2FFF.2090806@gmx.at> User-Agent: Mutt/1.7.2 (2016-11-26) X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?iso-8859-1?Q?Cl=E9ment?= Pit--Claudel , Anders Lindgren 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 (+) On Mon, Jun 12, 2017 at 08:09:03AM +0200, martin rudalics wrote: > > Your explanation made it much clearer what was required. I believe > > I’ve got it sorted now. I’ve attached a patch. > > The second part of this comment > > /* -------------------------------------------------------------------------- > Bring window to foreground and make it active > -------------------------------------------------------------------------- */ > > seems to be a bit misleading then. Very good point. I’ve fixed it and pushed it to master. Anything else you’d like me to look at here? -- Alan Third From debbugs-submit-bounces@debbugs.gnu.org Tue Jun 13 03:25:16 2017 Received: (at 25408) by debbugs.gnu.org; 13 Jun 2017 07:25:16 +0000 Received: from localhost ([127.0.0.1]:44305 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dKgCS-0003ze-9x for submit@debbugs.gnu.org; Tue, 13 Jun 2017 03:25:16 -0400 Received: from mout.gmx.net ([212.227.17.22]:59128) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dKgCQ-0003zQ-5I for 25408@debbugs.gnu.org; Tue, 13 Jun 2017 03:25:14 -0400 Received: from [192.168.1.100] ([213.162.68.231]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0LswqM-1dztpH0MIs-012VWD; Tue, 13 Jun 2017 09:24:53 +0200 Message-ID: <593F933D.2070803@gmx.at> Date: Tue, 13 Jun 2017 09:24:45 +0200 From: martin rudalics MIME-Version: 1.0 To: Alan Third Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) References: <20170417185537.GA78689@breton.holly.idiocy.org> <58F7111F.6050004@gmx.at> <20170419143316.GB10595@breton.holly.idiocy.org> <58F789F0.9000608@gmx.at> <20170419170420.GA12166@breton.holly.idiocy.org> <58F7A749.6070906@gmx.at> <20170610153853.GA95401@breton.holly.idiocy.org> <593CFB04.8000600@gmx.at> <20170611163544.GA70844@breton.holly.idiocy.org> <593E2FFF.2090806@gmx.at> <20170612175926.GA74044@breton.holly.idiocy.org> In-Reply-To: <20170612175926.GA74044@breton.holly.idiocy.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:VysfpJDWDKOCunpmajtAIOIs6kew9FPeNtbOBle9YXeZM7XUPTM Ff0kNvkxa4RCMAdteUyO4j+rsThTOAGLdVJFvYUUN4Omz80ww2XFXqMlLUcYc+R5VsoG8cu QHeUe+G1GTTBT59LRF4MijzUXDAAvPCfu0dybiOYmvcolOXgHwYWhbGXidDZUkpNE8nTHcF f+51pZV4z2WwHUQ93k/dg== X-UI-Out-Filterresults: notjunk:1;V01:K0:ZsrxSzRQGR0=:91CrW2aZgNWBb/CFsY9buE 6GKkP9vJsrs+cxiLkgrs5T6SfUfD120iLbGSSp9rekUIfZRi0kzq+f7DJ75qyV10d+dmtvpBv rbPvpRjgTcuHzn+2LLIyZ1RNalo6grcUKMJ6Xo59u5mqsHEBQNGtPEn+7dSYb5gRldiJQDlIK zydSOh1WbVp2fUxk6aT8gIfZZPEBs3HxlLP/XpK6txQCIFTSgHBhktJNyOYOn8RFP65RNd75B We3sVgcRkOSNOqSFpUHK6GqcV8lDRsgip5iT/1abArDBm1+nOwuvJk35KT0gsyvJFh7AO4SU/ yQcpCqYJr1vlYSSnz7cx+YdgytGxlelUC44I3nAVpw+GDMkH4h2LvXF2e7IgIvfHA8ye56ndf mEy5+hDqHShdzOFJSd05qzkH2ikOw21vewQ03RxGfyjvV5Ir8WlrogXh1eGhSLN/eF5utUBfG ZjJY6kwxDpvJK3rRGlU6tOPPTqPXaW0JeaKwoNQP+BObcebh1kethQfSKjd5qQJmQdfU7Nju4 dzM0QlAqqH851bQGLNj2ZTgRaSG7djA71DveSgcSewwP5ifvL8iWE9L//Q0tp2yB7ZvhHSqHh O2FsCKdOpF8Vx34YkR0sp8vHN3MldwjrxdZNDD+jh46diLjN5AH+AvKqRUODqjo+Qt/LWG5jl GAyy7pPHgfPOgueTMMZ3LhC+zCS1MiCAUbZDr78XhVjeE/xr+6UvElSgdN3FYh2SqYBwyBQ5f AgiK8iH+mVNsw++NWIgfCG+Rdqovpbr/CETRUbE/zJa4uMU2uu1MDsxJTgzFF/2FLVJCrRxBz tYnRKwtChoA8tyPjywFZxGF9bE3zw== X-Spam-Score: 1.5 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > Very good point. I’ve fixed it and pushed it to master. Thanks. > Anything else you’d like me to look at here? [...] Content analysis details: (1.5 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.5 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [213.162.68.231 listed in dnsbl.sorbs.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [212.227.17.22 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= , Anders Lindgren 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.5 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: > Very good point. I’ve fixed it and pushed it to master. Thanks. > Anything else you’d like me to look at here? [...] Content analysis details: (1.5 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [212.227.17.22 listed in list.dnswl.org] 1.5 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server [213.162.68.231 listed in dnsbl.sorbs.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) > Very good point. I=E2=80=99ve fixed it and pushed it to master. Thanks. > Anything else you=E2=80=99d like me to look at here? For the moment no. I'll get back to you when I push the remaining parts of the child frame code. Thanks again for all the good work, martin From debbugs-submit-bounces@debbugs.gnu.org Thu Jun 22 05:11:39 2017 Received: (at 25408) by debbugs.gnu.org; 22 Jun 2017 09:11:40 +0000 Received: from localhost ([127.0.0.1]:60594 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dNy9L-0003FR-Ou for submit@debbugs.gnu.org; Thu, 22 Jun 2017 05:11:39 -0400 Received: from mout.gmx.net ([212.227.17.21]:51857) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dNy9J-0003FC-3j for 25408@debbugs.gnu.org; Thu, 22 Jun 2017 05:11:37 -0400 Received: from [192.168.1.100] ([212.95.7.52]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0Lqyi7-1e0ccF3GxX-00ebGK; Thu, 22 Jun 2017 11:11:05 +0200 Message-ID: <594B899E.6050105@gmx.at> Date: Thu, 22 Jun 2017 11:10:54 +0200 From: martin rudalics MIME-Version: 1.0 To: Alan Third Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) References: <20170417185537.GA78689@breton.holly.idiocy.org> <58F7111F.6050004@gmx.at> <20170419143316.GB10595@breton.holly.idiocy.org> <58F789F0.9000608@gmx.at> <20170419170420.GA12166@breton.holly.idiocy.org> <58F7A749.6070906@gmx.at> <20170610153853.GA95401@breton.holly.idiocy.org> <593CFB04.8000600@gmx.at> <20170611163544.GA70844@breton.holly.idiocy.org> <593E2FFF.2090806@gmx.at> <20170612175926.GA74044@breton.holly.idiocy.org> In-Reply-To: <20170612175926.GA74044@breton.holly.idiocy.org> Content-Type: multipart/mixed; boundary="------------000202090607030307050103" X-Provags-ID: V03:K0:LjvMNAkFKJ2h7Bs7DC29RRWnOMW34jhK5+zk23xvxHHkxdrR5sg FBwit6pXSqzcWJ3XtRBBB7EplOfNAnJLkhGjWzJlZKebXGCJOrigT2cUoqjEHlGiIwVwv+1 k0f49cUF2QoyZmp9ESUqLO5vZnDm5dXZneAS478Ct3VilMP0SGoJzsfn8BiB9ljKyX+oSNa IdxnuWp6MjKKXnmCxMPjQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:i6z4aXFq6RY=:nJYE+tZ7mRqPRPmh6fYe+c QxPAEQ3IcPHs2RkZ/zhOm1IfXG0kSv2BXxWr4HsoV1nuAzLkmYDOCjGVzZhD6bZ7jZbehi3o+ mqjfPEUvSbqC7hpGqoj/QzFNL+3eNSgXcdf52WW+RfUK3vVI55lGeylneIv9bqHLtnjlnCRev jrtrR5NQCtsvaup9a2PIsQEnNTmDGYbEvXFTGVCU/y841vfC+nLJn4KYGXt3CTcR2A3PrUisJ QaZRkVaUs9C1tJuisqZqcaJdYX1vtdignWi/DwHtqIhYv8gVdHcmfNYYEnCCgqyb06AZ1gukK /ODE3sueEyuKtzQIPvj9xizepJQ/AD8OYGCbABvESSnM9qn1oDtTj3JnbMhHQWK1fvCjQaNN5 eXxIcZ2zG9f3cSp73i6eIZPgdeb1yp14ITiWKLUhWhBruqbelBZr12dXMtAZuxpYg7FMM0WpQ ngad3CNfImWajYfCDGkxgBVM66JRirFMq+7fwP6awnoL85PgpUk1PRLNeJKrAvLDkfNGg83iI Xf7n8n698bhrAV+9MpWV848SSNdloHmn33W5JmKKDpcmxiuMx5xAWQNCX8yfNvBBswHFXizi6 ITcaczhZMYhNxgNLLnUwb3WxsIR2sf87s9rnzpGIrvIe6g7VI/q224QtHwBJ+LQ2poyimfvms MMw1HKkqrWhogIsd4Tzoys+rzvmA0eVWaQ4VohVa9x0pDN5VSXoxcbA6PmpHG5IrU5zeMjjsL lmr+FTAZaom70ZA7jLDr9YFY3f0PSw1w5ZTGaCvXgORNLy7hr3D1Hq9nxyc= X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= , Anders Lindgren 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. --------------000202090607030307050103 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable > Anything else you=E2=80=99d like me to look at here? Attached find the changes I intend to push in the next few days plus a ChangeLog. You will find this particular change there: + f->output_data.ns->left_edge_cursor =3D [NSCursor resizeLeftRightCurso= r]; + f->output_data.ns->top_left_corner_cursor =3D [NSCursor arrowCursor]; + f->output_data.ns->top_edge_cursor =3D [NSCursor resizeUpDownCursor]; + f->output_data.ns->top_right_corner_cursor =3D [NSCursor arrowCursor];= + f->output_data.ns->right_edge_cursor =3D [NSCursor resizeLeftRightCurs= or]; + f->output_data.ns->bottom_right_corner_cursor =3D [NSCursor arrowCurso= r]; + f->output_data.ns->bottom_edge_cursor =3D [NSCursor resizeUpDownCursor= ]; + f->output_data.ns->bottom_left_corner_cursor =3D [NSCursor arrowCursor= ]; It would be nice to have something better on NS for the top_left_corner_cursor, top_right_corner_cursor, bottom_right_corner_cursor and bottom_left_corner_cursor cases. If you want to play around with child frames, try the attached file my-child-frame.el. Any feedback welcome. Thanks in advance, martin --------------000202090607030307050103 Content-Type: text/plain; charset=windows-1252; name="child-frames.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="child-frames.diff" ZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL2Rpc3BsYXkudGV4aSBiL2RvYy9saXNwcmVmL2Rp c3BsYXkudGV4aQppbmRleCA0ZGU1NWZkLi4wNGM1YmEyIDEwMDY0NAotLS0gYS9kb2MvbGlz cHJlZi9kaXNwbGF5LnRleGkKKysrIGIvZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhpCkBAIC0x OTc0LDYgKzE5NzQsNzEgQEAgU2l6ZSBvZiBEaXNwbGF5ZWQgVGV4dAogaGVpZ2h0IG9mIGJv dGgsIGlmIHByZXNlbnQsIGluIHRoZSByZXR1cm4gdmFsdWUuCiBAZW5kIGRlZnVuCgorQGNv ZGV7d2luZG93LXRleHQtcGl4ZWwtc2l6ZX0gdHJlYXRzIHRoZSB0ZXh0IGRpc3BsYXllZCBp biBhIHdpbmRvdyBhcyBhCit3aG9sZSBhbmQgZG9lcyBub3QgY2FyZSBhYm91dCB0aGUgc2l6 ZSBvZiBpbmRpdmlkdWFsIGxpbmVzLiAgVGhlCitmb2xsb3dpbmcgZnVuY3Rpb24gZG9lcy4K KworQGRlZnVuIHdpbmRvdy1saW5lcy1waXhlbC1kaW1lbnNpb25zICZvcHRpb25hbCB3aW5k b3cgZmlyc3QgbGFzdCBib2R5IGludmVyc2UKK1RoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyB0 aGUgcGl4ZWwgZGltZW5zaW9ucyBvZiBlYWNoIGxpbmUgZGlzcGxheWVkIGluCit0aGUgc3Bl Y2lmaWVkIEB2YXJ7d2luZG93fS4gIEl0IGRvZXMgc28gYnkgd2Fsa2luZyBAdmFye3dpbmRv d30ncworY3VycmVudCBnbHlwaCBtYXRyaXgtLS1hIG1hdHJpeCBzdG9yaW5nIHRoZSBnbHlw aCAoQHB4cmVme0dseXBoc30pIG9mCitlYWNoIGJ1ZmZlciBjaGFyYWN0ZXIgY3VycmVudGx5 IGRpc3BsYXllZCBpbiBAdmFye3dpbmRvd30uICBJZgorc3VjY2Vzc2Z1bCwgaXQgcmV0dXJu cyBhIGxpc3Qgb2YgY29ucyBwYWlycyByZXByZXNlbnRpbmcgdGhlIHgtIGFuZAoreS1jb29y ZGluYXRlcyBvZiB0aGUgbG93ZXIgcmlnaHQgY29ybmVyIG9mIHRoZSBsYXN0IGNoYXJhY3Rl ciBvZiBlYWNoCitsaW5lLiAgQ29vcmRpbmF0ZXMgYXJlIG1lYXN1cmVkIGluIHBpeGVscyBm cm9tIGFuIG9yaWdpbiAoMCwgMCkgYXQgdGhlCit0b3AtbGVmdCBjb3JuZXIgb2YgQHZhcnt3 aW5kb3d9LiAgQHZhcnt3aW5kb3d9IG11c3QgYmUgYSBsaXZlIHdpbmRvdyBhbmQKK2RlZmF1 bHRzIHRvIHRoZSBzZWxlY3RlZCBvbmUuCisKK0lmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBA dmFye2ZpcnN0fSBpcyBhbiBpbnRlZ2VyLCBpdCBkZW5vdGVzIHRoZSBpbmRleAorKHN0YXJ0 aW5nIHdpdGggMCkgb2YgdGhlIGZpcnN0IGxpbmUgb2YgQHZhcnt3aW5kb3d9J3MgZ2x5cGgg bWF0cml4IHRvIGJlCityZXR1cm5lZC4gIE5vdGUgdGhhdCBpZiBAdmFye3dpbmRvd30gaGFz IGEgaGVhZGVyIGxpbmUsIHRoZSBsaW5lIHdpdGgKK2luZGV4IDAgaXMgdGhhdCBoZWFkZXIg bGluZS4gIElmIEB2YXJ7Zmlyc3R9IGlzIG5pbCwgdGhlIGZpcnN0IGxpbmUgdG8KK2JlIGNv bnNpZGVyZWQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIG9wdGlvbmFsIGFy Z3VtZW50CitAdmFye2JvZHl9OiBJZiBAdmFye2JvZHl9IGlzIG5vbi1AY29kZXtuaWx9LCB0 aGlzIG1lYW5zIHRvIHN0YXJ0IHdpdGgKK3RoZSBmaXJzdCBsaW5lIG9mIEB2YXJ7d2luZG93 fSdzIGJvZHksIHNraXBwaW5nIGFueSBoZWFkZXIgbGluZSwgaWYKK3ByZXNlbnQuICBPdGhl cndpc2UsIHRoaXMgZnVuY3Rpb24gd2lsbCBzdGFydCB3aXRoIHRoZSBmaXJzdCBsaW5lIG9m CitAdmFye3dpbmRvd30ncyBnbHlwaCBtYXRyaXgsIHBvc3NpYmx5IHRoZSBoZWFkZXIgbGlu ZS4KKworSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IEB2YXJ7bGFzdH0gaXMgYW4gaW50ZWdl ciwgaXQgZGVub3RlcyB0aGUgaW5kZXgKK29mIHRoZSBsYXN0IGxpbmUgb2YgQHZhcnt3aW5k b3d9J3MgZ2x5cGggbWF0cml4IHRoYXQgc2hhbGwgYmUgcmV0dXJuZWQuCitJZiBAdmFye2xh c3R9IGlzIG5pbCwgdGhlIGxhc3QgbGluZSB0byBiZSBjb25zaWRlcmVkIGlzIGRldGVybWlu ZWQgYnkKK3RoZSB2YWx1ZSBvZiBAdmFye2JvZHl9OiBJZiBAdmFye2JvZHl9IGlzIG5vbi1A Y29kZXtuaWx9LCB0aGlzIG1lYW5zIHRvCit1c2UgdGhlIGxhc3QgbGluZSBvZiBAdmFye3dp bmRvd30ncyBib2R5LCBvbWl0dGluZyBAdmFye3dpbmRvd30ncyBtb2RlCitsaW5lLCBpZiBw cmVzZW50LiAgT3RoZXJ3aXNlLCB0aGlzIG1lYW5zIHRvIHVzZSB0aGUgbGFzdCBsaW5lIG9m CitAdmFye3dpbmRvd30gd2hpY2ggbWF5IGJlIHRoZSBtb2RlIGxpbmUuCisKK1RoZSBvcHRp b25hbCBhcmd1bWVudCBAdmFye2ludmVyc2V9LCBpZiBAY29kZXtuaWx9LCBtZWFucyB0aGF0 IHRoZQoreS1waXhlbCB2YWx1ZSByZXR1cm5lZCBmb3IgYW55IGxpbmUgc3BlY2lmaWVzIHRo ZSBkaXN0YW5jZSBpbiBwaXhlbHMKK2Zyb20gdGhlIGxlZnQgZWRnZSAoYm9keSBlZGdlIGlm IEB2YXJ7Ym9keX0gaXMgbm9uLUBjb2Rle25pbH0pIG9mCitAdmFye3dpbmRvd30gdG8gdGhl IHJpZ2h0IGVkZ2Ugb2YgdGhlIGxhc3QgZ2x5cGggb2YgdGhhdCBsaW5lLgorQHZhcntpbnZl cnNlfSBub24tQGNvZGV7bmlsfSBtZWFucyB0aGF0IHRoZSB5LXBpeGVsIHZhbHVlIHJldHVy bmVkIGZvcgorYW55IGxpbmUgc3BlY2lmaWVzIHRoZSBkaXN0YW5jZSBpbiBwaXhlbHMgZnJv bSB0aGUgcmlnaHQgZWRnZSBvZiB0aGUKK2xhc3QgZ2x5cGggb2YgdGhhdCBsaW5lIHRvIHRo ZSByaWdodCBlZGdlIChib2R5IGVkZ2UgaWYgQHZhcntib2R5fSBpcworbm9uLUBjb2Rle25p bH0pIG9mIEB2YXJ7d2luZG93fS4gIFRoaXMgaXMgdXNlZnVsIGZvciBkZXRlcm1pbmluZyB0 aGUKK2Ftb3VudCBvZiBzbGFjayBzcGFjZSBhdCB0aGUgZW5kIG9mIGVhY2ggbGluZS4KKwor VGhlIG9wdGlvbmFsIGFyZ3VtZW50IEB2YXJ7bGVmdH0sIGlmIG5vbi1AY29kZXtuaWx9IG1l YW5zIHRvIHJldHVybiB0aGUKK3gtIGFuZCB5LWNvb3JkaW5hdGVzIG9mIHRoZSBsb3dlciBs ZWZ0IGNvcm5lciBvZiB0aGUgbGVmdG1vc3QgY2hhcmFjdGVyCitvbiBlYWNoIGxpbmUuICBU aGlzIGlzIHRoZSB2YWx1ZSB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciB3aW5kb3dzIHRoYXQK K21vc3RseSBkaXNwbGF5IHRleHQgZnJvbSByaWdodCB0byBsZWZ0LgorCitJZiBAdmFye2xl ZnR9IGlzIG5vbi1AY29kZXtuaWx9IGFuZCBAdmFye2ludmVyc2V9IGlzIEBjb2Rle25pbH0s IHRoaXMKK21lYW5zIHRoYXQgdGhlIHktcGl4ZWwgdmFsdWUgcmV0dXJuZWQgZm9yIGFueSBs aW5lIHNwZWNpZmllcyB0aGUKK2Rpc3RhbmNlIGluIHBpeGVscyBmcm9tIHRoZSBsZWZ0IGVk Z2Ugb2YgdGhlIGxhc3QgKGxlZnRtb3N0KSBnbHlwaCBvZgordGhhdCBsaW5lIHRvIHRoZSBy aWdodCBlZGdlIChib2R5IGVkZ2UgaWYgQHZhcntib2R5fSBpcyBub24tQGNvZGV7bmlsfSkK K29mIEB2YXJ7d2luZG93fS4gIElmIEB2YXJ7bGVmdH0gYW5kIEB2YXJ7aW52ZXJzZX0gYXJl IGJvdGgKK25vbi1AY29kZXtuaWx9LCB0aGUgeS1waXhlbCB2YWx1ZSByZXR1cm5lZCBmb3Ig YW55IGxpbmUgc3BlY2lmaWVzIHRoZQorZGlzdGFuY2UgaW4gcGl4ZWxzIGZyb20gdGhlIGxl ZnQgZWRnZSAoYm9keSBlZGdlIGlmIEB2YXJ7Ym9keX0gaXMKK25vbi1AY29kZXtuaWx9KSBv ZiBAdmFye3dpbmRvd30gdG8gdGhlIGxlZnQgZWRnZSBvZiB0aGUgbGFzdCAobGVmdG1vc3Qp CitnbHlwaCBvZiB0aGF0IGxpbmUuCisKK1RoaXMgZnVuY3Rpb24gcmV0dXJucyBAY29kZXtu aWx9IGlmIHRoZSBjdXJyZW50IGdseXBoIG1hdHJpeCBvZgorQHZhcnt3aW5kb3d9IGlzIG5v dCB1cC10by1kYXRlIHdoaWNoIHVzdWFsbHkgaGFwcGVucyB3aGVuIEVtYWNzIGlzIGJ1c3ks Citmb3IgZXhhbXBsZSwgd2hlbiBwcm9jZXNzaW5nIGEgY29tbWFuZC4gIFRoZSB2YWx1ZSBz aG91bGQgYmUgcmV0cmlldmFibGUKK3Rob3VnaCB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgcnVu IGZyb20gYW4gaWRsZSB0aW1lciB3aXRoIGEgZGVsYXkgb2YgemVybworc2Vjb25kcy4KK0Bl bmQgZGVmdW4KKwogQGRlZnVuIGxpbmUtcGl4ZWwtaGVpZ2h0CiBUaGlzIGZ1bmN0aW9uIHJl dHVybnMgdGhlIGhlaWdodCBpbiBwaXhlbHMgb2YgdGhlIGxpbmUgYXQgcG9pbnQgaW4gdGhl CiBzZWxlY3RlZCB3aW5kb3cuICBUaGUgdmFsdWUgaW5jbHVkZXMgdGhlIGxpbmUgc3BhY2lu ZyBvZiB0aGUgbGluZQpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYvZWxpc3AudGV4aSBiL2Rv Yy9saXNwcmVmL2VsaXNwLnRleGkKaW5kZXggN2NjOTFhOC4uNGJlZGVhMyAxMDA2NDQKLS0t IGEvZG9jL2xpc3ByZWYvZWxpc3AudGV4aQorKysgYi9kb2MvbGlzcHJlZi9lbGlzcC50ZXhp CkBAIC0xMTMwLDYgKzExMzAsOCBAQCBUb3AKICogQnVmZmVyIFBhcmFtZXRlcnM6OiAgICAg ICBXaGljaCBidWZmZXJzIGhhdmUgYmVlbiBvciBzaG91bGQgYmUgc2hvd24uCiAqIEZyYW1l IEludGVyYWN0aW9uIFBhcmFtZXRlcnM6OiAgUGFyYW1ldGVycyBmb3IgaW50ZXJhY3Rpbmcg d2l0aCBvdGhlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVzLgorKiBN b3VzZSBEcmFnZ2luZyBQYXJhbWV0ZXJzOjogIFBhcmFtZXRlcnMgZm9yIHJlc2l6aW5nIGFu ZCBtb3ZpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lcyB3aXRoIHRo ZSBtb3VzZS4KICogTWFuYWdlbWVudCBQYXJhbWV0ZXJzOjogICBDb21tdW5pY2F0aW5nIHdp dGggdGhlIHdpbmRvdyBtYW5hZ2VyLgogKiBDdXJzb3IgUGFyYW1ldGVyczo6ICAgICAgIENv bnRyb2xsaW5nIHRoZSBjdXJzb3IgYXBwZWFyYW5jZS4KICogRm9udCBhbmQgQ29sb3IgUGFy YW1ldGVyczo6IEZvbnRzIGFuZCBjb2xvcnMgZm9yIHRoZSBmcmFtZSB0ZXh0LgpkaWZmIC0t Z2l0IGEvZG9jL2xpc3ByZWYvZnJhbWVzLnRleGkgYi9kb2MvbGlzcHJlZi9mcmFtZXMudGV4 aQppbmRleCA1MDQ2N2QxLi5iNDMwZjdjIDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9mcmFt ZXMudGV4aQorKysgYi9kb2MvbGlzcHJlZi9mcmFtZXMudGV4aQpAQCAtOTc0LDE0ICs5NzQs NyBAQCBGcmFtZSBTaXplCiB0aGUgaGVscCBvZiBhbiBYLXN0eWxlIGdlb21ldHJ5IHNwZWNp ZmljYXRpb24uICBAeHJlZntFbWFjcyBJbnZvY2F0aW9uLCwKIENvbW1hbmQgTGluZSBBcmd1 bWVudHMgZm9yIEVtYWNzIEludm9jYXRpb24sIGVtYWNzLCBUaGUgR05VIEVtYWNzCiBNYW51 YWx9LiAgQmVsb3cgd2UgbGlzdCBzb21lIGZ1bmN0aW9ucyB0byBhY2Nlc3MgYW5kIHNldCB0 aGUgc2l6ZSBvZiBhbgotZXhpc3RpbmcsIHZpc2libGUgZnJhbWUuCi0KLUBkZWZ1biBmcmFt ZS10ZXh0LWhlaWdodCAmb3B0aW9uYWwgZnJhbWUKLUBkZWZ1bnggZnJhbWUtdGV4dC13aWR0 aCAmb3B0aW9uYWwgZnJhbWUKLVRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gdGhlIGhlaWdodCBh bmQgd2lkdGggb2YgdGhlIHRleHQgYXJlYSBvZgotQHZhcntmcmFtZX0gKEBweHJlZntGcmFt ZSBMYXlvdXR9KSwgbWVhc3VyZWQgaW4gcGl4ZWxzLiAgRm9yIGEgdGV4dAotdGVybWluYWws IHRoZSByZXN1bHRzIGFyZSBpbiBjaGFyYWN0ZXJzIHJhdGhlciB0aGFuIHBpeGVscy4KLUBl bmQgZGVmdW4KK2V4aXN0aW5nLCB2aXNpYmxlIGZyYW1lLCBieSBkZWZhdWx0IHRoZSBzZWxl Y3RlZCBvbmUuCgogQGRlZnVuIGZyYW1lLWhlaWdodCAmb3B0aW9uYWwgZnJhbWUKIEBkZWZ1 bnggZnJhbWUtd2lkdGggJm9wdGlvbmFsIGZyYW1lCkBAIC05OTcsMTEgKzk5MCwzMyBAQCBG cmFtZSBTaXplCiBmaXQgaW50byB0aGUgdGV4dCBhcmVhLgogQGVuZCBkZWZ1bgoKLUBkZWZ1 biBmcmFtZS1waXhlbC1oZWlnaHQgJm9wdGlvbmFsIGZyYW1lCi1AZGVmdW54IGZyYW1lLXBp eGVsLXdpZHRoICZvcHRpb25hbCBmcmFtZQotVGhlc2UgZnVuY3Rpb25zIHJldHVybiB0aGUg bmF0aXZlIHdpZHRoIGFuZCBoZWlnaHQsIHNlZSBAcmVme0ZyYW1lCi1MYXlvdXR9KSBvZiBA dmFye2ZyYW1lfSBpbiBwaXhlbHMuICBGb3IgYSB0ZXh0IHRlcm1pbmFsLCB0aGUgcmVzdWx0 cyBhcmUKLWluIGNoYXJhY3RlcnMgcmF0aGVyIHRoYW4gcGl4ZWxzLgorVGhlIGZ1bmN0aW9u cyBmb2xsb3dpbmcgbmV4dCByZXR1cm4gdGhlIHBpeGVsIHdpZHRocyBhbmQgaGVpZ2h0cyBv ZiB0aGUKK25hdGl2ZSwgb3V0ZXIgYW5kIGlubmVyIGZyYW1lIGFuZCB0aGUgdGV4dCBhcmVh IChAcHhyZWZ7RnJhbWUgTGF5b3V0fSkKK29mIGEgZ2l2ZW4gZnJhbWUuICBGb3IgYSB0ZXh0 IHRlcm1pbmFsLCB0aGUgcmVzdWx0cyBhcmUgaW4gY2hhcmFjdGVycworcmF0aGVyIHRoYW4g cGl4ZWxzLgorCitAZGVmdW4gZnJhbWUtb3V0ZXItd2lkdGggJm9wdGlvbmFsIGZyYW1lCitA ZGVmdW54IGZyYW1lLW91dGVyLWhlaWdodCAmb3B0aW9uYWwgZnJhbWUKK1RoZXNlIGZ1bmN0 aW9ucyByZXR1cm4gdGhlIG91dGVyIHdpZHRoIGFuZCBoZWlnaHQgb2YgQHZhcntmcmFtZX0g aW4KK3BpeGVscy4KK0BlbmQgZGVmdW4KKworQGRlZnVuIGZyYW1lLW5hdGl2ZS1oZWlnaHQg Jm9wdGlvbmFsIGZyYW1lCitAZGVmdW54IGZyYW1lLW5hdGl2ZS13aWR0aCAmb3B0aW9uYWwg ZnJhbWUKK1RoZXNlIGZ1bmN0aW9ucyByZXR1cm4gdGhlIG5hdGl2ZSB3aWR0aCBhbmQgaGVp Z2h0IG9mIEB2YXJ7ZnJhbWV9IGluCitwaXhlbHMuCitAZW5kIGRlZnVuCisKK0BkZWZ1biBm cmFtZS1pbm5lci13aWR0aCAmb3B0aW9uYWwgZnJhbWUKK0BkZWZ1bnggZnJhbWUtaW5uZXIt aGVpZ2h0ICZvcHRpb25hbCBmcmFtZQorVGhlc2UgZnVuY3Rpb25zIHJldHVybiB0aGUgaW5u ZXIgd2lkdGggYW5kIGhlaWdodCBvZiBAdmFye2ZyYW1lfSBpbgorcGl4ZWxzLgorQGVuZCBk ZWZ1bgorCitAZGVmdW4gZnJhbWUtdGV4dC13aWR0aCAmb3B0aW9uYWwgZnJhbWUKK0BkZWZ1 bnggZnJhbWUtdGV4dC1oZWlnaHQgJm9wdGlvbmFsIGZyYW1lCitUaGVzZSBmdW5jdGlvbnMg cmV0dXJuIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSB0ZXh0IGFyZWEgb2YKK0B2YXJ7 ZnJhbWV9IGluIHBpeGVscy4KIEBlbmQgZGVmdW4KCiBPbiB3aW5kb3cgc3lzdGVtcyB0aGF0 IHN1cHBvcnQgaXQsIEVtYWNzIHRyaWVzIGJ5IGRlZmF1bHQgdG8gbWFrZSB0aGUKQEAgLTEz NDUsNiArMTM2MCw4IEBAIFdpbmRvdyBGcmFtZSBQYXJhbWV0ZXJzCiAqIEJ1ZmZlciBQYXJh bWV0ZXJzOjogICAgICAgICAgIFdoaWNoIGJ1ZmZlcnMgaGF2ZSBiZWVuIG9yIHNob3VsZCBi ZSBzaG93bi4KICogRnJhbWUgSW50ZXJhY3Rpb24gUGFyYW1ldGVyczo6ICBQYXJhbWV0ZXJz IGZvciBpbnRlcmFjdGluZyB3aXRoIG90aGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZnJhbWVzLgorKiBNb3VzZSBEcmFnZ2luZyBQYXJhbWV0ZXJzOjogICBQYXJh bWV0ZXJzIGZvciByZXNpemluZyBhbmQgbW92aW5nCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZnJhbWVzIHdpdGggdGhlIG1vdXNlLgogKiBNYW5hZ2VtZW50IFBhcmFt ZXRlcnM6OiAgICAgICBDb21tdW5pY2F0aW5nIHdpdGggdGhlIHdpbmRvdyBtYW5hZ2VyLgog KiBDdXJzb3IgUGFyYW1ldGVyczo6ICAgICAgICAgICBDb250cm9sbGluZyB0aGUgY3Vyc29y IGFwcGVhcmFuY2UuCiAqIEZvbnQgYW5kIENvbG9yIFBhcmFtZXRlcnM6OiAgIEZvbnRzIGFu ZCBjb2xvcnMgZm9yIHRoZSBmcmFtZSB0ZXh0LgpAQCAtMTQwNCwxOCArMTQyMSwxOSBAQCBQ b3NpdGlvbiBQYXJhbWV0ZXJzCiBAY2luZGV4IGZyYW1lIHBvc2l0aW9uCgogUGFyYW1ldGVy cyBkZXNjcmliaW5nIHRoZSBYLSBhbmQgWS1vZmZzZXRzIG9mIGEgZnJhbWUgYXJlIGFsd2F5 cwotbWVhc3VyZWQgaW4gcGl4ZWxzLiAgRm9yIG5vcm1hbCwgbm9uLWNoaWxkIGZyYW1lcyB0 aGV5IHNwZWNpZnkgdGhlCi1mcmFtZSdzIGFic29sdXRlIG91dGVyIHBvc2l0aW9uIChAcHhy ZWZ7RnJhbWUgR2VvbWV0cnl9KSB3aXRoIHJlc3BlY3QgdG8KLWl0cyBkaXNwbGF5J3Mgb3Jp Z2luLiAgRm9yIGEgY2hpbGQgZnJhbWUgKEBweHJlZntDaGlsZCBGcmFtZXN9KSB0aGV5Ci1z cGVjaWZ5IHRoZSBmcmFtZSdzIG91dGVyIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBuYXRp dmUgcG9zaXRpb24gb2YKLXRoZSBmcmFtZSdzIHBhcmVudCBmcmFtZS4gIChOb3RlIHRoYXQg bm9uZSBvZiB0aGVzZSBwYXJhbWV0ZXJzIGlzCi1tZWFuaW5nZnVsIG9uIFRUWSBmcmFtZXMu KQorbWVhc3VyZWQgaW4gcGl4ZWxzLiAgRm9yIGEgbm9ybWFsLCBub24tY2hpbGQgZnJhbWUg dGhleSBzcGVjaWZ5IHRoZQorZnJhbWUncyBvdXRlciBwb3NpdGlvbiAoQHB4cmVme0ZyYW1l IEdlb21ldHJ5fSkgcmVsYXRpdmUgdG8gaXRzCitkaXNwbGF5J3Mgb3JpZ2luLiAgRm9yIGEg Y2hpbGQgZnJhbWUgKEBweHJlZntDaGlsZCBGcmFtZXN9KSB0aGV5IHNwZWNpZnkKK3RoZSBm cmFtZSdzIG91dGVyIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBuYXRpdmUgcG9zaXRpb24g b2YgdGhlCitmcmFtZSdzIHBhcmVudCBmcmFtZS4gIChOb3RlIHRoYXQgbm9uZSBvZiB0aGVz ZSBwYXJhbWV0ZXJzIGlzIG1lYW5pbmdmdWwKK29uIFRUWSBmcmFtZXMuKQoKIEB0YWJsZSBA Y29kZQogQHZpbmRleCBsZWZ0LCBhIGZyYW1lIHBhcmFtZXRlcgogQGl0ZW0gbGVmdAogVGhl IHBvc2l0aW9uLCBpbiBwaXhlbHMsIG9mIHRoZSBsZWZ0IG91dGVyIGVkZ2Ugb2YgdGhlIGZy YW1lIHdpdGgKLXJlc3BlY3QgdG8gdGhlIGxlZnQgZWRnZSBvZiB0aGUgZnJhbWUncyBkaXNw bGF5IG9yIHBhcmVudCBmcmFtZS4KK3Jlc3BlY3QgdG8gdGhlIGxlZnQgZWRnZSBvZiB0aGUg ZnJhbWUncyBkaXNwbGF5IG9yIHBhcmVudCBmcmFtZS4gIEl0IGNhbgorYmUgc3BlY2lmaWVk IGluIG9uZSBvZiB0aGUgZm9sbG93aW5nIHdheXMuCgogQHRhYmxlIEBhc2lzCiBAaXRlbSBh biBpbnRlZ2VyCkBAIC0xNDM2LDYgKzE0NTQsMzAgQEAgUG9zaXRpb24gUGFyYW1ldGVycwog cG9zaXRpdmUgb3IgbmVnYXRpdmU7IGEgbmVnYXRpdmUgdmFsdWUgc3BlY2lmaWVzIGEgcG9z aXRpb24gb3V0c2lkZSB0aGUKIHNjcmVlbiBvciBwYXJlbnQgZnJhbWUgb3Igb24gYSBtb25p dG9yIG90aGVyIHRoYW4gdGhlIHByaW1hcnkgb25lIChmb3IKIG11bHRpLW1vbml0b3IgZGlz cGxheXMpLgorCitAY2luZGV4IGxlZnQgcG9zaXRpb24gcmF0aW8KK0BjaW5kZXggdG9wIHBv c2l0aW9uIHJhdGlvCitAaXRlbSBhIGZsb2F0aW5nLXBvaW50IHZhbHVlCitBIGZsb2F0aW5n LXBvaW50IHZhbHVlIGluIHRoZSByYW5nZSAwLjAgdG8gMS4wIHNwZWNpZmllcyB0aGUgbGVm dCBlZGdlJ3MKK29mZnNldCB2aWEgdGhlIEBkZm57bGVmdCBwb3NpdGlvbiByYXRpb30gb2Yg dGhlIGZyYW1lLS0tdGhlIHJhdGlvIG9mIHRoZQorbGVmdCBlZGdlIG9mIGl0cyBvdXRlciBm cmFtZSB0byB0aGUgd2lkdGggb2YgdGhlIGZyYW1lJ3Mgd29ya2FyZWEKKyhAcHhyZWZ7TXVs dGlwbGUgVGVybWluYWxzfSkgb3IgaXRzIHBhcmVudCdzIG5hdGl2ZSBmcmFtZSAoQHB4cmVm e0NoaWxkCitGcmFtZXN9KSBtaW51cyB0aGUgd2lkdGggb2YgdGhlIG91dGVyIGZyYW1lLiAg VGh1cywgYSBsZWZ0IHBvc2l0aW9uCityYXRpbyBvZiAwLjAgZmx1c2hlcyBhIGZyYW1lIHRv IHRoZSBsZWZ0LCBhIHJhdGlvIG9mIDAuNSBjZW50ZXJzIGl0IGFuZAorYSByYXRpbyBvZiAx LjAgZmx1c2hlcyBpdCB0byB0aGUgcmlnaHQgb2YgaXRzIGRpc3BsYXkgb3IgcGFyZW50IGZy YW1lLgorU2ltaWxhcmx5LCB0aGUgQGRmbnt0b3AgcG9zaXRpb24gcmF0aW99IG9mIGEgZnJh bWUgaXMgdGhlIHJhdGlvIG9mIHRoZQorZnJhbWUncyB0b3AgcG9zaXRpb24gdG8gdGhlIGhl aWdodCBvZiBpdHMgd29ya2FyZWEgb3IgcGFyZW50IGZyYW1lIG1pbnVzCit0aGUgaGVpZ2h0 IG9mIHRoZSBmcmFtZS4KKworRW1hY3Mgd2lsbCB0cnkgdG8ga2VlcCB0aGUgcG9zaXRpb24g cmF0aW9zIG9mIGEgY2hpbGQgZnJhbWUgdW5hbHRlcmVkIGlmCit0aGF0IGZyYW1lIGhhcyBh IG5vbi1AY29kZXtuaWx9IEBjb2Rle2tlZXAtcmF0aW99IHBhcmFtZXRlcgorKEBweHJlZntG cmFtZSBJbnRlcmFjdGlvbiBQYXJhbWV0ZXJzfSkgYW5kIGl0cyBwYXJlbnQgZnJhbWUgaXMg cmVzaXplZC4KKworU2luY2UgdGhlIG91dGVyIHNpemUgb2YgYSBmcmFtZSAoQHB4cmVme0Zy YW1lIEdlb21ldHJ5fSkgaXMgdXN1YWxseQordW5hdmFpbGFibGUgYmVmb3JlIGEgZnJhbWUg aGFzIGJlZW4gbWFkZSB2aXNpYmxlLCBpdCBpcyBnZW5lcmFsbHkgbm90CithZHZpc2FibGUg dG8gdXNlIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGVuIGNyZWF0aW5nIGRlY29yYXRlZCBm cmFtZXMuCitGbG9hdGluZy1wb2ludCB2YWx1ZXMgYXJlIG1vcmUgc3VpdGVkIGZvciBlbnN1 cmluZyB0aGF0IGFuICh1bmRlY29yYXRlZCkKK2NoaWxkIGZyYW1lIGlzIHBvc2l0aW9uZWQg bmljZWx5IHdpdGhpbiB0aGUgYXJlYSBvZiBpdHMgcGFyZW50IGZyYW1lLgogQGVuZCB0YWJs ZQoKIFNvbWUgd2luZG93IG1hbmFnZXJzIGlnbm9yZSBwcm9ncmFtLXNwZWNpZmllZCBwb3Np dGlvbnMuICBJZiB5b3Ugd2FudCB0bwpAQCAtMTQ0OCwxNyArMTQ5MCwxOSBAQCBQb3NpdGlv biBQYXJhbWV0ZXJzCiAgIG5pbCAnKCh1c2VyLXBvc2l0aW9uIC4gdCkgKGxlZnQgLiAoKyAt NCkpKSkKIEBlbmQgZXhhbXBsZQoKLUluIGdlbmVyYWwsIGl0IGlzIG5vdCBhIGdvb2QgaWRl YSB0byBzcGVjaWZ5IG5lZ2F0aXZlIG9mZnNldHMgdG8KLXBvc2l0aW9uIGEgZnJhbWUgcmVs YXRpdmUgdG8gdGhlIHJpZ2h0IG9yIGJvdHRvbSBlZGdlIG9mIGl0cyBkaXNwbGF5LgotUG9z aXRpb25pbmcgdGhlIGluaXRpYWwgb3IgYSBuZXcgZnJhbWUgaXMgZWl0aGVyIG5vdCBhY2N1 cmF0ZSAoYmVjYXVzZQotdGhlIHNpemUgb2YgdGhlIG91dGVyIGZyYW1lIGlzIG5vdCB5ZXQg ZnVsbHkga25vd24gYmVmb3JlIHRoZSBmcmFtZSBoYXMKLWJlZW4gbWFkZSB2aXNpYmxlKSBv ciB3aWxsIGNhdXNlIGFkZGl0aW9uYWwgZmxpY2tlciAoaWYgdGhlIGZyYW1lIGlzCi1yZXBv c2l0aW9uZWQgYWZ0ZXIgYmVjb21pbmcgdmlzaWJsZSkuCitJbiBnZW5lcmFsLCBpdCBpcyBu b3QgYSBnb29kIGlkZWEgdG8gcG9zaXRpb24gYSBmcmFtZSByZWxhdGl2ZSB0byB0aGUKK3Jp Z2h0IG9yIGJvdHRvbSBlZGdlIG9mIGl0cyBkaXNwbGF5LiAgUG9zaXRpb25pbmcgdGhlIGlu aXRpYWwgb3IgYSBuZXcKK2ZyYW1lIGlzIGVpdGhlciBub3QgYWNjdXJhdGUgKGJlY2F1c2Ug dGhlIHNpemUgb2YgdGhlIG91dGVyIGZyYW1lIGlzIG5vdAoreWV0IGZ1bGx5IGtub3duIGJl Zm9yZSB0aGUgZnJhbWUgaGFzIGJlZW4gbWFkZSB2aXNpYmxlKSBvciB3aWxsIGNhdXNlCith ZGRpdGlvbmFsIGZsaWNrZXIgKGlmIHRoZSBmcmFtZSBoYXMgdG8gYmUgcmVwb3NpdGlvbmVk IGFmdGVyIGJlY29taW5nCit2aXNpYmxlKS4KCi0gIE5vdGUgYWxzbywgdGhhdCBuZWdhdGl2 ZSBvZmZzZXRzIGFyZSBub3Qgc3RvcmVkIGludGVybmFsbHkgYW5kIGFyZSBub3QKLXJldHVy bmVkIGJ5IHRoZSBmdW5jdGlvbiBAY29kZXtmcmFtZS1wYXJhbWV0ZXJzfS4gIFRoaXMgbWVh bnMgdGhhdCB0aGUKLWRlc2t0b3Agc2F2aW5nIHJvdXRpbmVzIHdpbGwgcmVzdG9yZSB0aGUg ZnJhbWUgZnJvbSB0aGUgcG9zaXRpdmUgb2Zmc2V0cwotb2J0YWluZWQgYnkgdGhhdCBmdW5j dGlvbi4KKyAgTm90ZSBhbHNvLCB0aGF0IHBvc2l0aW9ucyBzcGVjaWZpZWQgcmVsYXRpdmUg dG8gdGhlIHJpZ2h0L2JvdHRvbSBlZGdlCitvZiBhIGRpc3BsYXksIHdvcmthcmVhIG9yIHBh cmVudCBmcmFtZSBhcyB3ZWxsIGFzIGZsb2F0aW5nLXBvaW50IG9mZnNldHMKK2FyZSBzdG9y ZWQgaW50ZXJuYWxseSBhcyBpbnRlZ2VyIG9mZnNldHMgcmVsYXRpdmUgdG8gdGhlIGxlZnQv dG9wIGVkZ2UKK29mIHRoZSBkaXNwbGF5LCB3b3JrYXJlYSBvciBwYXJlbnQgZnJhbWUgZWRn ZS4gIFRoZXkgYXJlIGFsc28gcmV0dXJuZWQKK2FzIHN1Y2ggYnkgZnVuY3Rpb25zIGxpa2Ug QGNvZGV7ZnJhbWUtcGFyYW1ldGVyc30gYW5kIHJlc3RvcmVkIGFzIHN1Y2gKK2J5IHRoZSBk ZXNrdG9wIHNhdmluZyByb3V0aW5lcy4KCiBAdmluZGV4IHRvcCwgYSBmcmFtZSBwYXJhbWV0 ZXIKIEBpdGVtIHRvcApAQCAtMTUyMywyNCArMTU2Nyw2MSBAQCBTaXplIFBhcmFtZXRlcnMK IEBzdWJzdWJzZWN0aW9uIFNpemUgUGFyYW1ldGVycwogQGNpbmRleCB3aW5kb3cgc2l6ZSBv biBkaXNwbGF5CgotICBGcmFtZSBwYXJhbWV0ZXJzIHNwZWNpZnkgZnJhbWUgc2l6ZXMgaW4g Y2hhcmFjdGVyIHVuaXRzLiAgT24KLWdyYXBoaWNhbCBkaXNwbGF5cywgdGhlIEBjb2Rle2Rl ZmF1bHR9IGZhY2UgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsCi1waXhlbCBzaXplcyBvZiB0aGVz ZSBjaGFyYWN0ZXIgdW5pdHMgKEBweHJlZntGYWNlIEF0dHJpYnV0ZXN9KS4KK0ZyYW1lIHBh cmFtZXRlcnMgdXN1YWxseSBzcGVjaWZ5IGZyYW1lIHNpemVzIGluIGNoYXJhY3RlciB1bml0 cy4gIE9uCitncmFwaGljYWwgZGlzcGxheXMsIHRoZSBAY29kZXtkZWZhdWx0fSBmYWNlIGRl dGVybWluZXMgdGhlIGFjdHVhbCBwaXhlbAorc2l6ZXMgb2YgdGhlc2UgY2hhcmFjdGVyIHVu aXRzIChAcHhyZWZ7RmFjZSBBdHRyaWJ1dGVzfSkuCgogQHRhYmxlIEBjb2RlCiBAdmluZGV4 IHdpZHRoLCBhIGZyYW1lIHBhcmFtZXRlcgogQGl0ZW0gd2lkdGgKLVRoZSB3aWR0aCBvZiB0 aGUgZnJhbWUncyB0ZXh0IGFyZWEgKEBweHJlZntGcmFtZSBHZW9tZXRyeX0pLCBpbgotY2hh cmFjdGVycy4gIFRoZSB2YWx1ZSBjYW4gYmUgYWxzbyBhIGNvbnMgY2VsbCBvZiB0aGUgc3lt Ym9sCi1AY29kZXt0ZXh0LXBpeGVsc30gYW5kIGFuIGludGVnZXIgZGVub3RpbmcgdGhlIHdp ZHRoIG9mIHRoZSB0ZXh0IGFyZWEgaW4KLXBpeGVscy4KK1RoaXMgcGFyYW1ldGVyIHNwZWNp ZmllcyB0aGUgd2lkdGggb2YgdGhlIGZyYW1lLiAgSXQgY2FuIGJlIHNwZWNpZmllZCBhcwor aW4gdGhlIGZvbGxvd2luZyB3YXlzOgorCitAdGFibGUgQGFzaXMKK0BpdGVtIGFuIGludGVn ZXIKK0EgcG9zaXRpdmUgaW50ZWdlciBzcGVjaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBmcmFt ZSdzIHRleHQgYXJlYQorKEBweHJlZntGcmFtZSBHZW9tZXRyeX0pIGluIGNoYXJhY3RlcnMu CisKK0BpdGVtIGEgY29ucyBjZWxsCitJZiB0aGlzIGlzIGEgY29ucyBjZWxsIHdpdGggdGhl IHN5bWJvbCBAY29kZXt0ZXh0LXBpeGVsc30gaW4gaXRzCitAc2N7Y2FyfSwgdGhlIEBzY3tj ZHJ9IG9mIHRoYXQgY2VsbCBzcGVjaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBmcmFtZSdzCit0 ZXh0IGFyZWEgaW4gcGl4ZWxzLgorCitAY2luZGV4IGZyYW1lIHdpZHRoIHJhdGlvCitAY2lu ZGV4IGZyYW1lIGhlaWdodCByYXRpbworQGl0ZW0gYSBmbG9hdGluZy1wb2ludCB2YWx1ZQor QSBmbG9hdGluZy1wb2ludCBudW1iZXIgYmV0d2VlbiAwLjAgYW5kIDEuMCBjYW4gYmUgdXNl ZCB0byBzcGVjaWZ5IHRoZQord2lkdGggb2YgYSBmcmFtZSB2aWEgaXRzIEBkZm57d2lkdGgg cmF0aW99LS0tdGhlIHJhdGlvIG9mIGl0cyBvdXRlcgord2lkdGggKEBweHJlZntGcmFtZSBH ZW9tZXRyeX0pIHRvIHRoZSB3aWR0aCBvZiB0aGUgZnJhbWUncyB3b3JrYXJlYQorKEBweHJl ZntNdWx0aXBsZSBUZXJtaW5hbHN9KSBvciBpdHMgcGFyZW50IGZyYW1lJ3MgKEBweHJlZntD aGlsZAorRnJhbWVzfSkgbmF0aXZlIGZyYW1lLiAgVGh1cywgYSB2YWx1ZSBvZiAwLjUgbWFr ZXMgdGhlIGZyYW1lIG9jY3VweSBoYWxmCitvZiB0aGUgd2lkdGggb2YgaXRzIHdvcmthcmVh IG9yIHBhcmVudCBmcmFtZSwgYSB2YWx1ZSBvZiAxLjAgdGhlIGZ1bGwKK3dpZHRoLiAgU2lt aWxhcmx5LCB0aGUgQGRmbntoZWlnaHQgcmF0aW99IG9mIGEgZnJhbWUgaXMgdGhlIHJhdGlv IG9mIGl0cworb3V0ZXIgaGVpZ2h0IHRvIHRoZSBoZWlnaHQgb2YgaXRzIHdvcmthcmVhIG9y IGl0cyBwYXJlbnQncyBuYXRpdmUgZnJhbWUuCisKK0VtYWNzIHdpbGwgdHJ5IHRvIGtlZXAg dGhlIHdpZHRoIGFuZCBoZWlnaHQgcmF0aW8gb2YgYSBjaGlsZCBmcmFtZQordW5hbHRlcmVk IGlmIHRoYXQgZnJhbWUgaGFzIGEgbm9uLUBjb2Rle25pbH0gQGNvZGV7a2VlcC1yYXRpb30g cGFyYW1ldGVyCisoQHB4cmVme0ZyYW1lIEludGVyYWN0aW9uIFBhcmFtZXRlcnN9KSBhbmQg aXRzIHBhcmVudCBmcmFtZSBpcyByZXNpemVkLgorCitTaW5jZSB0aGUgb3V0ZXIgc2l6ZSBv ZiBhIGZyYW1lIGlzIHVzdWFsbHkgdW5hdmFpbGFibGUgYmVmb3JlIGEgZnJhbWUKK2hhcyBi ZWVuIG1hZGUgdmlzaWJsZSwgaXQgaXMgZ2VuZXJhbGx5IG5vdCBhZHZpc2FibGUgdG8gdXNl CitmbG9hdGluZy1wb2ludCB2YWx1ZXMgd2hlbiBjcmVhdGluZyBkZWNvcmF0ZWQgZnJhbWVz LiAgRmxvYXRpbmctcG9pbnQKK3ZhbHVlcyBhcmUgbW9yZSBzdWl0ZWQgdG8gZW5zdXJlIHRo YXQgYSBjaGlsZCBmcmFtZSBhbHdheXMgZml0cyB3aXRoaW4KK3RoZSBhcmVhIG9mIGl0cyBw YXJlbnQgZnJhbWUgYXMsIGZvciBleGFtcGxlLCB3aGVuIGN1c3RvbWl6aW5nCitAY29kZXtk aXNwbGF5LWJ1ZmZlci1hbGlzdH0gKEBweHJlZntDaG9vc2luZyBXaW5kb3d9KSB2aWEKK0Bj b2Rle2Rpc3BsYXktYnVmZmVyLWluLWNoaWxkLWZyYW1lfS4KK0BlbmQgdGFibGUKKworUmVn YXJkbGVzcyBvZiBob3cgdGhpcyBwYXJhbWV0ZXIgd2FzIHNwZWNpZmllZCwgZnVuY3Rpb25z IHJlcG9ydGluZyB0aGUKK3ZhbHVlIG9mIHRoaXMgcGFyYW1ldGVyIGxpa2UgQGNvZGV7ZnJh bWUtcGFyYW1ldGVyc30gYWx3YXlzIHJlcG9ydCB0aGUKK3dpZHRoIG9mIHRoZSBmcmFtZSdz IHRleHQgYXJlYSBpbiBjaGFyYWN0ZXJzIGFzIGFuIGludGVnZXIgcm91bmRlZCwgaWYKK25l Y2Vzc2FyeSwgdG8gYSBtdWx0aXBsZSBvZiB0aGUgZnJhbWUncyBkZWZhdWx0IGNoYXJhY3Rl ciB3aWR0aC4gIFRoYXQKK3ZhbHVlIGlzIGFsc28gdXNlZCBieSB0aGUgZGVza3RvcCBzYXZp bmcgcm91dGluZXMuCgogQHZpbmRleCBoZWlnaHQsIGEgZnJhbWUgcGFyYW1ldGVyCiBAaXRl bSBoZWlnaHQKLVRoZSBoZWlnaHQgb2YgdGhlIGZyYW1lJ3MgdGV4dCBhcmVhIChAcHhyZWZ7 RnJhbWUgR2VvbWV0cnl9KSwgaW4KLWNoYXJhY3RlcnMuICBUaGUgdmFsdWUgY2FuIGJlIGFs c28gYSBjb25zIGNlbGwgb2YgdGhlIHN5bWJvbAotQGNvZGV7dGV4dC1waXhlbHN9IGFuZCBh biBpbnRlZ2VyIGRlbm90aW5nIHRoZSBoZWlnaHQgb2YgdGhlIHRleHQgYXJlYQotaW4gcGl4 ZWxzLgorVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBoZWlnaHQgb2YgdGhlIGZyYW1l LiAgSXQgd29ya3MganVzdCBsaWtlCitAY29kZXt3aWR0aH0sIGV4Y2VwdCB2ZXJ0aWNhbGx5 IGluc3RlYWQgb2YgaG9yaXpvbnRhbGx5LgoKIEB2aW5kZXggdXNlci1zaXplLCBhIGZyYW1l IHBhcmFtZXRlcgogQGl0ZW0gdXNlci1zaXplCkBAIC0xNTUxLDI1ICsxNjMyLDI1IEBAIFNp emUgUGFyYW1ldGVycwoKIEB2aW5kZXggbWluLXdpZHRoLCBhIGZyYW1lIHBhcmFtZXRlcgog QGl0ZW0gbWluLXdpZHRoCi1UaGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG1pbmltdW0g bmF0aXZlIHdpZHRoIG9mIHRoZSBmcmFtZQotKEBweHJlZntGcmFtZSBHZW9tZXRyeX0pLCBp biBjaGFyYWN0ZXJzLiAgTm9ybWFsbHksIHRoZSBmdW5jdGlvbnMgdGhhdAorVGhpcyBwYXJh bWV0ZXIgc3BlY2lmaWVzIHRoZSBtaW5pbXVtIG5hdGl2ZSB3aWR0aCAoQHB4cmVme0ZyYW1l CitHZW9tZXRyeX0pIG9mIHRoZSBmcmFtZSwgaW4gY2hhcmFjdGVycy4gIE5vcm1hbGx5LCB0 aGUgZnVuY3Rpb25zIHRoYXQKIGVzdGFibGlzaCBhIGZyYW1lJ3MgaW5pdGlhbCB3aWR0aCBv ciByZXNpemUgYSBmcmFtZSBob3Jpem9udGFsbHkgbWFrZQogc3VyZSB0aGF0IGFsbCB0aGUg ZnJhbWUncyB3aW5kb3dzLCB2ZXJ0aWNhbCBzY3JvbGwgYmFycywgZnJpbmdlcywKIG1hcmdp bnMgYW5kIHZlcnRpY2FsIGRpdmlkZXJzIGNhbiBiZSBkaXNwbGF5ZWQuICBUaGlzIHBhcmFt ZXRlciwgaWYKIG5vbi1AY29kZXtuaWx9IGFsbG93cyB0byBtYWtlIGEgZnJhbWUgbmFycm93 ZXIgdGhhbiB0aGF0IHdpdGggdGhlCi1jb25zZXF1ZW5jZSB0aGF0IGFueSBjb21wb25lbnRz IHRoYXQgZG8gbm90IGZpdCBvbiB0aGUgZnJhbWUgd2lsbCBiZQotY2xpcHBlZCBieSB0aGUg d2luZG93IG1hbmFnZXIuCitjb25zZXF1ZW5jZSB0aGF0IGFueSBjb21wb25lbnRzIHRoYXQg ZG8gbm90IGZpdCB3aWxsIGJlIGNsaXBwZWQgYnkgdGhlCit3aW5kb3cgbWFuYWdlci4KCiBA dmluZGV4IG1pbi1oZWlnaHQsIGEgZnJhbWUgcGFyYW1ldGVyCiBAaXRlbSBtaW4taGVpZ2h0 Ci1UaGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG1pbmltdW0gaGVpZ2h0IG9mIHRoZSBu YXRpdmUgKEBweHJlZntGcmFtZQotR2VvbWV0cnl9KSwgaW4gY2hhcmFjdGVycy4gIE5vcm1h bGx5LCB0aGUgZnVuY3Rpb25zIHRoYXQgZXN0YWJsaXNoIGEKLWZyYW1lJ3MgaW5pdGlhbCBz aXplIG9yIHJlc2l6ZSBhIGZyYW1lIG1ha2Ugc3VyZSB0aGF0IGFsbCB0aGUgZnJhbWUncwot d2luZG93cywgaG9yaXpvbnRhbCBzY3JvbGwgYmFycyBhbmQgZGl2aWRlcnMsIG1vZGUgYW5k IGhlYWRlciBsaW5lcywgdGhlCi1lY2hvIGFyZWEgYW5kIHRoZSBpbnRlcm5hbCBtZW51IGFu ZCB0b29sIGJhciBjYW4gYmUgZGlzcGxheWVkLiAgVGhpcwotcGFyYW1ldGVyLCBpZiBub24t QGNvZGV7bmlsfSBhbGxvd3MgdG8gbWFrZSBhIGZyYW1lIHNtYWxsZXIgdGhhbiB0aGF0Ci13 aXRoIHRoZSBjb25zZXF1ZW5jZSB0aGF0IGFueSBjb21wb25lbnRzIHRoYXQgZG8gbm90IGZp dCBvbiB0aGUgZnJhbWUKLXdpbGwgYmUgY2xpcHBlZCBieSB0aGUgd2luZG93LXN5c3RlbSBv ciB3aW5kb3cgbWFuYWdlci4KK1RoaXMgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgbWluaW11 bSBuYXRpdmUgaGVpZ2h0IChAcHhyZWZ7RnJhbWUKK0dlb21ldHJ5fSkgb2YgdGhlIGZyYW1l LCBpbiBjaGFyYWN0ZXJzLiAgTm9ybWFsbHksIHRoZSBmdW5jdGlvbnMgdGhhdAorZXN0YWJs aXNoIGEgZnJhbWUncyBpbml0aWFsIHNpemUgb3IgcmVzaXplIGEgZnJhbWUgbWFrZSBzdXJl IHRoYXQgYWxsCit0aGUgZnJhbWUncyB3aW5kb3dzLCBob3Jpem9udGFsIHNjcm9sbCBiYXJz IGFuZCBkaXZpZGVycywgbW9kZSBhbmQKK2hlYWRlciBsaW5lcywgdGhlIGVjaG8gYXJlYSBh bmQgdGhlIGludGVybmFsIG1lbnUgYW5kIHRvb2wgYmFyIGNhbiBiZQorZGlzcGxheWVkLiAg VGhpcyBwYXJhbWV0ZXIsIGlmIG5vbi1AY29kZXtuaWx9IGFsbG93cyB0byBtYWtlIGEgZnJh bWUKK3NtYWxsZXIgdGhhbiB0aGF0IHdpdGggdGhlIGNvbnNlcXVlbmNlIHRoYXQgYW55IGNv bXBvbmVudHMgdGhhdCBkbyBub3QKK2ZpdCB3aWxsIGJlIGNsaXBwZWQgYnkgdGhlIHdpbmRv dyBtYW5hZ2VyLgoKIEBjaW5kZXggZnVsbGJvdGggZnJhbWVzCiBAY2luZGV4IGZ1bGxoZWln aHQgZnJhbWVzCkBAIC0xNjIzLDYgKzE3MDQsMjAgQEAgU2l6ZSBQYXJhbWV0ZXJzCgogVGhp cyB3aWxsIGdpdmUgYSBuZXcgZnJhbWUgZnVsbCBoZWlnaHQgYWZ0ZXIgdHlwaW5nIGluIGl0 IEBrZXl7RjExfSBmb3IKIHRoZSBmaXJzdCB0aW1lLgorCitAdmluZGV4IGZpdC1mcmFtZS10 by1idWZmZXItbWFyZ2lucywgYSBmcmFtZSBwYXJhbWV0ZXIKK0BpdGVtIGZpdC1mcmFtZS10 by1idWZmZXItbWFyZ2lucworVGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHRvIG92ZXJyaWRlIHRo ZSB2YWx1ZSBvZiB0aGUgb3B0aW9uCitAY29kZXtmaXQtZnJhbWUtdG8tYnVmZmVyLW1hcmdp bnN9IHdoZW4gZml0dGluZyB0aGlzIGZyYW1lIHRvIHRoZSBidWZmZXIKK29mIGl0cyByb290 IHdpbmRvdyB3aXRoIEBjb2Rle2ZpdC1mcmFtZS10by1idWZmZXJ9IChAcHhyZWZ7UmVzaXpp bmcKK1dpbmRvd3N9KS4KKworQHZpbmRleCBmaXQtZnJhbWUtdG8tYnVmZmVyLXNpemVzLCBh IGZyYW1lIHBhcmFtZXRlcgorQGl0ZW0gZml0LWZyYW1lLXRvLWJ1ZmZlci1zaXplcworVGhp cyBwYXJhbWV0ZXIgYWxsb3dzIHRvIG92ZXJyaWRlIHRoZSB2YWx1ZSBvZiB0aGUgb3B0aW9u CitAY29kZXtmaXQtZnJhbWUtdG8tYnVmZmVyLXNpemVzfSB3aGVuIGZpdHRpbmcgdGhpcyBm cmFtZSB0byB0aGUgYnVmZmVyCitvZiBpdHMgcm9vdCB3aW5kb3cgd2l0aCBAY29kZXtmaXQt ZnJhbWUtdG8tYnVmZmVyfSAoQHB4cmVme1Jlc2l6aW5nCitXaW5kb3dzfSkuCiBAZW5kIHRh YmxlCgoKQEAgLTE2NDYsOSArMTc0MSw5IEBAIExheW91dCBQYXJhbWV0ZXJzCgogQHZpbmRl eCB2ZXJ0aWNhbC1zY3JvbGwtYmFycywgYSBmcmFtZSBwYXJhbWV0ZXIKIEBpdGVtIHZlcnRp Y2FsLXNjcm9sbC1iYXJzCi1XaGV0aGVyIHRoZSBmcmFtZSBoYXMgc2Nyb2xsIGJhcnMgZm9y IHZlcnRpY2FsIHNjcm9sbGluZywgYW5kIHdoaWNoIHNpZGUKLW9mIHRoZSBmcmFtZSB0aGV5 IHNob3VsZCBiZSBvbi4gIFRoZSBwb3NzaWJsZSB2YWx1ZXMgYXJlIEBjb2Rle2xlZnR9LAot QGNvZGV7cmlnaHR9LCBhbmQgQGNvZGV7bmlsfSBmb3Igbm8gc2Nyb2xsIGJhcnMuCitXaGV0 aGVyIHRoZSBmcmFtZSBoYXMgc2Nyb2xsIGJhcnMgKEBweHJlZntTY3JvbGwgQmFyc30pIGZv ciB2ZXJ0aWNhbAorc2Nyb2xsaW5nLCBhbmQgd2hpY2ggc2lkZSBvZiB0aGUgZnJhbWUgdGhl eSBzaG91bGQgYmUgb24uICBUaGUgcG9zc2libGUKK3ZhbHVlcyBhcmUgQGNvZGV7bGVmdH0s IEBjb2Rle3JpZ2h0fSwgYW5kIEBjb2Rle25pbH0gZm9yIG5vIHNjcm9sbCBiYXJzLgoKIEB2 aW5kZXggaG9yaXpvbnRhbC1zY3JvbGwtYmFycywgYSBmcmFtZSBwYXJhbWV0ZXIKIEBpdGVt IGhvcml6b250YWwtc2Nyb2xsLWJhcnMKQEAgLTE2OTIsMzAgKzE3ODcsNDAgQEAgTGF5b3V0 IFBhcmFtZXRlcnMKCiBAdmluZGV4IG1lbnUtYmFyLWxpbmVzIGZyYW1lIHBhcmFtZXRlcgog QGl0ZW0gbWVudS1iYXItbGluZXMKLVRoZSBudW1iZXIgb2YgbGluZXMgdG8gYWxsb2NhdGUg YXQgdGhlIHRvcCBvZiB0aGUgZnJhbWUgZm9yIGEgbWVudSBiYXIuCi1UaGUgZGVmYXVsdCBp cyBvbmUgaWYgTWVudSBCYXIgbW9kZSBpcyBlbmFibGVkIGFuZCB6ZXJvIG90aGVyd2lzZS4K LUB4cmVme01lbnUgQmFycywsLGVtYWNzLCBUaGUgR05VIEVtYWNzIE1hbnVhbH0uICBGb3Ig YW4gZXh0ZXJuYWwgbWVudQotYmFyLCB0aGlzIHZhbHVlIHJlbWFpbnMgdW5jaGFuZ2VkIGV2 ZW4gd2hlbiB0aGUgbWVudSBiYXIgd3JhcHMgdG8gdHdvIG9yCi1tb3JlIGxpbmVzLiAgSW4g dGhhdCBjYXNlLCB0aGUgQGNvZGV7bWVudS1iYXItc2l6ZX0gdmFsdWUgcmV0dXJuZWQgYnkK LUBjb2Rle2ZyYW1lLWdlb21ldHJ5fSAoQHB4cmVme0ZyYW1lIEdlb21ldHJ5fSkgYWxsb3dz IHRvIGRlcml2ZSB3aGV0aGVyCi10aGUgbWVudSBiYXIgYWN0dWFsbHkgb2NjdXBpZXMgb25l IG9yIG1vcmUgbGluZXMuCitUaGUgbnVtYmVyIG9mIGxpbmVzIHRvIGFsbG9jYXRlIGF0IHRo ZSB0b3Agb2YgdGhlIGZyYW1lIGZvciBhIG1lbnUgYmFyCisoQHB4cmVme01lbnUgQmFyfSku ICBUaGUgZGVmYXVsdCBpcyBvbmUgaWYgTWVudSBCYXIgbW9kZSBpcyBlbmFibGVkIGFuZAor emVybyBvdGhlcndpc2UuICBAeHJlZntNZW51IEJhcnMsLCxlbWFjcywgVGhlIEdOVSBFbWFj cyBNYW51YWx9LiAgRm9yIGFuCitleHRlcm5hbCBtZW51IGJhciAoQHB4cmVme0ZyYW1lIExh eW91dH0pLCB0aGlzIHZhbHVlIHJlbWFpbnMgdW5jaGFuZ2VkCitldmVuIHdoZW4gdGhlIG1l bnUgYmFyIHdyYXBzIHRvIHR3byBvciBtb3JlIGxpbmVzLiAgSW4gdGhhdCBjYXNlLCB0aGUK K0Bjb2Rle21lbnUtYmFyLXNpemV9IHZhbHVlIHJldHVybmVkIGJ5IEBjb2Rle2ZyYW1lLWdl b21ldHJ5fQorKEBweHJlZntGcmFtZSBHZW9tZXRyeX0pIGFsbG93cyB0byBkZXJpdmUgd2hl dGhlciB0aGUgbWVudSBiYXIgYWN0dWFsbHkKK29jY3VwaWVzIG9uZSBvciBtb3JlIGxpbmVz LgoKIEB2aW5kZXggdG9vbC1iYXItbGluZXMgZnJhbWUgcGFyYW1ldGVyCiBAaXRlbSB0b29s LWJhci1saW5lcwotVGhlIG51bWJlciBvZiBsaW5lcyB0byB1c2UgZm9yIHRoZSB0b29sIGJh ci4gIFRoZSBkZWZhdWx0IGlzIG9uZSBpZiBUb29sCi1CYXIgbW9kZSBpcyBlbmFibGVkIGFu ZCB6ZXJvIG90aGVyd2lzZS4gIEB4cmVme1Rvb2wgQmFycywsLGVtYWNzLCBUaGUKLUdOVSBF bWFjcyBNYW51YWx9LiAgVGhpcyB2YWx1ZSBtYXkgY2hhbmdlIHdoZW5ldmVyIHRoZSB0b29s IGJhciB3cmFwcy4KK1RoZSBudW1iZXIgb2YgbGluZXMgdG8gdXNlIGZvciB0aGUgdG9vbCBi YXIgKEBweHJlZntUb29sIEJhcn0pLiAgVGhlCitkZWZhdWx0IGlzIG9uZSBpZiBUb29sIEJh ciBtb2RlIGlzIGVuYWJsZWQgYW5kIHplcm8gb3RoZXJ3aXNlLgorQHhyZWZ7VG9vbCBCYXJz LCwsZW1hY3MsIFRoZSBHTlUgRW1hY3MgTWFudWFsfS4gIFRoaXMgdmFsdWUgbWF5IGNoYW5n ZQord2hlbmV2ZXIgdGhlIHRvb2wgYmFyIHdyYXBzIChAcHhyZWZ7RnJhbWUgTGF5b3V0fSku CgogQHZpbmRleCB0b29sLWJhci1wb3NpdGlvbiBmcmFtZSBwYXJhbWV0ZXIKIEBpdGVtIHRv b2wtYmFyLXBvc2l0aW9uCi1UaGUgcG9zaXRpb24gb2YgdGhlIHRvb2wgYmFyLiAgQ3VycmVu dGx5IG9ubHkgZm9yIHRoZSBHVEsgdG9vbCBiYXIuCi1WYWx1ZSBjYW4gYmUgb25lIG9mIEBj b2Rle3RvcH0sIEBjb2Rle2JvdHRvbX0gQGNvZGV7bGVmdH0sIEBjb2Rle3JpZ2h0fS4KLVRo ZSBkZWZhdWx0IGlzIEBjb2Rle3RvcH0uCitUaGUgcG9zaXRpb24gb2YgdGhlIHRvb2wgYmFy IHdoZW4gRW1hY3Mgd2FzIGJ1aWx0IHdpdGggR1RLKy4gIEl0cyB2YWx1ZQorY2FuIGJlIG9u ZSBvZiBAY29kZXt0b3B9LCBAY29kZXtib3R0b219IEBjb2Rle2xlZnR9LCBAY29kZXtyaWdo dH0uICBUaGUKK2RlZmF1bHQgaXMgQGNvZGV7dG9wfS4KCiBAdmluZGV4IGxpbmUtc3BhY2lu ZywgYSBmcmFtZSBwYXJhbWV0ZXIKIEBpdGVtIGxpbmUtc3BhY2luZwogQWRkaXRpb25hbCBz cGFjZSB0byBsZWF2ZSBiZWxvdyBlYWNoIHRleHQgbGluZSwgaW4gcGl4ZWxzIChhIHBvc2l0 aXZlCiBpbnRlZ2VyKS4gIEB4cmVme0xpbmUgSGVpZ2h0fSwgZm9yIG1vcmUgaW5mb3JtYXRp b24uCisKK0B2aW5kZXggbm8tc3BlY2lhbC1nbHlwaHMsIGEgZnJhbWUgcGFyYW1ldGVyCitA aXRlbSBuby1zcGVjaWFsLWdseXBocworSWYgdGhpcyBpcyBub24tQGNvZGV7bmlsfSwgaXQg c3VwcHJlc3NlcyB0aGUgZGlzcGxheSBvZiBhbnkgdHJ1bmNhdGlvbgorYW5kIGNvbnRpbnVh dGlvbiBnbHlwaHMgKEBweHJlZntUcnVuY2F0aW9ufSkgZm9yIGFsbCBidWZmZXJzIGRpc3Bs YXllZAorYnkgdGhpcyBmcmFtZS4gIFRoaXMgaXMgdXNlZnVsIHRvIGVsaW1pbmF0ZSBzdWNo IGdseXBocyB3aGVuIGZpdHRpbmcgYQorZnJhbWUgdG8gaXRzIGJ1ZmZlciB2aWEgQGNvZGV7 Zml0LWZyYW1lLXRvLWJ1ZmZlcn0gKEBweHJlZntSZXNpemluZworV2luZG93c30pLgogQGVu ZCB0YWJsZQoKCkBAIC0xNzgxLDE1ICsxODg2LDExNSBAQCBGcmFtZSBJbnRlcmFjdGlvbiBQ YXJhbWV0ZXJzCiBAaXRlbSBtb3VzZS13aGVlbC1mcmFtZQogSWYgbm9uLUBjb2Rle25pbH0s IHRoaXMgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgZnJhbWUgd2hvc2Ugd2luZG93cyB3aWxs CiBiZSBzY3JvbGxlZCB3aGVuZXZlciB0aGUgbW91c2Ugd2hlZWwgaXMgc2Nyb2xsZWQgd2l0 aCB0aGUgbW91c2UgcG9pbnRlcgotaG92ZXJpbmcgb3ZlciB0aGlzIGZyYW1lIChAcHhyZWZ7 TW91c2UgQ29tbWFuZHMsLCwgZW1hY3MsIFRoZSBHTlUgRW1hY3MKLU1hbnVhbH0pLgoraG92 ZXJpbmcgb3ZlciB0aGlzIGZyYW1lLCBzZWUgQHJlZntNb3VzZSBDb21tYW5kcywsLCBlbWFj cywgVGhlIEdOVQorRW1hY3MgTWFudWFsfS4KCiBAdmluZGV4IG5vLW90aGVyLWZyYW1lLCBh IGZyYW1lIHBhcmFtZXRlcgogQGl0ZW0gbm8tb3RoZXItZnJhbWUKIElmIHRoaXMgaXMgbm9u LUBjb2Rle25pbH0sIHRoZW4gdGhpcyBmcmFtZSBpcyBub3QgZWxpZ2libGUgYXMgY2FuZGlk YXRlCiBmb3IgdGhlIGZ1bmN0aW9ucyBAY29kZXtuZXh0LWZyYW1lfSwgQGNvZGV7cHJldmlv dXMtZnJhbWV9Ci0oQHB4cmVme0ZpbmRpbmcgQWxsIEZyYW1lc30pIGFuZCBAY29kZXtvdGhl ci1mcmFtZX0gKEBweHJlZntGcmFtZQotQ29tbWFuZHMsLCwgZW1hY3MsIFRoZSBHTlUgRW1h Y3MgTWFudWFsfSkuCisoQHB4cmVme0ZpbmRpbmcgQWxsIEZyYW1lc30pIGFuZCBAY29kZXtv dGhlci1mcmFtZX0sIHNlZSBAcmVme0ZyYW1lCitDb21tYW5kcywsLCBlbWFjcywgVGhlIEdO VSBFbWFjcyBNYW51YWx9LgorCitAdmluZGV4IGF1dG8taGlkZS1mdW5jdGlvbiwgYSBmcmFt ZSBwYXJhbWV0ZXIKK0BpdGVtIGF1dG8taGlkZS1mdW5jdGlvbgorV2hlbiB0aGlzIHBhcmFt ZXRlciBzcGVjaWZpZXMgYSBmdW5jdGlvbiwgdGhhdCBmdW5jdGlvbiB3aWxsIGJlIGNhbGxl ZAoraW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5IHRoZSB2YXJpYWJsZQor QGNvZGV7ZnJhbWUtYXV0by1oaWRlLWZ1bmN0aW9ufSB3aGVuIHF1aXR0aW5nIHRoZSBmcmFt ZSdzIG9ubHkgd2luZG93CisoQHB4cmVme1F1aXR0aW5nIFdpbmRvd3N9KSBhbmQgdGhlcmUg YXJlIG90aGVyIGZyYW1lcyBsZWZ0LgorCitAdmluZGV4IG1pbmlidWZmZXItZXhpdCwgYSBm cmFtZSBwYXJhbWV0ZXIKK0BpdGVtIG1pbmlidWZmZXItZXhpdAorV2hlbiB0aGlzIHBhcmFt ZXRlciBpcyBub24tQGNvZGV7bmlsfSwgRW1hY3Mgd2lsbCBieSBkZWZhdWx0IG1ha2UgdGhp cworZnJhbWUgaW52aXNpYmxlIHdoZW5ldmVyIHRoZSBtaW5pYnVmZmVyIChAcHhyZWZ7TWlu aWJ1ZmZlcnN9KSBpcyBleGl0ZWQuCitBbHRlcm5hdGl2ZWx5LCBpdCBjYW4gc3BlY2lmeSB0 aGUgZnVuY3Rpb25zIEBjb2Rle2ljb25pZnktZnJhbWV9IGFuZAorQGNvZGV7ZGVsZXRlLWZy YW1lfS4gIFRoaXMgcGFyYW1ldGVyIGlzIHVzZWZ1bCB0byBtYWtlIGEgY2hpbGQgZnJhbWUK K2Rpc2FwcGVhciBhdXRvbWF0aWNhbGx5IChzaW1pbGFyIHRvIGhvdyBFbWFjcyBkZWFscyB3 aXRoIGEgd2luZG93KSB3aGVuCitleGl0aW5nIHRoZSBtaW5pYnVmZmVyLgorCitAdmluZGV4 IGtlZXAtcmF0aW8sIGEgZnJhbWUgcGFyYW1ldGVyCitAaXRlbSBrZWVwLXJhdGlvCitUaGlz IHBhcmFtZXRlciBpcyBjdXJyZW50bHkgbWVhbmluZ2Z1bCBmb3IgY2hpbGQgZnJhbWVzIChA cHhyZWZ7Q2hpbGQKK0ZyYW1lc30pIG9ubHkuICBJZiBpdCBpcyBub24tQGNvZGV7bmlsfSwg dGhlbiBFbWFjcyB3aWxsIHRyeSB0byBrZWVwIHRoZQorZnJhbWUncyBzaXplICh3aWR0aCBh bmQgaGVpZ2h0KSByYXRpb3MgKEBweHJlZntTaXplIFBhcmFtZXRlcnN9KSBhcyB3ZWxsCith cyBpdHMgbGVmdCBhbmQgcmlnaHQgcG9zaXRpb24gcmF0aW9zIChAcHhyZWZ7UG9zaXRpb24g UGFyYW1ldGVyc30pCit1bmFsdGVyZWQgd2hlbmV2ZXIgaXRzIHBhcmVudCBmcmFtZSBpcyBy ZXNpemVkLgorCitJZiB0aGUgdmFsdWUgb2YgdGhpcyBwYXJhbWV0ZXIgaXMgQGNvZGV7bmls fSwgdGhlIGZyYW1lJ3MgcG9zaXRpb24gYW5kCitzaXplIHJlbWFpbiB1bmFsdGVyZWQgd2hl biB0aGUgcGFyZW50IGZyYW1lIGlzIHJlc2l6ZWQsIHNvIHRoZSBwb3NpdGlvbgorYW5kIHNp emUgcmF0aW9zIG1heSBjaGFuZ2UuICBJZiB0aGUgdmFsdWUgb2YgdGhpcyBwYXJhbWV0ZXIg aXMgQGNvZGV7dH0sCitFbWFjcyB3aWxsIHRyeSB0byBwcmVzZXJ2ZSB0aGUgZnJhbWUncyBz aXplIGFuZCBwb3NpdGlvbiByYXRpb3MsIGhlbmNlCit0aGUgZnJhbWUncyBzaXplIGFuZCBw b3NpdGlvbiByZWxhdGl2ZSB0byBpdHMgcGFyZW50IGZyYW1lIG1heSBjaGFuZ2UuCisKK01v cmUgaW5kaXZpZHVhbCBjb250cm9sIGlzIHBvc3NpYmxlIGJ5IHVzaW5nIGEgY29ucyBjZWxs OiBJbiB0aGF0IGNhc2UKK3RoZSBmcmFtZSdzIHdpZHRoIHJhdGlvIGlzIHByZXNlcnZlZCBp ZiB0aGUgQHNje2Nhcn0gb2YgdGhlIGNlbGwgaXMKK2VpdGhlciBAY29kZXt0fSBvciBAY29k ZXt3aWR0aC1vbmx5fS4gIFRoZSBoZWlnaHQgcmF0aW8gaXMgcHJlc2VydmVkIGlmCit0aGUg QHNje2Nhcn0gb2YgdGhlIGNlbGwgaXMgZWl0aGVyIEBjb2Rle3R9IG9yIEBjb2Rle2hlaWdo dC1vbmx5fS4gIFRoZQorbGVmdCBwb3NpdGlvbiByYXRpbyBpcyBwcmVzZXJ2ZWQgaWYgdGhl IEBzY3tjZHJ9IG9mIHRoZSBjZWxsIGlzIGVpdGhlcgorQGNvZGV7dH0gb3IgQGNvZGV7bGVm dC1vbmx5fS4gIFRoZSB0b3AgcG9zaXRpb24gcmF0aW8gaXMgcHJlc2VydmVkIGlmCit0aGUg QHNje2Nkcn0gb2YgdGhlIGNlbGwgaXMgZWl0aGVyIEBjb2Rle3R9IG9yIEBjb2Rle3RvcC1v bmx5fS4KK0BlbmQgdGFibGUKKworCitAbm9kZSBNb3VzZSBEcmFnZ2luZyBQYXJhbWV0ZXJz CitAc3Vic3Vic2VjdGlvbiBNb3VzZSBEcmFnZ2luZyBQYXJhbWV0ZXJzCitAY2luZGV4IG1v dXNlIGRyYWdnaW5nIHBhcmFtZXRlcnMKK0BjaW5kZXggcGFyYW1ldGVycyBmb3IgcmVzaXpp bmcgZnJhbWVzIHdpdGggdGhlIG1vdXNlCitAY2luZGV4IHBhcmFtZXRlcnMgZm9yIG1vdmlu ZyBmcmFtZXMgd2l0aCB0aGUgbW91c2UKKworVGhlIHBhcmFtZXRlcnMgZGVzY3JpYmVkIGJl bG93IHByb3ZpZGUgc3VwcG9ydCBmb3IgcmVzaXppbmcgYSBmcmFtZSBieQorZHJhZ2dpbmcg aXRzIGludGVybmFsIGJvcmRlcnMgd2l0aCB0aGUgbW91c2UuICBUaGV5IGFsc28gYWxsb3cg bW92aW5nIGEKK2ZyYW1lIHdpdGggdGhlIG1vdXNlIGJ5IGRyYWdnaW5nIHRoZSBoZWFkZXIg bGluZSBvZiBpdHMgdG9wbW9zdCBvciB0aGUKK21vZGUgbGluZSBvZiBpdHMgYm90dG9tbW9z dCB3aW5kb3cuCisKK1RoZXNlIHBhcmFtZXRlcnMgYXJlIG1vc3RseSB1c2VmdWwgZm9yIGNo aWxkIGZyYW1lcyAoQHB4cmVme0NoaWxkCitGcmFtZXN9KSB0aGF0IGNvbWUgd2l0aG91dCB3 aW5kb3cgbWFuYWdlciBkZWNvcmF0aW9ucy4gIElmIG5lY2Vzc2FyeSwKK3RoZXkgY2FuIGJl IHVzZWQgZm9yIHVuZGVjb3JhdGVkIHRvcC1sZXZlbCBmcmFtZXMgYXMgd2VsbC4KKworQHRh YmxlIEBjb2RlCitAdmluZGV4IGRyYWctaW50ZXJuYWwtYm9yZGVyLCBhIGZyYW1lIHBhcmFt ZXRlcgorQGl0ZW0gZHJhZy1pbnRlcm5hbC1ib3JkZXIKK0lmIG5vbi1AY29kZXtuaWx9LCB0 aGUgZnJhbWUgY2FuIGJlIHJlc2l6ZWQgYnkgZHJhZ2dpbmcgaXRzIGludGVybmFsCitib3Jk ZXJzLCBpZiBwcmVzZW50LCB3aXRoIHRoZSBtb3VzZS4KKworQHZpbmRleCBkcmFnLXdpdGgt aGVhZGVyLWxpbmUsIGEgZnJhbWUgcGFyYW1ldGVyCitAaXRlbSBkcmFnLXdpdGgtaGVhZGVy LWxpbmUKK0lmIG5vbi1AY29kZXtuaWx9LCB0aGUgZnJhbWUgY2FuIGJlIG1vdmVkIHdpdGgg dGhlIG1vdXNlIGJ5IGRyYWdnaW5nIHRoZQoraGVhZGVyIGxpbmUgb2YgaXRzIHRvcG1vc3Qg d2luZG93LgorCitAdmluZGV4IGRyYWctd2l0aC1tb2RlLWxpbmUsIGEgZnJhbWUgcGFyYW1l dGVyCitAaXRlbSBkcmFnLXdpdGgtbW9kZS1saW5lCitJZiBub24tQGNvZGV7bmlsfSwgdGhl IGZyYW1lIGNhbiBiZSBtb3ZlZCB3aXRoIHRoZSBtb3VzZSBieSBkcmFnZ2luZyB0aGUKK21v ZGUgbGluZSBvZiBpdHMgYm90dG9tbW9zdCB3aW5kb3cuICBOb3RlIHRoYXQgc3VjaCBhIGZy YW1lIGlzIG5vdAorYWxsb3dlZCB0byBoYXZlIGl0cyBvd24gbWluaWJ1ZmZlciB3aW5kb3cu CisKK0B2aW5kZXggc25hcC13aWR0aCwgYSBmcmFtZSBwYXJhbWV0ZXIKK0BpdGVtIHNuYXAt d2lkdGgKK0EgZnJhbWUgdGhhdCBpcyBtb3ZlZCB3aXRoIHRoZSBtb3VzZSB3aWxsIGBgc25h cCcnIGF0IHRoZSBib3JkZXIocykgb2YKK3RoZSBkaXNwbGF5IG9yIGl0cyBwYXJlbnQgZnJh bWUgd2hlbmV2ZXIgaXQgaXMgZHJhZ2dlZCBhcyBuZWFyIHRvIHN1Y2gKK2FuIGVkZ2UgYXMg dGhlIG51bWJlciBvZiBwaXhlbHMgc3BlY2lmaWVkIGJ5IHRoaXMgcGFyYW1ldGVyLgorCitA dmluZGV4IHRvcC12aXNpYmxlLCBhIGZyYW1lIHBhcmFtZXRlcgorQGl0ZW0gdG9wLXZpc2li bGUKK0lmIHRoaXMgcGFyYW1ldGVyIGlzIGEgbnVtYmVyLCB0aGUgdG9wIGVkZ2Ugb2YgdGhl IGZyYW1lIG5ldmVyIGFwcGVhcnMKK2Fib3ZlIHRoZSB0b3AgZWRnZSBvZiBpdHMgZGlzcGxh eSBvciBwYXJlbnQgZnJhbWUuICBNb3Jlb3ZlciwgYXMgbWFueQorcGl4ZWxzIG9mIHRoZSBm cmFtZSBhcyBzcGVjaWZpZWQgYnkgdGhhdCBudW1iZXIgd2lsbCByZW1haW4gdmlzaWJsZSB3 aGVuCit0aGUgZnJhbWUgaXMgbW92ZWQgYWdhaW5zdCBhbnkgb2YgdGhlIHJlbWFpbmluZyBl ZGdlcyBvZiBpdHMgZGlzcGxheSBvcgorcGFyZW50IGZyYW1lLiAgU2V0dGluZyB0aGlzIHBh cmFtZXRlciBpcyB1c2VmdWwgdG8gZ3VhcmQgYWdhaW5zdAorZHJhZ2dpbmcgYSBjaGlsZCBm cmFtZSB3aXRoIGEgbm9uLUBjb2Rle25pbH0KK0Bjb2Rle2RyYWctd2l0aC1oZWFkZXItbGlu ZX0gcGFyYW1ldGVyIGNvbXBsZXRlbHkgb3V0IG9mIHRoZSBhcmVhCitvZiBpdHMgcGFyZW50 IGZyYW1lLgorCitAdmluZGV4IGJvdHRvbS12aXNpYmxlLCBhIGZyYW1lIHBhcmFtZXRlcgor QGl0ZW0gYm90dG9tLXZpc2libGUKK0lmIHRoaXMgcGFyYW1ldGVyIGlzIGEgbnVtYmVyLCB0 aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGZyYW1lIG5ldmVyCithcHBlYXJzIGJlbG93IHRoZSBi b3R0b20gZWRnZSBvZiBpdHMgZGlzcGxheSBvciBwYXJlbnQgZnJhbWUuICBNb3Jlb3ZlciwK K2FzIG1hbnkgcGl4ZWxzIG9mIHRoZSBmcmFtZSBhcyBzcGVjaWZpZWQgYnkgdGhhdCBudW1i ZXIgd2lsbCByZW1haW4KK3Zpc2libGUgd2hlbiB0aGUgZnJhbWUgaXMgbW92ZWQgYWdhaW5z dCBhbnkgb2YgdGhlIHJlbWFpbmluZyBlZGdlcyBvZgoraXRzIGRpc3BsYXkgb3IgcGFyZW50 IGZyYW1lLiAgU2V0dGluZyB0aGlzIHBhcmFtZXRlciBpcyB1c2VmdWwgdG8gZ3VhcmQKK2Fn YWluc3QgZHJhZ2dpbmcgYSBjaGlsZCBmcmFtZSB3aXRoIGEgbm9uLUBjb2Rle25pbH0KK0Bj b2Rle2RyYWctd2l0aC1tb2RlLWxpbmV9IHBhcmFtZXRlciBjb21wbGV0ZWx5IG91dCBvZiB0 aGUgYXJlYSBvZgoraXRzIHBhcmVudCBmcmFtZS4KIEBlbmQgdGFibGUKCgpAQCAtMTc5Nyw5 ICsyMDAyLDkgQEAgTWFuYWdlbWVudCBQYXJhbWV0ZXJzCiBAc3Vic3Vic2VjdGlvbiBXaW5k b3cgTWFuYWdlbWVudCBQYXJhbWV0ZXJzCiBAY2luZGV4IHdpbmRvdyBtYW5hZ2VyIGludGVy YWN0aW9uLCBhbmQgZnJhbWUgcGFyYW1ldGVycwoKLSAgVGhlIGZvbGxvd2luZyBmcmFtZSBw YXJhbWV0ZXJzIGNvbnRyb2wgdmFyaW91cyBhc3BlY3RzIG9mIHRoZQotZnJhbWUncyBpbnRl cmFjdGlvbiB3aXRoIHRoZSB3aW5kb3cgbWFuYWdlci4gIFRoZXkgaGF2ZSBubyBlZmZlY3Qg b24KLXRleHQgdGVybWluYWxzLgorICBUaGUgZm9sbG93aW5nIGZyYW1lIHBhcmFtZXRlcnMg Y29udHJvbCB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIGZyYW1lJ3MKK2ludGVyYWN0aW9uIHdp dGggdGhlIHdpbmRvdyBtYW5hZ2VyIG9yIHdpbmRvdyBzeXN0ZW0uICBUaGV5IGhhdmUgbm8K K2VmZmVjdCBvbiB0ZXh0IHRlcm1pbmFscy4KCiBAdGFibGUgQGNvZGUKIEB2aW5kZXggdmlz aWJpbGl0eSwgYSBmcmFtZSBwYXJhbWV0ZXIKQEAgLTE5MDgsNyArMjExMyw4IEBAIE1hbmFn ZW1lbnQgUGFyYW1ldGVycwogZnJhbWUtLS1hIGZyYW1lIG5vdCBoYW5kbGVkIGJ5IHdpbmRv dyBtYW5hZ2VycyB1bmRlciBYLiAgT3ZlcnJpZGUKIHJlZGlyZWN0IGZyYW1lcyBoYXZlIG5v IHdpbmRvdyBtYW5hZ2VyIGRlY29yYXRpb25zLCBjYW4gYmUgcG9zaXRpb25lZAogYW5kIHJl c2l6ZWQgb25seSB2aWEgRW1hY3MnIHBvc2l0aW9uaW5nIGFuZCByZXNpemluZyBmdW5jdGlv bnMgYW5kIGFyZQotdXN1YWxseSBkcmF3biBvbiB0b3Agb2YgYWxsIG90aGVyIGZyYW1lcy4K K3VzdWFsbHkgZHJhd24gb24gdG9wIG9mIGFsbCBvdGhlciBmcmFtZXMuICBTZXR0aW5nIHRo aXMgcGFyYW1ldGVyIGhhcworbm8gZWZmZWN0IG9uIE1TLVdpbmRvd3MuCgogQGlnbm9yZQog QHZpbmRleCBwYXJlbnQtaWQsIGEgZnJhbWUgcGFyYW1ldGVyCkBAIC0yMDgwLDYgKzIyODYs OSBAQCBGb250IGFuZCBDb2xvciBQYXJhbWV0ZXJzCiBAY29kZXsoQHZhcnthY3RpdmV9IC4g QHZhcntpbmFjdGl2ZX0pfSwgd2hlcmUgQHZhcnthY3RpdmV9IGlzIHRoZQogb3BhY2l0eSBv ZiB0aGUgZnJhbWUgd2hlbiBpdCBpcyBzZWxlY3RlZCwgYW5kIEB2YXJ7aW5hY3RpdmV9IGlz IHRoZQogb3BhY2l0eSB3aGVuIGl0IGlzIG5vdCBzZWxlY3RlZC4KKworU29tZSB3aW5kb3cg c3lzdGVtcyBkbyBub3Qgc3VwcG9ydCB0aGUgQGNvZGV7YWxwaGF9IHBhcmFtZXRlciBmb3Ig Y2hpbGQKK2ZyYW1lcyAoQHB4cmVme0NoaWxkIEZyYW1lc30pLgogQGVuZCB0YWJsZQoKIFRo ZSBmb2xsb3dpbmcgZnJhbWUgcGFyYW1ldGVycyBhcmUgc2VtaS1vYnNvbGV0ZSBpbiB0aGF0 IHRoZXkgYXJlCkBAIC0yODI0LDU3ICszMDMzLDc4IEBAIENoaWxkIEZyYW1lcwogQGNpbmRl eCBjaGlsZCBmcmFtZXMKIEBjaW5kZXggcGFyZW50IGZyYW1lcwoKLU9uIHNvbWUgd2luZG93 LXN5c3RlbXMgdGhlIEBjb2Rle3BhcmVudC1mcmFtZX0gcGFyYW1ldGVyIChAcHhyZWZ7RnJh bWUKLUludGVyYWN0aW9uIFBhcmFtZXRlcnN9KSBjYW4gYmUgdXNlZCB0byBtYWtlIGEgZnJh bWUgYSBjaGlsZCBvZiB0aGUKLWZyYW1lIHNwZWNpZmllZCBieSB0aGF0IHBhcmFtZXRlci4g IFRoZSBmcmFtZSBzcGVjaWZpZWQgYnkgdGhhdAotcGFyYW1ldGVyIHdpbGwgdGhlbiBiZSB0 aGUgZnJhbWUncyBwYXJlbnQgZnJhbWUgYXMgbG9uZyBhcyB0aGUgcGFyYW1ldGVyCi1pcyBu b3QgY2hhbmdlZCBvciByZXNldC4gIFRlY2huaWNhbGx5LCB0aGlzIG1ha2VzIHRoZSBjaGls ZCBmcmFtZSdzCi13aW5kb3ctc3lzdGVtIHdpbmRvdyBhIGNoaWxkIHdpbmRvdyBvZiB0aGUg cGFyZW50IGZyYW1lJ3Mgd2luZG93LXN5c3RlbQotd2luZG93LgorQ2hpbGQgZnJhbWVzIGFy ZSBvYmplY3RzIGhhbGZ3YXkgYmV0d2VlbiB3aW5kb3dzIChAcHhyZWZ7V2luZG93c30pIGFu ZAorYGBub3JtYWwnJyBmcmFtZXMuICBMaWtlIHdpbmRvd3MsIHRoZXkgYXJlIGF0dGFjaGVk IHRvIGFuIG93bmluZyBmcmFtZS4KK1VubGlrZSB3aW5kb3dzLCB0aGV5IG1heSBvdmVybGFw IGVhY2ggb3RoZXItLS1jaGFuZ2luZyB0aGUgc2l6ZSBvcgorcG9zaXRpb24gb2Ygb25lIGNo aWxkIGZyYW1lIGRvZXMgbm90IGNoYW5nZSB0aGUgc2l6ZSBvciBwb3NpdGlvbiBvZiBhbnkK K29mIGl0cyBzaWJsaW5nIGNoaWxkIGZyYW1lcy4KKworICBCeSBkZXNpZ24sIG9wZXJhdGlv bnMgdG8gbWFrZSBvciBtb2RpZnkgY2hpbGQgZnJhbWVzIGFyZSBpbXBsZW1lbnRlZAord2l0 aCB0aGUgaGVscCBvZiBmcmFtZSBwYXJhbWV0ZXJzIChAcHhyZWZ7RnJhbWUgUGFyYW1ldGVy c30pIHdpdGhvdXQgYW55CitzcGVjaWFsaXplZCBmdW5jdGlvbnMgb3IgY3VzdG9taXphYmxl IHZhcmlhYmxlcy4gIE5vdGUgdGhhdCBjaGlsZCBmcmFtZXMKK2FyZSBtZWFuaW5nZnVsIG9u IGdyYXBoaWNhbCB0ZXJtaW5hbHMgb25seS4KKworICBUbyBjcmVhdGUgYSBuZXcgY2hpbGQg ZnJhbWUgb3IgdG8gY29udmVydCBhIG5vcm1hbCBmcmFtZSBpbnRvIGEgY2hpbGQKK2ZyYW1l LCBzZXQgdGhhdCBmcmFtZSdzIEBjb2Rle3BhcmVudC1mcmFtZX0gcGFyYW1ldGVyIChAcHhy ZWZ7RnJhbWUKK0ludGVyYWN0aW9uIFBhcmFtZXRlcnN9KSB0byB0aGF0IG9mIGFuIGFscmVh ZHkgZXhpc3RpbmcgZnJhbWUuICBUaGUKK2ZyYW1lIHNwZWNpZmllZCBieSB0aGF0IHBhcmFt ZXRlciB3aWxsIHRoZW4gYmUgdGhlIGZyYW1lJ3MgcGFyZW50IGZyYW1lCithcyBsb25nIGFz IHRoZSBwYXJhbWV0ZXIgaXMgbm90IGNoYW5nZWQgb3IgcmVzZXQuICBUZWNobmljYWxseSwg dGhpcworbWFrZXMgdGhlIGNoaWxkIGZyYW1lJ3Mgd2luZG93LXN5c3RlbSB3aW5kb3cgYSBj aGlsZCB3aW5kb3cgb2YgdGhlCitwYXJlbnQgZnJhbWUncyB3aW5kb3ctc3lzdGVtIHdpbmRv dy4KCitAY2luZGV4IHRvcC1sZXZlbCBmcmFtZQorQGNpbmRleCByZXBhcmVudCBmcmFtZQor QGNpbmRleCBuZXN0IGZyYW1lCiAgIFRoZSBAY29kZXtwYXJlbnQtZnJhbWV9IHBhcmFtZXRl ciBjYW4gYmUgY2hhbmdlZCBhdCBhbnkgdGltZS4gIFNldHRpbmcKLWl0IHRvIGFub3RoZXIg ZnJhbWUgYGByZXBhcmVudHMnJyB0aGUgY2hpbGQgZnJhbWUuICBTZXR0aW5nIGl0IHRvCi1h bm90aGVyIGNoaWxkIGZyYW1lIG1ha2VzIHRoZSBmcmFtZSBhIGBgbmVzdGVkJycgY2hpbGQg ZnJhbWUuICBTZXR0aW5nCi1pdCB0byBAY29kZXtuaWx9IHJlc3RvcmVzIHRoZSBmcmFtZSdz IHN0YXR1cyBhcyBhIHRvcC1sZXZlbCBmcmFtZS0tLW9uZQotd2hvc2Ugd2luZG93LXN5c3Rl bSB3aW5kb3cgaXMgYSBjaGlsZCBvZiBpdHMgZGlzcGxheSdzIHJvb3Qgd2luZG93LgoraXQg dG8gYW5vdGhlciBmcmFtZSBAZGZue3JlcGFyZW50c30gdGhlIGNoaWxkIGZyYW1lLiAgU2V0 dGluZyBpdCB0bworYW5vdGhlciBjaGlsZCBmcmFtZSBtYWtlcyB0aGUgZnJhbWUgYSBAZGZu e25lc3RlZH0gY2hpbGQgZnJhbWUuICBTZXR0aW5nCitpdCB0byBAY29kZXtuaWx9IHJlc3Rv cmVzIHRoZSBmcmFtZSdzIHN0YXR1cyBhcyBhIEBkZm57dG9wLWxldmVsCitmcmFtZX0tLS1h IGZyYW1lIHdob3NlIHdpbmRvdy1zeXN0ZW0gd2luZG93IGlzIGEgY2hpbGQgb2YgaXRzIGRp c3BsYXkncworcm9vdCB3aW5kb3cuCgogICBTaW5jZSBjaGlsZCBmcmFtZXMgY2FuIGJlIGFy Yml0cmFyaWx5IG5lc3RlZCwgYSBmcmFtZSBjYW4gYmUgYm90aCBhCiBjaGlsZCBhbmQgYSBw YXJlbnQgZnJhbWUuICBBbHNvLCB0aGUgcmVsYXRpdmUgcm9sZXMgb2YgY2hpbGQgYW5kIHBh cmVudAogZnJhbWUgbWF5IGJlIHJldmVyc2VkIGF0IGFueSB0aW1lICh0aG91Z2ggaXQncyB1 c3VhbGx5IGEgZ29vZCBpZGVhIHRvCi1rZWVwIHRoZSBzaXplIG9mIGNoaWxkIGZyYW1lcyBz dWZmaWNpZW50bHkgc21hbGxlciB0aGFuIHRoYXQgb2YgdGhlaXIKK2tlZXAgdGhlIHNpemUg b2YgYSBjaGlsZCBmcmFtZSBzdWZmaWNpZW50bHkgc21hbGxlciB0aGFuIHRoYXQgb2YgaXRz CiBwYXJlbnQpLiAgQW4gZXJyb3Igd2lsbCBiZSBzaWduYWxlZCBmb3IgdGhlIGF0dGVtcHQg dG8gbWFrZSBhIGZyYW1lIGFuCiBhbmNlc3RvciBvZiBpdHNlbGYuCgotICBBIGNoaWxkIGZy YW1lIGlzIGNsaXBwZWQgYXQgdGhlIG5hdGl2ZSBlZGdlcyAoQHB4cmVme0ZyYW1lIEdlb21l dHJ5fSkKLW9mIGl0cyBwYXJlbnQgZnJhbWUtLS1ldmVyeXRoaW5nIG91dHNpZGUgdGhlc2Ug ZWRnZXMgaXMgaW52aXNpYmxlLiAgSXRzCi1AY29kZXtsZWZ0fSBhbmQgQGNvZGV7dG9wfSBw YXJhbWV0ZXJzIHNwZWNpZnkgcG9zaXRpb25zIHJlbGF0aXZlIHRvIHRoZQotdG9wLWxlZnQg Y29ybmVyIG9mIGl0cyBwYXJlbnQncyBuYXRpdmUgZnJhbWUuICBXaGVuIGVpdGhlciBvZiB0 aGUgZnJhbWVzCi1pcyByZXNpemVkLCB0aGUgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIGNo aWxkIGZyYW1lIHJlbWFpbnMgdW5hbHRlcmVkLgotSGVuY2UsIHJlc2l6aW5nIGVpdGhlciBv ZiB0aGVzZSBmcmFtZXMgY2FuIGhpZGUgb3IgcmV2ZWFsIHBhcnRzIG9mIHRoZQotY2hpbGQg ZnJhbWUuCisgICBNb3N0IHdpbmRvdy1zeXN0ZW1zIGNsaXAgYSBjaGlsZCBmcmFtZSBhdCB0 aGUgbmF0aXZlIGVkZ2VzCisoQHB4cmVme0ZyYW1lIEdlb21ldHJ5fSkgb2YgaXRzIHBhcmVu dCBmcmFtZS0tLWV2ZXJ5dGhpbmcgb3V0c2lkZSB0aGVzZQorZWRnZXMgaXMgdXN1YWxseSBp bnZpc2libGUuICBBIGNoaWxkIGZyYW1lJ3MgQGNvZGV7bGVmdH0gYW5kIEBjb2Rle3RvcH0K K3BhcmFtZXRlcnMgc3BlY2lmeSBhIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSB0b3AtbGVm dCBjb3JuZXIgb2YgaXRzCitwYXJlbnQncyBuYXRpdmUgZnJhbWUuICBXaGVuIHRoZSBwYXJl bnQgZnJhbWUgaXMgcmVzaXplZCwgdGhpcyBwb3NpdGlvbgorcmVtYWlucyBjb25jZXB0dWFs bHkgdW5hbHRlcmVkLgoKICAgTlMgYnVpbGRzIGRvIG5vdCBjbGlwIGNoaWxkIGZyYW1lcyBh dCB0aGUgcGFyZW50IGZyYW1lJ3MgZWRnZXMsCi1hbGxvd2luZyB0aGVtIHRvIGJlIHBvc2l0 aW9uZWQgc28gdGhleSBkbyBub3Qgb2JzY3VyZSB0aGUgcGFyZW50Ci1mcmFtZSB3aGlsZSBz dGlsbCBiZWluZyB2aXNpYmxlIHRoZW1zZWx2ZXMuCithbGxvd2luZyB0aGVtIHRvIGJlIHBv c2l0aW9uZWQgc28gdGhleSBkbyBub3Qgb2JzY3VyZSB0aGUgcGFyZW50IGZyYW1lCit3aGls ZSBzdGlsbCBiZWluZyB2aXNpYmxlIHRoZW1zZWx2ZXMuCgogICBVc3VhbGx5LCBtb3Zpbmcg YSBwYXJlbnQgZnJhbWUgbW92ZXMgYWxvbmcgYWxsIGl0cyBjaGlsZCBmcmFtZXMgYW5kCiB0 aGVpciBkZXNjZW5kYW50cyBhcyB3ZWxsLCBrZWVwaW5nIHRoZWlyIHJlbGF0aXZlIHBvc2l0 aW9ucyB1bmFsdGVyZWQuCi1UaGUgaG9vayBAY29kZXttb3ZlLWZyYW1lLWZ1bmN0aW9uc30g KEBweHJlZntGcmFtZSBQb3NpdGlvbn0pIGlzIHJ1biBmb3IKLWEgY2hpbGQgZnJhbWUgb25s eSB3aGVuIHRoZSBwb3NpdGlvbiBvZiB0aGUgY2hpbGQgZnJhbWUgcmVsYXRpdmUgdG8gaXRz Ci1wYXJlbnQgZnJhbWUgY2hhbmdlcy4gIFdoZW4gYSBwYXJlbnQgZnJhbWUgaXMgcmVzaXpl ZCwgdGhlIGNoaWxkIGZyYW1lCi1yZXRhaW5zIGl0cyBwb3NpdGlvbiByZXNwZWN0aXZlIHRv IHRoZSBsZWZ0IGFuZCB1cHBlciBuYXRpdmUgZWRnZXMgb2YKLWl0cyBwYXJlbnQuICBJbiB0 aGlzIGNhc2UsIHRoZSBwb3NpdGlvbiByZXNwZWN0aXZlIHRvIHRoZSBsb3dlciBvciByaWdo dAotbmF0aXZlIGVkZ2Ugb2YgdGhlIHBhcmVudCBmcmFtZSBpcyB1c3VhbGx5IGxvc3QuCitO b3RlIHRoYXQgdGhlIGhvb2sgQGNvZGV7bW92ZS1mcmFtZS1mdW5jdGlvbnN9IChAcHhyZWZ7 RnJhbWUgUG9zaXRpb259KQoraXMgcnVuIGZvciBhIGNoaWxkIGZyYW1lIG9ubHkgd2hlbiB0 aGUgcG9zaXRpb24gb2YgdGhlIGNoaWxkIGZyYW1lCityZWxhdGl2ZSB0byBpdHMgcGFyZW50 IGZyYW1lIGNoYW5nZXMuICBJdCBpcyBub3QgcnVuIGZvciBhIGNoaWxkIGZyYW1lCit3aGVu IHRoZSBwb3NpdGlvbiBvZiB0aGUgcGFyZW50IGZyYW1lIGNoYW5nZXMuCisKKyAgV2hlbiBh IHBhcmVudCBmcmFtZSBpcyByZXNpemVkLCBpdHMgY2hpbGQgZnJhbWVzIGNvbmNlcHR1YWxs eSByZXRhaW4KK3RoZWlyIHByZXZpb3VzIHNpemVzIGFuZCB0aGVpciBwb3NpdGlvbnMgcmVs YXRpdmUgdG8gdGhlIGxlZnQgdXBwZXIKK2Nvcm5lciBvZiB0aGUgcGFyZW50LiAgVGhpcyBt ZWFucyB0aGF0IGEgY2hpbGQgZnJhbWUgbWF5IGJlY29tZQorKHBhcnRpYWxseSkgaW52aXNp YmxlIHdoZW4gaXRzIHBhcmVudCBmcmFtZSBzaHJpbmtzLiAgVGhlIHBhcmFtZXRlcgorQGNv ZGV7a2VlcC1yYXRpb30gKEBweHJlZntGcmFtZSBJbnRlcmFjdGlvbiBQYXJhbWV0ZXJzfSkg Y2FuIGJlIHVzZWQgdG8KK3Jlc2l6ZSBhbmQgcmVwb3NpdGlvbiBhIGNoaWxkIGZyYW1lIHBy b3BvcnRpb25hbGx5IHdoZW5ldmVyIGl0cyBwYXJlbnQKK2ZyYW1lIGlzIHJlc2l6ZWQuICBU aGlzIG1heSBhdm9pZCBvYnNjdXJpbmcgcGFydHMgb2YgYSBmcmFtZSB3aGVuIGl0cworcGFy ZW50IGZyYW1lIGlzIHNocnVuay4KCiAgIEEgdmlzaWJsZSBjaGlsZCBmcmFtZSBhbHdheXMg YXBwZWFycyBvbiB0b3Agb2YgaXRzIHBhcmVudCBmcmFtZSB0aHVzCiBvYnNjdXJpbmcgcGFy dHMgb2YgaXQsIGV4Y2VwdCBvbiBOUyBidWlsZHMgd2hlcmUgaXQgbWF5IGJlIHBvc2l0aW9u ZWQKLWJlbmVhdGggdGhlIHBhcmVudC4gIFRoaXMgaXMgY29tcGFyYWJsZSB0byB0aGUgd2lu ZG93LXN5c3RlbSB3aW5kb3cgb2YKLWEgdG9wLWxldmVsIGZyYW1lIHdoaWNoIGFsc28gYWx3 YXlzIGFwcGVhcnMgb24gdG9wIG9mIGl0cyBwYXJlbnQKLXdpbmRvdy0tLXRoZSBkZXNrdG9w J3Mgcm9vdCB3aW5kb3cuICBXaGVuIGEgcGFyZW50IGZyYW1lIGlzIGljb25pZmllZAotb3Ig bWFkZSBpbnZpc2libGUgKEBweHJlZntWaXNpYmlsaXR5IG9mIEZyYW1lc30pLCBpdHMgY2hp bGQgZnJhbWVzIGFyZQotbWFkZSBpbnZpc2libGUuICBXaGVuIGEgcGFyZW50IGZyYW1lIGlz IGRlaWNvbmlmaWVkIG9yIG1hZGUgdmlzaWJsZSwKLWl0cyBjaGlsZCBmcmFtZXMgYXJlIG1h ZGUgdmlzaWJsZS4gIFdoZW4gYSBwYXJlbnQgZnJhbWUgaXMgYWJvdXQgdG8gYmUKLWRlbGV0 ZWQsIChAcHhyZWZ7RGVsZXRpbmcgRnJhbWVzfSkgaXRzIGNoaWxkIGZyYW1lcyBhcmUgcmVj dXJzaXZlbHkKK2JlbmVhdGggdGhlIHBhcmVudC4gIFRoaXMgaXMgY29tcGFyYWJsZSB0byB0 aGUgd2luZG93LXN5c3RlbSB3aW5kb3cgb2YgYQordG9wLWxldmVsIGZyYW1lIHdoaWNoIGFs c28gYWx3YXlzIGFwcGVhcnMgb24gdG9wIG9mIGl0cyBwYXJlbnQKK3dpbmRvdy0tLXRoZSBk ZXNrdG9wJ3Mgcm9vdCB3aW5kb3cuICBXaGVuIGEgcGFyZW50IGZyYW1lIGlzIGljb25pZmll ZCBvcgorbWFkZSBpbnZpc2libGUgKEBweHJlZntWaXNpYmlsaXR5IG9mIEZyYW1lc30pLCBp dHMgY2hpbGQgZnJhbWVzIGFyZSBtYWRlCitpbnZpc2libGUuICBXaGVuIGEgcGFyZW50IGZy YW1lIGlzIGRlaWNvbmlmaWVkIG9yIG1hZGUgdmlzaWJsZSwgaXRzCitjaGlsZCBmcmFtZXMg YXJlIG1hZGUgdmlzaWJsZS4gIFdoZW4gYSBwYXJlbnQgZnJhbWUgaXMgYWJvdXQgdG8gYmUK K2RlbGV0ZWQgKEBweHJlZntEZWxldGluZyBGcmFtZXN9KSwgaXRzIGNoaWxkIGZyYW1lcyBh cmUgcmVjdXJzaXZlbHkKIGRlbGV0ZWQgYmVmb3JlIGl0LgoKICAgV2hldGhlciBhIGNoaWxk IGZyYW1lIGNhbiBoYXZlIGEgbWVudSBvciB0b29sIGJhciBpcyB3aW5kb3ctc3lzdGVtIG9y CkBAIC0yODkyLDcgKzMxMjIsNTUgQEAgQ2hpbGQgRnJhbWVzCiBib3JkZXIgd2lkdGggd2ls bCBzaG93IGEgb25lLXBpeGVsIHdpZGUgZXh0ZXJuYWwgYm9yZGVyLiAgVW5kZXIgYWxsCiB3 aW5kb3ctc3lzdGVtcywgdGhlIGludGVybmFsIGJvcmRlciBjYW4gYmUgdXNlZC4gIEluIGVp dGhlciBjYXNlLCBpdCdzCiBhZHZpc2FibGUgdG8gZGlzYWJsZSBhIGNoaWxkIGZyYW1lJ3Mg d2luZG93IG1hbmFnZXIgZGVjb3JhdGlvbnMgd2l0aCB0aGUKLUBjb2Rle3VuZGVjb3JhdGVk fSBmcmFtZSBwYXJhbWV0ZXIgQHB4cmVme01hbmFnZW1lbnQgUGFyYW1ldGVyc30pLgorQGNv ZGV7dW5kZWNvcmF0ZWR9IGZyYW1lIHBhcmFtZXRlciAoQHB4cmVme01hbmFnZW1lbnQgUGFy YW1ldGVyc30pLgorCisgIFRvIHJlc2l6ZSBvciBtb3ZlIGFuIHVuZGVjb3JhdGVkIGNoaWxk IGZyYW1lIHdpdGggdGhlIG1vdXNlLCBzcGVjaWFsCitmcmFtZSBwYXJhbWV0ZXJzIChAcHhy ZWZ7TW91c2UgRHJhZ2dpbmcgUGFyYW1ldGVyc30pIGhhdmUgdG8gYmUgdXNlZC4KK1RoZSBp bnRlcm5hbCBib3JkZXIgb2YgYSBjaGlsZCBmcmFtZSwgaWYgcHJlc2VudCwgY2FuIGJlIHVz ZWQgdG8gcmVzaXplCit0aGUgZnJhbWUgd2l0aCB0aGUgbW91c2UsIHByb3ZpZGVkIHRoYXQg ZnJhbWUgaGFzIGEgbm9uLUBjb2Rle25pbH0KK0Bjb2Rle2RyYWctaW50ZXJuYWwtYm9yZGVy fSBwYXJhbWV0ZXIuICBJZiBzZXQsIHRoZSBAY29kZXtzbmFwLXdpZHRofQorcGFyYW1ldGVy IGluZGljYXRlcyB0aGUgbnVtYmVyIG9mIHBpeGVscyB3aGVyZSB0aGUgZnJhbWUgQGRmbntz bmFwc30gYXQKK3RoZSByZXNwZWN0aXZlIGVkZ2Ugb3IgY29ybmVyIG9mIGl0cyBwYXJlbnQg ZnJhbWUuCisKKyAgVGhlcmUgYXJlIHR3byB3YXlzIHRvIGRyYWcgYW4gZW50aXJlIGNoaWxk IGZyYW1lIHdpdGggdGhlIG1vdXNlOiBUaGUKK0Bjb2Rle2RyYWctd2l0aC1tb2RlLWxpbmV9 IHBhcmFtZXRlciwgaWYgbm9uLUBjb2Rle25pbH0sIGFsbG93cyB0byBkcmFnCithIGZyYW1l IHdpdGhvdXQgbWluaWJ1ZmZlciB3aW5kb3cgKEBweHJlZntNaW5pYnVmZmVyIFdpbmRvd3N9 KSB2aWEgdGhlCittb2RlIGxpbmUgYXJlYSBvZiBpdHMgYm90dG9tbW9zdCB3aW5kb3cuICBU aGUKK0Bjb2Rle2RyYWctd2l0aC1oZWFkZXItbGluZX0gcGFyYW1ldGVyLCBpZiBub24tQGNv ZGV7bmlsfSwgYWxsb3dzIHRvCitkcmFnIHRoZSBmcmFtZSB2aWEgdGhlIGhlYWRlciBsaW5l IGFyZWEgb2YgaXRzIHRvcG1vc3Qgd2luZG93LgorCisgIEluIG9yZGVyIHRvIGdpdmUgYSBj aGlsZCBmcmFtZSBhIGRyYWdnYWJsZSBoZWFkZXIgb3IgbW9kZSBsaW5lLCB0aGUKK3dpbmRv dyBwYXJhbWV0ZXJzIEBjb2Rle21vZGUtbGluZS1mb3JtYXR9IGFuZCBAY29kZXtoZWFkZXIt bGluZS1mb3JtYXR9CithcmUgaGFuZHkgKEBweHJlZntXaW5kb3cgUGFyYW1ldGVyc30pLiAg VGhlc2UgYWxsb3cgdG8gcmVtb3ZlIGFuCit1bndhbnRlZCBtb2RlIGxpbmUgKHdoZW4gQGNv ZGV7ZHJhZy13aXRoLWhlYWRlci1saW5lfSBpcyBjaG9zZW4pIGFuZCB0bworcmVtb3ZlIG1v dXNlLXNlbnNpdGl2ZSBhcmVhcyB3aGljaCBtaWdodCBpbnRlcmZlcmUgd2l0aCBmcmFtZSBk cmFnZ2luZy4KKworICBUbyBhdm9pZCB0aGF0IGRyYWdnaW5nIG1vdmVzIGEgZnJhbWUgY29t cGxldGVseSBvdXQgb2YgaXRzIHBhcmVudCdzCituYXRpdmUgZnJhbWUsIHNvbWV0aGluZyB3 aGljaCBtaWdodCBoYXBwZW4gd2hlbiB0aGUgbW91c2UgY3Vyc29yCitvdmVyc2hvb3RzIGFu ZCBtYWtlcyB0aGUgZnJhbWUgZGlmZmljdWx0IHRvIHJldHJpZXZlIG9uY2UgdGhlIG1vdXNl CitidXR0b24gaGFzIGJlZW4gcmVsZWFzZWQsIGl0IGlzIGFkdmlzYWJsZSB0byBzZXQgdGhl IGZyYW1lJ3MKK0Bjb2Rle3RvcC12aXNpYmxlfSBvciBAY29kZXtib3R0b20tdmlzaWJsZX0g cGFyYW1ldGVyIGNvcnJlc3BvbmRpbmdseS4KKworICBUaGUgQGNvZGV7dG9wLXZpc2libGV9 IHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBwaXhlbHMgYXQgdGhlCit0b3Ag b2YgdGhlIGZyYW1lIHRoYXQgYWx3YXlzIHJlbWFpbiB2aXNpYmxlIHdpdGhpbiB0aGUgcGFy ZW50J3MgbmF0aXZlCitmcmFtZSBkdXJpbmcgZHJhZ2dpbmcgYW5kIHNob3VsZCBiZSBzZXQg d2hlbiBzcGVjaWZ5aW5nIGEgbm9uLUBjb2Rle25pbH0KK0Bjb2Rle2RyYWctd2l0aC1oZWFk ZXItbGluZX0gcGFyYW1ldGVyLiAgVGhlIEBjb2Rle2JvdHRvbS12aXNpYmxlfQorcGFyYW1l dGVyIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHBpeGVscyBhdCB0aGUgYm90dG9tIG9mIHRo ZSBmcmFtZSB0aGF0CithbHdheXMgcmVtYWluIHZpc2libGUgd2l0aGluIHRoZSBwYXJlbnQn cyBuYXRpdmUgZnJhbWUgZHVyaW5nIGRyYWdnaW5nCithbmQgc2hvdWxkIGJlIHByZWZlcnJl ZCB3aGVuIHNwZWNpZnlpbmcgYSBub24tQGNvZGV7bmlsfQorQGNvZGV7ZHJhZy13aXRoLW1v ZGUtbGluZX0gcGFyYW1ldGVyLgorCisgIFdoZW4gYSBjaGlsZCBmcmFtZSBpcyB1c2VkIGZv ciBkaXNwbGF5aW5nIGEgYnVmZmVyIHZpYQorQGNvZGV7ZGlzcGxheS1idWZmZXItaW4tY2hp bGQtZnJhbWV9IChAcHhyZWZ7RGlzcGxheSBBY3Rpb24gRnVuY3Rpb25zfSksCit0aGUgZnJh bWUncyBAY29kZXthdXRvLWhpZGUtZnVuY3Rpb259IHBhcmFtZXRlciAoQHB4cmVme0ZyYW1l CitJbnRlcmFjdGlvbiBQYXJhbWV0ZXJzfSkgY2FuIGJlIHNldCB0byBhIGZ1bmN0aW9uLCBp biBvcmRlciB0bworYXBwcm9wcmlhdGVseSBkZWFsIHdpdGggdGhlIGZyYW1lIHdoZW4gdGhl IHdpbmRvdyBkaXNwbGF5aW5nIHRoZSBidWZmZXIKK3NoYWxsIGJlIHF1aXQuCisKKyAgV2hl biBhIGNoaWxkIGZyYW1lIGlzIHVzZWQgZHVyaW5nIG1pbmlidWZmZXIgaW50ZXJhY3Rpb24s IGZvciBleGFtcGxlLAordG8gZGlzcGxheSBjb21wbGV0aW9ucyBpbiBhIHNlcGFyYXRlIHdp bmRvdywgdGhlIEBjb2Rle21pbmlidWZmZXItZXhpdH0KK3BhcmFtZXRlciAoQHB4cmVme0Zy YW1lIEludGVyYWN0aW9uIFBhcmFtZXRlcnN9KSBpcyB1c2VmdWwgaW4gb3JkZXIgdG8KK2Rl YWwgd2l0aCB0aGUgZnJhbWUgd2hlbiB0aGUgbWluaWJ1ZmZlciBpcyBleGl0ZWQuCgogICBU aGUgYmVoYXZpb3Igb2YgY2hpbGQgZnJhbWVzIGRldmlhdGVzIGZyb20gdGhhdCBvZiB0b3At bGV2ZWwgZnJhbWVzIGluCiBhIG51bWJlciBvZiBvdGhlciB3YXlzIGFzIHdlbGwuICBIZXJl IHdlIHNrZXRjaCBhIGZldyBvZiB0aGVtOgpAQCAtMjkzMCw3ICszMjA4LDcgQEAgQ2hpbGQg RnJhbWVzCiBmcmFtZSBvciBvbiBzb21lIGFuY2VzdG9yIGluc3RlYWQuCiBAZW5kIGl0ZW1p emUKCi0gIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBtYXkgYmUgdXNlZnVsIHdoZW4g d29ya2luZyB3aXRoIGNoaWxkIGFuZAorICBUaGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMg Y2FuIGJlIHVzZWZ1bCB3aGVuIHdvcmtpbmcgd2l0aCBjaGlsZCBhbmQKIHBhcmVudCBmcmFt ZXM6CgogQGRlZnVuIGZyYW1lLXBhcmVudCAmb3B0aW9uYWwgZnJhbWUKQEAgLTI5NTEsNiAr MzIyOSwxMiBAQCBDaGlsZCBGcmFtZXMKIGZyYW1lLgogQGVuZCBkZWZ1bgoKK05vdGUgYWxz byB0aGUgZnVuY3Rpb24gQGNvZGV7d2luZG93LWxhcmdlc3QtZW1wdHktcmVjdGFuZ2xlfQor KEBweHJlZntDb29yZGluYXRlcyBhbmQgV2luZG93c30pIHdoaWNoIGNhbiBiZSB1c2VkIHRv IGluc2NyaWJlIGEgY2hpbGQKK2ZyYW1lIGluIHRoZSBsYXJnZXN0IGVtcHR5IGFyZWEgb2Yg YW4gZXhpc3Rpbmcgd2luZG93LiAgVGhpcyBjYW4gYmUKK3VzZWZ1bCB0byBhdm9pZCB0aGF0 IGEgY2hpbGQgZnJhbWUgb2JzY3VyZXMgYW55IHRleHQgc2hvd24gaW4gdGhhdAord2luZG93 LgorCgogQG5vZGUgTW91c2UgVHJhY2tpbmcKIEBzZWN0aW9uIE1vdXNlIFRyYWNraW5nCmRp ZmYgLS1naXQgYS9kb2MvbGlzcHJlZi9tb2Rlcy50ZXhpIGIvZG9jL2xpc3ByZWYvbW9kZXMu dGV4aQppbmRleCAwZTQ3NmI0Li5mNzAxM2RhIDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9t b2Rlcy50ZXhpCisrKyBiL2RvYy9saXNwcmVmL21vZGVzLnRleGkKQEAgLTE3MzcsNyArMTcz Nyw5IEBAIE1vZGUgTGluZSBCYXNpY3MKIGRpc3BsYXllZCBvbiB0aGUgYnVmZmVyJ3MgbW9k ZSBsaW5lLiAgVGhlIHZhbHVlIG9mCiBAY29kZXtoZWFkZXItbGluZS1mb3JtYXR9IHNwZWNp ZmllcyB0aGUgYnVmZmVyJ3MgaGVhZGVyIGxpbmUgaW4gdGhlIHNhbWUKIHdheS4gIEFsbCB3 aW5kb3dzIGZvciB0aGUgc2FtZSBidWZmZXIgdXNlIHRoZSBzYW1lCi1AY29kZXttb2RlLWxp bmUtZm9ybWF0fSBhbmQgQGNvZGV7aGVhZGVyLWxpbmUtZm9ybWF0fS4KK0Bjb2Rle21vZGUt bGluZS1mb3JtYXR9IGFuZCBAY29kZXtoZWFkZXItbGluZS1mb3JtYXR9IHVubGVzcyBhCitA Y29kZXttb2RlLWxpbmUtZm9ybWF0fSBvciBAY29kZXtoZWFkZXItbGluZS1mb3JtYXR9IHBh cmFtZXRlciBoYXMgYmVlbgorc3BlY2lmaWVkIGZvciB0aGF0IHdpbmRvdyAoQHB4cmVme1dp bmRvdyBQYXJhbWV0ZXJzfSkuCgogICBGb3IgZWZmaWNpZW5jeSwgRW1hY3MgZG9lcyBub3Qg Y29udGludW91c2x5IHJlY29tcHV0ZSBlYWNoIHdpbmRvdydzCiBtb2RlIGxpbmUgYW5kIGhl YWRlciBsaW5lLiAgSXQgZG9lcyBzbyB3aGVuIGNpcmN1bXN0YW5jZXMgYXBwZWFyIHRvIGNh bGwKZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL3dpbmRvd3MudGV4aSBiL2RvYy9saXNwcmVm L3dpbmRvd3MudGV4aQppbmRleCBkOWI0Yjc0Li5lYjVjMmZjIDEwMDY0NAotLS0gYS9kb2Mv bGlzcHJlZi93aW5kb3dzLnRleGkKKysrIGIvZG9jL2xpc3ByZWYvd2luZG93cy50ZXhpCkBA IC03NTIsNiArNzUyLDcgQEAgV2luZG93IFNpemVzCiBtaW5pbXVtIHNpemUgb2YgQHZhcnt3 aW5kb3d9IGNvdW50ZWQgaW4gcGl4ZWxzLgogQGVuZCBkZWZ1bgoKKwogQG5vZGUgUmVzaXpp bmcgV2luZG93cwogQHNlY3Rpb24gUmVzaXppbmcgV2luZG93cwogQGNpbmRleCB3aW5kb3cg cmVzaXppbmcKQEAgLTk0Myw3ICs5NDQsOCBAQCBSZXNpemluZyBXaW5kb3dzCiBAZGVmb3B0 IGZpdC1mcmFtZS10by1idWZmZXItbWFyZ2lucwogVGhpcyBvcHRpb24gY2FuIGJlIHVzZWQg dG8gc3BlY2lmeSBtYXJnaW5zIGFyb3VuZCBmcmFtZXMgdG8gYmUgZml0IGJ5CiBAY29kZXtm aXQtZnJhbWUtdG8tYnVmZmVyfS4gIFN1Y2ggbWFyZ2lucyBjYW4gYmUgdXNlZnVsIHRvIGF2 b2lkLCBmb3IKLWV4YW1wbGUsIHRoYXQgc3VjaCBmcmFtZXMgb3ZlcmxhcCB0aGUgdGFza2Jh ci4KK2V4YW1wbGUsIHRoYXQgdGhlIHJlc2l6ZWQgZnJhbWUgb3ZlcmxhcHMgdGhlIHRhc2ti YXIgb3IgcGFydHMgb2YgaXRzCitwYXJlbnQgZnJhbWUuCgogSXQgc3BlY2lmaWVzIHRoZSBu dW1iZXJzIG9mIHBpeGVscyB0byBiZSBsZWZ0IGZyZWUgb24gdGhlIGxlZnQsIGFib3ZlLAog dGhlIHJpZ2h0LCBhbmQgYmVsb3cgYSBmcmFtZSB0aGF0IHNoYWxsIGJlIGZpdC4gIFRoZSBk ZWZhdWx0IHNwZWNpZmllcwpAQCAtMjQ4NCw2ICsyNDg2LDI1IEBAIERpc3BsYXkgQWN0aW9u IEZ1bmN0aW9ucwogaXMgYWRkZWQgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgZnJhbWUncyBwYXJh bWV0ZXJzLgogQGVuZCBkZWZ1bgoKK0BkZWZ1biBkaXNwbGF5LWJ1ZmZlci1pbi1jaGlsZC1m cmFtZSBidWZmZXIgYWxpc3QKK1RoaXMgZnVuY3Rpb24gdHJpZXMgdG8gZGlzcGxheSBAdmFy e2J1ZmZlcn0gaW4gYSBjaGlsZCBmcmFtZQorKEBweHJlZntDaGlsZCBGcmFtZXN9KSBvZiB0 aGUgc2VsZWN0ZWQgZnJhbWUsIGVpdGhlciByZXVzaW5nIGFuIGV4aXN0aW5nCitjaGlsZCBm cmFtZSBvciBieSBtYWtpbmcgYSBuZXcgb25lLiAgSWYgQHZhcnthbGlzdH0gaGFzIGEgbm9u LUBjb2Rle25pbH0KK0Bjb2Rle2NoaWxkLWZyYW1lLXBhcmFtZXRlcnN9IGVudHJ5LCB0aGUg Y29ycmVzcG9uZGluZyB2YWx1ZSBpcyBhbiBhbGlzdAorb2YgZnJhbWUgcGFyYW1ldGVycyB0 byBnaXZlIHRoZSBuZXcgZnJhbWUuICBBIEBjb2Rle3BhcmVudC1mcmFtZX0KK3BhcmFtZXRl ciBzcGVjaWZ5aW5nIHRoZSBzZWxlY3RlZCBmcmFtZSBpcyBwcm92aWRlZCBieSBkZWZhdWx0 LiAgSWYgdGhlCitjaGlsZCBmcmFtZSBzaG91bGQgYmUgb3IgYmVjb21lIHRoZSBjaGlsZCBv ZiBhbm90aGVyIGZyYW1lLCBhCitjb3JyZXNwb25kaW5nIGVudHJ5IG11c3QgYmUgYWRkZWQg dG8gQHZhcnthbGlzdH0uCisKK1RoZSBhcHBlYXJhbmNlIG9mIGNoaWxkIGZyYW1lcyBpcyBs YXJnZWx5IGRlcGVuZGVudCBvbiB0aGUgcGFyYW1ldGVycworcHJvdmlkZWQgdmlhIEB2YXJ7 YWxpc3R9LiAgSXQgaXMgYWR2aXNhYmxlIHRvIHVzZSBhdCBsZWFzdCByYXRpb3MgdG8KK3Nw ZWNpZnkgdGhlIHNpemUgKEBweHJlZntTaXplIFBhcmFtZXRlcnN9KSBhbmQgdGhlIHBvc2l0 aW9uCisoQHB4cmVme1Bvc2l0aW9uIFBhcmFtZXRlcnN9KSBvZiB0aGUgY2hpbGQgZnJhbWUg YW5kIHRvIGFkZCB0aGUKK0Bjb2Rle2tlZXAtcmF0aW99IGluIG9yZGVyIHRvIG1ha2Ugc3Vy ZSB0aGF0IHRoZSBjaGlsZCBmcmFtZSByZW1haW5zCit2aXNpYmxlLiAgRm9yIG90aGVyIHBh cmFtZXRlcnMgdGhhdCBzaG91bGQgYmUgY29uc2lkZXJlZCBzZWUgQHJlZntDaGlsZAorRnJh bWVzfS4KK0BlbmQgZGVmdW4KKwogQGRlZnVuIGRpc3BsYXktYnVmZmVyLXVzZS1zb21lLWZy YW1lIGJ1ZmZlciBhbGlzdAogVGhpcyBmdW5jdGlvbiB0cmllcyB0byBkaXNwbGF5IEB2YXJ7 YnVmZmVyfSBieSB0cnlpbmcgdG8gZmluZCBhCiBmcmFtZSB0aGF0IG1lZXRzIGEgcHJlZGlj YXRlIChieSBkZWZhdWx0IGFueSBmcmFtZSBvdGhlciB0aGFuIHRoZQpAQCAtMzEyNCwxMiAr MzE0NSwxNyBAQCBRdWl0dGluZyBXaW5kb3dzCiBUaGUgZGVmYXVsdCBpcyB0byBjYWxsIEBj b2Rle2ljb25pZnktZnJhbWV9IChAcHhyZWZ7VmlzaWJpbGl0eSBvZgogRnJhbWVzfSkuICBB bHRlcm5hdGl2ZWx5LCB5b3UgbWF5IHNwZWNpZnkgZWl0aGVyIEBjb2Rle2RlbGV0ZS1mcmFt ZX0KIChAcHhyZWZ7RGVsZXRpbmcgRnJhbWVzfSkgdG8gcmVtb3ZlIHRoZSBmcmFtZSBmcm9t IGl0cyBkaXNwbGF5LAotQGNvZGV7aWdub3JlfSB0byBsZWF2ZSB0aGUgZnJhbWUgdW5jaGFu Z2VkLCBvciBhbnkgb3RoZXIgZnVuY3Rpb24gdGhhdAotY2FuIHRha2UgYSBmcmFtZSBhcyBp dHMgc29sZSBhcmd1bWVudC4KK0Bjb2Rle21ha2UtZnJhbWUtaW52aXNpYmxlfSB0byBtYWtl IHRoZSBmcmFtZSBpbnZpc2libGUsIEBjb2Rle2lnbm9yZX0KK3RvIGxlYXZlIHRoZSBmcmFt ZSB1bmNoYW5nZWQsIG9yIGFueSBvdGhlciBmdW5jdGlvbiB0aGF0IGNhbiB0YWtlIGEKK2Zy YW1lIGFzIGl0cyBzb2xlIGFyZ3VtZW50LgoKIE5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gc3Bl Y2lmaWVkIGJ5IHRoaXMgb3B0aW9uIGlzIGNhbGxlZCBvbmx5IGlmIHRoZQogc3BlY2lmaWVk IGZyYW1lIGNvbnRhaW5zIGp1c3Qgb25lIGxpdmUgd2luZG93IGFuZCB0aGVyZSBpcyBhdCBs ZWFzdCBvbmUKIG90aGVyIGZyYW1lIG9uIHRoZSBzYW1lIHRlcm1pbmFsLgorCitGb3IgYSBw YXJ0aWN1bGFyIGZyYW1lLCB0aGUgdmFsdWUgc3BlY2lmaWVkIGhlcmUgbWF5IGJlIG92ZXJy aWRkZW4gYnkKK3RoYXQgZnJhbWUncyBAY29kZXthdXRvLWhpZGUtZnVuY3Rpb259IGZyYW1l IHBhcmFtZXRlciAoQHB4cmVme0ZyYW1lCitJbnRlcmFjdGlvbiBQYXJhbWV0ZXJzfSkuCiBA ZW5kIGRlZm9wdAoKCkBAIC00MzY0LDEzICs0MzkwLDEyIEBAIENvb3JkaW5hdGVzIGFuZCBX aW5kb3dzCiBAY2luZGV4IGNvb3JkaW5hdGUsIHJlbGF0aXZlIHRvIGZyYW1lCiBAY2luZGV4 IHdpbmRvdyBwb3NpdGlvbgoKLVRoaXMgc2VjdGlvbiBkZXNjcmliZXMgZnVuY3Rpb25zIHRo YXQgcmVwb3J0IHRoZSBwb3NpdGlvbiBvZiBhIHdpbmRvdy4KLU1vc3Qgb2YgdGhlc2UgZnVu Y3Rpb25zIHJlcG9ydCBwb3NpdGlvbnMgcmVsYXRpdmUgdG8gYW4gb3JpZ2luIGF0IHRoZQot bmF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cncyBmcmFtZSAoQHB4cmVme0ZyYW1lIEdl b21ldHJ5fSkuICBTb21lCi1mdW5jdGlvbnMgcmVwb3J0IHBvc2l0aW9ucyByZWxhdGl2ZSB0 byB0aGUgb3JpZ2luIG9mIHRoZSBkaXNwbGF5IG9mIHRoZQotd2luZG93J3MgZnJhbWUuICBJ biBhbnkgY2FzZSwgdGhlIG9yaWdpbiBoYXMgdGhlIGNvb3JkaW5hdGVzICgwLCAwKSBhbmQK LVggYW5kIFkgY29vcmRpbmF0ZXMgaW5jcmVhc2UgcmlnaHR3YXJkIGFuZCBkb3dud2FyZAot cmVzcGVjdGl2ZWx5LgorVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBmdW5jdGlvbnMgdGhhdCBy ZXBvcnQgcG9zaXRpb25zIG9mIGFuZCB3aXRoaW4gYQord2luZG93LiAgTW9zdCBvZiB0aGVz ZSBmdW5jdGlvbnMgcmVwb3J0IHBvc2l0aW9ucyByZWxhdGl2ZSB0byBhbiBvcmlnaW4KK2F0 IHRoZSBuYXRpdmUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdydzIGZyYW1lIChAcHhyZWZ7RnJh bWUgR2VvbWV0cnl9KS4KK1NvbWUgZnVuY3Rpb25zIHJlcG9ydCBwb3NpdGlvbnMgcmVsYXRp dmUgdG8gdGhlIG9yaWdpbiBvZiB0aGUgZGlzcGxheSBvZgordGhlIHdpbmRvdydzIGZyYW1l LiAgSW4gYW55IGNhc2UsIHRoZSBvcmlnaW4gaGFzIHRoZSBjb29yZGluYXRlcyAoMCwgMCkK K2FuZCBYIGFuZCBZIGNvb3JkaW5hdGVzIGluY3JlYXNlIHJpZ2h0d2FyZCBhbmQgZG93bndh cmQgcmVzcGVjdGl2ZWx5LgoKICAgRm9yIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zLCBYIGFu ZCBZIGNvb3JkaW5hdGVzIGFyZSByZXBvcnRlZCBpbgogaW50ZWdlciBjaGFyYWN0ZXIgdW5p dHMsIGkuZS4sIG51bWJlcnMgb2YgbGluZXMgYW5kIGNvbHVtbnMKQEAgLTQ2MDgsNiArNDYz Myw0OSBAQCBDb29yZGluYXRlcyBhbmQgV2luZG93cwogQGVuZCBleGFtcGxlCiBAZW5kIGRl ZnVuCgorVGhlIGZvbGxvd2luZyBmdW5jdGlvbiByZXR1cm5zIHRoZSBsYXJnZXN0IHJlY3Rh bmdsZSB0aGF0IGNhbiBiZQoraW5zY3JpYmVkIGluIGEgd2luZG93IHdpdGhvdXQgY292ZXJp bmcgdGV4dCBkaXNwbGF5ZWQgaW4gdGhhdCB3aW5kb3cuCisKK0BkZWZ1biB3aW5kb3ctbGFy Z2VzdC1lbXB0eS1yZWN0YW5nbGUgJm9wdGlvbmFsIHdpbmRvdyBjb3VudCBtaW4td2lkdGgg bWluLWhlaWdodCBwb3NpdGlvbnMgbGVmdAorVGhpcyBmdW5jdGlvbiBjYWxjdWxhdGVzIHRo ZSBkaW1lbnNpb25zIG9mIHRoZSBsYXJnZXN0IGVtcHR5IHJlY3RhbmdsZQordGhhdCBjYW4g YmUgaW5zY3JpYmVkIGluIHRoZSBzcGVjaWZpZWQgQHZhcnt3aW5kb3d9J3MgdGV4dCBhcmVh LgorQHZhcnt3aW5kb3d9IG11c3QgYmUgYSBsaXZlIHdpbmRvdyBhbmQgZGVmYXVsdHMgdG8g dGhlIHNlbGVjdGVkIG9uZS4KKworVGhlIHJldHVybiB2YWx1ZSBpcyBhIHRyaXBsZSBvZiB0 aGUgd2lkdGggYW5kIHRoZSBzdGFydCBhbmQgZW5kCit5LWNvb3JkaW5hdGVzIG9mIHRoZSBs YXJnZXN0IHJlY3RhbmdsZSB0aGF0IGNhbiBiZSBpbnNjcmliZWQgaW50byB0aGUKK2VtcHR5 IHNwYWNlIChzcGFjZSBub3QgZGlzcGxheWluZyBhbnkgdGV4dCkgb2YgdGhlIHRleHQgYXJl YSBvZgorQHZhcnt3aW5kb3d9LiAgTm8geC1jb29yZGluYXRlcyBhcmUgcmV0dXJuZWQgYnkg dGhpcyBmdW5jdGlvbi0tLWFueSBzdWNoCityZWN0YW5nbGUgaXMgYXNzdW1lZCB0byBlbmQg YXQgdGhlIHJpZ2h0IGVkZ2Ugb2YgQHZhcnt3aW5kb3d9J3MgdGV4dAorYXJlYS4gIElmIG5v IGVtcHR5IHNwYWNlIGNhbiBiZSBmb3VuZCwgdGhlIHJldHVybiB2YWx1ZSBpcyBAY29kZXtu aWx9LgorCitUaGUgb3B0aW9uYWwgYXJndW1lbnQgQHZhcntjb3VudH0sIGlmIG5vbi1AY29k ZXtuaWx9LCBzcGVjaWZpZXMgYQorbWF4aW11bSBudW1iZXIgb2YgcmVjdGFuZ2xlcyB0byBy ZXR1cm4uICBUaGlzIG1lYW5zIHRoYXQgdGhlIHJldHVybgordmFsdWUgaXMgYSBsaXN0IG9m IHRyaXBsZXMgc3BlY2lmeWluZyByZWN0YW5nbGVzIHdpdGggdGhlIGxhcmdlc3QKK3JlY3Rh bmdsZSBmaXJzdC4gIEB2YXJ7Y291bnR9IGNhbiBiZSBhbHNvIGEgY29ucyBjZWxsIHdob3Nl IGNhcgorc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgcmVjdGFuZ2xlcyB0byByZXR1cm4gYW5k IHdob3NlIEBzY3tjZHJ9LCBpZgorbm9uLUBjb2Rle25pbH0sIHN0YXRlcyB0aGF0IGFsbCBy ZWN0YW5nbGVzIHJldHVybmVkIG11c3QgYmUgZGlzam9pbnQuCisKK1RoZSBvcHRpb25hbCBh cmd1bWVudHMgQHZhcnttaW4td2lkdGh9IGFuZCBAdmFye21pbi1oZWlnaHR9LCBpZgorbm9u LUBjb2Rle25pbH0sIHNwZWNpZnkgdGhlIG1pbmltdW0gd2lkdGggYW5kIGhlaWdodCBvZiBh bnkgcmVjdGFuZ2xlCityZXR1cm5lZC4KKworVGhlIG9wdGlvbmFsIGFyZ3VtZW50IEB2YXJ7 cG9zaXRpb25zfSwgaWYgbm9uLUBjb2Rle25pbH0sIGlzIGEgY29ucyBjZWxsCit3aG9zZSBA c2N7Y2FyfSBzcGVjaWZpZXMgdGhlIHVwcGVybW9zdCBhbmQgd2hvc2UgQHNje2Nkcn0gc3Bl Y2lmaWVzIHRoZQorbG93ZXJtb3N0IHBpeGVsIHBvc2l0aW9uIHRoYXQgbXVzdCBiZSBjb3Zl cmVkIGJ5IGFueSByZWN0YW5nbGUgcmV0dXJuZWQuCitUaGVzZSBwb3NpdGlvbnMgbWVhc3Vy ZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgdGV4dCBhcmVhIG9mIEB2YXJ7d2luZG93fS4KKwor VGhlIG9wdGlvbmFsIGFyZ3VtZW50IEB2YXJ7bGVmdH0sIGlmIG5vbi1AY29kZXtuaWx9LCBt ZWFucyB0byByZXR1cm4KK3ZhbHVlcyBzdWl0YWJsZSBmb3IgYnVmZmVycyBkaXNwbGF5aW5n IHJpZ2h0IHRvIGxlZnQgdGV4dC4gIEluIHRoYXQKK2Nhc2UsIGFueSByZWN0YW5nbGUgcmV0 dXJuZWQgaXMgYXNzdW1lZCB0byBzdGFydCBhdCB0aGUgbGVmdCBlZGdlIG9mCitAdmFye3dp bmRvd30ncyB0ZXh0IGFyZWEuCisKK05vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGhhcyB0byBy ZXRyaWV2ZSB0aGUgZGltZW5zaW9ucyBvZiBlYWNoIGxpbmUgb2YKK0B2YXJ7d2luZG93fSdz IGdseXBoIG1hdHJpeCB2aWEgQGNvZGV7d2luZG93LWxpbmVzLXBpeGVsLWRpbWVuc2lvbnN9 CisoQHB4cmVme1NpemUgb2YgRGlzcGxheWVkIFRleHR9KS4gIEhlbmNlLCB0aGlzIGZ1bmN0 aW9uIG1heSBhbHNvIHJldHVybgorQGNvZGV7bmlsfSB3aGVuIHRoZSBjdXJyZW50IGdseXBo IG1hdHJpeCBvZiBAdmFye3dpbmRvd30gaXMgbm90Cit1cC10by1kYXRlLgorQGVuZCBkZWZ1 bgorCgogQG5vZGUgTW91c2UgV2luZG93IEF1dG8tc2VsZWN0aW9uCiBAc2VjdGlvbiBNb3Vz ZSBXaW5kb3cgQXV0by1zZWxlY3Rpb24KQEAgLTQ5MTEsMzcgKzQ5NzksNDUgQEAgV2luZG93 IFBhcmFtZXRlcnMKIFRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgY3VycmVudGx5IHVz ZWQgYnkgdGhlIHdpbmRvdyBtYW5hZ2VtZW50CiBjb2RlOgoKLUB0YWJsZSBAYXNpcwotQGl0 ZW0gQGNvZGV7ZGVsZXRlLXdpbmRvd30KK0B0YWJsZSBAY29kZQorQGl0ZW0gZGVsZXRlLXdp bmRvdworQHZpbmRleCBkZWxldGUtd2luZG93LCBhIHdpbmRvdyBwYXJhbWV0ZXIKIFRoaXMg cGFyYW1ldGVyIGFmZmVjdHMgdGhlIGV4ZWN1dGlvbiBvZiBAY29kZXtkZWxldGUtd2luZG93 fQogKEBweHJlZntEZWxldGluZyBXaW5kb3dzfSkuCgotQGl0ZW0gQGNvZGV7ZGVsZXRlLW90 aGVyLXdpbmRvd3N9CitAaXRlbSBkZWxldGUtb3RoZXItd2luZG93cworQHZpbmRleCBkZWxl dGUtb3RoZXItd2luZG93cywgYSB3aW5kb3cgcGFyYW1ldGVyCiBUaGlzIHBhcmFtZXRlciBh ZmZlY3RzIHRoZSBleGVjdXRpb24gb2YgQGNvZGV7ZGVsZXRlLW90aGVyLXdpbmRvd3N9CiAo QHB4cmVme0RlbGV0aW5nIFdpbmRvd3N9KS4KCi1AaXRlbSBAY29kZXtuby1kZWxldGUtb3Ro ZXItd2luZG93fQorQGl0ZW0gbm8tZGVsZXRlLW90aGVyLXdpbmRvdworQHZpbmRleCBuby1k ZWxldGUtb3RoZXItd2luZG93LCBhIHdpbmRvdyBwYXJhbWV0ZXIKIFRoaXMgcGFyYW1ldGVy IG1hcmtzIHRoZSB3aW5kb3cgYXMgbm90IGRlbGV0YWJsZSBieQogQGNvZGV7ZGVsZXRlLW90 aGVyLXdpbmRvd3N9IChAcHhyZWZ7RGVsZXRpbmcgV2luZG93c30pLgoKLUBpdGVtIEBjb2Rl e3NwbGl0LXdpbmRvd30KK0BpdGVtIHNwbGl0LXdpbmRvdworQHZpbmRleCBzcGxpdC13aW5k b3csIGEgd2luZG93IHBhcmFtZXRlcgogVGhpcyBwYXJhbWV0ZXIgYWZmZWN0cyB0aGUgZXhl Y3V0aW9uIG9mIEBjb2Rle3NwbGl0LXdpbmRvd30KIChAcHhyZWZ7U3BsaXR0aW5nIFdpbmRv d3N9KS4KCi1AaXRlbSBAY29kZXtvdGhlci13aW5kb3d9CitAaXRlbSBvdGhlci13aW5kb3cK K0B2aW5kZXggb3RoZXItd2luZG93LCBhIHdpbmRvdyBwYXJhbWV0ZXIKIFRoaXMgcGFyYW1l dGVyIGFmZmVjdHMgdGhlIGV4ZWN1dGlvbiBvZiBAY29kZXtvdGhlci13aW5kb3d9CiAoQHB4 cmVme0N5Y2xpYyBXaW5kb3cgT3JkZXJpbmd9KS4KCi1AaXRlbSBAY29kZXtuby1vdGhlci13 aW5kb3d9CitAaXRlbSBuby1vdGhlci13aW5kb3cKK0B2aW5kZXggbm8tb3RoZXItd2luZG93 LCBhIHdpbmRvdyBwYXJhbWV0ZXIKIFRoaXMgcGFyYW1ldGVyIG1hcmtzIHRoZSB3aW5kb3cg YXMgbm90IHNlbGVjdGFibGUgYnkgQGNvZGV7b3RoZXItd2luZG93fQogKEBweHJlZntDeWNs aWMgV2luZG93IE9yZGVyaW5nfSkuCgotQGl0ZW0gQGNvZGV7Y2xvbmUtb2Z9CitAaXRlbSBj bG9uZS1vZgorQHZpbmRleCBjbG9uZS1vZiwgYSB3aW5kb3cgcGFyYW1ldGVyCiBUaGlzIHBh cmFtZXRlciBzcGVjaWZpZXMgdGhlIHdpbmRvdyB0aGF0IHRoaXMgb25lIGhhcyBiZWVuIGNs b25lZAogZnJvbS4gIEl0IGlzIGluc3RhbGxlZCBieSBAY29kZXt3aW5kb3ctc3RhdGUtZ2V0 fSAoQHB4cmVme1dpbmRvdwogQ29uZmlndXJhdGlvbnN9KS4KCi1AaXRlbSBAY29kZXtwcmVz ZXJ2ZWQtc2l6ZX0KK0BpdGVtIHByZXNlcnZlZC1zaXplCitAdmluZGV4IHByZXNlcnZlZC1z aXplLCBhIHdpbmRvdyBwYXJhbWV0ZXIKIFRoaXMgcGFyYW1ldGVyIHNwZWNpZmllcyBhIGJ1 ZmZlciwgYSBkaXJlY3Rpb24gd2hlcmUgQGNvZGV7bmlsfSBtZWFucwogdmVydGljYWwgYW5k IEBjb2Rle3R9IGhvcml6b250YWwsIGFuZCBhIHNpemUgaW4gcGl4ZWxzLiAgSWYgdGhpcyB3 aW5kb3cKIGRpc3BsYXlzIHRoZSBzcGVjaWZpZWQgYnVmZmVyIGFuZCBpdHMgc2l6ZSBpbiB0 aGUgaW5kaWNhdGVkIGRpcmVjdGlvbgpAQCAtNDk1MCw3ICs1MDI2LDggQEAgV2luZG93IFBh cmFtZXRlcnMKIHBhcmFtZXRlciBpcyBpbnN0YWxsZWQgYW5kIHVwZGF0ZWQgYnkgdGhlIGZ1 bmN0aW9uCiBAY29kZXt3aW5kb3ctcHJlc2VydmUtc2l6ZX0gKEBweHJlZntQcmVzZXJ2aW5n IFdpbmRvdyBTaXplc30pLgoKLUBpdGVtIEBjb2Rle3F1aXQtcmVzdG9yZX0KK0BpdGVtIHF1 aXQtcmVzdG9yZQorQHZpbmRleCBxdWl0LXJlc3RvcmUsIGEgd2luZG93IHBhcmFtZXRlcgog VGhpcyBwYXJhbWV0ZXIgaXMgaW5zdGFsbGVkIGJ5IHRoZSBidWZmZXIgZGlzcGxheSBmdW5j dGlvbnMKIChAcHhyZWZ7Q2hvb3NpbmcgV2luZG93fSkgYW5kIGNvbnN1bHRlZCBieSBAY29k ZXtxdWl0LXJlc3RvcmUtd2luZG93fQogKEBweHJlZntRdWl0dGluZyBXaW5kb3dzfSkuICBJ dCBjb250YWlucyBmb3VyIGVsZW1lbnRzOgpAQCAtNDk4MSwxNSArNTA1OCwzNyBAQCBXaW5k b3cgUGFyYW1ldGVycwogU2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBAY29kZXtxdWl0LXJlc3Rv cmUtd2luZG93fSBpbiBAcmVme1F1aXR0aW5nCiBXaW5kb3dzfSBmb3IgZGV0YWlscy4KCi1A aXRlbSBAY29kZXt3aW5kb3ctc2lkZX0gQGNvZGV7d2luZG93LXNsb3R9CitAaXRlbSB3aW5k b3ctc2lkZSB3aW5kb3ctc2xvdAorQHZpbmRleCB3aW5kb3ctc2lkZSwgYSB3aW5kb3cgcGFy YW1ldGVyCitAdmluZGV4IHdpbmRvdy1zbG90LCBhIHdpbmRvdyBwYXJhbWV0ZXIKIFRoZXNl IHBhcmFtZXRlcnMgYXJlIHVzZWQgZm9yIGltcGxlbWVudGluZyBzaWRlIHdpbmRvd3MgKEBw eHJlZntTaWRlCiBXaW5kb3dzfSkuCgotQGl0ZW0gQGNvZGV7d2luZG93LWF0b219CitAaXRl bSB3aW5kb3ctYXRvbQorQHZpbmRleCB3aW5kb3ctYXRvbSwgYSB3aW5kb3cgcGFyYW1ldGVy CiBUaGlzIHBhcmFtZXRlciBpcyB1c2VkIGZvciBpbXBsZW1lbnRpbmcgYXRvbWljIHdpbmRv d3MsIHNlZSBAcmVme0F0b21pYwogV2luZG93c30uCgotQGl0ZW0gQGNvZGV7bWluLW1hcmdp bnN9CitAaXRlbSBtb2RlLWxpbmUtZm9ybWF0CitAdmluZGV4IG1vZGUtbGluZS1mb3JtYXQs IGEgd2luZG93IHBhcmFtZXRlcgorVGhpcyBwYXJhbWV0ZXIgcmVwbGFjZXMgdGhlIHZhbHVl IG9mIHRoZSBidWZmZXItbG9jYWwgdmFyaWFibGUKK0Bjb2Rle21vZGUtbGluZS1mb3JtYXR9 IChAcHhyZWZ7TW9kZSBMaW5lIEJhc2ljc30pIG9mIHRoaXMgd2luZG93J3MKK2J1ZmZlciB3 aGVuZXZlciB0aGlzIHdpbmRvdyBpcyBkaXNwbGF5ZWQuICBUaGUgc3ltYm9sIEBjb2Rle25v bmV9IG1lYW5zCit0byBzdXBwcmVzcyBkaXNwbGF5IG9mIGEgbW9kZSBsaW5lIGZvciB0aGlz IHdpbmRvdy4gIERpc3BsYXkgYW5kCitjb250ZW50cyBvZiB0aGUgbW9kZSBsaW5lIG9uIG90 aGVyIHdpbmRvd3Mgc2hvd2luZyB0aGlzIGJ1ZmZlciBhcmUgbm90CithZmZlY3RlZC4KKwor QGl0ZW0gaGVhZGVyLWxpbmUtZm9ybWF0CitAdmluZGV4IGhlYWRlci1saW5lLWZvcm1hdCwg YSB3aW5kb3cgcGFyYW1ldGVyCitUaGlzIHBhcmFtZXRlciByZXBsYWNlcyB0aGUgdmFsdWUg b2YgdGhlIGJ1ZmZlci1sb2NhbCB2YXJpYWJsZQorQGNvZGV7aGVhZGVyLWxpbmUtZm9ybWF0 fSAoQHB4cmVme01vZGUgTGluZSBCYXNpY3N9KSBvZiB0aGlzIHdpbmRvdydzCitidWZmZXIg d2hlbmV2ZXIgdGhpcyB3aW5kb3cgaXMgZGlzcGxheWVkLiAgVGhlIHN5bWJvbCBAY29kZXtu b25lfSBtZWFucwordG8gc3VwcHJlc3MgZGlzcGxheSBvZiBhIGhlYWRlciBsaW5lIGZvciB0 aGlzIHdpbmRvdy4gIERpc3BsYXkgYW5kCitjb250ZW50cyBvZiB0aGUgaGVhZGVyIGxpbmUg b24gb3RoZXIgd2luZG93cyBzaG93aW5nIHRoaXMgYnVmZmVyIGFyZSBub3QKK2FmZmVjdGVk LgorCitAaXRlbSBtaW4tbWFyZ2lucworQHZpbmRleCBtaW4tbWFyZ2lucywgYSB3aW5kb3cg cGFyYW1ldGVyCiBUaGUgdmFsdWUgb2YgdGhpcyBwYXJhbWV0ZXIgaXMgYSBjb25zIGNlbGwg d2hvc2UgQHNje2Nhcn0gYW5kIEBzY3tjZHJ9LAogaWYgbm9uLUBjb2Rle25pbH0sIHNwZWNp ZnkgdGhlIG1pbmltdW0gdmFsdWVzIChpbiBjb2x1bW5zKSBmb3IgdGhlIGxlZnQKIGFuZCBy aWdodCBtYXJnaW4gb2YgdGhpcyB3aW5kb3cuICBXaGVuIHByZXNlbnQsIEVtYWNzIHdpbGwg dXNlIHRoZXNlCmRpZmYgLS1naXQgYS9ldGMvTkVXUyBiL2V0Yy9ORVdTCmluZGV4IDc4ZDM3 NDg0Li40MzBiYWI0IDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAt MTIwMyw3ICsxMjAzLDcgQEAgcnVuLgogZnJhbWUncyBvdXRlciBib3JkZXIuCgogKysrCi0q KiogTmV3IGZyYW1lIHBhcmFtZXRlcnMKKyoqKiBOZXcgZnJhbWUgcGFyYW1ldGVycyBhbmQg Y2hhbmdlZCBzZW1hbnRpY3MgZm9yIG9sZGVyIG9uZXMKCiArKysKICoqKiogJ3otZ3JvdXAn IHBvc2l0aW9ucyBhIGZyYW1lIGFib3ZlIG9yIGJlbG93IGFsbCBvdGhlcnMuCkBAIC0xMjQ4 LDEwICsxMjQ4LDMyIEBAIGZvY3VzIHZpYSB0aGUgbW91c2UuCiBmcmFtZS4KCiArKysKLSoq KiBUaGUgJ3dpZHRoJyBhbmQgJ2hlaWdodCcgZnJhbWUgcGFyYW1ldGVycyBhbGxvdyB0byBz cGVjaWZ5IHBpeGVsCi12YWx1ZXMgbm93LgorKioqKiAnd2lkdGgnIGFuZCAnaGVpZ2h0JyBh bGxvdyB0byBzcGVjaWZ5IHBpeGVsIHZhbHVlcyBhbmQgcmF0aW9zIG5vdy4KCiArKysKKyoq KiogJ2xlZnQnIGFuZCAndG9wJyBhbGxvdyB0byBzcGVjaWZ5IHJhdGlvcyBub3cuCisKKysr KworKioqKiAna2VlcC1yYXRpbycgcHJlc2VydmVzIHNpemUgYW5kIHBvc2l0aW9uIG9mIGNo aWxkIGZyYW1lcyB3aGVuIHRoZWlyCitwYXJlbnQgZnJhbWUgaXMgcmVzaXplZC4KKworKysr CisqKioqICduby1zcGVjaWFsLWdseXBocycgc3VwcHJlc3NlcyBkaXNwbGF5IG9mIHRydW5j YXRpb24gYW5kCitjb250aW51YXRpb24gZ2x5cGhzIGluIGEgZnJhbWUuCisKKysrKworKioq KiAnYXV0by1oaWRlLWZ1bmN0aW9uJyBhbmQgJ21pbmlidWZmZXItZXhpdCcgaGFuZGxlIGF1 dG8gaGlkaW5nIG9mCitmcmFtZXMgYW5kIGV4aXRpbmcgZnJvbSBtaW5pYnVmZmVyIGluZGl2 aWR1YWxseS4KKworKysrCisqKioqICdmaXQtZnJhbWUtdG8tYnVmZmVyLW1hcmdpbnMnIGFu ZCAnZml0LWZyYW1lLXRvLWJ1ZmZlci1zaXplcycKK2hhbmRsZSBmaXR0aW5nIGEgZnJhbWUg dG8gaXRzIGJ1ZmZlciBpbmRpdmlkdWFsbHkuCisKKysrKworKioqKiAnZHJhZy1pbnRlcm5h bC1ib3JkZXInLCAnZHJhZy13aXRoLWhlYWRlci1saW5lJywKKydkcmFnLXdpdGgtbW9kZS1s aW5lJywgJ3NuYXAtd2lkdGgnLCAndG9wLXZpc2libGUnIGFuZCAnYm90dG9tLXZpc2libGUn CithbGxvdyB0byBkcmFnIGFuZCByZXNpemUgZnJhbWVzIHdpdGggdGhlIG1vdXNlLgorCiAq KiogVGhlIG5ldyBmdW5jdGlvbiAnZnJhbWUtbGlzdC16LW9yZGVyJyByZXR1cm5zIGEgbGlz dCBvZiBhbGwgZnJhbWVzCiBpbiBaIChzdGFja2luZykgb3JkZXIuCgpAQCAtMTMxMCw2ICsx MzMyLDEwIEBAIGEgbmV3IHdpbmRvdyB3aGVuIG9wZW5pbmcgbWFuIHBhZ2VzIHdoZW4gdGhl cmUncyBhbHJlYWR5IG9uZSwgdXNlCiBpdHMgd2luZG93IGdldHMgZGVsZXRlZCBieSAnZGVs ZXRlLW90aGVyLXdpbmRvd3MnLgoKICsrKworKioqIE5ldyB3aW5kb3cgcGFyYW1ldGVycyAn bW9kZS1saW5lLWZvcm1hdCcgYW5kICdoZWFkZXItbGluZS1mb3JtYXQnCithbGxvdyB0byBv dmVycmlkZSB0aGUgYnVmZmVyLWxvY2FsIGZvcm1hdHMgZm9yIHRoaXMgd2luZG93LgorCisr KysKICoqKiBOZXcgY29tbWFuZCAnd2luZG93LXN3YXAtc3RhdGVzJyBzd2FwcyB0aGUgc3Rh dGVzIG9mIHR3byBsaXZlCiB3aW5kb3dzLgoKQEAgLTEzMTksNiArMTM0NSwxNSBAQCB3aW5k b3dzLgogd2luZG93IGNoYW5nZWQgc2l6ZSB3aGVuICd3aW5kb3ctc2l6ZS1jaGFuZ2UtZnVu Y3Rpb25zJyBhcmUgcnVuLgoKICsrKworKioqIFRoZSBuZXcgZnVuY3Rpb24gJ3dpbmRvdy1s aW5lcy1waXhlbC1kaW1lbnNpb25zJyByZXR1cm5zIHRoZSBwaXhlbAorZGltZW5zaW9ucyBv ZiBhIHdpbmRvdydzIHRleHQgbGluZXMuCisKKysrKworKioqIFRoZSBuZXcgZnVuY3Rpb24g J3dpbmRvdy1sYXJnZXN0LWVtcHR5LXJlY3RhbmdsZScgcmV0dXJucyB0aGUKK2RpbWVuc2lv bnMgb2YgdGhlIGxhcmdlc3QgcmVjdGFuZ3VsYXIgYXJlYSBub3Qgb2NjdXB5aW5nIGFueSB0 ZXh0IGluIGEKK3dpbmRvdydzIGJvZHkuCisKKysrKwogKioqIFRoZSBzZW1hbnRpY3Mgb2Yg J21vdXNlLWF1dG9zZWxlY3Qtd2luZG93JyBoYXMgY2hhbmdlZCBzbGlnaHRseS4KIEZvciBk ZXRhaWxzIHNlZSB0aGUgc2VjdGlvbiAiTW91c2UgV2luZG93IEF1dG8tc2VsZWN0aW9uIiBp biB0aGUgRWxpc3AKIG1hbnVhbC4KQEAgLTEzNjQsNyArMTM5OSw3IEBAIFRoaXMgaXMgaW4g Y29udHJhc3QgdG8gdGhlIGRlZmF1bHQgYWN0aW9uIG9uIFBPU0lYIFN5c3RlbXMsIHdoZXJl IGl0CiBjYXVzZXMgdGhlIHJlY2VpdmluZyBwcm9jZXNzIHRvIHRlcm1pbmF0ZSB3aXRoIGEg Y29yZSBkdW1wIGlmIG5vCiBkZWJ1Z2dlciBoYXMgYmVlbiBhdHRhY2hlZCB0byBpdC4KCi0q KiBgc2V0LW1vdXNlLXBvc2l0aW9uJyBhbmQgYHNldC1tb3VzZS1hYnNvbHV0ZS1waXhlbC1w b3NpdGlvbicgd29yaworKiogJ3NldC1tb3VzZS1wb3NpdGlvbicgYW5kICdzZXQtbW91c2Ut YWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24nIHdvcmsKIG9uIG1hY09TLgoKIAwKZGlmZiAtLWdp dCBhL2xpc3AvZnJhbWUuZWwgYi9saXNwL2ZyYW1lLmVsCmluZGV4IGI3YTU1MTYuLmI1NGRm NmYgMTAwNjQ0Ci0tLSBhL2xpc3AvZnJhbWUuZWwKKysrIGIvbGlzcC9mcmFtZS5lbApAQCAt MTExMCw2ICsxMTEwLDM4IEBAIGZyYW1lLXdpZHRoCiBJZiBGUkFNRSBpcyBvbWl0dGVkLCBk ZXNjcmliZSB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGZyYW1lLiIKICAgKGNkciAoYXNzcSAn d2lkdGggKGZyYW1lLXBhcmFtZXRlcnMgZnJhbWUpKSkpCgorKGRlZmFsaWFzICdmcmFtZS1i b3JkZXItd2lkdGggJ2ZyYW1lLWludGVybmFsLWJvcmRlci13aWR0aCkKKyhkZWZhbGlhcyAn ZnJhbWUtcGl4ZWwtd2lkdGggJ2ZyYW1lLW5hdGl2ZS13aWR0aCkKKyhkZWZhbGlhcyAnZnJh bWUtcGl4ZWwtaGVpZ2h0ICdmcmFtZS1uYXRpdmUtaGVpZ2h0KQorCisoZGVmdW4gZnJhbWUt aW5uZXItd2lkdGggKCZvcHRpb25hbCBmcmFtZSkKKyAgIlJldHVybiBpbm5lciB3aWR0aCBv ZiBGUkFNRSBpbiBwaXhlbHMuCitGUkFNRSBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgZnJh bWUuIgorICAoc2V0cSBmcmFtZSAod2luZG93LW5vcm1hbGl6ZS1mcmFtZSBmcmFtZSkpCisg ICgtIChmcmFtZS1uYXRpdmUtd2lkdGggZnJhbWUpCisgICAgICgqIDIgKGZyYW1lLWludGVy bmFsLWJvcmRlci13aWR0aCBmcmFtZSkpKSkKKworKGRlZnVuIGZyYW1lLWlubmVyLWhlaWdo dCAoJm9wdGlvbmFsIGZyYW1lKQorICAiUmV0dXJuIGlubmVyIGhlaWdodCBvZiBGUkFNRSBp biBwaXhlbHMuCitGUkFNRSBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgZnJhbWUuIgorICAo c2V0cSBmcmFtZSAod2luZG93LW5vcm1hbGl6ZS1mcmFtZSBmcmFtZSkpCisgICgtIChmcmFt ZS1uYXRpdmUtaGVpZ2h0IGZyYW1lKQorICAgICAoKiAyIChmcmFtZS1pbnRlcm5hbC1ib3Jk ZXItd2lkdGggZnJhbWUpKSkpCisKKyhkZWZ1biBmcmFtZS1vdXRlci13aWR0aCAoJm9wdGlv bmFsIGZyYW1lKQorICAiUmV0dXJuIG91dGVyIHdpZHRoIG9mIEZSQU1FIGluIHBpeGVscy4K K0ZSQU1FIGRlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCBmcmFtZS4iCisgIChzZXRxIGZyYW1l ICh3aW5kb3ctbm9ybWFsaXplLWZyYW1lIGZyYW1lKSkKKyAgKGxldCAoKGVkZ2VzIChmcmFt ZS1lZGdlcyBmcmFtZSAnb3V0ZXItZWRnZXMpKSkKKyAgICAoLSAobnRoIDIgZWRnZXMpIChu dGggMCBlZGdlcykpKSkKKworKGRlZnVuIGZyYW1lLW91dGVyLWhlaWdodCAoJm9wdGlvbmFs IGZyYW1lKQorICAiUmV0dXJuIG91dGVyIGhlaWdodCBvZiBGUkFNRSBpbiBwaXhlbHMuCitG UkFNRSBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgZnJhbWUuIgorICAoc2V0cSBmcmFtZSAo d2luZG93LW5vcm1hbGl6ZS1mcmFtZSBmcmFtZSkpCisgIChsZXQgKChlZGdlcyAoZnJhbWUt ZWRnZXMgZnJhbWUgJ291dGVyLWVkZ2VzKSkpCisgICAgKC0gKG50aCAzIGVkZ2VzKSAobnRo IDEgZWRnZXMpKSkpCisKIChkZWNsYXJlLWZ1bmN0aW9uIHgtbGlzdC1mb250cyAieGZhY2Vz LmMiCiAgICAgICAgICAgICAgICAgICAocGF0dGVybiAmb3B0aW9uYWwgZmFjZSBmcmFtZSBt YXhpbXVtIHdpZHRoKSkKCmRpZmYgLS1naXQgYS9saXNwL21pbmlidWZmZXIuZWwgYi9saXNw L21pbmlidWZmZXIuZWwKaW5kZXggYzM0ODBjZC4uZTViMTAyOSAxMDA2NDQKLS0tIGEvbGlz cC9taW5pYnVmZmVyLmVsCisrKyBiL2xpc3AvbWluaWJ1ZmZlci5lbApAQCAtNzQ2LDcgKzc0 Niw3IEBAIGNvbXBsZXRpb24tc2hvdy1pbmxpbmUtaGVscAoKIChkZWZjdXN0b20gY29tcGxl dGlvbi1hdXRvLWhlbHAgdAogICAiTm9uLW5pbCBtZWFucyBhdXRvbWF0aWNhbGx5IHByb3Zp ZGUgaGVscCBmb3IgaW52YWxpZCBjb21wbGV0aW9uIGlucHV0LgotSWYgdGhlIHZhbHVlIGlz IHQgdGhlICpDb21wbGV0aW9uKiBidWZmZXIgaXMgZGlzcGxheWVkIHdoZW5ldmVyIGNvbXBs ZXRpb24KK0lmIHRoZSB2YWx1ZSBpcyB0IHRoZSAqQ29tcGxldGlvbnMqIGJ1ZmZlciBpcyBk aXNwbGF5ZWQgd2hlbmV2ZXIgY29tcGxldGlvbgogaXMgcmVxdWVzdGVkIGJ1dCBjYW5ub3Qg YmUgZG9uZS4KIElmIHRoZSB2YWx1ZSBpcyBgbGF6eScsIHRoZSAqQ29tcGxldGlvbnMqIGJ1 ZmZlciBpcyBvbmx5IGRpc3BsYXllZCBhZnRlcgogdGhlIHNlY29uZCBmYWlsZWQgYXR0ZW1w dCB0byBjb21wbGV0ZS4iCmRpZmYgLS1naXQgYS9saXNwL21vdXNlLmVsIGIvbGlzcC9tb3Vz ZS5lbAppbmRleCA5YjZiMTY5Li5lMDc5NDQzIDEwMDY0NAotLS0gYS9saXNwL21vdXNlLmVs CisrKyBiL2xpc3AvbW91c2UuZWwKQEAgLTM4MCw3ICszODAsNyBAQCBtb3VzZS1zcGxpdC13 aW5kb3ctaG9yaXpvbnRhbGx5CgogKGRlZnVuIG1vdXNlLWRyYWctbGluZSAoc3RhcnQtZXZl bnQgbGluZSkKICAgIkRyYWcgYSBtb2RlIGxpbmUsIGhlYWRlciBsaW5lLCBvciB2ZXJ0aWNh bCBsaW5lIHdpdGggdGhlIG1vdXNlLgotU1RBUlQtRVZFTlQgaXMgdGhlIHN0YXJ0aW5nIG1v dXNlLWV2ZW50IG9mIHRoZSBkcmFnIGFjdGlvbi4gIExJTkUKK1NUQVJULUVWRU5UIGlzIHRo ZSBzdGFydGluZyBtb3VzZSBldmVudCBvZiB0aGUgZHJhZyBhY3Rpb24uICBMSU5FCiBtdXN0 IGJlIG9uZSBvZiB0aGUgc3ltYm9scyBgaGVhZGVyJywgYG1vZGUnLCBvciBgdmVydGljYWwn LiIKICAgOzsgR2l2ZSB0ZW1wb3JhcnkgbW9kZXMgc3VjaCBhcyBpc2VhcmNoIGEgY2hhbmNl IHRvIHR1cm4gb2ZmLgogICAocnVuLWhvb2tzICdtb3VzZS1sZWF2ZS1idWZmZXItaG9vaykK QEAgLTQwNSwyOSArNDA1LDE1IEBAIG1vdXNlLWRyYWctbGluZQogICAgIDs7IHdpbmRvdydz IGVkZ2Ugd2UgZHJhZy4KICAgICAoY29uZAogICAgICAoKGVxIGxpbmUgJ2hlYWRlcikKLSAg ICAgIChpZiAod2luZG93LWF0LXNpZGUtcCB3aW5kb3cgJ3RvcCkKLQkgIDs7IFdlIGNhbid0 IGRyYWcgdGhlIGhlYWRlciBsaW5lIG9mIGEgdG9wbW9zdCB3aW5kb3cuCi0JICAoc2V0cSBk cmFnZ2FibGUgbmlsKQotCTs7IERyYWcgYm90dG9tIGVkZ2Ugb2Ygd2luZG93IGFib3ZlIHRo ZSBoZWFkZXIgbGluZS4KLQkoc2V0cSB3aW5kb3cgKHdpbmRvdy1pbi1kaXJlY3Rpb24gJ2Fi b3ZlIHdpbmRvdyB0KSkpKQotICAgICAoKGVxIGxpbmUgJ21vZGUpCi0gICAgICAoaWYgKGFu ZCAod2luZG93LWF0LXNpZGUtcCB3aW5kb3cgJ2JvdHRvbSkKLQkgICAgICAgOzsgQWxsb3cg cmVzaXppbmcgdGhlIG1pbmlidWZmZXIgd2luZG93IGlmIGl0J3Mgb24gdGhlCi0JICAgICAg IDs7IHNhbWUgZnJhbWUgYXMgYW5kIGltbWVkaWF0ZWx5IGJlbG93IGB3aW5kb3cnLCBhbmQg aXQncwotCSAgICAgICA7OyBlaXRoZXIgYWN0aXZlIG9yIGByZXNpemUtbWluaS13aW5kb3dz JyBpcyBuaWwuCi0JICAgICAgIChsZXQgKChtaW5pYnVmZmVyLXdpbmRvdyAobWluaWJ1ZmZl ci13aW5kb3cgZnJhbWUpKSkKLQkJIChub3QgKGFuZCAoZXEgKHdpbmRvdy1mcmFtZSBtaW5p YnVmZmVyLXdpbmRvdykgZnJhbWUpCi0JCQkgICAob3IgKG5vdCByZXNpemUtbWluaS13aW5k b3dzKQotCQkJICAgICAgIChlcSBtaW5pYnVmZmVyLXdpbmRvdwotCQkJCSAgIChhY3RpdmUt bWluaWJ1ZmZlci13aW5kb3cpKSkpKSkpCi0JICAoc2V0cSBkcmFnZ2FibGUgbmlsKSkpCisg ICAgICA7OyBEcmFnIGJvdHRvbSBlZGdlIG9mIHdpbmRvdyBhYm92ZSB0aGUgaGVhZGVyIGxp bmUuCisgICAgICAoc2V0cSB3aW5kb3cgKHdpbmRvdy1pbi1kaXJlY3Rpb24gJ2Fib3ZlIHdp bmRvdyB0KSkpCisgICAgICgoZXEgbGluZSAnbW9kZSkpCiAgICAgICgoZXEgbGluZSAndmVy dGljYWwpCiAgICAgICAobGV0ICgoZGl2aWRlci13aWR0aCAoZnJhbWUtcmlnaHQtZGl2aWRl ci13aWR0aCBmcmFtZSkpKQogICAgICAgICAod2hlbiAoYW5kIChvciAobm90IChudW1iZXJw IGRpdmlkZXItd2lkdGgpKQogICAgICAgICAgICAgICAgICAgICAgICAoemVyb3AgZGl2aWRl ci13aWR0aCkpCiAgICAgICAgICAgICAgICAgICAgKGVxIChmcmFtZS1wYXJhbWV0ZXIgZnJh bWUgJ3ZlcnRpY2FsLXNjcm9sbC1iYXJzKSAnbGVmdCkpCiAgICAgICAgICAgKHNldHEgd2lu ZG93ICh3aW5kb3ctaW4tZGlyZWN0aW9uICdsZWZ0IHdpbmRvdyB0KSkpKSkpCi0KICAgICAo bGV0KiAoKGV4aXRmdW4gbmlsKQogICAgICAgICAgICAobW92ZQogCSAgICAobGFtYmRhIChl dmVudCkgKGludGVyYWN0aXZlICJlIikKQEAgLTUzMCwyMCArNTE2LDQwNSBAQCBtb3VzZS1k cmFnLWxpbmUKIAkgICAgIHQgKGxhbWJkYSAoKSAoc2V0cSB0cmFjay1tb3VzZSBvbGQtdHJh Y2stbW91c2UpKSkpKSkpCgogKGRlZnVuIG1vdXNlLWRyYWctbW9kZS1saW5lIChzdGFydC1l dmVudCkKLSAgIkNoYW5nZSB0aGUgaGVpZ2h0IG9mIGEgd2luZG93IGJ5IGRyYWdnaW5nIG9u IHRoZSBtb2RlIGxpbmUuIgorICAiQ2hhbmdlIHRoZSBoZWlnaHQgb2YgYSB3aW5kb3cgYnkg ZHJhZ2dpbmcgb24gaXRzIG1vZGUgbGluZS4KK1NUQVJULUVWRU5UIGlzIHRoZSBzdGFydGlu ZyBtb3VzZSBldmVudCBvZiB0aGUgZHJhZyBhY3Rpb24uCisKK0lmIHRoZSBkcmFnIGhhcHBl bnMgaW4gYSBtb2RlIGxpbmUgb24gdGhlIGJvdHRvbSBvZiBhIGZyYW1lIGFuZAordGhhdCBm cmFtZSdzIGBkcmFnLXdpdGgtbW9kZS1saW5lJyBwYXJhbWV0ZXIgaXMgbm9uLW5pbCwgZHJh ZyB0aGUKK2ZyYW1lIGluc3RlYWQuIgogICAoaW50ZXJhY3RpdmUgImUiKQotICAobW91c2Ut ZHJhZy1saW5lIHN0YXJ0LWV2ZW50ICdtb2RlKSkKKyAgKGxldCogKChzdGFydCAoZXZlbnQt c3RhcnQgc3RhcnQtZXZlbnQpKQorCSAod2luZG93IChwb3NuLXdpbmRvdyBzdGFydCkpCisg ICAgICAgICAoZnJhbWUgKHdpbmRvdy1mcmFtZSB3aW5kb3cpKSkKKyAgICAoY29uZAorICAg ICAoKG5vdCAod2luZG93LWxpdmUtcCB3aW5kb3cpKSkKKyAgICAgKChvciAobm90ICh3aW5k b3ctYXQtc2lkZS1wIHdpbmRvdyAnYm90dG9tKSkKKyAgICAgICAgICA7OyBBbGxvdyByZXNp emluZyB0aGUgbWluaWJ1ZmZlciB3aW5kb3cgaWYgaXQncyBvbiB0aGUKKyAgICAgICAgICA7 OyBzYW1lIGZyYW1lIGFzIGFuZCBpbW1lZGlhdGVseSBiZWxvdyBgd2luZG93JywgYW5kIGl0 J3MKKyAgICAgICAgICA7OyBlaXRoZXIgYWN0aXZlIG9yIGByZXNpemUtbWluaS13aW5kb3dz JyBpcyBuaWwuCisgICAgICAgICAgKGxldCAoKG1pbmlidWZmZXItd2luZG93IChtaW5pYnVm ZmVyLXdpbmRvdyBmcmFtZSkpKQorICAgICAgICAgICAgKGFuZCAoZXEgKHdpbmRvdy1mcmFt ZSBtaW5pYnVmZmVyLXdpbmRvdykgZnJhbWUpCisgICAgICAgICAgICAgICAgIChvciAobm90 IHJlc2l6ZS1taW5pLXdpbmRvd3MpCisgICAgICAgICAgICAgICAgICAgICAoZXEgbWluaWJ1 ZmZlci13aW5kb3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYWN0aXZlLW1pbmlidWZm ZXItd2luZG93KSkpKSkpCisgICAgICAobW91c2UtZHJhZy1saW5lIHN0YXJ0LWV2ZW50ICdt b2RlKSkKKyAgICAgKChhbmQgKGZyYW1lLXBhcmFtZXRlciBmcmFtZSAnZHJhZy13aXRoLW1v ZGUtbGluZSkKKyAgICAgICAgICAgKHdpbmRvdy1hdC1zaWRlLXAgd2luZG93ICdib3R0b20p CisgICAgICAgICAgIChsZXQgKChtaW5pYnVmZmVyLXdpbmRvdyAobWluaWJ1ZmZlci13aW5k b3cgZnJhbWUpKSkKKyAgICAgICAgICAgICAobm90IChlcSAod2luZG93LWZyYW1lIG1pbmli dWZmZXItd2luZG93KSBmcmFtZSkpKSkKKyAgICAgIDs7IERyYWcgZnJhbWUgd2hlbiB0aGUg d2luZG93IGlzIG9uIHRoZSBib3R0b20gb2YgaXRzIGZyYW1lIGFuZAorICAgICAgOzsgdGhl cmUgaXMgbm8gbWluaWJ1ZmZlciB3aW5kb3cgYmVsb3cuCisgICAgICAobW91c2UtZHJhZy1m cmFtZSBzdGFydC1ldmVudCAnbW92ZSkpKSkpCgogKGRlZnVuIG1vdXNlLWRyYWctaGVhZGVy LWxpbmUgKHN0YXJ0LWV2ZW50KQotICAiQ2hhbmdlIHRoZSBoZWlnaHQgb2YgYSB3aW5kb3cg YnkgZHJhZ2dpbmcgb24gdGhlIGhlYWRlciBsaW5lLiIKKyAgIkNoYW5nZSB0aGUgaGVpZ2h0 IG9mIGEgd2luZG93IGJ5IGRyYWdnaW5nIG9uIGl0cyBoZWFkZXIgbGluZS4KK1NUQVJULUVW RU5UIGlzIHRoZSBzdGFydGluZyBtb3VzZSBldmVudCBvZiB0aGUgZHJhZyBhY3Rpb24uCisK K0lmIHRoZSBkcmFnIGhhcHBlbnMgaW4gYSBoZWFkZXIgbGluZSBvbiB0aGUgdG9wIG9mIGEg ZnJhbWUgYW5kCit0aGF0IGZyYW1lJ3MgYGRyYWctd2l0aC1oZWFkZXItbGluZScgcGFyYW1l dGVyIGlzIG5vbi1uaWwsIGRyYWcKK3RoZSBmcmFtZSBpbnN0ZWFkLiIKICAgKGludGVyYWN0 aXZlICJlIikKLSAgKG1vdXNlLWRyYWctbGluZSBzdGFydC1ldmVudCAnaGVhZGVyKSkKKyAg KGxldCogKChzdGFydCAoZXZlbnQtc3RhcnQgc3RhcnQtZXZlbnQpKQorCSAod2luZG93IChw b3NuLXdpbmRvdyBzdGFydCkpKQorICAgIChpZiAoYW5kICh3aW5kb3ctbGl2ZS1wIHdpbmRv dykKKyAgICAgICAgICAgICAobm90ICh3aW5kb3ctYXQtc2lkZS1wIHdpbmRvdyAndG9wKSkp CisgICAgICAgIChtb3VzZS1kcmFnLWxpbmUgc3RhcnQtZXZlbnQgJ2hlYWRlcikKKyAgICAg IChsZXQgKChmcmFtZSAod2luZG93LWZyYW1lIHdpbmRvdykpKQorICAgICAgICAod2hlbiAo ZnJhbWUtcGFyYW1ldGVyIGZyYW1lICdkcmFnLXdpdGgtaGVhZGVyLWxpbmUpCisgICAgICAg ICAgKG1vdXNlLWRyYWctZnJhbWUgc3RhcnQtZXZlbnQgJ21vdmUpKSkpKSkKCiAoZGVmdW4g bW91c2UtZHJhZy12ZXJ0aWNhbC1saW5lIChzdGFydC1ldmVudCkKLSAgIkNoYW5nZSB0aGUg d2lkdGggb2YgYSB3aW5kb3cgYnkgZHJhZ2dpbmcgb24gdGhlIHZlcnRpY2FsIGxpbmUuIgor ICAiQ2hhbmdlIHRoZSB3aWR0aCBvZiBhIHdpbmRvdyBieSBkcmFnZ2luZyBvbiBhIHZlcnRp Y2FsIGxpbmUuCitTVEFSVC1FVkVOVCBpcyB0aGUgc3RhcnRpbmcgbW91c2UgZXZlbnQgb2Yg dGhlIGRyYWcgYWN0aW9uLiIKICAgKGludGVyYWN0aXZlICJlIikKICAgKG1vdXNlLWRyYWct bGluZSBzdGFydC1ldmVudCAndmVydGljYWwpKQogDAorKGRlZnVuIG1vdXNlLXJlc2l6ZS1m cmFtZSAoZnJhbWUgeC1kaWZmIHktZGlmZiAmb3B0aW9uYWwgeC1tb3ZlIHktbW92ZSkKKyAg IkhlbHBlciBmdW5jdGlvbiBmb3IgYG1vdXNlLWRyYWctZnJhbWUnLiIKKyAgKGxldCogKChm cmFtZS14LXkgKGZyYW1lLXBvc2l0aW9uIGZyYW1lKSkKKyAgICAgICAgIChmcmFtZS14IChj YXIgZnJhbWUteC15KSkKKyAgICAgICAgIChmcmFtZS15IChjZHIgZnJhbWUteC15KSkKKyAg ICAgICAgIGFsaXN0KQorICAgIChpZiAoPiB4LWRpZmYgMCkKKyAgICAgICAgKHdoZW4geC1t b3ZlCisgICAgICAgICAgKHNldHEgeC1kaWZmIChtaW4geC1kaWZmIGZyYW1lLXgpKQorICAg ICAgICAgIChzZXRxIHgtbW92ZSAoLSBmcmFtZS14IHgtZGlmZikpKQorICAgICAgKGxldCog KChtaW4td2lkdGggKGZyYW1lLXdpbmRvd3MtbWluLXNpemUgZnJhbWUgdCBuaWwgdCkpCisg ICAgICAgICAgICAgKG1pbi1kaWZmIChtYXggMCAoLSAoZnJhbWUtaW5uZXItd2lkdGggZnJh bWUpIG1pbi13aWR0aCkpKSkKKyAgICAgICAgKHNldHEgeC1kaWZmIChtYXggeC1kaWZmICgt IG1pbi1kaWZmKSkpCisgICAgICAgICh3aGVuIHgtbW92ZQorICAgICAgICAgIChzZXRxIHgt bW92ZSAoKyBmcmFtZS14ICgtIHgtZGlmZikpKSkpKQorCisgICAgKGlmICg+IHktZGlmZiAw KQorICAgICAgICAod2hlbiB5LW1vdmUKKyAgICAgICAgICAoc2V0cSB5LWRpZmYgKG1pbiB5 LWRpZmYgZnJhbWUteSkpCisgICAgICAgICAgKHNldHEgeS1tb3ZlICgtIGZyYW1lLXkgeS1k aWZmKSkpCisgICAgICAobGV0KiAoKG1pbi1oZWlnaHQgKGZyYW1lLXdpbmRvd3MtbWluLXNp emUgZnJhbWUgbmlsIG5pbCB0KSkKKyAgICAgICAgICAgICAobWluLWRpZmYgKG1heCAwICgt IChmcmFtZS1pbm5lci1oZWlnaHQgZnJhbWUpIG1pbi1oZWlnaHQpKSkpCisgICAgICAgIChz ZXRxIHktZGlmZiAobWF4IHktZGlmZiAoLSBtaW4tZGlmZikpKQorICAgICAgICAod2hlbiB5 LW1vdmUKKyAgICAgICAgICAoc2V0cSB5LW1vdmUgKCsgZnJhbWUteSAoLSB5LWRpZmYpKSkp KSkKKworICAgICh1bmxlc3MgKHplcm9wIHgtZGlmZikKKyAgICAgICh3aGVuIHgtbW92ZQor ICAgICAgICAocHVzaCBgKGxlZnQgLiAseC1tb3ZlKSBhbGlzdCkpCisgICAgICAocHVzaCBg KHdpZHRoIC4gKHRleHQtcGl4ZWxzIC4gLCgrIChmcmFtZS10ZXh0LXdpZHRoIGZyYW1lKSB4 LWRpZmYpKSkKKyAgICAgICAgICAgIGFsaXN0KSkKKyAgICAodW5sZXNzICh6ZXJvcCB5LWRp ZmYpCisgICAgICAod2hlbiB5LW1vdmUKKyAgICAgICAgKHB1c2ggYCh0b3AgLiAseS1tb3Zl KSBhbGlzdCkpCisgICAgICAocHVzaCBgKGhlaWdodCAuICh0ZXh0LXBpeGVscyAuICwoKyAo ZnJhbWUtdGV4dC1oZWlnaHQgZnJhbWUpIHktZGlmZikpKQorICAgICAgICAgICAgYWxpc3Qp KQorICAgICh3aGVuIGFsaXN0CisgICAgICAobW9kaWZ5LWZyYW1lLXBhcmFtZXRlcnMgZnJh bWUgYWxpc3QpKSkpCisKKyhkZWZ1biBtb3VzZS1kcmFnLWZyYW1lIChzdGFydC1ldmVudCBw YXJ0KQorICAiRHJhZyBhIGZyYW1lIG9yIG9uZSBvZiBpdHMgZWRnZXMgd2l0aCB0aGUgbW91 c2UuCitTVEFSVC1FVkVOVCBpcyB0aGUgc3RhcnRpbmcgbW91c2UgZXZlbnQgb2YgdGhlIGRy YWcgYWN0aW9uLiAgSXRzCitwb3NpdGlvbiB3aW5kb3cgZGVub3RlcyB0aGUgZnJhbWUgdGhh dCB3aWxsIGJlIGRyYWdnZWQuCisKK1BBUlQgc3BlY2lmaWVzIHRoZSBwYXJ0IHRoYXQgaGFz IGJlZW4gZHJhZ2dlZCBhbmQgbXVzdCBiZSBvbmUgb2YKK3RoZSBzeW1ib2xzICdsZWZ0Jywg J3RvcCcsICdyaWdodCcsICdib3R0b20nLCAndG9wLWxlZnQnLAorJ3RvcC1yaWdodCcsICdi b3R0b20tbGVmdCcsICdib3R0b20tcmlnaHQnIHRvIGRyYWcgYW4gaW50ZXJuYWwKK2JvcmRl ciBvciBlZGdlLiAgSWYgUEFSVCBlcXVhbHMgJ21vdmUnLCB0aGlzIG1lYW5zIHRvIG1vdmUg dGhlCitmcmFtZSB3aXRoIHRoZSBtb3VzZS4iCisgIDs7IEdpdmUgdGVtcG9yYXJ5IG1vZGVz IHN1Y2ggYXMgaXNlYXJjaCBhIGNoYW5jZSB0byB0dXJuIG9mZi4KKyAgKHJ1bi1ob29rcyAn bW91c2UtbGVhdmUtYnVmZmVyLWhvb2spCisgIChsZXQqICgoZWNoby1rZXlzdHJva2VzIDAp CisJIChzdGFydCAoZXZlbnQtc3RhcnQgc3RhcnQtZXZlbnQpKQorICAgICAgICAgKHdpbmRv dyAocG9zbi13aW5kb3cgc3RhcnQpKQorICAgICAgICAgOzsgRlJBTUUgaXMgdGhlIGZyYW1l IHRvIGRyYWcuCisgICAgICAgICAoZnJhbWUgKGlmICh3aW5kb3ctbGl2ZS1wIHdpbmRvdykK KyAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy1mcmFtZSB3aW5kb3cpCisgICAgICAgICAg ICAgICAgICB3aW5kb3cpKQorICAgICAgICAgKHdpZHRoIChmcmFtZS1uYXRpdmUtd2lkdGgg ZnJhbWUpKQorICAgICAgICAgKGhlaWdodCAoZnJhbWUtbmF0aXZlLWhlaWdodCBmcmFtZSkp CisgICAgICAgICA7OyBQQVJFTlQgaXMgdGhlIHBhcmVudCBmcmFtZSBvZiBGUkFNRSBvciwg aWYgRlJBTUUgaXMgYQorICAgICAgICAgOzsgdG9wLWxldmVsIGZyYW1lLCBGUkFNRSdzIHdv cmthcmVhLgorICAgICAgICAgKHBhcmVudCAoZnJhbWUtcGFyZW50IGZyYW1lKSkKKyAgICAg ICAgIChwYXJlbnQtZWRnZXMKKyAgICAgICAgICAoaWYgcGFyZW50CisgICAgICAgICAgICAg IGAoMCAwICwoZnJhbWUtbmF0aXZlLXdpZHRoIHBhcmVudCkgLChmcmFtZS1uYXRpdmUtaGVp Z2h0IHBhcmVudCkpCisgICAgICAgICAgICAobGV0KiAoKGF0dHJpYnV0ZXMKKyAgICAgICAg ICAgICAgICAgICAgKGNhciAoZGlzcGxheS1tb25pdG9yLWF0dHJpYnV0ZXMtbGlzdCkpKQor ICAgICAgICAgICAgICAgICAgICh3b3JrYXJlYSAoYXNzcSAnd29ya2FyZWEgYXR0cmlidXRl cykpKQorICAgICAgICAgICAgICAoYW5kIHdvcmthcmVhCisgICAgICAgICAgICAgICAgICAg YCgsKG50aCAxIHdvcmthcmVhKSAsKG50aCAyIHdvcmthcmVhKQorICAgICAgICAgICAgICAg ICAgICAgLCgrIChudGggMSB3b3JrYXJlYSkgKG50aCAzIHdvcmthcmVhKSkKKyAgICAgICAg ICAgICAgICAgICAgICwoKyAobnRoIDIgd29ya2FyZWEpIChudGggNCB3b3JrYXJlYSkpKSkp KSkKKyAgICAgICAgIChwYXJlbnQtbGVmdCAoYW5kIHBhcmVudC1lZGdlcyAobnRoIDAgcGFy ZW50LWVkZ2VzKSkpCisgICAgICAgICAocGFyZW50LXRvcCAoYW5kIHBhcmVudC1lZGdlcyAo bnRoIDEgcGFyZW50LWVkZ2VzKSkpCisgICAgICAgICAocGFyZW50LXJpZ2h0IChhbmQgcGFy ZW50LWVkZ2VzIChudGggMiBwYXJlbnQtZWRnZXMpKSkKKyAgICAgICAgIChwYXJlbnQtYm90 dG9tIChhbmQgcGFyZW50LWVkZ2VzIChudGggMyBwYXJlbnQtZWRnZXMpKSkKKyAgICAgICAg IDs7IGBwb3MteCcgYW5kIGBwb3MteScgcmVjb3JkIHRoZSB4LSBhbmQgeS1jb29yZGluYXRl cyBvZiB0aGUKKwkgOzsgbGFzdCBzYW1wbGVkIG1vdXNlIHBvc2l0aW9uLiAgTm90ZSB0aGF0 IHdlIHNhbXBsZSBhYnNvbHV0ZQorCSA7OyBtb3VzZSBwb3NpdGlvbnMgdG8gYXZvaWQgdGhh dCBtb3ZpbmcgdGhlIG1vdXNlIGZyb20gb25lCisJIDs7IGZyYW1lIGludG8gYW5vdGhlciBn ZXRzIGludG8gb3VyIHdheS4gIGBsYXN0LXgnIGFuZCBgbGFzdC15JworCSA7OyByZWNvcmRz IHRoZSB4LSBhbmQgeS1jb29yZGluYXRlcyBvZiB0aGUgcHJldmlvdXNseSBzYW1wbGVkCisJ IDs7IHBvc2l0aW9uLiAgVGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYGxhc3QteCcgYW5kIGBw b3MteCcgYXMKKwkgOzsgd2VsbCBhcyBgbGFzdC15JyBhbmQgYHBvcy15JyBkZXRlcm1pbmUg dGhlIGFtb3VudCB0aGUgbW91c2UKKwkgOzsgaGFzIGJlZW4gZHJhZ2dlZCBiZXR3ZWVuIHRo ZSBsYXN0IHR3byBzYW1wbGVzLgorICAgICAgICAgcG9zLXgteSBwb3MteCBwb3MteQorICAg ICAgICAgKGxhc3QteC15IChtb3VzZS1hYnNvbHV0ZS1waXhlbC1wb3NpdGlvbikpCisgICAg ICAgICAobGFzdC14IChjYXIgbGFzdC14LXkpKQorICAgICAgICAgKGxhc3QteSAoY2RyIGxh c3QteC15KSkKKyAgICAgICAgIDs7IGBzbmFwLXgnIGFuZCBgc25hcC15JyByZWNvcmQgdGhl IHgtIGFuZCB5LWNvb3JkaW5hdGVzIG9mIHRoZQorICAgICAgICAgOzsgbW91c2UgcG9zaXRp b24gd2hlbiBGUkFNRSBzbmFwcGVkLiAgQXMgc29vbiBhcyB0aGUKKyAgICAgICAgIDs7IGRp ZmZlcmVuY2UgYmV0d2VlbiBgcG9zLXgnIGFuZCBgc25hcC14JyAob3IgYHBvcy15JyBhbmQK KyAgICAgICAgIDs7IGBzbmFwLXknKSBleGNlZWRzIHRoZSB2YWx1ZSBvZiBGUkFNRSdzIGBz bmFwLXdpZHRoJworICAgICAgICAgOzsgcGFyYW1ldGVyLCB1bnNuYXAgRlJBTUUgKGF0IHRo ZSByZXNwZWN0aXZlIHNpZGUpLiAgYHNuYXAteCcKKyAgICAgICAgIDs7IGFuZCBgc25hcC15 JyBuaWwgbWVhbiBGUkFNRSBpcyBjdXJlcm50bHkgbm90IHNuYXBwZWQuCisgICAgICAgICBz bmFwLXggc25hcC15CisgICAgICAgICAoZXhpdGZ1biBuaWwpCisgICAgICAgICAobW92ZQor ICAgICAgICAgIChsYW1iZGEgKGV2ZW50KQorICAgICAgICAgICAgKGludGVyYWN0aXZlICJl IikKKyAgICAgICAgICAgICh3aGVuIChjb25zcCBldmVudCkKKyAgICAgICAgICAgICAgKHNl dHEgcG9zLXgteSAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24pKQorICAgICAgICAg ICAgICAoc2V0cSBwb3MteCAoY2FyIHBvcy14LXkpKQorICAgICAgICAgICAgICAoc2V0cSBw b3MteSAoY2RyIHBvcy14LXkpKQorICAgICAgICAgICAgICAoY29uZAorICAgICAgICAgICAg ICAgKChlcSBwYXJ0ICdsZWZ0KQorICAgICAgICAgICAgICAgIChtb3VzZS1yZXNpemUtZnJh bWUgZnJhbWUgKC0gbGFzdC14IHBvcy14KSAwIHQpKQorICAgICAgICAgICAgICAgKChlcSBw YXJ0ICd0b3ApCisgICAgICAgICAgICAgICAgKG1vdXNlLXJlc2l6ZS1mcmFtZSBmcmFtZSAw ICgtIGxhc3QteSBwb3MteSkgbmlsIHQpKQorICAgICAgICAgICAgICAgKChlcSBwYXJ0ICdy aWdodCkKKyAgICAgICAgICAgICAgICAobW91c2UtcmVzaXplLWZyYW1lIGZyYW1lICgtIHBv cy14IGxhc3QteCkgMCkpCisgICAgICAgICAgICAgICAoKGVxIHBhcnQgJ2JvdHRvbSkKKyAg ICAgICAgICAgICAgICAobW91c2UtcmVzaXplLWZyYW1lIGZyYW1lIDAgKC0gcG9zLXkgbGFz dC15KSkpCisgICAgICAgICAgICAgICAoKGVxIHBhcnQgJ3RvcC1sZWZ0KQorICAgICAgICAg ICAgICAgIChtb3VzZS1yZXNpemUtZnJhbWUKKyAgICAgICAgICAgICAgICAgZnJhbWUgKC0g bGFzdC14IHBvcy14KSAoLSBsYXN0LXkgcG9zLXkpIHQgdCkpCisgICAgICAgICAgICAgICAo KGVxIHBhcnQgJ3RvcC1yaWdodCkKKyAgICAgICAgICAgICAgICAobW91c2UtcmVzaXplLWZy YW1lCisgICAgICAgICAgICAgICAgIGZyYW1lICgtIHBvcy14IGxhc3QteCkgKC0gbGFzdC15 IHBvcy15KSBuaWwgdCkpCisgICAgICAgICAgICAgICAoKGVxIHBhcnQgJ2JvdHRvbS1sZWZ0 KQorICAgICAgICAgICAgICAgIChtb3VzZS1yZXNpemUtZnJhbWUKKyAgICAgICAgICAgICAg ICAgZnJhbWUgKC0gbGFzdC14IHBvcy14KSAoLSBwb3MteSBsYXN0LXkpIHQpKQorICAgICAg ICAgICAgICAgKChlcSBwYXJ0ICdib3R0b20tcmlnaHQpCisgICAgICAgICAgICAgICAgKG1v dXNlLXJlc2l6ZS1mcmFtZQorICAgICAgICAgICAgICAgICBmcmFtZSAoLSBwb3MteCBsYXN0 LXgpICgtIHBvcy15IGxhc3QteSkpKQorICAgICAgICAgICAgICAgKChlcSBwYXJ0ICdtb3Zl KQorICAgICAgICAgICAgICAgIChsZXQqICgob2xkLXBvc2l0aW9uIChmcmFtZS1wb3NpdGlv biBmcmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgIChvbGQtbGVmdCAoY2FyIG9sZC1w b3NpdGlvbikpCisgICAgICAgICAgICAgICAgICAgICAgIChvbGQtdG9wIChjZHIgb2xkLXBv c2l0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGxlZnQgKCsgb2xkLWxlZnQgKC0g cG9zLXggbGFzdC14KSkpCisgICAgICAgICAgICAgICAgICAgICAgICh0b3AgKCsgb2xkLXRv cCAoLSBwb3MteSBsYXN0LXkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgYm90 dG9tCisgICAgICAgICAgICAgICAgICAgICAgIDs7IGBzbmFwLXdpZHRoJyAobWF5YmUgYWxz byBhIHlldCB0byBiZSBwcm92aWRlZAorICAgICAgICAgICAgICAgICAgICAgICA7OyBgc25h cC1oZWlnaHQnKSBjb3VsZCBiZWNvbWUgZmxvYXRzIHRvIGhhbmRsZQorICAgICAgICAgICAg ICAgICAgICAgICA7OyBwcm9wb3J0aW9uYWxpdHkgd3J0IFBBUkVOVC4gIFdlIGRvbid0IGRv IGFueQorICAgICAgICAgICAgICAgICAgICAgICA7OyBjaGVja3Mgb24gdGhpcyBwYXJhbWV0 ZXIgc28gZmFyLgorICAgICAgICAgICAgICAgICAgICAgICAoc25hcC13aWR0aCAoZnJhbWUt cGFyYW1ldGVyIGZyYW1lICdzbmFwLXdpZHRoKSkpCisgICAgICAgICAgICAgICAgICA7OyBE b2NraW5nIGFuZCBjb25zdHJhaW5pbmcuCisgICAgICAgICAgICAgICAgICAod2hlbiAoYW5k IChudW1iZXJwIHNuYXAtd2lkdGgpIHBhcmVudC1lZGdlcykKKyAgICAgICAgICAgICAgICAg ICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAgIDs7IERvY2tpbmcgYXQgdGhlIGxlZnQg cGFyZW50IGVkZ2UuCisgICAgICAgICAgICAgICAgICAgICAoKDwgcG9zLXggbGFzdC14KQor ICAgICAgICAgICAgICAgICAgICAgIChjb25kCisgICAgICAgICAgICAgICAgICAgICAgICgo YW5kICg+IGxlZnQgcGFyZW50LWxlZnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICg8PSAoLSBsZWZ0IHBhcmVudC1sZWZ0KSBzbmFwLXdpZHRoKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgIDs7IFNuYXAgd2hlbiB0aGUgbW91c2UgbW92ZWQgbGVmdHdhcmQgYW5kCisg ICAgICAgICAgICAgICAgICAgICAgICA7OyBGUkFNRSdzIGxlZnQgZWRnZSB3b3VsZCBlbmQg dXAgd2l0aGluCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBgc25hcC13aWR0aCcgcGl4 ZWxzIGZyb20gUEFSRU5UJ3MgbGVmdCBlZGdlLgorICAgICAgICAgICAgICAgICAgICAgICAg KHNldHEgc25hcC14IHBvcy14KQorICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGVm dCBwYXJlbnQtbGVmdCkpCisgICAgICAgICAgICAgICAgICAgICAgICgoYW5kICg8PSBsZWZ0 IHBhcmVudC1sZWZ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPD0gKC0gcGFy ZW50LWxlZnQgbGVmdCkgc25hcC13aWR0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc25hcC14ICg8PSAoLSBzbmFwLXggcG9zLXgpIHNuYXAtd2lkdGgpKQorICAgICAgICAg ICAgICAgICAgICAgICAgOzsgU3RheSBzbmFwcGVkIHdoZW4gdGhlIG1vdXNlIG1vdmVkIGxl ZnR3YXJkCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBidXQgbm90IG1vcmUgdGhhbiBg c25hcC13aWR0aCcgcGl4ZWxzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IHRo ZSB0aW1lIEZSQU1FIHNuYXBwZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBs ZWZ0IHBhcmVudC1sZWZ0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHQKKyAgICAgICAg ICAgICAgICAgICAgICAgIDs7IFVuc25hcCB3aGVuIHRoZSBtb3VzZSBtb3ZlZCBtb3JlIHRo YW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IGBzbmFwLXdpZHRoJyBwaXhlbHMgbGVm dHdhcmQgZnJvbSB0aGUgdGltZQorICAgICAgICAgICAgICAgICAgICAgICAgOzsgRlJBTUUg c25hcHBlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHNuYXAteCBuaWwpKSkp CisgICAgICAgICAgICAgICAgICAgICAoKD4gcG9zLXggbGFzdC14KQorICAgICAgICAgICAg ICAgICAgICAgIChzZXRxIHJpZ2h0ICgrIGxlZnQgd2lkdGgpKQorICAgICAgICAgICAgICAg ICAgICAgIChjb25kCisgICAgICAgICAgICAgICAgICAgICAgICgoYW5kICg8IHJpZ2h0IHBh cmVudC1yaWdodCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDw9ICgtIHBhcmVu dC1yaWdodCByaWdodCkgc25hcC13aWR0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICA7 OyBTbmFwIHdoZW4gdGhlIG1vdXNlIG1vdmVkIHJpZ2h0d2FyZCBhbmQKKyAgICAgICAgICAg ICAgICAgICAgICAgIDs7IEZSQU1FJ3MgcmlnaHQgZWRnZSB3b3VsZCBlbmQgdXAgd2l0aGlu CisgICAgICAgICAgICAgICAgICAgICAgICA7OyBgc25hcC13aWR0aCcgcGl4ZWxzIGZyb20g UEFSRU5UJ3MgcmlnaHQgZWRnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHNu YXAteCBwb3MteCkKKyAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGxlZnQgKC0gcGFy ZW50LXJpZ2h0IHdpZHRoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICgoYW5kICg+PSBy aWdodCBwYXJlbnQtcmlnaHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8PSAo LSByaWdodCBwYXJlbnQtcmlnaHQpIHNuYXAtd2lkdGgpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNuYXAteCAoPD0gKC0gcG9zLXggc25hcC14KSBzbmFwLXdpZHRoKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIDs7IFN0YXkgc25hcHBlZCB3aGVuIHRoZSBtb3VzZSBt b3ZlZCByaWdodHdhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IGJ1dCBub3QgbW9y ZSBtb3JlIHRoYW4gYHNuYXAtd2lkdGgnIHBpeGVscworICAgICAgICAgICAgICAgICAgICAg ICAgOzsgZnJvbSB0aGUgdGltZSBGUkFNRSBzbmFwcGVkLgorICAgICAgICAgICAgICAgICAg ICAgICAgKHNldHEgbGVmdCAoLSBwYXJlbnQtcmlnaHQgd2lkdGgpKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IFVuc25hcCB3aGVu IHRoZSBtb3VzZSBtb3ZlZCByaWdodHdhcmQgbW9yZQorICAgICAgICAgICAgICAgICAgICAg ICAgOzsgdGhhbiBgc25hcC13aWR0aCcgcGl4ZWxzIGZyb20gdGhlIHRpbWUgRlJBTUUKKyAg ICAgICAgICAgICAgICAgICAgICAgIDs7IHNuYXBwZWQuCisgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBzbmFwLXggbmlsKSkpKSkKKworICAgICAgICAgICAgICAgICAgICAoY29u ZAorICAgICAgICAgICAgICAgICAgICAgKCg8IHBvcy15IGxhc3QteSkKKyAgICAgICAgICAg ICAgICAgICAgICAoY29uZAorICAgICAgICAgICAgICAgICAgICAgICAoKGFuZCAoPiB0b3Ag cGFyZW50LXRvcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDw9ICgtIHRvcCBw YXJlbnQtdG9wKSBzbmFwLXdpZHRoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IFNu YXAgd2hlbiB0aGUgbW91c2UgbW92ZWQgdXB3YXJkIGFuZCBGUkFNRSdzCisgICAgICAgICAg ICAgICAgICAgICAgICA7OyB0b3AgZWRnZSB3b3VsZCBlbmQgdXAgd2l0aGluIGBzbmFwLXdp ZHRoJworICAgICAgICAgICAgICAgICAgICAgICAgOzsgcGl4ZWxzIGZyb20gUEFSRU5UJ3Mg dG9wIGVkZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBzbmFwLXkgcG9zLXkp CisgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSB0b3AgcGFyZW50LXRvcCkpCisgICAg ICAgICAgICAgICAgICAgICAgICgoYW5kICg8PSB0b3AgcGFyZW50LXRvcCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKDw9ICgtIHBhcmVudC10b3AgdG9wKSBzbmFwLXdpZHRo KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwLXkgKDw9ICgtIHNuYXAteSBw b3MteSkgc25hcC13aWR0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBTdGF5IHNu YXBwZWQgd2hlbiB0aGUgbW91c2UgbW92ZWQgdXB3YXJkIGJ1dAorICAgICAgICAgICAgICAg ICAgICAgICAgOzsgbm90IG1vcmUgbW9yZSB0aGFuIGBzbmFwLXdpZHRoJyBwaXhlbHMgZnJv bQorICAgICAgICAgICAgICAgICAgICAgICAgOzsgdGhlIHRpbWUgRlJBTUUgc25hcHBlZC4K KyAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHRvcCBwYXJlbnQtdG9wKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IFVuc25h cCB3aGVuIHRoZSBtb3VzZSBtb3ZlZCB1cHdhcmQgbW9yZSB0aGFuCisgICAgICAgICAgICAg ICAgICAgICAgICA7OyBgc25hcC13aWR0aCcgcGl4ZWxzIGZyb20gdGhlIHRpbWUgRlJBTUUK KyAgICAgICAgICAgICAgICAgICAgICAgIDs7IHNuYXBwZWQuCisgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSBzbmFwLXkgbmlsKSkpKQorICAgICAgICAgICAgICAgICAgICAgKCg+ IHBvcy15IGxhc3QteSkKKyAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBib3R0b20gKCsg dG9wIGhlaWdodCkpCisgICAgICAgICAgICAgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAg ICAgICAgICAgICAgKChhbmQgKDwgYm90dG9tIHBhcmVudC1ib3R0b20pCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICg8PSAoLSBwYXJlbnQtYm90dG9tIGJvdHRvbSkgc25hcC13 aWR0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBTbmFwIHdoZW4gdGhlIG1vdXNl IG1vdmVkIGRvd253YXJkIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgOzsgRlJBTUUn cyBib3R0b20gZWRnZSB3b3VsZCBlbmQgdXAgd2l0aGluCisgICAgICAgICAgICAgICAgICAg ICAgICA7OyBgc25hcC13aWR0aCcgcGl4ZWxzIGZyb20gUEFSRU5UJ3MgYm90dG9tCisgICAg ICAgICAgICAgICAgICAgICAgICA7OyBlZGdlLgorICAgICAgICAgICAgICAgICAgICAgICAg KHNldHEgc25hcC15IHBvcy15KQorICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgdG9w ICgtIHBhcmVudC1ib3R0b20gaGVpZ2h0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICgo YW5kICg+PSBib3R0b20gcGFyZW50LWJvdHRvbSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKDw9ICgtIGJvdHRvbSBwYXJlbnQtYm90dG9tKSBzbmFwLXdpZHRoKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzbmFwLXkgKDw9ICgtIHBvcy15IHNuYXAteSkgc25h cC13aWR0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBTdGF5IHNuYXBwZWQgd2hl biB0aGUgbW91c2UgbW92ZWQgZG93bndhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7 IGJ1dCBub3QgbW9yZSBtb3JlIHRoYW4gYHNuYXAtd2lkdGgnIHBpeGVscworICAgICAgICAg ICAgICAgICAgICAgICAgOzsgZnJvbSB0aGUgdGltZSBGUkFNRSBzbmFwcGVkLgorICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgdG9wICgtIHBhcmVudC1ib3R0b20gaGVpZ2h0KSkp CisgICAgICAgICAgICAgICAgICAgICAgICh0CisgICAgICAgICAgICAgICAgICAgICAgICA7 OyBVbnNuYXAgd2hlbiB0aGUgbW91c2UgbW92ZWQgZG93bndhcmQgbW9yZQorICAgICAgICAg ICAgICAgICAgICAgICAgOzsgdGhhbiBgc25hcC13aWR0aCcgcGl4ZWxzIGZyb20gdGhlIHRp bWUgRlJBTUUKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IHNuYXBwZWQuCisgICAgICAg ICAgICAgICAgICAgICAgICAoc2V0cSBzbmFwLXkgbmlsKSkpKSkpCisKKyAgICAgICAgICAg ICAgICAgIDs7IElmIHJlcXVlc3RlZCwgY29uc3RyYWluIEZSQU1FJ3MgZHJhZ2dhYmxlIGFy ZWFzIHRvCisgICAgICAgICAgICAgICAgICA7OyBQQVJFTlQncyBlZGdlcy4gIFRoZSBgdG9w LXZpc2libGUnIHBhcmFtZXRlciBzaG91bGQKKyAgICAgICAgICAgICAgICAgIDs7IGJlIHNl dCB3aGVuIEZSQU1FIGhhcyBhIGRyYWdnYWJsZSBoZWFkZXItbGluZS4gIElmCisgICAgICAg ICAgICAgICAgICA7OyBzZXQgdG8gYSBudW1iZXIsIGl0IGFzY2VydGFpbnMgdGhhdCB0aGUg dG9wIG9mCisgICAgICAgICAgICAgICAgICA7OyBGUkFNRSBpcyBhbHdheXMgY29uc3RyYWlu ZWQgdG8gdGhlIHRvcCBvZiBQQVJFTlQKKyAgICAgICAgICAgICAgICAgIDs7IGFuZCB0aGF0 IGF0IGxlYXN0IGFzIG1hbnkgcGl4ZWxzIG9mIEZSQU1FIGFzCisgICAgICAgICAgICAgICAg ICA7OyBzcGVjaWZpZWQgYnkgdGhhdCBudW1iZXIgYXJlIHZpc2libGUgb24gZWFjaCBvZiB0 aGUKKyAgICAgICAgICAgICAgICAgIDs7IHRocmVlIHJlbWFpbmluZyBzaWRlcyBvZiBQQVJF TlQuCisgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICAgOzsgVGhlIGBi b3R0b20tdmlzaWJsZScgcGFyYW1ldGVyIHNob3VsZCBiZSBzZXQgd2hlbgorICAgICAgICAg ICAgICAgICAgOzsgRlJBTUUgaGFzIGEgZHJhZ2dhYmxlIG1vZGUtbGluZS4gIElmIHNldCB0 byBhCisgICAgICAgICAgICAgICAgICA7OyBudW1iZXIsIGl0IGFzY2VydGFpbnMgdGhhdCB0 aGUgYm90dG9tIG9mIEZSQU1FIGlzCisgICAgICAgICAgICAgICAgICA7OyBhbHdheXMgY29u c3RyYWluZWQgdG8gdGhlIGJvdHRvbSBvZiBQQVJFTlQgYW5kIHRoYXQKKyAgICAgICAgICAg ICAgICAgIDs7IGF0IGxlYXN0IGFzIG1hbnkgcGl4ZWxzIG9mIEZSQU1FIGFzIHNwZWNpZmll ZCBieQorICAgICAgICAgICAgICAgICAgOzsgdGhhdCBudW1iZXIgYXJlIHZpc2libGUgb24g ZWFjaCBvZiB0aGUgdGhyZWUKKyAgICAgICAgICAgICAgICAgIDs7IHJlbWFpbmluZyBzaWRl cyBvZiBQQVJFTlQuCisgICAgICAgICAgICAgICAgICAobGV0ICgocGFyIChmcmFtZS1wYXJh bWV0ZXIgZnJhbWUgJ3RvcC12aXNpYmxlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJv dHRvbS12aXNpYmxlKQorICAgICAgICAgICAgICAgICAgICAodW5sZXNzIHBhcgorICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIHBhciAoZnJhbWUtcGFyYW1ldGVyIGZyYW1lICdib3R0 b20tdmlzaWJsZSkpCisgICAgICAgICAgICAgICAgICAgICAgKHNldHEgYm90dG9tLXZpc2li bGUgdCkpCisgICAgICAgICAgICAgICAgICAgICh3aGVuIChhbmQgKG51bWJlcnAgcGFyKSBw YXJlbnQtZWRnZXMpCisgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGVmdAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChtYXggKG1pbiAoLSBwYXJlbnQtcmlnaHQgcGFyKSBs ZWZ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsgKC0gcGFyZW50LWxl ZnQgd2lkdGgpIHBhcikpKQorICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHRvcAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBib3R0b20tdmlzaWJsZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobWluIChtYXggdG9wICgtIHBhcmVudC10b3AgKC0g aGVpZ2h0IHBhcikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgt IHBhcmVudC1ib3R0b20gaGVpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChtaW4gKG1heCB0b3AgcGFyZW50LXRvcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKC0gcGFyZW50LWJvdHRvbSBwYXIpKSkpKSkKKworICAgICAgICAgICAgICAg ICAgOzsgVXNlIGBtb2RpZnktZnJhbWUtcGFyYW1ldGVycycgc2luY2UgYGxlZnQnIGFuZAor ICAgICAgICAgICAgICAgICAgOzsgYHRvcCcgbWF5IHdhbnQgdG8gbW92ZSBGUkFNRSBvdXQg b2YgaXRzIFBBUkVOVC4KKyAgICAgICAgICAgICAgICAgIChtb2RpZnktZnJhbWUtcGFyYW1l dGVycworICAgICAgICAgICAgICAgICAgIGZyYW1lCisgICAgICAgICAgICAgICAgICAgYCgo bGVmdCAuICgrICxsZWZ0KSkgKHRvcCAuICgrICx0b3ApKSkpKSkpCisgICAgICAgICAgICAg IChzZXRxIGxhc3QteCBwb3MteCkKKyAgICAgICAgICAgICAgKHNldHEgbGFzdC15IHBvcy15 KSkpKQorICAgICAgICAgKG9sZC10cmFjay1tb3VzZSB0cmFjay1tb3VzZSkpCisgICAgOzsg U3RhcnQgdHJhY2tpbmcuICBUaGUgc3BlY2lhbCB2YWx1ZSAnZHJhZ2dpbmcnIHNpZ25hbHMg dGhlCisgICAgOzsgZGlzcGxheSBlbmdpbmUgdG8gZnJlZXplIHRoZSBtb3VzZSBwb2ludGVy IHNoYXBlIGZvciBhcyBsb25nCisgICAgOzsgYXMgd2UgZHJhZy4KKyAgICAoc2V0cSB0cmFj ay1tb3VzZSAnZHJhZ2dpbmcpCisgICAgOzsgTG9vcCByZWFkaW5nIGV2ZW50cyBhbmQgc2Ft cGxpbmcgdGhlIHBvc2l0aW9uIG9mIHRoZSBtb3VzZS4KKyAgICAoc2V0cSBleGl0ZnVuCisg ICAgICAgICAgKHNldC10cmFuc2llbnQtbWFwCisgICAgICAgICAgIChsZXQgKChtYXAgKG1h a2Utc3BhcnNlLWtleW1hcCkpKQorICAgICAgICAgICAgIChkZWZpbmUta2V5IG1hcCBbc3dp dGNoLWZyYW1lXSAjJ2lnbm9yZSkKKyAgICAgICAgICAgICAoZGVmaW5lLWtleSBtYXAgW3Nl bGVjdC13aW5kb3ddICMnaWdub3JlKQorICAgICAgICAgICAgIChkZWZpbmUta2V5IG1hcCBb c2Nyb2xsLWJhci1tb3ZlbWVudF0gIydpZ25vcmUpCisgICAgICAgICAgICAgKGRlZmluZS1r ZXkgbWFwIFttb3VzZS1tb3ZlbWVudF0gbW92ZSkKKyAgICAgICAgICAgICA7OyBTd2FsbG93 IGRyYWctbW91c2UtMSBldmVudHMgdG8gYXZvaWQgc2VsZWN0aW5nIHNvbWUgb3RoZXIgd2lu ZG93LgorICAgICAgICAgICAgIChkZWZpbmUta2V5IG1hcCBbZHJhZy1tb3VzZS0xXQorICAg ICAgICAgICAgICAgKGxhbWJkYSAoKSAoaW50ZXJhY3RpdmUpIChmdW5jYWxsIGV4aXRmdW4p KSkKKyAgICAgICAgICAgICA7OyBTb21lIG9mIHRoZSBldmVudHMgd2lsbCBvZiBjb3Vyc2Ug ZW5kIHVwIGxvb2tlZCB1cAorICAgICAgICAgICAgIDs7IHdpdGggYSBtb2RlLWxpbmUsIGhl YWRlci1saW5lIG9yIHZlcnRpY2FsLWxpbmUgcHJlZml4IC4uLgorICAgICAgICAgICAgIChk ZWZpbmUta2V5IG1hcCBbbW9kZS1saW5lXSBtYXApCisgICAgICAgICAgICAgKGRlZmluZS1r ZXkgbWFwIFtoZWFkZXItbGluZV0gbWFwKQorICAgICAgICAgICAgIChkZWZpbmUta2V5IG1h cCBbdmVydGljYWwtbGluZV0gbWFwKQorICAgICAgICAgICAgIDs7IC4uLiBhbmQgc29tZSBt YXliZSBldmVuIHdpdGggYSByaWdodC0gb3IgYm90dG9tLWRpdmlkZXIKKyAgICAgICAgICAg ICA7OyBwcmVmaXguCisgICAgICAgICAgICAgKGRlZmluZS1rZXkgbWFwIFtyaWdodC1kaXZp ZGVyXSBtYXApCisgICAgICAgICAgICAgKGRlZmluZS1rZXkgbWFwIFtib3R0b20tZGl2aWRl cl0gbWFwKQorICAgICAgICAgICAgIG1hcCkKKyAgICAgICAgICAgdCAobGFtYmRhICgpIChz ZXRxIHRyYWNrLW1vdXNlIG9sZC10cmFjay1tb3VzZSkpKSkpKQorCisoZGVmdW4gbW91c2Ut ZHJhZy1sZWZ0LWVkZ2UgKHN0YXJ0LWV2ZW50KQorICAiRHJhZyBsZWZ0IGVkZ2Ugb2YgYSBm cmFtZSB3aXRoIHRoZSBtb3VzZS4KK1NUQVJULUVWRU5UIGlzIHRoZSBzdGFydGluZyBtb3Vz ZSBldmVudCBvZiB0aGUgZHJhZyBhY3Rpb24uIgorICAoaW50ZXJhY3RpdmUgImUiKQorICAo bW91c2UtZHJhZy1mcmFtZSBzdGFydC1ldmVudCAnbGVmdCkpCisKKyhkZWZ1biBtb3VzZS1k cmFnLXRvcC1sZWZ0LWNvcm5lciAoc3RhcnQtZXZlbnQpCisgICJEcmFnIHRvcCBsZWZ0IGNv cm5lciBvZiBhIGZyYW1lIHdpdGggdGhlIG1vdXNlLgorU1RBUlQtRVZFTlQgaXMgdGhlIHN0 YXJ0aW5nIG1vdXNlIGV2ZW50IG9mIHRoZSBkcmFnIGFjdGlvbi4iCisgIChpbnRlcmFjdGl2 ZSAiZSIpCisgIChtb3VzZS1kcmFnLWZyYW1lIHN0YXJ0LWV2ZW50ICd0b3AtbGVmdCkpCisK KyhkZWZ1biBtb3VzZS1kcmFnLXRvcC1lZGdlIChzdGFydC1ldmVudCkKKyAgIkRyYWcgdG9w IGVkZ2Ugb2YgYSBmcmFtZSB3aXRoIHRoZSBtb3VzZS4KK1NUQVJULUVWRU5UIGlzIHRoZSBz dGFydGluZyBtb3VzZSBldmVudCBvZiB0aGUgZHJhZyBhY3Rpb24uIgorICAoaW50ZXJhY3Rp dmUgImUiKQorICAobW91c2UtZHJhZy1mcmFtZSBzdGFydC1ldmVudCAndG9wKSkKKworKGRl ZnVuIG1vdXNlLWRyYWctdG9wLXJpZ2h0LWNvcm5lciAoc3RhcnQtZXZlbnQpCisgICJEcmFn IHRvcCByaWdodCBjb3JuZXIgb2YgYSBmcmFtZSB3aXRoIHRoZSBtb3VzZS4KK1NUQVJULUVW RU5UIGlzIHRoZSBzdGFydGluZyBtb3VzZSBldmVudCBvZiB0aGUgZHJhZyBhY3Rpb24uIgor ICAoaW50ZXJhY3RpdmUgImUiKQorICAobW91c2UtZHJhZy1mcmFtZSBzdGFydC1ldmVudCAn dG9wLXJpZ2h0KSkKKworKGRlZnVuIG1vdXNlLWRyYWctcmlnaHQtZWRnZSAoc3RhcnQtZXZl bnQpCisgICJEcmFnIHJpZ2h0IGVkZ2Ugb2YgYSBmcmFtZSB3aXRoIHRoZSBtb3VzZS4KK1NU QVJULUVWRU5UIGlzIHRoZSBzdGFydGluZyBtb3VzZSBldmVudCBvZiB0aGUgZHJhZyBhY3Rp b24uIgorICAoaW50ZXJhY3RpdmUgImUiKQorICAobW91c2UtZHJhZy1mcmFtZSBzdGFydC1l dmVudCAncmlnaHQpKQorCisoZGVmdW4gbW91c2UtZHJhZy1ib3R0b20tcmlnaHQtY29ybmVy IChzdGFydC1ldmVudCkKKyAgIkRyYWcgYm90dG9tIHJpZ2h0IGNvcm5lciBvZiBhIGZyYW1l IHdpdGggdGhlIG1vdXNlLgorU1RBUlQtRVZFTlQgaXMgdGhlIHN0YXJ0aW5nIG1vdXNlIGV2 ZW50IG9mIHRoZSBkcmFnIGFjdGlvbi4iCisgIChpbnRlcmFjdGl2ZSAiZSIpCisgIChtb3Vz ZS1kcmFnLWZyYW1lIHN0YXJ0LWV2ZW50ICdib3R0b20tcmlnaHQpKQorCisoZGVmdW4gbW91 c2UtZHJhZy1ib3R0b20tZWRnZSAoc3RhcnQtZXZlbnQpCisgICJEcmFnIGJvdHRvbSBlZGdl IG9mIGEgZnJhbWUgd2l0aCB0aGUgbW91c2UuCitTVEFSVC1FVkVOVCBpcyB0aGUgc3RhcnRp bmcgbW91c2UgZXZlbnQgb2YgdGhlIGRyYWcgYWN0aW9uLiIKKyAgKGludGVyYWN0aXZlICJl IikKKyAgKG1vdXNlLWRyYWctZnJhbWUgc3RhcnQtZXZlbnQgJ2JvdHRvbSkpCisKKyhkZWZ1 biBtb3VzZS1kcmFnLWJvdHRvbS1sZWZ0LWNvcm5lciAoc3RhcnQtZXZlbnQpCisgICJEcmFn IGJvdHRvbSBsZWZ0IGNvcm5lciBvZiBhIGZyYW1lIHdpdGggdGhlIG1vdXNlLgorU1RBUlQt RVZFTlQgaXMgdGhlIHN0YXJ0aW5nIG1vdXNlIGV2ZW50IG9mIHRoZSBkcmFnIGFjdGlvbi4i CisgIChpbnRlcmFjdGl2ZSAiZSIpCisgIChtb3VzZS1kcmFnLWZyYW1lIHN0YXJ0LWV2ZW50 ICdib3R0b20tbGVmdCkpCisKIChkZWZjdXN0b20gbW91c2Utc2VsZWN0LXJlZ2lvbi1tb3Zl LXRvLWJlZ2lubmluZyBuaWwKICAgIkVmZmVjdCBvZiBzZWxlY3RpbmcgYSByZWdpb24gZXh0 ZW5kaW5nIGJhY2t3YXJkIGZyb20gZG91YmxlIGNsaWNrLgogTmlsIG1lYW5zIGtlZXAgcG9p bnQgYXQgdGhlIHBvc2l0aW9uIGNsaWNrZWQgKHJlZ2lvbiBlbmQpOwpAQCAtMjA3OCw2ICsy NDQ5LDIyIEBAIGZ1bmN0aW9uLWtleS1tYXAKIChnbG9iYWwtc2V0LWtleSBbYm90dG9tLWRp dmlkZXIgZG93bi1tb3VzZS0xXSAnbW91c2UtZHJhZy1tb2RlLWxpbmUpCiAoZ2xvYmFsLXNl dC1rZXkgW2JvdHRvbS1kaXZpZGVyIG1vdXNlLTFdICdpZ25vcmUpCiAoZ2xvYmFsLXNldC1r ZXkgW2JvdHRvbS1kaXZpZGVyIEMtbW91c2UtMl0gJ21vdXNlLXNwbGl0LXdpbmRvdy1ob3Jp em9udGFsbHkpCisoZ2xvYmFsLXNldC1rZXkgW2xlZnQtZWRnZSBkb3duLW1vdXNlLTFdICdt b3VzZS1kcmFnLWxlZnQtZWRnZSkKKyhnbG9iYWwtc2V0LWtleSBbbGVmdC1lZGdlIG1vdXNl LTFdICdpZ25vcmUpCisoZ2xvYmFsLXNldC1rZXkgW3RvcC1sZWZ0LWNvcm5lciBkb3duLW1v dXNlLTFdICdtb3VzZS1kcmFnLXRvcC1sZWZ0LWNvcm5lcikKKyhnbG9iYWwtc2V0LWtleSBb dG9wLWxlZnQtY29ybmVyIG1vdXNlLTFdICdpZ25vcmUpCisoZ2xvYmFsLXNldC1rZXkgW3Rv cC1lZGdlIGRvd24tbW91c2UtMV0gJ21vdXNlLWRyYWctdG9wLWVkZ2UpCisoZ2xvYmFsLXNl dC1rZXkgW3RvcC1lZGdlIG1vdXNlLTFdICdpZ25vcmUpCisoZ2xvYmFsLXNldC1rZXkgW3Rv cC1yaWdodC1jb3JuZXIgZG93bi1tb3VzZS0xXSAnbW91c2UtZHJhZy10b3AtcmlnaHQtY29y bmVyKQorKGdsb2JhbC1zZXQta2V5IFt0b3AtcmlnaHQtY29ybmVyIG1vdXNlLTFdICdpZ25v cmUpCisoZ2xvYmFsLXNldC1rZXkgW3JpZ2h0LWVkZ2UgZG93bi1tb3VzZS0xXSAnbW91c2Ut ZHJhZy1yaWdodC1lZGdlKQorKGdsb2JhbC1zZXQta2V5IFtyaWdodC1lZGdlIG1vdXNlLTFd ICdpZ25vcmUpCisoZ2xvYmFsLXNldC1rZXkgW2JvdHRvbS1yaWdodC1jb3JuZXIgZG93bi1t b3VzZS0xXSAnbW91c2UtZHJhZy1ib3R0b20tcmlnaHQtY29ybmVyKQorKGdsb2JhbC1zZXQt a2V5IFtib3R0b20tcmlnaHQtY29ybmVyIG1vdXNlLTFdICdpZ25vcmUpCisoZ2xvYmFsLXNl dC1rZXkgW2JvdHRvbS1lZGdlIGRvd24tbW91c2UtMV0gJ21vdXNlLWRyYWctYm90dG9tLWVk Z2UpCisoZ2xvYmFsLXNldC1rZXkgW2JvdHRvbS1lZGdlIG1vdXNlLTFdICdpZ25vcmUpCiso Z2xvYmFsLXNldC1rZXkgW2JvdHRvbS1sZWZ0LWNvcm5lciBkb3duLW1vdXNlLTFdICdtb3Vz ZS1kcmFnLWJvdHRvbS1sZWZ0LWNvcm5lcikKKyhnbG9iYWwtc2V0LWtleSBbYm90dG9tLWxl ZnQtY29ybmVyIG1vdXNlLTFdICdpZ25vcmUpCgogKHByb3ZpZGUgJ21vdXNlKQoKZGlmZiAt LWdpdCBhL2xpc3AvdG9vbHRpcC5lbCBiL2xpc3AvdG9vbHRpcC5lbAppbmRleCAzNjcxMTRi Li5jMDExZjFiIDEwMDY0NAotLS0gYS9saXNwL3Rvb2x0aXAuZWwKKysrIGIvbGlzcC90b29s dGlwLmVsCkBAIC0xMTksNyArMTE5LDggQEAgdG9vbHRpcC15LW9mZnNldAogKGRlZmN1c3Rv bSB0b29sdGlwLWZyYW1lLXBhcmFtZXRlcnMKICAgJygobmFtZSAuICJ0b29sdGlwIikKICAg ICAoaW50ZXJuYWwtYm9yZGVyLXdpZHRoIC4gMikKLSAgICAoYm9yZGVyLXdpZHRoIC4gMSkp CisgICAgKGJvcmRlci13aWR0aCAuIDEpCisgICAgKG5vLXNwZWNpYWwtZ2x5cGhzIC4gdCkp CiAgICJGcmFtZSBwYXJhbWV0ZXJzIHVzZWQgZm9yIHRvb2x0aXBzLgoKIElmIGBsZWZ0JyBv ciBgdG9wJyBwYXJhbWV0ZXJzIGFyZSBpbmNsdWRlZCwgdGhleSBzcGVjaWZ5IHRoZSBhYnNv bHV0ZQpAQCAtMTMwLDcgKzEzMSw4IEBAIHRvb2x0aXAtZnJhbWUtcGFyYW1ldGVycwogICA6 dHlwZSAnKHJlcGVhdCAoY29ucyA6Zm9ybWF0ICIldiIKIAkJICAgICAgIChzeW1ib2wgOnRh ZyAiUGFyYW1ldGVyIikKIAkJICAgICAgIChzZXhwIDp0YWcgIlZhbHVlIikpKQotICA6Z3Jv dXAgJ3Rvb2x0aXApCisgIDpncm91cCAndG9vbHRpcAorICA6dmVyc2lvbiAiMjYuMSIpCgog KGRlZmZhY2UgdG9vbHRpcAogICAnKCgoKGNsYXNzIGNvbG9yKSkKZGlmZiAtLWdpdCBhL2xp c3Avd2luZG93LmVsIGIvbGlzcC93aW5kb3cuZWwKaW5kZXggOGIwN2VkNC4uYzkzMzk5NiAx MDA2NDQKLS0tIGEvbGlzcC93aW5kb3cuZWwKKysrIGIvbGlzcC93aW5kb3cuZWwKQEAgLTM3 MDMsNyArMzcwMyw3IEBAIHdpbmRvdy1lZGdlcwogQUJTT0xVVEUgaXMgbm9uLW5pbCwgUElY RUxXSVNFIGlzIGltcGxpY2l0bHkgbm9uLW5pbCB0b28uIgogICAobGV0KiAoKHdpbmRvdyAo d2luZG93LW5vcm1hbGl6ZS13aW5kb3cgd2luZG93IGJvZHkpKQogCSAoZnJhbWUgKHdpbmRv dy1mcmFtZSB3aW5kb3cpKQotCSAoYm9yZGVyLXdpZHRoIChmcmFtZS1ib3JkZXItd2lkdGgg ZnJhbWUpKQorCSAoYm9yZGVyLXdpZHRoIChmcmFtZS1pbnRlcm5hbC1ib3JkZXItd2lkdGgg ZnJhbWUpKQogCSAoY2hhci13aWR0aCAoZnJhbWUtY2hhci13aWR0aCBmcmFtZSkpCiAJIChj aGFyLWhlaWdodCAoZnJhbWUtY2hhci1oZWlnaHQgZnJhbWUpKQogCSAobGVmdCAoaWYgcGl4 ZWx3aXNlCkBAIC00NTcyLDEyICs0NTcyLDEzIEBAIGZyYW1lLWF1dG8taGlkZS1mdW5jdGlv bgogRnVuY3Rpb25zIGFmZmVjdGVkIGJ5IHRoaXMgb3B0aW9uIGFyZSB0aG9zZSB0aGF0IGJ1 cnkgYSBidWZmZXIKIHNob3duIGluIGEgc2VwYXJhdGUgZnJhbWUgbGlrZSBgcXVpdC13aW5k b3cnIGFuZCBgYnVyeS1idWZmZXInLiIKICAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcg Ikljb25pZnkiIGljb25pZnktZnJhbWUpCisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFn ICJNYWtlIGludmlzaWJsZSIgbWFrZS1mcmFtZS1pbnZpc2libGUpCiAgICAgICAgICAgICAg ICAgIChjb25zdCA6dGFnICJEZWxldGUiIGRlbGV0ZS1mcmFtZSkKICAgICAgICAgICAgICAg ICAgKGNvbnN0IDp0YWcgIkRvIG5vdGhpbmciIGlnbm9yZSkKICAgICAgICAgICAgICAgICAg ZnVuY3Rpb24pCiAgIDpncm91cCAnd2luZG93cwogICA6Z3JvdXAgJ2ZyYW1lcwotICA6dmVy c2lvbiAiMjQuMSIpCisgIDp2ZXJzaW9uICIyNi4xIikKCiAoZGVmdW4gd2luZG93LS1kZWxl dGUgKCZvcHRpb25hbCB3aW5kb3cgZGVkaWNhdGVkLW9ubHkga2lsbCkKICAgIkRlbGV0ZSBX SU5ET1cgaWYgcG9zc2libGUuCkBAIC00NTk1LDcgKzQ1OTYsOSBAQCB3aW5kb3ctLWRlbGV0 ZQogCSAgKGNvbmQKIAkgICAoa2lsbAogCSAgICAoZGVsZXRlLWZyYW1lIGZyYW1lKSkKLQkg ICAoKGZ1bmN0aW9ucCBmcmFtZS1hdXRvLWhpZGUtZnVuY3Rpb24pCisgICAgICAgICAgICgo ZnVuY3Rpb25wIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ2F1dG8taGlkZS1mdW5jdGlvbikp CisgICAgICAgICAgICAoZnVuY2FsbCAoZnJhbWUtcGFyYW1ldGVyIGZyYW1lICdhdXRvLWhp ZGUtZnVuY3Rpb24pKSkKKyAgICAgICAgICAgKChmdW5jdGlvbnAgZnJhbWUtYXV0by1oaWRl LWZ1bmN0aW9uKQogCSAgICAoZnVuY2FsbCBmcmFtZS1hdXRvLWhpZGUtZnVuY3Rpb24gZnJh bWUpKSkpCiAJJ2ZyYW1lKQogICAgICAgIChkZWxldGFibGUKQEAgLTY3MzQsMTUgKzY3Mzcs MTcgQEAgd2luZG93LS1kaXNwbGF5LWJ1ZmZlcgogICAgIHdpbmRvdykpCgogKGRlZnVuIHdp bmRvdy0tbWF5YmUtcmFpc2UtZnJhbWUgKGZyYW1lKQotICAobGV0ICgodmlzaWJsZSAoZnJh bWUtdmlzaWJsZS1wIGZyYW1lKSkpCi0gICAgKHVubGVzcyAob3IgKG5vdCB2aXNpYmxlKQot CQk7OyBBc3N1bWUgdGhlIHNlbGVjdGVkIGZyYW1lIGlzIGFscmVhZHkgdmlzaWJsZSBlbm91 Z2guCi0JCShlcSBmcmFtZSAoc2VsZWN0ZWQtZnJhbWUpKQotCQk7OyBBc3N1bWUgdGhlIGZy YW1lIGZyb20gd2hpY2ggd2UgaW52b2tlZCB0aGUKLQkJOzsgbWluaWJ1ZmZlciBpcyB2aXNp YmxlLgotCQkoYW5kIChtaW5pYnVmZmVyLXdpbmRvdy1hY3RpdmUtcCAoc2VsZWN0ZWQtd2lu ZG93KSkKLQkJICAgICAoZXEgZnJhbWUgKHdpbmRvdy1mcmFtZSAobWluaWJ1ZmZlci1zZWxl Y3RlZC13aW5kb3cpKSkpKQotICAgICAgKHJhaXNlLWZyYW1lIGZyYW1lKSkpKQorICAobWFr ZS1mcmFtZS12aXNpYmxlIGZyYW1lKQorICAodW5sZXNzIChvciAoZnJhbWUtcGFyYW1ldGVy IGZyYW1lICduby1mb2N1cy1vbi1tYXApCisgICAgICAgICAgICAgIDs7IERvbid0IHJhaXNl IGZyYW1lcyB0aGF0IHNob3VsZCBub3QgZ2V0IGZvY3VzLgorICAgICAgICAgICAgICAoZnJh bWUtcGFyYW1ldGVyIGZyYW1lICduby1hY2NlcHQtZm9jdXMpCisgICAgICAgICAgICAgIDs7 IEFzc3VtZSB0aGUgc2VsZWN0ZWQgZnJhbWUgaXMgYWxyZWFkeSB2aXNpYmxlIGVub3VnaC4K KwkgICAgICAoZXEgZnJhbWUgKHNlbGVjdGVkLWZyYW1lKSkKKwkgICAgICA7OyBBc3N1bWUg dGhlIGZyYW1lIGZyb20gd2hpY2ggd2UgaW52b2tlZCB0aGUKKwkgICAgICA7OyBtaW5pYnVm ZmVyIGlzIHZpc2libGUuCisJICAgICAgKGFuZCAobWluaWJ1ZmZlci13aW5kb3ctYWN0aXZl LXAgKHNlbGVjdGVkLXdpbmRvdykpCisJCSAgIChlcSBmcmFtZSAod2luZG93LWZyYW1lICht aW5pYnVmZmVyLXNlbGVjdGVkLXdpbmRvdykpKSkpCisgICAgKHJhaXNlLWZyYW1lIGZyYW1l KSkpCgogOzsgRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KIDs7IEZJWE1FOiBCeSB0aGUgd2F5 LCB0aGVyZSBjb3VsZCBiZSBtb3JlIGxldmVscyBvZiBkZWRpY2F0aW9uOgpAQCAtNjc2Miw2 ICs2NzY3LDcgQEAgZGlzcGxheS1idWZmZXItLWFjdGlvbi1mdW5jdGlvbi1jdXN0b20tdHlw ZQogCSAgIChjb25zdCBkaXNwbGF5LWJ1ZmZlci1wb3AtdXAtd2luZG93KQogCSAgIChjb25z dCBkaXNwbGF5LWJ1ZmZlci1zYW1lLXdpbmRvdykKIAkgICAoY29uc3QgZGlzcGxheS1idWZm ZXItcG9wLXVwLWZyYW1lKQorCSAgIChjb25zdCBkaXNwbGF5LWJ1ZmZlci1pbi1jaGlsZC1m cmFtZSkKIAkgICAoY29uc3QgZGlzcGxheS1idWZmZXItYmVsb3ctc2VsZWN0ZWQpCiAJICAg KGNvbnN0IGRpc3BsYXktYnVmZmVyLWF0LWJvdHRvbSkKIAkgICAoY29uc3QgZGlzcGxheS1i dWZmZXItaW4tcHJldmlvdXMtd2luZG93KQpAQCAtNjkwOCw2ICs2OTE0LDcgQEAgZGlzcGxh eS1idWZmZXIKICBgZGlzcGxheS1idWZmZXItc2FtZS13aW5kb3cnCiAgYGRpc3BsYXktYnVm ZmVyLXJldXNlLXdpbmRvdycKICBgZGlzcGxheS1idWZmZXItcG9wLXVwLWZyYW1lJworIGBk aXNwbGF5LWJ1ZmZlci1pbi1jaGlsZC1mcmFtZScKICBgZGlzcGxheS1idWZmZXItcG9wLXVw LXdpbmRvdycKICBgZGlzcGxheS1idWZmZXItaW4tcHJldmlvdXMtd2luZG93JwogIGBkaXNw bGF5LWJ1ZmZlci11c2Utc29tZS13aW5kb3cnCkBAIC03MjM5LDYgKzcyNDYsNyBAQCBkaXNw bGF5LWJ1ZmZlci1wb3AtdXAtd2luZG93CiAJCQkJIChnZXQtbGFyZ2VzdC13aW5kb3cgZnJh bWUgdCkgYWxpc3QpCiAJCQkJKHdpbmRvdy0tdHJ5LXRvLXNwbGl0LXdpbmRvdwogCQkJCSAo Z2V0LWxydS13aW5kb3cgZnJhbWUgdCkgYWxpc3QpKSkpCisKICAgICAgIChwcm9nMSAod2lu ZG93LS1kaXNwbGF5LWJ1ZmZlcgogCSAgICAgIGJ1ZmZlciB3aW5kb3cgJ3dpbmRvdyBhbGlz dCBkaXNwbGF5LWJ1ZmZlci1tYXJrLWRlZGljYXRlZCkKIAkodW5sZXNzIChjZHIgKGFzc3Eg J2luaGliaXQtc3dpdGNoLWZyYW1lIGFsaXN0KSkKQEAgLTcyNTgsNiArNzI2Niw0NyBAQCBk aXNwbGF5LWJ1ZmZlci0tbWF5YmUtcG9wLXVwLWZyYW1lLW9yLXdpbmRvdwogICAgICAgKGFu ZCBwb3AtdXAtd2luZG93cwogCSAgIChkaXNwbGF5LWJ1ZmZlci1wb3AtdXAtd2luZG93IGJ1 ZmZlciBhbGlzdCkpKSkKCisoZGVmdW4gZGlzcGxheS1idWZmZXItaW4tY2hpbGQtZnJhbWUg KGJ1ZmZlciBhbGlzdCkKKyAgIkRpc3BsYXkgQlVGRkVSIGluIGEgY2hpbGQgZnJhbWUuCitC eSBkZWZhdWx0LCB0aGlzIGVpdGhlciByZXVzZXMgYSBjaGlsZCBmcmFtZSBvZiB0aGUgc2Vs ZWN0ZWQKK2ZyYW1lIG9yIG1ha2VzIGEgbmV3IGNoaWxkIGZyYW1lIG9mIHRoZSBzZWxlY3Rl ZCBmcmFtZS4gIElmCitzdWNjZXNzZnVsLCByZXR1cm4gdGhlIHdpbmRvdyB1c2VkOyBvdGhl cndpc2UgcmV0dXJuIG5pbC4KKworSWYgQUxJU1QgaGFzIGEgbm9uLW5pbCAnY2hpbGQtZnJh bWUtcGFyYW1ldGVycycgZW50cnksIHRoZQorY29ycmVzcG9uZGluZyB2YWx1ZSBpcyBhbiBh bGlzdCBvZiBmcmFtZSBwYXJhbWV0ZXJzIHRvIGdpdmUgdGhlCituZXcgZnJhbWUuICBBICdw YXJlbnQtZnJhbWUnIHBhcmFtZXRlciBzcGVjaWZ5aW5nIHRoZSBzZWxlY3RlZAorZnJhbWUg aXMgcHJvdmlkZWQgYnkgZGVmYXVsdC4gIElmIHRoZSBjaGlsZCBmcmFtZSBzaG91bGQgYmUg b3IKK2JlY29tZSB0aGUgY2hpbGQgb2YgYW55IG90aGVyIGZyYW1lLCBhIGNvcnJlc3BvbmRp bmcgZW50cnkgbXVzdAorYmUgYWRkZWQgdG8gQUxJU1QuIgorICAobGV0KiAoKHBhcmFtZXRl cnMKKyAgICAgICAgICAoYXBwZW5kCisgICAgICAgICAgIChjZHIgKGFzc3EgJ2NoaWxkLWZy YW1lLXBhcmFtZXRlcnMgYWxpc3QpKQorICAgICAgICAgICBgKChwYXJlbnQtZnJhbWUgLiAs KHNlbGVjdGVkLWZyYW1lKSkpKSkKKwkgKHBhcmVudCAob3IgKGFzc3EgJ3BhcmVudC1mcmFt ZSBwYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkLWZyYW1lKSkp CisgICAgICAgICAoc2hhcmUgKGFzc3EgJ3NoYXJlLWNoaWxkLWZyYW1lIHBhcmFtZXRlcnMp KQorICAgICAgICAgc2hhcmUxIGZyYW1lIHdpbmRvdykKKyAgICAod2l0aC1jdXJyZW50LWJ1 ZmZlciBidWZmZXIKKyAgICAgICh3aGVuIChmcmFtZS1saXZlLXAgcGFyZW50KQorICAgICAg ICAoY2F0Y2ggJ2ZyYW1lCisgICAgICAgICAgKGRvbGlzdCAoZnJhbWUxIChmcmFtZS1saXN0 KSkKKyAgICAgICAgICAgICh3aGVuIChlcSAoZnJhbWUtcGFyZW50IGZyYW1lMSkgcGFyZW50 KQorICAgICAgICAgICAgICAoc2V0cSBzaGFyZTEgKGFzc3EgJ3NoYXJlLWNoaWxkLWZyYW1l CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnJhbWUtcGFyYW1ldGVycyBm cmFtZTEpKSkKKyAgICAgICAgICAgICAgKHdoZW4gKGVxIHNoYXJlIHNoYXJlMSkKKyAgICAg ICAgICAgICAgICAoc2V0cSBmcmFtZSBmcmFtZTEpCisgICAgICAgICAgICAgICAgKHRocm93 ICdmcmFtZSB0KSkpKSkpCisKKyAgICAgIChpZiBmcmFtZQorICAgICAgICAgIChzZXRxIHdp bmRvdyAoZnJhbWUtc2VsZWN0ZWQtd2luZG93IGZyYW1lKSkKKyAgICAgICAgKHNldHEgZnJh bWUgKG1ha2UtZnJhbWUgcGFyYW1ldGVycykpCisgICAgICAgIChzZXRxIHdpbmRvdyAoZnJh bWUtc2VsZWN0ZWQtd2luZG93IGZyYW1lKSkpKQorCisgICAgKHByb2cxICh3aW5kb3ctLWRp c3BsYXktYnVmZmVyCisJICAgIGJ1ZmZlciB3aW5kb3cgJ2ZyYW1lIGFsaXN0IGRpc3BsYXkt YnVmZmVyLW1hcmstZGVkaWNhdGVkKQorICAgICAgKHVubGVzcyAoY2RyIChhc3NxICdpbmhp Yml0LXN3aXRjaC1mcmFtZSBhbGlzdCkpCisJKHdpbmRvdy0tbWF5YmUtcmFpc2UtZnJhbWUg ZnJhbWUpKSkpKQorCiAoZGVmdW4gZGlzcGxheS1idWZmZXItYmVsb3ctc2VsZWN0ZWQgKGJ1 ZmZlciBhbGlzdCkKICAgIlRyeSBkaXNwbGF5aW5nIEJVRkZFUiBpbiBhIHdpbmRvdyBiZWxv dyB0aGUgc2VsZWN0ZWQgd2luZG93LgogSWYgdGhlcmUgaXMgYSB3aW5kb3cgYmVsb3cgdGhl IHNlbGVjdGVkIG9uZSBhbmQgdGhhdCB3aW5kb3cKQEAgLTcyNzIsNyArNzMyMSw4IEBAIGRp c3BsYXktYnVmZmVyLWJlbG93LXNlbGVjdGVkCiAJKGFuZCAobm90IChmcmFtZS1wYXJhbWV0 ZXIgbmlsICd1bnNwbGl0dGFibGUpKQogCSAgICAgKGxldCAoKHNwbGl0LWhlaWdodC10aHJl c2hvbGQgMCkKIAkJICAgc3BsaXQtd2lkdGgtdGhyZXNob2xkKQotCSAgICAgICAoc2V0cSB3 aW5kb3cgKHdpbmRvdy0tdHJ5LXRvLXNwbGl0LXdpbmRvdyAoc2VsZWN0ZWQtd2luZG93KSBh bGlzdCkpKQorCSAgICAgICAoc2V0cSB3aW5kb3cgKHdpbmRvdy0tdHJ5LXRvLXNwbGl0LXdp bmRvdworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWQtd2luZG93KSBh bGlzdCkpKQogCSAgICAgKHdpbmRvdy0tZGlzcGxheS1idWZmZXIKIAkgICAgICBidWZmZXIg d2luZG93ICd3aW5kb3cgYWxpc3QgZGlzcGxheS1idWZmZXItbWFyay1kZWRpY2F0ZWQpKQog CShhbmQgKHNldHEgd2luZG93ICh3aW5kb3ctaW4tZGlyZWN0aW9uICdiZWxvdykpCkBAIC03 ODg1LDEwICs3OTM1LDEyIEBAIGZpdC1mcmFtZS10by1idWZmZXItc2l6ZXMKIChkZWNsYXJl LWZ1bmN0aW9uIHgtZGlzcGxheS1waXhlbC1oZWlnaHQgInhmbnMuYyIgKCZvcHRpb25hbCB0 ZXJtaW5hbCkpCgogKGRlZnVuIHdpbmRvdy0tc2FuaXRpemUtbWFyZ2luIChtYXJnaW4gbGVm dCByaWdodCkKLSAgIlJldHVybiBNQVJHSU4gaWYgaXQncyBhIG51bWJlciBiZXR3ZWVuIExF RlQgYW5kIFJJR0hULiIKLSAgKHdoZW4gKGFuZCAobnVtYmVycCBtYXJnaW4pCi0JICAgICAo PD0gbGVmdCAoLSByaWdodCBtYXJnaW4pKSAoPD0gbWFyZ2luIHJpZ2h0KSkKLSAgICBtYXJn aW4pKQorICAiUmV0dXJuIE1BUkdJTiBpZiBpdCdzIGEgbnVtYmVyIGJldHdlZW4gTEVGVCBh bmQgUklHSFQuCitSZXR1cm4gMCBvdGhlcndpc2UuIgorICAoaWYgKGFuZCAobnVtYmVycCBt YXJnaW4pCisgICAgICAgICAgICg8PSBsZWZ0ICgtIHJpZ2h0IG1hcmdpbikpICg8PSBtYXJn aW4gcmlnaHQpKQorICAgICAgbWFyZ2luCisgICAgMCkpCgogKGRlY2xhcmUtZnVuY3Rpb24g dG9vbC1iYXItaGVpZ2h0ICJ4ZGlzcC5jIiAoJm9wdGlvbmFsIGZyYW1lIHBpeGVsd2lzZSkp CgpAQCAtNzkwNiwxOTAgKzc5NTgsMTk3IEBAIGZpdC1mcmFtZS10by1idWZmZXIKCiBUaGUg bmV3IHBvc2l0aW9uIGFuZCBzaXplIG9mIEZSQU1FIGNhbiBiZSBhZGRpdGlvbmFsbHkgZGV0 ZXJtaW5lZAogYnkgY3VzdG9taXppbmcgdGhlIG9wdGlvbnMgYGZpdC1mcmFtZS10by1idWZm ZXItc2l6ZXMnIGFuZAotYGZpdC1mcmFtZS10by1idWZmZXItbWFyZ2lucycgb3IgdGhlIGNv cnJlc3BvbmRpbmcgcGFyYW1ldGVycyBvZgotRlJBTUUuIgorYGZpdC1mcmFtZS10by1idWZm ZXItbWFyZ2lucycgb3Igc2V0dGluZyB0aGUgY29ycmVzcG9uZGluZworcGFyYW1ldGVycyBv ZiBGUkFNRS4iCiAgIChpbnRlcmFjdGl2ZSkKLSAgKHVubGVzcyAoYW5kIChmYm91bmRwICd4 LWRpc3BsYXktcGl4ZWwtaGVpZ2h0KQotCSAgICAgICA7OyBXZSBuZWVkIHRoZSByZXNwZWN0 aXZlIHNpemVzIG5vdy4KLQkgICAgICAgKGZib3VuZHAgJ2Rpc3BsYXktbW9uaXRvci1hdHRy aWJ1dGVzLWxpc3QpKQorICAodW5sZXNzIChmYm91bmRwICdkaXNwbGF5LW1vbml0b3ItYXR0 cmlidXRlcy1saXN0KQogICAgICh1c2VyLWVycm9yICJDYW5ub3QgcmVzaXplIGZyYW1lIGlu IG5vbi1ncmFwaGljIEVtYWNzIikpCiAgIChzZXRxIGZyYW1lICh3aW5kb3ctbm9ybWFsaXpl LWZyYW1lIGZyYW1lKSkKICAgKHdoZW4gKHdpbmRvdy1saXZlLXAgKGZyYW1lLXJvb3Qtd2lu ZG93IGZyYW1lKSkKLSAgICAod2l0aC1zZWxlY3RlZC13aW5kb3cgKGZyYW1lLXJvb3Qtd2lu ZG93IGZyYW1lKQotICAgICAgKGxldCogKChjaGFyLXdpZHRoIChmcmFtZS1jaGFyLXdpZHRo KSkKLQkgICAgIChjaGFyLWhlaWdodCAoZnJhbWUtY2hhci1oZWlnaHQpKQotCSAgICAgKG1v bml0b3ItYXR0cmlidXRlcyAoY2FyIChkaXNwbGF5LW1vbml0b3ItYXR0cmlidXRlcy1saXN0 Ci0JCQkJICAgICAgIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ2Rpc3BsYXkpKSkpCi0JICAg ICAoZ2VvbWV0cnkgKGNkciAoYXNzcSAnZ2VvbWV0cnkgbW9uaXRvci1hdHRyaWJ1dGVzKSkp Ci0JICAgICAoZGlzcGxheS13aWR0aCAoLSAobnRoIDIgZ2VvbWV0cnkpIChudGggMCBnZW9t ZXRyeSkpKQotCSAgICAgKGRpc3BsYXktaGVpZ2h0ICgtIChudGggMyBnZW9tZXRyeSkgKG50 aCAxIGdlb21ldHJ5KSkpCi0JICAgICAod29ya2FyZWEgKGNkciAoYXNzcSAnd29ya2FyZWEg bW9uaXRvci1hdHRyaWJ1dGVzKSkpCi0JICAgICA7OyBIYW5kbGUgbWFyZ2lucy4KLQkgICAg IChtYXJnaW5zIChvciAoZnJhbWUtcGFyYW1ldGVyIGZyYW1lICdmaXQtZnJhbWUtdG8tYnVm ZmVyLW1hcmdpbnMpCi0JCQkgIGZpdC1mcmFtZS10by1idWZmZXItbWFyZ2lucykpCi0JICAg ICAobGVmdC1tYXJnaW4gKGlmIChudGggMCBtYXJnaW5zKQotCQkJICAgICAgKG9yICh3aW5k b3ctLXNhbml0aXplLW1hcmdpbgotCQkJCSAgIChudGggMCBtYXJnaW5zKSAwIGRpc3BsYXkt d2lkdGgpCi0JCQkJICAwKQotCQkJICAgIChudGggMCB3b3JrYXJlYSkpKQotCSAgICAgKHRv cC1tYXJnaW4gKGlmIChudGggMSBtYXJnaW5zKQotCQkJICAgICAob3IgKHdpbmRvdy0tc2Fu aXRpemUtbWFyZ2luCi0JCQkJICAobnRoIDEgbWFyZ2lucykgMCBkaXNwbGF5LWhlaWdodCkK LQkJCQkgMCkKLQkJCSAgIChudGggMSB3b3JrYXJlYSkpKQotCSAgICAgKHdvcmthcmVhLXdp ZHRoIChudGggMiB3b3JrYXJlYSkpCi0JICAgICAocmlnaHQtbWFyZ2luIChpZiAobnRoIDIg bWFyZ2lucykKLQkJCSAgICAgICAoLSBkaXNwbGF5LXdpZHRoCi0JCQkJICAob3IgKHdpbmRv dy0tc2FuaXRpemUtbWFyZ2luCi0JCQkJICAgICAgIChudGggMiBtYXJnaW5zKSBsZWZ0LW1h cmdpbiBkaXNwbGF5LXdpZHRoKQotCQkJCSAgICAgIDApKQotCQkJICAgICAobnRoIDIgd29y a2FyZWEpKSkKLQkgICAgICh3b3JrYXJlYS1oZWlnaHQgKG50aCAzIHdvcmthcmVhKSkKLQkg ICAgIChib3R0b20tbWFyZ2luIChpZiAobnRoIDMgbWFyZ2lucykKLQkJCQkoLSBkaXNwbGF5 LWhlaWdodAotCQkJCSAgIChvciAod2luZG93LS1zYW5pdGl6ZS1tYXJnaW4KLQkJCQkJKG50 aCAzIG1hcmdpbnMpIHRvcC1tYXJnaW4gZGlzcGxheS1oZWlnaHQpCi0JCQkJICAgICAgIDAp KQotCQkJICAgICAgKG50aCAzIHdvcmthcmVhKSkpCi0JICAgICA7OyBUaGUgcGl4ZWwgd2lk dGggb2YgRlJBTUUgKHdoaWNoIGRvZXMgbm90IGluY2x1ZGUgdGhlCi0JICAgICA7OyB3aW5k b3cgbWFuYWdlcidzIGRlY29yYXRpb25zKS4KLQkgICAgIChmcmFtZS13aWR0aCAoZnJhbWUt cGl4ZWwtd2lkdGgpKQotCSAgICAgOzsgVGhlIHBpeGVsIHdpZHRoIG9mIHRoZSBib2R5IG9m IEZSQU1FJ3Mgcm9vdCB3aW5kb3cuCi0JICAgICAod2luZG93LWJvZHktd2lkdGggKHdpbmRv dy1ib2R5LXdpZHRoIG5pbCB0KSkKLQkgICAgIDs7IFRoZSBkaWZmZXJlbmNlIGluIHBpeGVs cyBiZXR3ZWVuIHRvdGFsIGFuZCBib2R5IHdpZHRoIG9mCi0JICAgICA7OyBGUkFNRSdzIHdp bmRvdy4KLQkgICAgICh3aW5kb3ctZXh0cmEtd2lkdGggKC0gKHdpbmRvdy1waXhlbC13aWR0 aCkgd2luZG93LWJvZHktd2lkdGgpKQotCSAgICAgOzsgVGhlIGRpZmZlcmVuY2UgaW4gcGl4 ZWxzIGJldHdlZW4gdGhlIGZyYW1lJ3MgcGl4ZWwgd2lkdGgKLQkgICAgIDs7IGFuZCB0aGUg d2luZG93J3MgYm9keSB3aWR0aC4gIFRoaXMgaXMgdGhlIHNwYWNlIHdlIGNhbid0Ci0JICAg ICA7OyB1c2UgZm9yIGZpdHRpbmcuCi0JICAgICAoZXh0cmEtd2lkdGggKC0gZnJhbWUtd2lk dGggd2luZG93LWJvZHktd2lkdGgpKQotCSAgICAgOzsgVGhlIHBpeGVsIHBvc2l0aW9uIG9m IEZSQU1FJ3MgbGVmdCBib3JkZXIuICBXZSB1c3VhbGx5Ci0JICAgICA7OyB0cnkgdG8gbGVh dmUgdGhpcyBhbG9uZS4KLQkgICAgIChsZWZ0Ci0JICAgICAgKGxldCAoKGxlZnQgKGZyYW1l LXBhcmFtZXRlciBuaWwgJ2xlZnQpKSkKLQkJKGlmIChjb25zcCBsZWZ0KQotCQkgICAgKGZ1 bmNhbGwgKGNhciBsZWZ0KSAoY2FkciBsZWZ0KSkKLQkJICBsZWZ0KSkpCi0JICAgICA7OyBU aGUgcGl4ZWwgaGVpZ2h0IG9mIEZSQU1FICh3aGljaCBkb2VzIG5vdCBpbmNsdWRlIHRpdGxl Ci0JICAgICA7OyBsaW5lLCBkZWNvcmF0aW9ucywgYW5kIHNvbWV0aW1lcyBuZWl0aGVyIHRo ZSBtZW51IG5vcgotCSAgICAgOzsgdGhlIHRvb2xiYXIpLgotCSAgICAgKGZyYW1lLWhlaWdo dCAoZnJhbWUtcGl4ZWwtaGVpZ2h0KSkKLQkgICAgIDs7IFRoZSBwaXhlbCBoZWlnaHQgb2Yg RlJBTUUncyByb290IHdpbmRvdyAod2UgZG9uJ3QgY2FyZQotCSAgICAgOzsgYWJvdXQgdGhl IHdpbmRvdydzIGJvZHkgaGVpZ2h0IHNpbmNlIHRoZSByZXR1cm4gdmFsdWUgb2YKLQkgICAg IDs7IGB3aW5kb3ctdGV4dC1waXhlbC1zaXplJyBpbmNsdWRlcyBoZWFkZXIgYW5kIG1vZGUg bGluZSkuCi0JICAgICAod2luZG93LWhlaWdodCAod2luZG93LXBpeGVsLWhlaWdodCkpCi0J ICAgICA7OyBUaGUgZGlmZmVyZW5jZSBpbiBwaXhlbHMgYmV0d2VlbiB0aGUgZnJhbWUncyBw aXhlbAotCSAgICAgOzsgaGVpZ2h0IGFuZCB0aGUgd2luZG93J3MgaGVpZ2h0LgotCSAgICAg KGV4dHJhLWhlaWdodCAoLSBmcmFtZS1oZWlnaHQgd2luZG93LWhlaWdodCkpCi0JICAgICA7 OyBUaGUgcGl4ZWwgcG9zaXRpb24gb2YgRlJBTUUncyB0b3AgYm9yZGVyLgotCSAgICAgKHRv cAotCSAgICAgIChsZXQgKCh0b3AgKGZyYW1lLXBhcmFtZXRlciBuaWwgJ3RvcCkpKQotCQko aWYgKGNvbnNwIHRvcCkKLQkJICAgIChmdW5jYWxsIChjYXIgdG9wKSAoY2FkciB0b3ApKQot CQkgIHRvcCkpKQotCSAgICAgOzsgU2FuaXRpemUgbWluaW11bSBhbmQgbWF4aW11bSBzaXpl cy4KLQkgICAgIChzaXplcyAob3IgKGZyYW1lLXBhcmFtZXRlciBmcmFtZSAnZml0LWZyYW1l LXRvLWJ1ZmZlci1zaXplcykKLQkJCWZpdC1mcmFtZS10by1idWZmZXItc2l6ZXMpKQotCSAg ICAgKG1heC1oZWlnaHQKLQkgICAgICAoY29uZAotCSAgICAgICAoKG51bWJlcnAgKG50aCAw IHNpemVzKSkgKCogKG50aCAwIHNpemVzKSBjaGFyLWhlaWdodCkpCi0JICAgICAgICgobnVt YmVycCBtYXgtaGVpZ2h0KSAoKiBtYXgtaGVpZ2h0IGNoYXItaGVpZ2h0KSkKLQkgICAgICAg KHQgZGlzcGxheS1oZWlnaHQpKSkKLQkgICAgIChtaW4taGVpZ2h0Ci0JICAgICAgKGNvbmQK LQkgICAgICAgKChudW1iZXJwIChudGggMSBzaXplcykpICgqIChudGggMSBzaXplcykgY2hh ci1oZWlnaHQpKQotCSAgICAgICAoKG51bWJlcnAgbWluLWhlaWdodCkgKCogbWluLWhlaWdo dCBjaGFyLWhlaWdodCkpCi0JICAgICAgICh0ICgqIHdpbmRvdy1taW4taGVpZ2h0IGNoYXIt aGVpZ2h0KSkpKQotCSAgICAgKG1heC13aWR0aAotCSAgICAgIChjb25kCi0JICAgICAgICgo bnVtYmVycCAobnRoIDIgc2l6ZXMpKQotCQkoLSAoKiAobnRoIDIgc2l6ZXMpIGNoYXItd2lk dGgpIHdpbmRvdy1leHRyYS13aWR0aCkpCi0JICAgICAgICgobnVtYmVycCBtYXgtd2lkdGgp Ci0JCSgtICgqIG1heC13aWR0aCBjaGFyLXdpZHRoKSB3aW5kb3ctZXh0cmEtd2lkdGgpKQot CSAgICAgICAodCBkaXNwbGF5LXdpZHRoKSkpCi0JICAgICAobWluLXdpZHRoCi0JICAgICAg KGNvbmQKLQkgICAgICAgKChudW1iZXJwIChudGggMyBzaXplcykpCi0JCSgtICgqIChudGgg MyBzaXplcykgY2hhci13aWR0aCkgd2luZG93LWV4dHJhLXdpZHRoKSkKLQkgICAgICAgKChu dW1iZXJwIG1pbi13aWR0aCkKLQkJKC0gKCogbWluLXdpZHRoIGNoYXItd2lkdGgpIHdpbmRv dy1leHRyYS13aWR0aCkpCi0JICAgICAgICh0ICgqIHdpbmRvdy1taW4td2lkdGggY2hhci13 aWR0aCkpKSkKLQkgICAgIDs7IE5vdGU6IEN1cnJlbnRseSwgZm9yIGEgbmV3IGZyYW1lIHRo ZSBzaXplcyBvZiB0aGUgaGVhZGVyCi0JICAgICA7OyBhbmQgbW9kZSBsaW5lIG1heSBiZSBl c3RpbWF0ZWQgaW5jb3JyZWN0bHkKLQkgICAgICh2YWx1ZSAod2luZG93LXRleHQtcGl4ZWwt c2l6ZQotCQkgICAgIG5pbCB0IHQgd29ya2FyZWEtd2lkdGggd29ya2FyZWEtaGVpZ2h0IHQp KQotCSAgICAgKHdpZHRoICgrIChjYXIgdmFsdWUpICh3aW5kb3ctcmlnaHQtZGl2aWRlci13 aWR0aCkpKQotCSAgICAgKGhlaWdodAotCSAgICAgICgrIChjZHIgdmFsdWUpCi0JCSAod2lu ZG93LWJvdHRvbS1kaXZpZGVyLXdpZHRoKQotCQkgKHdpbmRvdy1zY3JvbGwtYmFyLWhlaWdo dCkpKSkKLQk7OyBEb24ndCBjaGFuZ2UgaGVpZ2h0IG9yIHdpZHRoIHdoZW4gdGhlIHdpbmRv dydzIHNpemUgaXMgZml4ZWQKLQk7OyBpbiBlaXRoZXIgZGlyZWN0aW9uIG9yIE9OTFkgZm9y YmlkcyBpdC4KLQkoY29uZAotCSAoKG9yIChlcSB3aW5kb3ctc2l6ZS1maXhlZCAnd2lkdGgp IChlcSBvbmx5ICd2ZXJ0aWNhbGx5KSkKLQkgIChzZXRxIHdpZHRoIG5pbCkpCi0JICgob3Ig KGVxIHdpbmRvdy1zaXplLWZpeGVkICdoZWlnaHQpIChlcSBvbmx5ICdob3Jpem9udGFsbHkp KQotCSAgKHNldHEgaGVpZ2h0IG5pbCkpKQotCTs7IEZpdCB3aWR0aCB0byBjb25zdHJhaW50 cy4KLQkod2hlbiB3aWR0aAotCSAgKHVubGVzcyBmcmFtZS1yZXNpemUtcGl4ZWx3aXNlCi0J ICAgIDs7IFJvdW5kIHRvIGNoYXJhY3RlciBzaXplcy4KLQkgICAgKHNldHEgd2lkdGggKCog KC8gKCsgd2lkdGggY2hhci13aWR0aCAtMSkgY2hhci13aWR0aCkKLQkJCSAgIGNoYXItd2lk dGgpKSkKLQkgIDs7IEZpdCB0byBtYXhpbXVtIGFuZCBtaW5pbXVtIHdpZHRocy4KLQkgIChz ZXRxIHdpZHRoIChtYXggKG1pbiB3aWR0aCBtYXgtd2lkdGgpIG1pbi13aWR0aCkpCi0JICA7 OyBBZGQgZXh0cmEgd2lkdGguCi0JICAoc2V0cSB3aWR0aCAoKyB3aWR0aCBleHRyYS13aWR0 aCkpCi0JICA7OyBQcmVzZXJ2ZSBtYXJnaW5zLgotCSAgKGxldCAoKHJpZ2h0ICgrIGxlZnQg d2lkdGgpKSkKLQkgICAgKGNvbmQKLQkgICAgICgoPiByaWdodCByaWdodC1tYXJnaW4pCi0J ICAgICAgOzsgTW92ZSBmcmFtZSB0byBsZWZ0ICh3ZSBkb24ndCBrbm93IGl0cyByZWFsIHdp ZHRoKS4KLQkgICAgICAoc2V0cSBsZWZ0IChtYXggbGVmdC1tYXJnaW4gKC0gbGVmdCAoLSBy aWdodCByaWdodC1tYXJnaW4pKSkpKQotCSAgICAgKCg8IGxlZnQgbGVmdC1tYXJnaW4pCi0J ICAgICAgOzsgTW92ZSBmcmFtZSB0byByaWdodC4KLQkgICAgICAoc2V0cSBsZWZ0IGxlZnQt bWFyZ2luKSkpKSkKLQk7OyBGaXQgaGVpZ2h0IHRvIGNvbnN0cmFpbnRzLgotCSh3aGVuIGhl aWdodAotCSAgKHVubGVzcyBmcmFtZS1yZXNpemUtcGl4ZWx3aXNlCi0JICAgIChzZXRxIGhl aWdodCAoKiAoLyAoKyBoZWlnaHQgY2hhci1oZWlnaHQgLTEpIGNoYXItaGVpZ2h0KQotCQkJ ICAgIGNoYXItaGVpZ2h0KSkpCi0JICA7OyBGaXQgdG8gbWF4aW11bSBhbmQgbWluaW11bSBo ZWlnaHRzLgotCSAgKHNldHEgaGVpZ2h0IChtYXggKG1pbiBoZWlnaHQgbWF4LWhlaWdodCkg bWluLWhlaWdodCkpCi0JICA7OyBBZGQgZXh0cmEgaGVpZ2h0LgotCSAgKHNldHEgaGVpZ2h0 ICgrIGhlaWdodCBleHRyYS1oZWlnaHQpKQotCSAgOzsgUHJlc2VydmUgbWFyZ2lucy4KLQkg IChsZXQgKChib3R0b20gKCsgdG9wIGhlaWdodCkpKQotCSAgICAoY29uZAotCSAgICAgKCg+ IGJvdHRvbSBib3R0b20tbWFyZ2luKQotCSAgICAgIDs7IE1vdmUgZnJhbWUgdXAgKHdlIGRv bid0IGtub3cgaXRzIHJlYWwgaGVpZ2h0KS4KLQkgICAgICAoc2V0cSB0b3AgKG1heCB0b3At bWFyZ2luICgtIHRvcCAoLSBib3R0b20gYm90dG9tLW1hcmdpbikpKSkpCi0JICAgICAoKDwg dG9wIHRvcC1tYXJnaW4pCi0JICAgICAgOzsgTW92ZSBmcmFtZSBkb3duLgotCSAgICAgIChz ZXRxIHRvcCB0b3AtbWFyZ2luKSkpKSkKLQk7OyBBcHBseSBjaGFuZ2VzLgotCShzZXQtZnJh bWUtcG9zaXRpb24gZnJhbWUgbGVmdCB0b3ApCi0JOzsgQ2x1bXNpbHkgdHJ5IHRvIHRyYW5z bGF0ZSBvdXIgY2FsY3VsYXRpb25zIHRvIHdoYXQKLQk7OyBgc2V0LWZyYW1lLXNpemUnIHdh bnRzLgotCSh3aGVuIHdpZHRoCi0JICAoc2V0cSB3aWR0aCAoLSAoKyAoZnJhbWUtdGV4dC13 aWR0aCkgd2lkdGgpCi0JCQkgZXh0cmEtd2lkdGggd2luZG93LWJvZHktd2lkdGgpKSkKLQko d2hlbiBoZWlnaHQKLQkgIChzZXRxIGhlaWdodCAoLSAoKyAoZnJhbWUtdGV4dC1oZWlnaHQp IGhlaWdodCkKLQkJCSAgZXh0cmEtaGVpZ2h0IHdpbmRvdy1oZWlnaHQpKSkKLQkoc2V0LWZy YW1lLXNpemUKLQkgZnJhbWUKLQkgKGlmIHdpZHRoCi0JICAgICAoaWYgZnJhbWUtcmVzaXpl LXBpeGVsd2lzZQotCQkgd2lkdGgKLQkgICAgICAgKC8gd2lkdGggY2hhci13aWR0aCkpCi0J ICAgKGZyYW1lLXRleHQtd2lkdGgpKQotCSAoaWYgaGVpZ2h0Ci0JICAgICAoaWYgZnJhbWUt cmVzaXplLXBpeGVsd2lzZQotCQkgaGVpZ2h0Ci0JICAgICAgICgvIGhlaWdodCBjaGFyLWhl aWdodCkpCi0JICAgKGZyYW1lLXRleHQtaGVpZ2h0KSkKLQkgZnJhbWUtcmVzaXplLXBpeGVs d2lzZSkpKSkpCisgICAgKGxldCogKChjaGFyLXdpZHRoIChmcmFtZS1jaGFyLXdpZHRoIGZy YW1lKSkKKyAgICAgICAgICAgKGNoYXItaGVpZ2h0IChmcmFtZS1jaGFyLWhlaWdodCBmcmFt ZSkpCisgICAgICAgICAgIDs7IFdJTkRPVyBpcyBGUkFNRSdzIHJvb3Qgd2luZG93LgorICAg ICAgICAgICAod2luZG93IChmcmFtZS1yb290LXdpbmRvdyBmcmFtZSkpCisgICAgICAgICAg IChwYXJlbnQgKGZyYW1lLXBhcmVudCBmcmFtZSkpCisgICAgICAgICAgIChtb25pdG9yLWF0 dHJpYnV0ZXMKKyAgICAgICAgICAgICh1bmxlc3MgcGFyZW50CisgICAgICAgICAgICAgIChj YXIgKGRpc3BsYXktbW9uaXRvci1hdHRyaWJ1dGVzLWxpc3QKKyAgICAgICAgICAgICAgICAg ICAgKGZyYW1lLXBhcmFtZXRlciBmcmFtZSAnZGlzcGxheSkpKSkpCisgICAgICAgICAgIDs7 IEZSQU1FJ1MgcGFyZW50IG9yIGRpc3BsYXkgc2l6ZXMuICBVc2VkIGluIGNvbm5lY3Rpb24K KyAgICAgICAgICAgOzsgd2l0aCBtYXJnaW5zLgorICAgICAgICAgICAoZ2VvbWV0cnkKKyAg ICAgICAgICAgICh1bmxlc3MgcGFyZW50CisgICAgICAgICAgICAgIChjZHIgKGFzc3EgJ2dl b21ldHJ5IG1vbml0b3ItYXR0cmlidXRlcykpKSkKKyAgICAgICAgICAgKHBhcmVudC1vci1k aXNwbGF5LXdpZHRoCisgICAgICAgICAgICAoaWYgcGFyZW50CisgICAgICAgICAgICAgICAg KGZyYW1lLW5hdGl2ZS13aWR0aCBwYXJlbnQpCisgICAgICAgICAgICAgICgtIChudGggMiBn ZW9tZXRyeSkgKG50aCAwIGdlb21ldHJ5KSkpKQorICAgICAgICAgICAocGFyZW50LW9yLWRp c3BsYXktaGVpZ2h0CisgICAgICAgICAgICAoaWYgcGFyZW50CisgICAgICAgICAgICAgICAg KGZyYW1lLW5hdGl2ZS1oZWlnaHQgcGFyZW50KQorICAgICAgICAgICAgICAoLSAobnRoIDMg Z2VvbWV0cnkpIChudGggMSBnZW9tZXRyeSkpKSkKKyAgICAgICAgICAgOzsgRlJBTUUnUyBw YXJlbnQgb3Igd29ya2FyZWEgc2l6ZXMuICBVc2VkIHdoZW4gbm8gbWFyZ2lucworICAgICAg ICAgICA7OyBhcmUgc3BlY2lmaWVkLgorICAgICAgICAgICAocGFyZW50LW9yLXdvcmthcmVh CisgICAgICAgICAgICAoaWYgcGFyZW50CisgICAgICAgICAgICAgICAgYCgwIDAgLHBhcmVu dC1vci1kaXNwbGF5LXdpZHRoICxwYXJlbnQtb3ItZGlzcGxheS1oZWlnaHQpCisgICAgICAg ICAgICAgIChjZHIgKGFzc3EgJ3dvcmthcmVhIG1vbml0b3ItYXR0cmlidXRlcykpKSkKKyAg ICAgICAgICAgOzsgVGhlIG91dGVyIHNpemUgb2YgRlJBTUUuICBOZWVkZWQgdG8gY2FsY3Vs YXRlIHRoZQorICAgICAgICAgICA7OyBtYXJnaW5zIGFyb3VuZCB0aGUgcm9vdCB3aW5kb3cn cyBib2R5IHRoYXQgaGF2ZSB0bworICAgICAgICAgICA7OyByZW1haW4gdW50b3VjaGVkIGJ5 IGZpdHRpbmcuCisgICAgICAgICAgIChvdXRlci1lZGdlcyAoZnJhbWUtZWRnZXMgZnJhbWUg J291dGVyLWVkZ2VzKSkKKyAgICAgICAgICAgKG91dGVyLXdpZHRoIChpZiBvdXRlci1lZGdl cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtIChudGggMiBvdXRlci1lZGdlcykg KG50aCAwIG91dGVyLWVkZ2VzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgQSBw b29yIGd1ZXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAoZnJhbWUtcGl4ZWwtd2lk dGggZnJhbWUpKSkKKyAgICAgICAgICAgKG91dGVyLWhlaWdodCAoaWYgb3V0ZXItZWRnZXMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0gKG50aCAzIG91dGVyLWVkZ2VzKSAo bnRoIDEgb3V0ZXItZWRnZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgQW5v dGhlciBwb29yIGd1ZXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZyYW1lLXBp eGVsLWhlaWdodCBmcmFtZSkpKQorICAgICAgICAgICA7OyBUaGUgdGV4dCBzaXplIG9mIG9m IEZSQU1FLiAgTmVlZGVkIHRvIHNwZWNpZnkgRlJBTUUncworICAgICAgICAgICA7OyB0ZXh0 IHNpemUgYWZ0ZXIgdGhlIHJvb3Qgd2luZG93J3MgYm9keSdzIG5ldyBzaXplcyBoYXZlCisg ICAgICAgICAgIDs7IGJlZW4gY2FsY3VsYXRlZC4KKyAgICAgICAgICAgKHRleHQtd2lkdGgg KGZyYW1lLXRleHQtd2lkdGggZnJhbWUpKQorICAgICAgICAgICAodGV4dC1oZWlnaHQgKGZy YW1lLXRleHQtaGVpZ2h0IGZyYW1lKSkKKyAgICAgICAgICAgOzsgV0lORE9XJ3MgYm9keSBz aXplLgorICAgICAgICAgICAoYm9keS13aWR0aCAod2luZG93LWJvZHktd2lkdGggd2luZG93 IHQpKQorICAgICAgICAgICAoYm9keS1oZWlnaHQgKHdpbmRvdy1ib2R5LWhlaWdodCB3aW5k b3cgdCkpCisgICAgICAgICAgIDs7IFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gRlJBTUUncyBv dXRlciBzaXplIGFuZCBXSU5ET1cncworICAgICAgICAgICA7OyBib2R5IHNpemUuCisgICAg ICAgICAgIChvdXRlci1taW51cy1ib2R5LXdpZHRoICgtIG91dGVyLXdpZHRoIGJvZHktd2lk dGgpKQorICAgICAgICAgICAob3V0ZXItbWludXMtYm9keS1oZWlnaHQgKC0gb3V0ZXItaGVp Z2h0IGJvZHktaGVpZ2h0KSkKKyAgICAgICAgICAgOzsgVGhlIGRpZmZlcmVuY2UgYmV0d2Vl biBGUkFNRSdzIHRleHQgc2l6ZSBhbmQgV0lORE9XJ3MKKyAgICAgICAgICAgOzsgYm9keSBz aXplICh0aGVzZSB2YWx1ZXMgInNob3VsZCIgYmUgcG9zaXRpdmUpLgorICAgICAgICAgICAo dGV4dC1taW51cy1ib2R5LXdpZHRoICgtIHRleHQtd2lkdGggYm9keS13aWR0aCkpCisgICAg ICAgICAgICh0ZXh0LW1pbnVzLWJvZHktaGVpZ2h0ICgtIHRleHQtaGVpZ2h0IGJvZHktaGVp Z2h0KSkKKyAgICAgICAgICAgOzsgVGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgRlJBTUUuCisg ICAgICAgICAgIChwb3NpdGlvbiAoZnJhbWUtcG9zaXRpb24gZnJhbWUpKQorICAgICAgICAg ICAobGVmdCAoY2FyIHBvc2l0aW9uKSkKKyAgICAgICAgICAgKHRvcCAoY2RyIHBvc2l0aW9u KSkKKyAgICAgICAgICAgOzsgVGhlIG1hcmdpbnMgc3BlY2lmaWVkIGZvciBGUkFNRS4gIFRo ZXNlIHJlcHJlc2VudCBwaXhlbAorICAgICAgICAgICA7OyBvZmZzZXRzIGZyb20gdGhlIGxl ZnQsIHRvcCwgcmlnaHQgYW5kIGJvdHRvbSBlZGdlIG9mIHRoZQorICAgICAgICAgICA7OyBk aXNwbGF5IG9yIEZSQU1FJ3MgcGFyZW50J3MgbmF0aXZlIHJlY3RhbmdsZSBhbmQgaGF2ZSB0 bworICAgICAgICAgICA7OyB0YWtlIGNhcmUgb2YgdGhlIGRpc3BsYXkncyB0YXNrYmFyIGFu ZCBvdGhlciBvYnN0YWNsZXMuCisgICAgICAgICAgIDs7IElmIHRoZXkgYXJlIHVuc3BlY2lm aWVkLCBjb25zdHJhaW4gdGhlIHJlc3VsdGluZyBmcmFtZQorICAgICAgICAgICA7OyB0byBp dHMgd29ya2FyZWEgb3IgdGhlIHBhcmVudCBmcmFtZSdzIG5hdGl2ZSByZWN0YW5nbGUuCisg ICAgICAgICAgIChtYXJnaW5zIChvciAoZnJhbWUtcGFyYW1ldGVyIGZyYW1lICdmaXQtZnJh bWUtdG8tYnVmZmVyLW1hcmdpbnMpCisgICAgICAgICAgICAgICAgICAgICAgICBmaXQtZnJh bWUtdG8tYnVmZmVyLW1hcmdpbnMpKQorICAgICAgICAgICA7OyBDb252ZXJ0IG1hcmdpbnMg aW50dG8gcGl4ZWwgb2Zmc2V0cyBmcm9tIHRoZSBsZWZ0LXRvcAorICAgICAgICAgICA7OyBj b3JuZXIgb2YgRlJBTUUncyBkaXNwbGF5IG9yIHBhcmVudC4KKyAgICAgICAgICAgKGxlZnQt bWFyZ2luIChpZiAobnRoIDAgbWFyZ2lucykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAod2luZG93LS1zYW5pdGl6ZS1tYXJnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG50aCAwIG1hcmdpbnMpIDAgcGFyZW50LW9yLWRpc3BsYXktd2lkdGgpCisgICAgICAg ICAgICAgICAgICAgICAgICAgIChudGggMCBwYXJlbnQtb3Itd29ya2FyZWEpKSkKKyAgICAg ICAgICAgKHRvcC1tYXJnaW4gKGlmIChudGggMSBtYXJnaW5zKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHdpbmRvdy0tc2FuaXRpemUtbWFyZ2luCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG50aCAxIG1hcmdpbnMpIDAgcGFyZW50LW9yLWRpc3BsYXktaGVpZ2h0 KQorICAgICAgICAgICAgICAgICAgICAgICAgIChudGggMSBwYXJlbnQtb3Itd29ya2FyZWEp KSkKKyAgICAgICAgICAgKHJpZ2h0LW1hcmdpbiAoaWYgKG50aCAyIG1hcmdpbnMpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgtIHBhcmVudC1vci1kaXNwbGF5LXdpZHRoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aW5kb3ctLXNhbml0aXplLW1hcmdp bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG50aCAyIG1hcmdpbnMpIGxl ZnQtbWFyZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQtb3It ZGlzcGxheS13aWR0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAobnRoIDIgcGFy ZW50LW9yLXdvcmthcmVhKSkpCisgICAgICAgICAgIChib3R0b20tbWFyZ2luIChpZiAobnRo IDMgbWFyZ2lucykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtIHBhcmVudC1v ci1kaXNwbGF5LWhlaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdp bmRvdy0tc2FuaXRpemUtbWFyZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG50aCAzIG1hcmdpbnMpIHRvcC1tYXJnaW4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwYXJlbnQtb3ItZGlzcGxheS1oZWlnaHQpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChudGggMyBwYXJlbnQtb3Itd29ya2FyZWEpKSkKKyAgICAgICAgICAg OzsgTWluaW11bSBhbmQgbWF4aW11bSBzaXplcyBzcGVjaWZpZWQgZm9yIEZSQU1FLgorICAg ICAgICAgICAoc2l6ZXMgKG9yIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ2ZpdC1mcmFtZS10 by1idWZmZXItc2l6ZXMpCisgICAgICAgICAgICAgICAgICAgICAgZml0LWZyYW1lLXRvLWJ1 ZmZlci1zaXplcykpCisgICAgICAgICAgIDs7IENhbGN1bGF0ZSB0aGUgbWluaW11bSBhbmQg bWF4aW11bSBwaXhlbCBzaXplcyBvZiBGUkFNRQorICAgICAgICAgICA7OyBmcm9tIHRoZSB2 YWx1ZXMgcHJvdmlkZWQgYnkgdGhlIE1BWC1IRUlHSFQsIE1JTi1IRUlHSFQsCisgICAgICAg ICAgIDs7IE1BWC1XSURUSCBhbmQgTUlOLVdJRFRIIGFyZ3VtZW50cyBvciwgaWYgdGhlc2Ug YXJlIG5pbCwKKyAgICAgICAgICAgOzsgZnJvbSB0aG9zZSBwcm92aWRlZCBieSBgZml0LWZy YW1lLXRvLWJ1ZmZlci1zaXplcycuCisgICAgICAgICAgIChtYXgtaGVpZ2h0CisgICAgICAg ICAgICAobWluCisgICAgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgKChudW1iZXJw IG1heC1oZWlnaHQpICgqIG1heC1oZWlnaHQgY2hhci1oZWlnaHQpKQorICAgICAgICAgICAg ICAoKG51bWJlcnAgKG50aCAwIHNpemVzKSkgKCogKG50aCAwIHNpemVzKSBjaGFyLWhlaWdo dCkpCisgICAgICAgICAgICAgICh0IHBhcmVudC1vci1kaXNwbGF5LWhlaWdodCkpCisgICAg ICAgICAgICAgOzsgVGhlIGZvbGxvd2luZyBpcyB0aGUgbWF4aW11bSBoZWlnaHQgdGhhdCBm aXRzIGludG8gdGhlCisgICAgICAgICAgICAgOzsgdG9wIGFuZCBib3R0b20gbWFyZ2lucy4K KyAgICAgICAgICAgICAobWF4ICgtIGJvdHRvbS1tYXJnaW4gdG9wLW1hcmdpbiBvdXRlci1t aW51cy1ib2R5LWhlaWdodCkpKSkKKyAgICAgICAgICAgKG1pbi1oZWlnaHQKKyAgICAgICAg ICAgIChjb25kCisgICAgICAgICAgICAgKChudW1iZXJwIG1pbi1oZWlnaHQpICgqIG1pbi1o ZWlnaHQgY2hhci1oZWlnaHQpKQorICAgICAgICAgICAgICgobnVtYmVycCAobnRoIDEgc2l6 ZXMpKSAoKiAobnRoIDEgc2l6ZXMpIGNoYXItaGVpZ2h0KSkKKyAgICAgICAgICAgICAodCAo d2luZG93LW1pbi1zaXplIHdpbmRvdyBuaWwgbmlsIHQpKSkpCisgICAgICAgICAgIChtYXgt d2lkdGgKKyAgICAgICAgICAgIChtaW4KKyAgICAgICAgICAgICAoY29uZAorICAgICAgICAg ICAgICAoKG51bWJlcnAgbWF4LXdpZHRoKSAoKiBtYXgtd2lkdGggY2hhci13aWR0aCkpCisg ICAgICAgICAgICAgICgobnVtYmVycCAobnRoIDIgc2l6ZXMpKSAoKiAobnRoIDIgc2l6ZXMp IGNoYXItd2lkdGgpKQorICAgICAgICAgICAgICAodCBwYXJlbnQtb3ItZGlzcGxheS13aWR0 aCkpCisgICAgICAgICAgICAgOzsgVGhlIGZvbGxvd2luZyBpcyB0aGUgbWF4aW11bSB3aWR0 aCB0aGF0IGZpdHMgaW50byB0aGUKKyAgICAgICAgICAgICA7OyBsZWZ0IGFuZCByaWdodCBt YXJnaW5zLgorICAgICAgICAgICAgIChtYXggKC0gcmlnaHQtbWFyZ2luIGxlZnQtbWFyZ2lu IG91dGVyLW1pbnVzLWJvZHktd2lkdGgpKSkpCisgICAgICAgICAgIChtaW4td2lkdGgKKyAg ICAgICAgICAgIChjb25kCisgICAgICAgICAgICAgKChudW1iZXJwIG1pbi13aWR0aCkgKCog bWluLXdpZHRoIGNoYXItd2lkdGgpKQorICAgICAgICAgICAgICgobnVtYmVycCAobnRoIDMg c2l6ZXMpKSAobnRoIDMgc2l6ZXMpKQorICAgICAgICAgICAgICh0ICh3aW5kb3ctbWluLXNp emUgd2luZG93IHQgbmlsIHQpKSkpCisgICAgICAgICAgIDs7IE5vdGU6IEN1cnJlbnRseSwg Zm9yIGEgbmV3IGZyYW1lIHRoZSBzaXplcyBvZiB0aGUgaGVhZGVyCisgICAgICAgICAgIDs7 IGFuZCBtb2RlIGxpbmUgbWF5IGJlIGVzdGltYXRlZCBpbmNvcnJlY3RseQorICAgICAgICAg ICAoc2l6ZQorICAgICAgICAgICAgKHdpbmRvdy10ZXh0LXBpeGVsLXNpemUgd2luZG93IHQg dCBtYXgtd2lkdGggbWF4LWhlaWdodCkpCisgICAgICAgICAgICh3aWR0aCAobWF4IChjYXIg c2l6ZSkgbWluLXdpZHRoKSkKKyAgICAgICAgICAgKGhlaWdodCAobWF4IChjZHIgc2l6ZSkg bWluLWhlaWdodCkpKQorICAgICAgOzsgRG9uJ3QgY2hhbmdlIGhlaWdodCBvciB3aWR0aCB3 aGVuIHRoZSB3aW5kb3cncyBzaXplIGlzIGZpeGVkCisgICAgICA7OyBpbiBlaXRoZXIgZGly ZWN0aW9uIG9yIE9OTFkgZm9yYmlkcyBpdC4KKyAgICAgIChjb25kCisgICAgICAgKChvciAo ZXEgd2luZG93LXNpemUtZml4ZWQgJ3dpZHRoKSAoZXEgb25seSAndmVydGljYWxseSkpCisg ICAgICAgIChzZXRxIHdpZHRoIG5pbCkpCisgICAgICAgKChvciAoZXEgd2luZG93LXNpemUt Zml4ZWQgJ2hlaWdodCkgKGVxIG9ubHkgJ2hvcml6b250YWxseSkpCisgICAgICAgIChzZXRx IGhlaWdodCBuaWwpKSkKKyAgICAgIDs7IEZpdCB3aWR0aCB0byBjb25zdHJhaW50cy4KKyAg ICAgICh3aGVuIHdpZHRoCisgICAgICAgICh1bmxlc3MgZnJhbWUtcmVzaXplLXBpeGVsd2lz ZQorICAgICAgICAgIDs7IFJvdW5kIHRvIGNoYXJhY3RlciBzaXplcy4KKyAgICAgICAgICAo c2V0cSB3aWR0aCAoKiAoLyAoKyB3aWR0aCBjaGFyLXdpZHRoIC0xKSBjaGFyLXdpZHRoKQor ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXItd2lkdGgpKSkKKyAgICAgICAgOzsgVGhl IG5ldyBvdXRlciB3aWR0aCAoaW4gcGl4ZWxzKS4KKyAgICAgICAgKHNldHEgb3V0ZXItd2lk dGggKCsgd2lkdGggb3V0ZXItbWludXMtYm9keS13aWR0aCkpCisgICAgICAgIDs7IE1heWJl IG1vdmUgRlJBTUUgdG8gcHJlc2VydmUgbWFyZ2lucy4KKyAgICAgICAgKGxldCAoKHJpZ2h0 ICgrIGxlZnQgb3V0ZXItd2lkdGgpKSkKKyAgICAgICAgICAoY29uZAorICAgICAgICAgICAo KD4gcmlnaHQgcmlnaHQtbWFyZ2luKQorICAgICAgICAgICAgOzsgTW92ZSBmcmFtZSB0byBs ZWZ0LgorICAgICAgICAgICAgKHNldHEgbGVmdCAobWF4IGxlZnQtbWFyZ2luICgtIGxlZnQg KC0gcmlnaHQgcmlnaHQtbWFyZ2luKSkpKSkKKyAgICAgICAgICAgKCg8IGxlZnQgbGVmdC1t YXJnaW4pCisgICAgICAgICAgICA7OyBNb3ZlIGZyYW1lIHRvIHJpZ2h0LgorICAgICAgICAg ICAgKHNldHEgbGVmdCBsZWZ0LW1hcmdpbikpKSkpCisgICAgICA7OyBGaXQgaGVpZ2h0IHRv IGNvbnN0cmFpbnRzLgorICAgICAgKHdoZW4gaGVpZ2h0CisgICAgICAgICh1bmxlc3MgZnJh bWUtcmVzaXplLXBpeGVsd2lzZQorICAgICAgICAgIChzZXRxIGhlaWdodCAoKiAoLyAoKyBo ZWlnaHQgY2hhci1oZWlnaHQgLTEpIGNoYXItaGVpZ2h0KQorICAgICAgICAgICAgICAgICAg ICAgICAgICBjaGFyLWhlaWdodCkpKQorICAgICAgICA7OyBUaGUgbmV3IG91dGVyIGhlaWdo dC4KKyAgICAgICAgKHNldHEgb3V0ZXItaGVpZ2h0ICgrIGhlaWdodCBvdXRlci1taW51cy1i b2R5LWhlaWdodCkpCisgICAgICAgIDs7IFByZXNlcnZlIG1hcmdpbnMuCisgICAgICAgIChs ZXQgKChib3R0b20gKCsgdG9wIG91dGVyLWhlaWdodCkpKQorICAgICAgICAgIChjb25kCisg ICAgICAgICAgICgoPiBib3R0b20gYm90dG9tLW1hcmdpbikKKyAgICAgICAgICAgIDs7IE1v dmUgZnJhbWUgdXAuCisgICAgICAgICAgICAoc2V0cSB0b3AgKG1heCB0b3AtbWFyZ2luICgt IHRvcCAoLSBib3R0b20gYm90dG9tLW1hcmdpbikpKSkpCisgICAgICAgICAgICgoPCB0b3Ag dG9wLW1hcmdpbikKKyAgICAgICAgICAgIDs7IE1vdmUgZnJhbWUgZG93bi4KKyAgICAgICAg ICAgIChzZXRxIHRvcCB0b3AtbWFyZ2luKSkpKSkKKyAgICAgIDs7IEFwcGx5IG91ciBjaGFu Z2VzLgorICAgICAgKHNldHEgdGV4dC13aWR0aAorICAgICAgICAgICAgKGlmIHdpZHRoCisg ICAgICAgICAgICAgICAgKCsgd2lkdGggdGV4dC1taW51cy1ib2R5LXdpZHRoKQorICAgICAg ICAgICAgICAoZnJhbWUtdGV4dC13aWR0aCBmcmFtZSkpKQorICAgICAgKHNldHEgdGV4dC1o ZWlnaHQKKyAgICAgICAgICAgIChpZiBoZWlnaHQKKyAgICAgICAgICAgICAgICAoKyBoZWln aHQgdGV4dC1taW51cy1ib2R5LWhlaWdodCkKKyAgICAgICAgICAgICAgKGZyYW1lLXRleHQt aGVpZ2h0IGZyYW1lKSkpCisgICAgICAobW9kaWZ5LWZyYW1lLXBhcmFtZXRlcnMKKyAgICAg ICBmcmFtZSBgKChsZWZ0IC4gLGxlZnQpICh0b3AgLiAsdG9wKQorICAgICAgICAgICAgICAg KHdpZHRoIC4gKHRleHQtcGl4ZWxzIC4gLHRleHQtd2lkdGgpKQorICAgICAgICAgICAgICAg KGhlaWdodCAuICh0ZXh0LXBpeGVscyAuICx0ZXh0LWhlaWdodCkpKSkpKSkKCiAoZGVmdW4g Zml0LXdpbmRvdy10by1idWZmZXIgKCZvcHRpb25hbCB3aW5kb3cgbWF4LWhlaWdodCBtaW4t aGVpZ2h0IG1heC13aWR0aCBtaW4td2lkdGggcHJlc2VydmUtc2l6ZSkKICAgIkFkanVzdCBz aXplIG9mIFdJTkRPVyB0byBkaXNwbGF5IGl0cyBidWZmZXIncyBjb250ZW50cyBleGFjdGx5 LgpAQCAtODI4Niw2ICs4MzQ1LDE2OCBAQCBzaHJpbmstd2luZG93LWlmLWxhcmdlci10aGFu LWJ1ZmZlcgogICAod2hlbiAoYW5kICh3aW5kb3ctY29tYmluZWQtcCB3aW5kb3cpCiAJICAg ICAocG9zLXZpc2libGUtaW4td2luZG93LXAgKHBvaW50LW1pbikgd2luZG93KSkKICAgICAo Zml0LXdpbmRvdy10by1idWZmZXIgd2luZG93ICh3aW5kb3ctdG90YWwtaGVpZ2h0IHdpbmRv dykpKSkKKworKGRlZnVuIHdpbmRvdy1sYXJnZXN0LWVtcHR5LXJlY3RhbmdsZS0tbWF4aW11 bXMtMSAocXVhZCBtYXhpbXVtcykKKyAgIlN1cHBvcnQgZnVuY3Rpb24gZm9yIGB3aW5kb3ct bGFyZ2VzdC1lbXB0eS1yZWN0YW5nbGUnLiIKKyAgKGNvbmQKKyAgICgobnVsbCBtYXhpbXVt cykKKyAgICAobGlzdCBxdWFkKSkKKyAgICgoPiAoY2FyIHF1YWQpIChjYWFyIG1heGltdW1z KSkKKyAgICAoY29ucyBxdWFkIG1heGltdW1zKSkKKyAgICh0CisgICAgKGNvbnMgKGNhciBt YXhpbXVtcykKKwkgICh3aW5kb3ctbGFyZ2VzdC1lbXB0eS1yZWN0YW5nbGUtLW1heGltdW1z LTEgcXVhZCAoY2RyIG1heGltdW1zKSkpKSkpCisKKyhkZWZ1biB3aW5kb3ctbGFyZ2VzdC1l bXB0eS1yZWN0YW5nbGUtLW1heGltdW1zIChxdWFkIG1heGltdW1zIGNvdW50KQorICAiU3Vw cG9ydCBmdW5jdGlvbiBmb3IgYHdpbmRvdy1sYXJnZXN0LWVtcHR5LXJlY3RhbmdsZScuIgor ICAoc2V0cSBtYXhpbXVtcyAod2luZG93LWxhcmdlc3QtZW1wdHktcmVjdGFuZ2xlLS1tYXhp bXVtcy0xIHF1YWQgbWF4aW11bXMpKQorICAoaWYgKD4gKGxlbmd0aCBtYXhpbXVtcykgY291 bnQpCisgICAgICAobmJ1dGxhc3QgbWF4aW11bXMpCisgICAgbWF4aW11bXMpKQorCisoZGVm dW4gd2luZG93LWxhcmdlc3QtZW1wdHktcmVjdGFuZ2xlLS1kaXNqb2ludC1tYXhpbXVtcyAo bWF4aW11bXMgY291bnQpCisgICJTdXBwb3J0IGZ1bmN0aW9uIGZvciBgd2luZG93LWxhcmdl c3QtZW1wdHktcmVjdGFuZ2xlJy4iCisgIChzZXRxIG1heGltdW1zIChzb3J0IG1heGltdW1z IChsYW1iZGEgKHggeSkgKD4gKGNhciB4KSAoY2FyIHkpKSkpKQorICAobGV0ICgobmV3LWxl bmd0aCAwKQorCW5ldy1tYXhpbXVtcykKKyAgICAod2hpbGUgKGFuZCBtYXhpbXVtcyAoPCBu ZXctbGVuZ3RoIGNvdW50KSkKKyAgICAgIChsZXQqICgobWF4aW11bSAoY2FyIG1heGltdW1z KSkKKwkgICAgIChhdCAobnRoIDIgbWF4aW11bSkpCisJICAgICAodG8gKG50aCAzIG1heGlt dW0pKSkKKwkoY2F0Y2ggJ2Ryb3AKKwkgIChkb2xpc3QgKG5ldy1tYXhpbXVtIG5ldy1tYXhp bXVtcykKKwkgICAgKGxldCAoKG5ldy1hdCAobnRoIDIgbmV3LW1heGltdW0pKQorCQkgIChu ZXctdG8gKG50aCAzIG5ldy1tYXhpbXVtKSkpCisJICAgICAgKHdoZW4gKGlmICg8IGF0IG5l dy1hdCkgKD4gdG8gbmV3LWF0KSAoPCBhdCBuZXctdG8pKQorCQk7OyBJbnRlcnNlY3Rpb24g LT4gZHJvcC4KKwkJKHRocm93ICdkcm9wIG5pbCkpKSkKKwkgIChzZXRxIG5ldy1tYXhpbXVt cyAoY29ucyBtYXhpbXVtIG5ldy1tYXhpbXVtcykpCisJICAoc2V0cSBuZXctbGVuZ3RoICgx KyBuZXctbGVuZ3RoKSkpCisJKHNldHEgbWF4aW11bXMgKGNkciBtYXhpbXVtcykpKSkKKwor ICAgIChucmV2ZXJzZSBuZXctbWF4aW11bXMpKSkKKworKGRlZnVuIHdpbmRvdy1sYXJnZXN0 LWVtcHR5LXJlY3RhbmdsZSAoJm9wdGlvbmFsIHdpbmRvdyBjb3VudCBtaW4td2lkdGggbWlu LWhlaWdodCBwb3NpdGlvbnMgbGVmdCkKKyAgIlJldHVybiBkaW1lbnNpb25zIG9mIGxhcmdl c3QgZW1wdHkgcmVjdGFuZ2xlIGluIFdJTkRPVy4KK1dJTkRPVyBtdXN0IGJlIGEgbGl2ZSB3 aW5kb3cgYW5kIGRlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCBvbmUuCisKK1RoZSByZXR1cm4g dmFsdWUgaXMgYSB0cmlwbGUgb2YgdGhlIHdpZHRoIGFuZCB0aGUgc3RhcnQgYW5kIGVuZAor WS1jb29yZGluYXRlcyBvZiB0aGUgbGFyZ2VzdCByZWN0YW5nbGUgdGhhdCBjYW4gYmUgaW5z Y3JpYmVkIGludG8KK3RoZSBlbXB0eSBzcGFjZSAodGhlIHNwYWNlIG5vdCBkaXNwbGF5aW5n IGFueSB0ZXh0KSBvZiBXSU5ET1cncwordGV4dCBhcmVhLiAgVGhlIHJldHVybiB2YWx1ZSBp cyBuaWwgaWYgdGhlIGN1cnJlbnQgZ2x5cGggbWF0cml4CitvZiBXSU5ET1cgaXMgbm90IHVw LXRvLWRhdGUuCisKK09wdGlvbmFsIGFyZ3VtZW50IENPVU5ULCBpZiBub24tbmlsLCBzcGVj aWZpZXMgdGhlIG1heGltdW0gbnVtYmVyCitvZiByZWN0YW5nbGVzIHRvIHJldHVybi4gIFRo aXMgbWVhbnMgdGhhdCB0aGUgcmV0dXJuIHZhbHVlIGlzIGEKK2xpc3Qgb2YgdHJpcGxlcyBz cGVjaWZ5aW5nIHJlY3RhbmdsZXMgd2l0aCB0aGUgbGFyZ2VzdCByZWN0YW5nbGUKK2ZpcnN0 LiAgQ09VTlQgY2FuIGJlIGFsc28gYSBjb25zIGNlbGwgd2hvc2UgY2FyIHNwZWNpZmllcyB0 aGUKK251bWJlciBvZiByZWN0YW5nbGVzIHRvIHJldHVybiBhbmQgd2hvc2UgY2RyLCBpZiBu b24tbmlsLCBzdGF0ZXMKK3RoYXQgYWxsIHJlY3RhbmdsZXMgcmV0dXJuZWQgbXVzdCBiZSBk aXNqb2ludC4KKworTm90ZSB0aGF0IHRoZSByaWdodCBlZGdlIG9mIGFueSByZWN0YW5nbGUg cmV0dXJuZWQgYnkgdGhpcworZnVuY3Rpb24gaXMgdGhlIHJpZ2h0IGVkZ2Ugb2YgV0lORE9X ICh0aGUgbGVmdCBlZGdlIGlmIGl0cyBidWZmZXIKK2Rpc3BsYXlzIFJUTCB0ZXh0KS4KKwor T3B0aW9uYWwgYXJndW1lbnRzIE1JTi1XSURUSCBhbmQgTUlOLUhFSUdIVCwgaWYgbm9uLW5p bCwgc3BlY2lmeQordGhlIG1pbmltdW0gd2lkdGggYW5kIGhlaWdodCBvZiBhbnkgcmVjdGFu Z2xlIHJldHVybmVkLgorCitPcHRpb25hbCBhcmd1bWVudCBQT1NJVElPTlMsIGlmIG5vbi1u aWwsIGlzIGEgY29ucyBjZWxsIHdob3NlIGNhcgorc3BlY2lmaWVzIHRoZSB1cHBlcm1vc3Qg YW5kIHdob3NlIGNkciBzcGVjaWZpZXMgdGhlIGxvd2VybW9zdAorcGl4ZWwgcG9zaXRpb24g dGhhdCBtdXN0IGJlIGNvdmVyZWQgYnkgYW55IHJlY3RhbmdsZSByZXR1cm5lZC4KK05vdGUg dGhhdCBwb3NpdGlvbnMgYXJlIGNvdW50ZWQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHRleHQg YXJlYQorb2YgV0lORE9XLgorCitPcHRpb25hbCBhcmd1bWVudCBMRUZULCBpZiBub24tbmls LCBtZWFucyB0byByZXR1cm4gdmFsdWVzIHN1aXRhYmxlIGZvcgorYnVmZmVycyBkaXNwbGF5 aW5nIHJpZ2h0IHRvIGxlZnQgdGV4dC4iCisgIDs7IFByb2Nlc3MgbGluZXMgYXMgcmV0dXJu ZWQgYnkg4oCYd2luZG93LWxpbmVzLXBpeGVsLWRpbWVuc2lvbnPigJkuCisgIDs7IFNUQUNL IGlzIGEgc3RhY2sgdGhhdCBjb250YWlucyByb3dzIHRoYXQgaGF2ZSB0byBiZSBwcm9jZXNz ZWQgeWV0LgorICAobGV0KiAoKHdpbmRvdyAod2luZG93LW5vcm1hbGl6ZS13aW5kb3cgd2lu ZG93IHQpKQorCSAoZGlzam9pbnQgKGFuZCAoY29uc3AgY291bnQpIChjZHIgY291bnQpKSkK KwkgKGNvdW50IChvciAoYW5kIChudW1iZXJwIGNvdW50KSBjb3VudCkKKwkJICAgIChhbmQg KGNvbnNwIGNvdW50KSAobnVtYmVycCAoY2FyIGNvdW50KSkgKGNhciBjb3VudCkpKSkKKwkg KHJvd3MgKHdpbmRvdy1saW5lcy1waXhlbC1kaW1lbnNpb25zIHdpbmRvdyBuaWwgbmlsIHQg dCBsZWZ0KSkKKwkgKHJvd3MtYXQgMCkKKwkgKG1heC1zaXplIDApCisJIHJvdyBzdGFjayBz dGFjay1hdCBzdGFjay10bworCSB0b3AgdG9wLXdpZHRoIHRvcC1hdCB0b3AtdG8gdG9wLXNp emUKKwkgbWF4LXdpZHRoIG1heC1hdCBtYXgtdG8gbWF4aW11bXMpCisgICAgOzsgUk9XUy1B VCBpcyB0aGUgcG9zaXRpb24gd2hlcmUgdGhlIGZpcnN0IGVsZW1lbnQgb2YgUk9XUyBzdGFy dHMuCisgICAgOzsgU1RBQ0stQVQgaXMgdGhlIHBvc2l0aW9uIHdoZXJlIHRoZSBmaXJzdCBl bGVtZW50IG9mIFNUQUNLIHN0YXJ0cy4KKyAgICAod2hpbGUgcm93cworICAgICAgKHNldHEg cm93IChjYXIgcm93cykpCisgICAgICAoaWYgKG9yIChub3Qgc3RhY2spICg+PSAoY2FyIHJv dykgKGNhYXIgc3RhY2spKSkKKwkgIChwcm9nbgorCSAgICAodW5sZXNzIHN0YWNrCisJICAg ICAgKHNldHEgc3RhY2stYXQgcm93cy1hdCkpCisJICAgIChzZXRxIHN0YWNrIChjb25zIHJv dyBzdGFjaykpCisJICAgIDs7IFNldCBST1dTLUFUIHRvIHdoZXJlIHRoZSBmaXJzdCBlbGVt ZW50IG9mIFJPV1MgZW5kcworCSAgICA7OyB3aGljaCwgYWZ0ZXIgcG9wcGluZyBST1csIG1h a2VzIGl0IHRoZSBzdGFydCBwb3NpdGlvbiBvZgorCSAgICA7OyB0aGUgbmV4dCBST1cuCisJ ICAgIChzZXRxIHJvd3MtYXQgKGNkciByb3cpKQorCSAgICAoc2V0cSByb3dzIChjZHIgcm93 cykpKQorCShzZXRxIHRvcCAoY2FyIHN0YWNrKSkKKwkoc2V0cSBzdGFjayAoY2RyIHN0YWNr KSkKKwkoc2V0cSB0b3Atd2lkdGggKGNhciB0b3ApKQorCShzZXRxIHRvcC1hdCAoaWYgc3Rh Y2sgKGNkYXIgc3RhY2spIHN0YWNrLWF0KSkKKwkoc2V0cSB0b3AtdG8gKGNkciB0b3ApKQor CShzZXRxIHRvcC1zaXplICgqIHRvcC13aWR0aCAoLSB0b3AtdG8gdG9wLWF0KSkpCisJKHVu bGVzcyAob3IgKGFuZCBtaW4td2lkdGggKDwgdG9wLXdpZHRoIG1pbi13aWR0aCkpCisJCSAg ICAoYW5kIG1pbi1oZWlnaHQgKDwgKC0gdG9wLXRvIHRvcC1hdCkgbWluLWhlaWdodCkpCisJ CSAgICAoYW5kIHBvc2l0aW9ucworCQkJIChvciAoPiB0b3AtYXQgKGNhciBwb3NpdGlvbnMp KQorCQkJICAgICAoPCB0b3AtdG8gKGNkciBwb3NpdGlvbnMpKSkpKQorCSAgKGlmIGNvdW50 CisJICAgICAgKGlmIGRpc2pvaW50CisJCSAgKHNldHEgbWF4aW11bXMgKGNvbnMgKGxpc3Qg dG9wLXNpemUgdG9wLXdpZHRoIHRvcC1hdCB0b3AtdG8pCisJCQkJICAgICAgIG1heGltdW1z KSkKKwkJKHNldHEgbWF4aW11bXMgKHdpbmRvdy1sYXJnZXN0LWVtcHR5LXJlY3RhbmdsZS0t bWF4aW11bXMKKwkJCQkobGlzdCB0b3Atc2l6ZSB0b3Atd2lkdGggdG9wLWF0IHRvcC10bykK KwkJCQltYXhpbXVtcyBjb3VudCkpKQorCSAgICAod2hlbiAoPiB0b3Atc2l6ZSBtYXgtc2l6 ZSkKKwkgICAgICAoc2V0cSBtYXgtc2l6ZSB0b3Atc2l6ZSkKKwkgICAgICAoc2V0cSBtYXgt d2lkdGggdG9wLXdpZHRoKQorCSAgICAgIChzZXRxIG1heC1hdCB0b3AtYXQpCisJICAgICAg KHNldHEgbWF4LXRvIHRvcC10bykpKSkKKwkoaWYgKGFuZCBzdGFjayAoPiAoY2FhciBzdGFj aykgKGNhciByb3cpKSkKKwkgICAgOzsgSGF2ZSBuZXcgdG9wIGVsZW1lbnQgb2Ygc3RhY2sg aW5jbHVkZSBvbGQgdG9wLgorCSAgICAoc2V0cSBzdGFjayAoY29ucyAoY29ucyAoY2FhciBz dGFjaykgKGNkciB0b3ApKSAoY2RyIHN0YWNrKSkpCisJICA7OyBNb3ZlIHJvd3MtYXQgYmFj a3dhcmRzIHRvIHRvcC1hdC4KKwkgIChzZXRxIHJvd3MtYXQgdG9wLWF0KSkpKQorCisgICAg KHdoZW4gc3RhY2sKKyAgICAgIDs7IFNUQUNLLVRPIGlzIHRoZSBwb3NpdGlvbiB3aGVyZSB0 aGUgc3RhY2sgZW5kcy4KKyAgICAgIChzZXRxIHN0YWNrLXRvIChjZGFyIHN0YWNrKSkKKyAg ICAgICh3aGlsZSBzdGFjaworCShzZXRxIHRvcCAoY2FyIHN0YWNrKSkKKwkoc2V0cSBzdGFj ayAoY2RyIHN0YWNrKSkKKwkoc2V0cSB0b3Atd2lkdGggKGNhciB0b3ApKQorCShzZXRxIHRv cC1hdCAoaWYgc3RhY2sgKGNkYXIgc3RhY2spIHN0YWNrLWF0KSkKKwkoc2V0cSB0b3Atc2l6 ZSAoKiB0b3Atd2lkdGggKC0gc3RhY2stdG8gdG9wLWF0KSkpCisJKHVubGVzcyAob3IgKGFu ZCBtaW4td2lkdGggKDwgdG9wLXdpZHRoIG1pbi13aWR0aCkpCisJCSAgICAoYW5kIG1pbi1o ZWlnaHQgKDwgKC0gc3RhY2stdG8gdG9wLWF0KSBtaW4taGVpZ2h0KSkKKwkJICAgIChhbmQg cG9zaXRpb25zCisJCQkgKG9yICg+IHRvcC1hdCAoY2FyIHBvc2l0aW9ucykpCisJCQkgICAg ICg8IHN0YWNrLXRvIChjZHIgcG9zaXRpb25zKSkpKSkKKwkgIChpZiBjb3VudAorCSAgICAg IChpZiBkaXNqb2ludAorCQkgIChzZXRxIG1heGltdW1zIChjb25zIChsaXN0IHRvcC1zaXpl IHRvcC13aWR0aCB0b3AtYXQgc3RhY2stdG8pCisJCQkJICAgICAgIG1heGltdW1zKSkKKwkJ KHNldHEgbWF4aW11bXMgKHdpbmRvdy1sYXJnZXN0LWVtcHR5LXJlY3RhbmdsZS0tbWF4aW11 bXMKKwkJCQkobGlzdCB0b3Atc2l6ZSB0b3Atd2lkdGggdG9wLWF0IHN0YWNrLXRvKQorCQkJ CW1heGltdW1zIGNvdW50KSkpCisJICAgICh3aGVuICg+IHRvcC1zaXplIG1heC1zaXplKQor CSAgICAgIChzZXRxIG1heC1zaXplIHRvcC1zaXplKQorCSAgICAgIChzZXRxIG1heC13aWR0 aCB0b3Atd2lkdGgpCisJICAgICAgKHNldHEgbWF4LWF0IHRvcC1hdCkKKwkgICAgICAoc2V0 cSBtYXgtdG8gc3RhY2stdG8pKSkpKSkKKworICAgIChjb25kCisgICAgIChtYXhpbXVtcwor ICAgICAgKGlmIGRpc2pvaW50CisJICAod2luZG93LWxhcmdlc3QtZW1wdHktcmVjdGFuZ2xl LS1kaXNqb2ludC1tYXhpbXVtcyBtYXhpbXVtcyBjb3VudCkKKwltYXhpbXVtcykpCisgICAg ICgoPiBtYXgtc2l6ZSAwKQorICAgICAgKGxpc3QgbWF4LXdpZHRoIG1heC1hdCBtYXgtdG8p KSkpKQogDAogKGRlZnVuIGtpbGwtYnVmZmVyLWFuZC13aW5kb3cgKCkKICAgIktpbGwgdGhl IGN1cnJlbnQgYnVmZmVyIGFuZCBkZWxldGUgdGhlIHNlbGVjdGVkIHdpbmRvdy4iCmRpZmYg LS1naXQgYS9zcmMvZGlzcGV4dGVybi5oIGIvc3JjL2Rpc3BleHRlcm4uaAppbmRleCBkMWU0 NzE1Li44NjQ0Y2UyIDEwMDY0NAotLS0gYS9zcmMvZGlzcGV4dGVybi5oCisrKyBiL3NyYy9k aXNwZXh0ZXJuLmgKQEAgLTExMDYsNyArMTEwNiw3IEBAIHN0cnVjdCBnbHlwaF9yb3cKICNk ZWZpbmUgTUFUUklYX0JPVFRPTV9URVhUX1JPVyhNQVRSSVgsIFcpCQlcCiAgICAgICgoTUFU UklYKS0+cm93cwkJCQkJXAogICAgICAgKyAoTUFUUklYKS0+bnJvd3MJCQkJCVwKLSAgICAg IC0gKFdJTkRPV19XQU5UU19NT0RFTElORV9QICgoVykpID8gMSA6IDApKQorICAgICAgLSAo d2luZG93X3dhbnRzX21vZGVfbGluZSAoKFcpKSA/IDEgOiAwKSkKCiAvKiBOb24temVybyBp ZiB0aGUgZmFjZSBvZiB0aGUgbGFzdCBnbHlwaCBpbiBST1cncyB0ZXh0IGFyZWEgaGFzCiAg ICB0byBiZSBkcmF3biB0byB0aGUgZW5kIG9mIHRoZSB0ZXh0IGFyZWEuICAqLwpAQCAtMTQ2 OSw0MCArMTQ2OSw2IEBAIHN0cnVjdCBnbHlwaF9zdHJpbmcKICNkZWZpbmUgREVTSVJFRF9I RUFERVJfTElORV9IRUlHSFQoVykgXAogICAgICBNQVRSSVhfSEVBREVSX0xJTkVfSEVJR0hU ICgoVyktPmRlc2lyZWRfbWF0cml4KQoKLS8qIFBYVzogVGhlIGhlaWdodCBjaGVja3MgYmVs b3cgc2VydmUgdG8gc2hvdyBhdCBsZWFzdCBvbmUgdGV4dCBsaW5lCi0gICBpbnN0ZWFkIG9m IGEgbW9kZS0gYW5kL29yIGhlYWRlciBsaW5lIHdoZW4gYSB3aW5kb3cgZ2V0cyB2ZXJ5IHNt YWxsLgotICAgQnV0ICgxKSB0aGUgY2hlY2sgZmFpbHMgd2hlbiB0aGUgbW9kZS0gb3IgaGVh ZGVyLWxpbmUgaXMgdGFsbGVyIHRoYW4KLSAgIHRoZSBhc3NvY2lhdGVkIGZyYW1lJ3MgbGlu ZSBoZWlnaHQgYW5kICgyKSB3ZSBkb24ndCBjYXJlIG11Y2ggYWJvdXQKLSAgIHRleHQgdmlz aWJpbGl0eSBhbnl3YXkgd2hlbiBzaHJpbmtpbmcgYSBmcmFtZSBjb250YWluaW5nIGEgdG9v bGJhci4KLQotICAgU28gbWF5YmUgdGhlc2UgY2hlY2tzIHNob3VsZCBiZSByZW1vdmVkIGFu ZCBhbnkgY2xpcHBpbmcgbGVmdCB0byB0aGUKLSAgIHdpbmRvdyBtYW5hZ2VyLiAgKi8KLQot LyogVmFsdWUgaXMgdHJ1ZSBpZiB3aW5kb3cgVyB3YW50cyBhIG1vZGUgbGluZSBhbmQgaXMg bGFyZ2UgZW5vdWdoCi0gICB0byBhY2NvbW1vZGF0ZSBpdC4gICovCi0jZGVmaW5lIFdJTkRP V19XQU5UU19NT0RFTElORV9QKFcpCQkJCQlcCi0gIChCVUZGRVJQICgoVyktPmNvbnRlbnRz KQkJCQkJCVwKLSAgID8gKCFNSU5JX1dJTkRPV19QIChXKQkJCQkJCVwKLSAgICAgICYmICEo VyktPnBzZXVkb193aW5kb3dfcAkJCQkJCVwKLSAgICAgICYmIEZSQU1FX1dBTlRTX01PREVM SU5FX1AgKFhGUkFNRSAoV0lORE9XX0ZSQU1FIChXKSkpCQlcCi0gICAgICAmJiAhTklMUCAo QlZBUiAoWEJVRkZFUiAoKFcpLT5jb250ZW50cyksIG1vZGVfbGluZV9mb3JtYXQpKQlcCi0g ICAgICAmJiBXSU5ET1dfUElYRUxfSEVJR0hUIChXKSA+IFdJTkRPV19GUkFNRV9MSU5FX0hF SUdIVCAoVykpCVwKLSAgIDogZmFsc2UpCi0KLS8qIFZhbHVlIGlzIHRydWUgaWYgd2luZG93 IFcgd2FudHMgYSBoZWFkZXIgbGluZSBhbmQgaXMgbGFyZ2UgZW5vdWdoCi0gICB0byBhY2Nv bW1vZGF0ZSBpdC4gICovCi0jZGVmaW5lIFdJTkRPV19XQU5UU19IRUFERVJfTElORV9QKFcp CQkJCQlcCi0gICAgIChCVUZGRVJQICgoVyktPmNvbnRlbnRzKQkJCQkJCVwKLSAgICAgID8g KCFNSU5JX1dJTkRPV19QIChXKQkJCQkJCVwKLQkgJiYgIShXKS0+cHNldWRvX3dpbmRvd19w CQkJCQlcCi0JICYmIEZSQU1FX1dBTlRTX01PREVMSU5FX1AgKFhGUkFNRSAoV0lORE9XX0ZS QU1FIChXKSkpCQlcCi0JICYmICFOSUxQIChCVkFSIChYQlVGRkVSICgoVyktPmNvbnRlbnRz KSwgaGVhZGVyX2xpbmVfZm9ybWF0KSkJXAotCSAmJiAoV0lORE9XX1BJWEVMX0hFSUdIVCAo VykJCQkJCVwKLQkgICAgID4gKFdJTkRPV19XQU5UU19NT0RFTElORV9QIChXKQkJCQlcCi0J CT8gKDIgKiBXSU5ET1dfRlJBTUVfTElORV9IRUlHSFQgKFcpKQkJCVwKLQkJOiBXSU5ET1df RlJBTUVfTElORV9IRUlHSFQgKFcpKSkpCQkJXAotICAgICAgOiBmYWxzZSkKLQogLyogUmV0 dXJuIHByb3BlciB2YWx1ZSB0byBiZSB1c2VkIGFzIGJhc2VsaW5lIG9mZnNldCBvZiBmb250 IHRoYXQgaGFzCiAgICBBU0NFTlQgYW5kIERFU0NFTlQgdG8gZHJhdyBjaGFyYWN0ZXJzIGJ5 IHRoZSBmb250IGF0IHRoZSB2ZXJ0aWNhbAogICAgY2VudGVyIG9mIHRoZSBsaW5lIG9mIGZy YW1lIEYuCmRpZmYgLS1naXQgYS9zcmMvZGlzcG5ldy5jIGIvc3JjL2Rpc3BuZXcuYwppbmRl eCAyN2M2OWJkLi4wYzE5MThmIDEwMDY0NAotLS0gYS9zcmMvZGlzcG5ldy5jCisrKyBiL3Ny Yy9kaXNwbmV3LmMKQEAgLTM3Nyw3ICszNzcsNyBAQCBzdHJ1Y3QgcmVkaXNwbGF5X2hpc3Rv cnkKICAgICB7CiAgICAgICB3aW5kb3dfYm94ICh3LCBBTllfQVJFQSwgMCwgMCwgJndpbmRv d193aWR0aCwgJndpbmRvd19oZWlnaHQpOwoKLSAgICAgIGhlYWRlcl9saW5lX3AgPSBXSU5E T1dfV0FOVFNfSEVBREVSX0xJTkVfUCAodyk7CisgICAgICBoZWFkZXJfbGluZV9wID0gd2lu ZG93X3dhbnRzX2hlYWRlcl9saW5lICh3KTsKICAgICAgIGhlYWRlcl9saW5lX2NoYW5nZWRf cCA9IGhlYWRlcl9saW5lX3AgIT0gbWF0cml4LT5oZWFkZXJfbGluZV9wOwogICAgIH0KICAg bWF0cml4LT5oZWFkZXJfbGluZV9wID0gaGVhZGVyX2xpbmVfcDsKQEAgLTQ0Niw3ICs0NDYs NyBAQCBzdHJ1Y3QgcmVkaXNwbGF5X2hpc3RvcnkKCiAJICBpZiAodyA9PSBOVUxMCiAJICAg ICAgfHwgKHJvdyA9PSBtYXRyaXgtPnJvd3MgKyBkaW0uaGVpZ2h0IC0gMQotCQkgICYmIFdJ TkRPV19XQU5UU19NT0RFTElORV9QICh3KSkKKwkJICAmJiB3aW5kb3dfd2FudHNfbW9kZV9s aW5lICh3KSkKIAkgICAgICB8fCAocm93ID09IG1hdHJpeC0+cm93cyAmJiBtYXRyaXgtPmhl YWRlcl9saW5lX3ApKQogCSAgICB7CiAJICAgICAgcm93LT5nbHlwaHNbVEVYVF9BUkVBXQpA QCAtNDkxLDcgKzQ5MSw3IEBAIHN0cnVjdCByZWRpc3BsYXlfaGlzdG9yeQoKIAkgICAgICAv KiBUaGUgbW9kZSBsaW5lLCBpZiBkaXNwbGF5ZWQsIG5ldmVyIGhhcyBtYXJnaW5hbCBhcmVh cy4gICovCiAJICAgICAgaWYgKChyb3cgPT0gbWF0cml4LT5yb3dzICsgZGltLmhlaWdodCAt IDEKLQkJICAgJiYgISh3ICYmIFdJTkRPV19XQU5UU19NT0RFTElORV9QICh3KSkpCisJCSAg ICYmICEodyAmJiB3aW5kb3dfd2FudHNfbW9kZV9saW5lICh3KSkpCiAJCSAgfHwgKHJvdyA9 PSBtYXRyaXgtPnJvd3MgJiYgbWF0cml4LT5oZWFkZXJfbGluZV9wKSkKIAkJewogCQkgIHJv dy0+Z2x5cGhzW1RFWFRfQVJFQV0KQEAgLTU3MCw3ICs1NzAsNyBAQCBzdHJ1Y3QgcmVkaXNw bGF5X2hpc3RvcnkKIAkgICAgIHRoZSBtb2RlIGxpbmUsIGlmIGFueSwgc2luY2Ugb3RoZXJ3 aXNlIGl0IHdpbGwgcmVtYWluCiAJICAgICBkaXNhYmxlZCBpbiB0aGUgY3VycmVudCBtYXRy aXgsIGFuZCBleHBvc2UgZXZlbnRzIHdvbid0CiAJICAgICByZWRyYXcgaXQuICAqLwotCSAg aWYgKFdJTkRPV19XQU5UU19NT0RFTElORV9QICh3KSkKKwkgIGlmICh3aW5kb3dfd2FudHNf bW9kZV9saW5lICh3KSkKIAkgICAgdy0+dXBkYXRlX21vZGVfbGluZSA9IDE7CiAJfQogICAg ICAgZWxzZSBpZiAobWF0cml4ID09IHctPmRlc2lyZWRfbWF0cml4KQpAQCAtNTE4OCw3ICs1 MTg4LDcgQEAgc3RydWN0IHJvd19lbnRyeQogICAgICBzdGFydCBwb3NpdGlvbiwgaS5lLiBp dCBleGNsdWRlcyB0aGUgaGVhZGVyLWxpbmUgcm93LCBidXQKICAgICAgTUFUUklYX1JPVyBp bmNsdWRlcyB0aGUgaGVhZGVyLWxpbmUgcm93LiAgQWRqdXN0IGZvciBhIHBvc3NpYmxlCiAg ICAgIGhlYWRlci1saW5lIHJvdy4gICovCi0gIGl0X3Zwb3MgPSBpdC52cG9zICsgV0lORE9X X1dBTlRTX0hFQURFUl9MSU5FX1AgKHcpOworICBpdF92cG9zID0gaXQudnBvcyArIHdpbmRv d193YW50c19oZWFkZXJfbGluZSAodyk7CiAgIGlmIChpdF92cG9zIDwgdy0+Y3VycmVudF9t YXRyaXgtPm5yb3dzCiAgICAgICAmJiAocm93ID0gTUFUUklYX1JPVyAody0+Y3VycmVudF9t YXRyaXgsIGl0X3Zwb3MpLAogCSAgcm93LT5lbmFibGVkX3ApKQpkaWZmIC0tZ2l0IGEvc3Jj L2ZyYW1lLmMgYi9zcmMvZnJhbWUuYwppbmRleCA0ZDE3YTA3Li42NTNlNDRmIDEwMDY0NAot LS0gYS9zcmMvZnJhbWUuYworKysgYi9zcmMvZnJhbWUuYwpAQCAtMzI4LDggKzMyOCw4IEBA IHN0cnVjdCBmcmFtZSAqCiAgKiBmcmFtZV93aW5kb3dzX21pbl9zaXplOgogICoKICAqIFJl dHVybiB0aGUgbWluaW11bSBudW1iZXIgb2YgbGluZXMgKGNvbHVtbnMgaWYgSE9SSVpPTlRB TCBpcyBub24tbmlsKQotICogb2YgRlJBTUUuICBJZiBQSVhFTFdJU0UgaXMgbm9uLW5pbCwg cmV0dXJuIHRoZSBtaW5pbXVtIGhlaWdodCAod2lkdGgpCi0gKiBpbiBwaXhlbHMuCisgKiBv ZiBGUkFNRS4gIElmIFBJWEVMV0lTRSBpcyBub24tbmlsLCByZXR1cm4gdGhlIG1pbmltdW0g aW5uZXIgaGVpZ2h0CisgKiAod2lkdGgpIG9mIEZSQU1FIGluIHBpeGVscy4KICAqCiAgKiBU aGlzIHZhbHVlIGlzIGNhbGN1bGF0ZWQgYnkgdGhlIGZ1bmN0aW9uIGBmcmFtZS13aW5kb3dz LW1pbi1zaXplJyBpbgogICogd2luZG93LmVsIHVubGVzcyB0aGUgYG1pbi1oZWlnaHQnIChg bWluLXdpZHRoJyBpZiBIT1JJWk9OVEFMIGlzCkBAIC0zNDEsNyArMzQxLDcgQEAgc3RydWN0 IGZyYW1lICoKICAqIG9mIGB3aW5kb3ctbWluLWhlaWdodCcgKGB3aW5kb3ctbWluLXdpZHRo JyBpZiBIT1JJWk9OVEFMIGlzIG5vbi1uaWwpLgogICogV2l0aCBJR05PUkUgbm9uLW5pbCB0 aGUgdmFsdWVzIG9mIHRoZXNlIHZhcmlhYmxlcyBhcmUgaWdub3JlZC4KICAqCi0gKiBJbiBl aXRoZXIgY2FzZSBuZXZlciByZXR1cm4gYSB2YWx1ZSBsZXNzIHRoYW4gMS4KKyAqIEluIGVp dGhlciBjYXNlLCBuZXZlciByZXR1cm4gYSB2YWx1ZSBsZXNzIHRoYW4gMS4KICAqLwogc3Rh dGljIGludAogZnJhbWVfd2luZG93c19taW5fc2l6ZSAoTGlzcF9PYmplY3QgZnJhbWUsIExp c3BfT2JqZWN0IGhvcml6b250YWwsCkBAIC0zNzMsNDYgKzM3MywxNzkgQEAgc3RydWN0IGZy YW1lICoKIH0KCgotLyogTWFrZSBzdXJlIHdpbmRvd3Mgc2l6ZXMgb2YgZnJhbWUgRiBhcmUg T0suICBuZXdfd2lkdGggYW5kIG5ld19oZWlnaHQKLSAgIGFyZSBpbiBwaXhlbHMuICBBIHZh bHVlIG9mIC0xIG1lYW5zIG5vIGNoYW5nZSBpcyByZXF1ZXN0ZWQgZm9yIHRoYXQKLSAgIHNp emUgKGJ1dCB0aGUgZnJhbWUgbWF5IHN0aWxsIGhhdmUgdG8gYmUgcmVzaXplZCB0byBhY2Nv bW1vZGF0ZQotICAgd2luZG93cyB3aXRoIHRoZWlyIG1pbmltdW0gc2l6ZXMpLiAgVGhpcyBj YW4gZWl0aGVyIGlzc3VlIGEgcmVxdWVzdAotICAgdG8gcmVzaXplIHRoZSBmcmFtZSBleHRl cm5hbGx5ICh2aWEgeF9zZXRfd2luZG93X3NpemUpLCB0byByZXNpemUgdGhlCi0gICBmcmFt ZSBpbnRlcm5hbGx5ICh2aWEgcmVzaXplX2ZyYW1lX3dpbmRvd3MpIG9yIGRvIG5vdGhpbmcg YXQgYWxsLgorI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQorLyoqCisgKiBrZWVwX3JhdGlv OgorICoKKyAqIFByZXNlcnZlIHJhdGlvcyBvZiBmcmFtZSBGIHdoaWNoIHVzdWFsbHkgaGFw cGVucyBhZnRlciBpdHMgcGFyZW50CisgKiBmcmFtZSBnb3QgcmVzaXplZC4gIE9MRF9XSURU SCwgT0xEX0hFSUdIVCBzcGVjaWZpZXMgdGhlIG9sZCBuYXRpdmUKKyAqIHNpemUgb2YgRidz IHBhcmVudCwgTkVXX1dJRFRIIGFuZCBORVdfSEVJR0hUIGl0cyBuZXcgc2l6ZS4KKyAqCisg KiBBZGp1c3QgRidzIHdpZHRoIGlmIEYncyAna2VlcF9yYXRpbycgcGFyYW1ldGVyIGlzIG5v bi1uaWwgYW5kLCBpZgorICogaXQgaXMgYSBjb25zLCBpdHMgY2FyIGlzIG5vdCAnaGVpZ2h0 LW9ubHknLiAgQWRqdXN0IEYncyBoZWlnaHQgaWYgRidzCisgKiAna2VlcF9yYXRpbycgcGFy YW1ldGVyIGlzIG5vbi1uaWwgYW5kLCBpZiBpdCBpcyBhIGNvbnMsIGl0cyBjYXIKKyAqIGlz IG5vdCAnd2lkdGgtb25seScuCisgKgorICogQWRqdXN0IEYncyBsZWZ0IHBvc2l0aW9uIGlm IEYncyAna2VlcF9yYXRpbycgcGFyYW1ldGVyIGlzIG5vbi1uaWwKKyAqIGFuZCwgaWYgaXRz IGlzIGEgY29ucywgaXRzIGNkciBpcyBub24tbmlsIGFuZCBub3QgJ3RvcC1vbmx5Jy4gIEFk anVzdAorICogRidzIHRvcCBwb3NpdGlvbiBpZiBGJ3MgJ2tlZXBfcmF0aW8nIHBhcmFtZXRl ciBpcyBub24tbmlsIGFuZCwgaWYKKyAqIGl0cyBpcyBhIGNvbnMsIGl0cyBjZHIgaXMgbm9u LW5pbCBhbmQgbm90ICdsZWZ0LW9ubHknLgorICoKKyAqIE5vdGUgdGhhdCB3aGVuIHBvc2l0 aW9uYWwgYWRqdXN0bWVudCBpcyByZXF1ZXN0ZWQgYnV0IHRoZSBzaXplIG9mIEYKKyAqIHNo b3VsZCByZW1haW4gdW5hbHRlcmVkIGluIHRoZSBjb3JyZXNwb25kaW5nIGRpcmVjdGlvbiwg dGhpcyByb3V0aW5lCisgKiB0cmllcyB0byBjb25zdHJhaW4gRiB0byBpdHMgcGFyZW50IGZy YW1lIC0gc29tZXRoaW5nIHdoaWNoIHVzdWFsbHkKKyAqIGhhcHBlbnMgd2hlbiB0aGUgcGFy ZW50IGZyYW1lIHNocmlua3MuICBUaGlzIG1lYW5zLCBob3dldmVyLCB0aGF0CisgKiB3aGVu IHRoZSBwYXJlbnQgZnJhbWUgaXMgcmUtZW5sYXJnZWQgbGF0ZXIsIHRoZSBjaGlsZCdzIG9y aWdpbmFsCisgKiBwb3NpdGlvbiB3aWxsIG5vdCBnZXQgcmVzdG9yZWQgdG8gaXRzIHByZS1z aHJpbmtpbmcgdmFsdWUuCisgKgorICogVGhpcyByb3V0aW5lIGlzIGN1cnJlbnRseSB1c2Vm dWwgZm9yIGNoaWxkIGZyYW1lcyBvbmx5LiAgSXQgbWlnaHQgYmUKKyAqIGV2ZW50dWFsbHkg dXNlZnVsIHdoZW4gbW92aW5nIG5vbi1jaGlsZCBmcmFtZXMgYmV0d2VlbiBtb25pdG9ycyB3 aXRoCisgKiBkaWZmZXJlbnQgcmVzb2x1dGlvbnMuCisgKi8KK3N0YXRpYyB2b2lkCitrZWVw X3JhdGlvIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBvbGRfd2lkdGgsIGludCBvbGRfaGVpZ2h0 LAorCQkgICAgaW50IG5ld193aWR0aCwgaW50IG5ld19oZWlnaHQpCit7CisgIExpc3BfT2Jq ZWN0IGtlZXBfcmF0aW8gPSBnZXRfZnJhbWVfcGFyYW0gKGYsIFFrZWVwX3JhdGlvKTsKCi0g ICBUaGUgYXJndW1lbnQgSU5ISUJJVCBjYW4gYXNzdW1lIHRoZSBmb2xsb3dpbmcgdmFsdWVz OgoKLSAgIDAgbWVhbnMgdG8gdW5jb25kaXRpb25hbGx5IGNhbGwgeF9zZXRfd2luZG93X3Np emUgZXZlbiBpZiBzaXplcwotICAgICBhcHBhcmVudGx5IGRvIG5vdCBjaGFuZ2UuICBGeF9j cmVhdGVfZnJhbWUgdXNlcyB0aGlzIHRvIHBhc3MgdGhlCi0gICAgIGluaXRpYWwgc2l6ZSB0 byB0aGUgd2luZG93IG1hbmFnZXIuCisgIGlmICghTklMUCAoa2VlcF9yYXRpbykpCisgICAg eworICAgICAgZG91YmxlIHdpZHRoX2ZhY3RvciA9IChkb3VibGUpbmV3X3dpZHRoIC8gKGRv dWJsZSlvbGRfd2lkdGg7CisgICAgICBkb3VibGUgaGVpZ2h0X2ZhY3RvciA9IChkb3VibGUp bmV3X2hlaWdodCAvIChkb3VibGUpb2xkX2hlaWdodDsKKyAgICAgIGludCBwaXhlbF93aWR0 aCwgcGl4ZWxfaGVpZ2h0LCBwb3NfeCwgcG9zX3k7CgotICAgMSBtZWFucyB0byBjYWxsIHhf c2V0X3dpbmRvd19zaXplIGlmIHRoZSBvdXRlciBmcmFtZSBzaXplIHJlYWxseQotICAgICBj aGFuZ2VzLiAgRnNldF9mcmFtZV9zaXplLCBGc2V0X2ZyYW1lX2hlaWdodCwgLi4uIHVzZSB0 aGlzLgorICAgICAgaWYgKCFDT05TUCAoa2VlcF9yYXRpbykgfHwgIU5JTFAgKEZjZHIgKGtl ZXBfcmF0aW8pKSkKKwl7CisJICBpZiAoQ09OU1AgKGtlZXBfcmF0aW8pICYmIEVRIChGY2Ry IChrZWVwX3JhdGlvKSwgUXRvcF9vbmx5KSkKKwkgICAgcG9zX3ggPSBmLT5sZWZ0X3BvczsK KwkgIGVsc2UKKwkgICAgeworCSAgICAgIHBvc194ID0gKGludCkoZi0+bGVmdF9wb3MgKiB3 aWR0aF9mYWN0b3IgKyAwLjUpOwoKLSAgIDIgbWVhbnMgdG8gY2FsbCB4X3NldF93aW5kb3df c2l6ZSBwcm92aWRlZCBmcmFtZV9pbmhpYml0X3Jlc2l6ZQotICAgICBhbGxvd3MgaXQuICBU aGUgbWVudSBhbmQgdG9vbCBiYXIgY29kZSB1c2UgdGhpcyAoIjMiIHdvbid0IHdvcmsKLSAg ICAgaGVyZSBpbiBnZW5lcmFsIGJlY2F1c2UgbWVudSBhbmQgdG9vbCBiYXIgYXJlIG9mdGVu IG5vdCBjb3VudGVkIGluCi0gICAgIHRoZSBmcmFtZSdzIHRleHQgaGVpZ2h0KS4KKwkgICAg ICBpZiAoQ09OU1AgKGtlZXBfcmF0aW8pICYmCisJCSAgKE5JTFAgKEZjYXIgKGtlZXBfcmF0 aW8pKSB8fCBFUSAoRmNhciAoa2VlcF9yYXRpbyksIFFoZWlnaHRfb25seSkpKQorCQl7CisJ CSAgc3RydWN0IGZyYW1lICpwID0gRlJBTUVfUEFSRU5UX0ZSQU1FIChmKTsKCi0gICAzIG1l YW5zIGNhbGwgeF9zZXRfd2luZG93X3NpemUgaWYgd2luZG93IG1pbmltdW0gc2l6ZXMgbXVz dCBiZQotICAgICBwcmVzZXJ2ZWQgb3IgZnJhbWVfaW5oaWJpdF9yZXNpemUgYWxsb3dzIGl0 LiAgeF9zZXRfbGVmdF9mcmluZ2UsCi0gICAgIHhfc2V0X3Njcm9sbF9iYXJfd2lkdGgsIHhf bmV3X2ZvbnQgLi4uIHVzZSAob3Igc2hvdWxkIHVzZSkgdGhpcy4KKwkJICBpZiAocG9zX3gg KyBmLT5waXhlbF93aWR0aCA+IHAtPnBpeGVsX3dpZHRoKQorCQkgICAgeworCQkgICAgICBp bnQgcF9mX3dpZHRoID0gcC0+cGl4ZWxfd2lkdGggLSBmLT5waXhlbF93aWR0aDsKCi0gICA0 IG1lYW5zIGNhbGwgeF9zZXRfd2luZG93X3NpemUgb25seSBpZiB3aW5kb3cgbWluaW11bSBz aXplcyBtdXN0IGJlCi0gICAgIHByZXNlcnZlZC4gIHhfc2V0X3JpZ2h0X2RpdmlkZXJfd2lk dGgsIHhfc2V0X2JvcmRlcl93aWR0aCBhbmQgdGhlCi0gICAgIGNvZGUgcmVzcG9uc2libGUg Zm9yIHdyYXBwaW5nIHRoZSB0b29sIGJhciB1c2UgdGhpcy4KKwkJICAgICAgaWYgKHBfZl93 aWR0aCA8PSAwKQorCQkJcG9zX3ggPSAwOworCQkgICAgICBlbHNlCisJCQlwb3NfeCA9IChp bnQpKHBfZl93aWR0aCAqIHdpZHRoX2ZhY3RvciAqIDAuNSArIDAuNSk7CisJCSAgICB9CisJ CX0KKworCSAgICAgIGYtPmxlZnRfcG9zID0gcG9zX3g7CisJICAgIH0KKworCSAgaWYgKENP TlNQIChrZWVwX3JhdGlvKSAmJiBFUSAoRmNkciAoa2VlcF9yYXRpbyksIFFsZWZ0X29ubHkp KQorCSAgICBwb3NfeSA9IGYtPnRvcF9wb3M7CisJICBlbHNlCisJICAgIHsKKwkgICAgICBw b3NfeSA9IChpbnQpKGYtPnRvcF9wb3MgKiBoZWlnaHRfZmFjdG9yICsgMC41KTsKKworCSAg ICAgIGlmIChDT05TUCAoa2VlcF9yYXRpbykgJiYKKwkJICAoTklMUCAoRmNhciAoa2VlcF9y YXRpbykpIHx8IEVRIChGY2FyIChrZWVwX3JhdGlvKSwgUXdpZHRoX29ubHkpKSkKKwkJLyog V2hlbiBwb3NpdGlvbmFsIGFkanVzdG1lbnQgd2FzIHJlcXVlc3RlZCBhbmQgdGhlCisJCSAg IHdpZHRoIG9mIEYgc2hvdWxkIHJlbWFpbiB1bmFsdGVyZWQsIHRyeSB0byBjb25zdHJhaW4K KwkJICAgRiB0byBpdHMgcGFyZW50LiAgVGhpcyBtZWFucyB0aGF0IHdoZW4gdGhlIHBhcmVu dAorCQkgICBmcmFtZSBpcyBlbmxhcmdlZCBsYXRlciB0aGUgY2hpbGQncyBvcmlnaW5hbCBw b3NpdGlvbgorCQkgICB3b24ndCBnZXQgcmVzdG9yZWQuICAqLworCQl7CisJCSAgc3RydWN0 IGZyYW1lICpwID0gRlJBTUVfUEFSRU5UX0ZSQU1FIChmKTsKKworCQkgIGlmIChwb3NfeSAr IGYtPnBpeGVsX2hlaWdodCA+IHAtPnBpeGVsX2hlaWdodCkKKwkJICAgIHsKKwkJICAgICAg aW50IHBfZl9oZWlnaHQgPSBwLT5waXhlbF9oZWlnaHQgLSBmLT5waXhlbF9oZWlnaHQ7CisK KwkJICAgICAgaWYgKHBfZl9oZWlnaHQgPD0gMCkKKwkJCXBvc195ID0gMDsKKwkJICAgICAg ZWxzZQorCQkJcG9zX3kgPSAoaW50KShwX2ZfaGVpZ2h0ICogaGVpZ2h0X2ZhY3RvciAqIDAu NSArIDAuNSk7CisJCSAgICB9CisJCX0KCi0gICA1IG1lYW5zIHRvIG5ldmVyIGNhbGwgeF9z ZXRfd2luZG93X3NpemUuICBjaGFuZ2VfZnJhbWVfc2l6ZSB1c2VzCi0gICAgIHRoaXMuCisJ ICAgICAgZi0+dG9wX3BvcyA9IHBvc195OworCSAgICB9CgotICAgTm90ZSB0aGF0IGV2ZW4g d2hlbiB4X3NldF93aW5kb3dfc2l6ZSBpcyBub3QgY2FsbGVkLCBpbmRpdmlkdWFsCi0gICB3 aW5kb3dzIG1heSBoYXZlIHRvIGJlIHJlc2l6ZWQgKHZpYSBgd2luZG93LS1zYW5pdGl6ZS13 aW5kb3ctc2l6ZXMnKQotICAgaW4gb3JkZXIgdG8gc3VwcG9ydCBtaW5pbXVtIHNpemUgY29u c3RyYWludHMuCisJICB4X3NldF9vZmZzZXQgKGYsIHBvc194LCBwb3NfeSwgLTEpOworCX0K Ci0gICBQUkVURU5EIGlzIGFzIGZvciBjaGFuZ2VfZnJhbWVfc2l6ZS4gIFBBUkFNRVRFUiwg aWYgbm9uLW5pbCwgaXMgdGhlCi0gICBzeW1ib2wgb2YgdGhlIHBhcmFtZXRlciBjaGFuZ2Vk IChsaWtlIGBtZW51LWJhci1saW5lcycsIGBmb250JywgLi4uKS4KLSAgIFRoaXMgaXMgcGFz c2VkIG9uIHRvIGZyYW1lX2luaGliaXRfcmVzaXplIHRvIGxldCB0aGUgbGF0dGVyIGRlY2lk ZSBvbgotICAgYSBjYXNlLWJ5LWNhc2UgYmFzaXMgd2hldGhlciB0aGUgZnJhbWUgbWF5IGJl IHJlc2l6ZWQgZXh0ZXJuYWxseS4gICovCisgICAgICBpZiAoIUNPTlNQIChrZWVwX3JhdGlv KSB8fCAhTklMUCAoRmNhciAoa2VlcF9yYXRpbykpKQorCXsKKwkgIGlmIChDT05TUCAoa2Vl cF9yYXRpbykgJiYgRVEgKEZjYXIgKGtlZXBfcmF0aW8pLCBRaGVpZ2h0X29ubHkpKQorCSAg ICBwaXhlbF93aWR0aCA9IC0xOworCSAgZWxzZQorCSAgICB7CisJICAgICAgcGl4ZWxfd2lk dGggPSAoaW50KShmLT5waXhlbF93aWR0aCAqIHdpZHRoX2ZhY3RvciArIDAuNSk7CisJICAg ICAgcGl4ZWxfd2lkdGggPSBGUkFNRV9QSVhFTF9UT19URVhUX1dJRFRIIChmLCBwaXhlbF93 aWR0aCk7CisJICAgIH0KKworCSAgaWYgKENPTlNQIChrZWVwX3JhdGlvKSAmJiBFUSAoRmNh ciAoa2VlcF9yYXRpbyksIFF3aWR0aF9vbmx5KSkKKwkgICAgcGl4ZWxfaGVpZ2h0ID0gLTE7 CisJICBlbHNlCisJICAgIHsKKwkgICAgICBwaXhlbF9oZWlnaHQgPSAoaW50KShmLT5waXhl bF9oZWlnaHQgKiBoZWlnaHRfZmFjdG9yICsgMC41KTsKKwkgICAgICBwaXhlbF9oZWlnaHQg PSBGUkFNRV9QSVhFTF9UT19URVhUX0hFSUdIVCAoZiwgcGl4ZWxfaGVpZ2h0KTsKKwkgICAg fQorCisJICBhZGp1c3RfZnJhbWVfc2l6ZSAoZiwgcGl4ZWxfd2lkdGgsIHBpeGVsX2hlaWdo dCwgMSwgMCwKKwkJCSAgICAgUWtlZXBfcmF0aW8pOworCX0KKyAgICB9Cit9CisjZW5kaWYK KworCisvKioKKyAqIGFkanVzdF9mcmFtZV9zaXplOgorICoKKyAqIEFkanVzdCBzaXplIG9m IGZyYW1lIEYuICBORVdfV0lEVEggYW5kIE5FV19IRUlHSFQgc3BlY2lmeSB0aGUgbmV3Cisg KiB0ZXh0IHNpemUgb2YgRiBpbiBwaXhlbHMuICBBIHZhbHVlIG9mIC0xIG1lYW5zIG5vIGNo YW5nZSBpcyByZXF1ZXN0ZWQKKyAqIGZvciB0aGF0IGRpcmVjdGlvbiAoYnV0IHRoZSBmcmFt ZSBtYXkgc3RpbGwgaGF2ZSB0byBiZSByZXNpemVkIHRvCisgKiBhY2NvbW1vZGF0ZSB3aW5k b3dzIHdpdGggdGhlaXIgbWluaW11bSBzaXplcykuICBUaGlzIGNhbiBlaXRoZXIgaXNzdWUK KyAqIGEgcmVxdWVzdCB0byByZXNpemUgdGhlIGZyYW1lIGV4dGVybmFsbHkgKHZpYSB4X3Nl dF93aW5kb3dfc2l6ZSksIHRvCisgKiByZXNpemUgdGhlIGZyYW1lIGludGVybmFsbHkgKHZp YSByZXNpemVfZnJhbWVfd2luZG93cykgb3IgZG8gbm90aGluZworICogYXQgYWxsLgorICoK KyAqIFRoZSBhcmd1bWVudCBJTkhJQklUIGNhbiBhc3N1bWUgdGhlIGZvbGxvd2luZyB2YWx1 ZXM6CisgKgorICogMCBtZWFucyB0byB1bmNvbmRpdGlvbmFsbHkgY2FsbCB4X3NldF93aW5k b3dfc2l6ZSBldmVuIGlmIHNpemVzCisgKiAgIGFwcGFyZW50bHkgZG8gbm90IGNoYW5nZS4g IEZ4X2NyZWF0ZV9mcmFtZSB1c2VzIHRoaXMgdG8gcGFzcyB0aGUKKyAqICAgaW5pdGlhbCBz aXplIHRvIHRoZSB3aW5kb3cgbWFuYWdlci4KKyAqCisgKiAxIG1lYW5zIHRvIGNhbGwgeF9z ZXRfd2luZG93X3NpemUgaWYgdGhlIG5hdGl2ZSBmcmFtZSBzaXplIHJlYWxseQorICogICBj aGFuZ2VzLiAgRnNldF9mcmFtZV9zaXplLCBGc2V0X2ZyYW1lX2hlaWdodCwgLi4uIHVzZSB0 aGlzLgorICoKKyAqIDIgbWVhbnMgdG8gY2FsbCB4X3NldF93aW5kb3dfc2l6ZSBwcm92aWRl ZCBmcmFtZV9pbmhpYml0X3Jlc2l6ZQorICogICBhbGxvd3MgaXQuICBUaGUgbWVudSBhbmQg dG9vbCBiYXIgY29kZSB1c2UgdGhpcyAoIjMiIHdvbid0IHdvcmsKKyAqICAgaGVyZSBpbiBn ZW5lcmFsIGJlY2F1c2UgbWVudSBhbmQgdG9vbCBiYXIgYXJlIG9mdGVuIG5vdCBjb3VudGVk IGluCisgKiAgIHRoZSBmcmFtZSdzIHRleHQgaGVpZ2h0KS4KKyAqCisgKiAzIG1lYW5zIGNh bGwgeF9zZXRfd2luZG93X3NpemUgaWYgd2luZG93IG1pbmltdW0gc2l6ZXMgbXVzdCBiZQor ICogICBwcmVzZXJ2ZWQgb3IgZnJhbWVfaW5oaWJpdF9yZXNpemUgYWxsb3dzIGl0LiAgeF9z ZXRfbGVmdF9mcmluZ2UsCisgKiAgIHhfc2V0X3Njcm9sbF9iYXJfd2lkdGgsIHhfbmV3X2Zv bnQgLi4uIHVzZSAob3Igc2hvdWxkIHVzZSkgdGhpcy4KKyAqCisgKiA0IG1lYW5zIGNhbGwg eF9zZXRfd2luZG93X3NpemUgb25seSBpZiB3aW5kb3cgbWluaW11bSBzaXplcyBtdXN0IGJl CisgKiAgIHByZXNlcnZlZC4gIHhfc2V0X3JpZ2h0X2RpdmlkZXJfd2lkdGgsIHhfc2V0X2Jv cmRlcl93aWR0aCBhbmQgdGhlCisgKiAgIGNvZGUgcmVzcG9uc2libGUgZm9yIHdyYXBwaW5n IHRoZSB0b29sIGJhciB1c2UgdGhpcy4KKyAqCisgKiA1IG1lYW5zIHRvIG5ldmVyIGNhbGwg eF9zZXRfd2luZG93X3NpemUuICBjaGFuZ2VfZnJhbWVfc2l6ZSB1c2VzCisgKiAgIHRoaXMu CisgKgorICogTm90ZSB0aGF0IGV2ZW4gd2hlbiB4X3NldF93aW5kb3dfc2l6ZSBpcyBub3Qg Y2FsbGVkLCBpbmRpdmlkdWFsCisgKiB3aW5kb3dzIG1heSBoYXZlIHRvIGJlIHJlc2l6ZWQg KHZpYSBgd2luZG93LS1zYW5pdGl6ZS13aW5kb3ctc2l6ZXMnKQorICogaW4gb3JkZXIgdG8g c3VwcG9ydCBtaW5pbXVtIHNpemUgY29uc3RyYWludHMuCisgKgorICogUFJFVEVORCBpcyBh cyBmb3IgY2hhbmdlX2ZyYW1lX3NpemUuICBQQVJBTUVURVIsIGlmIG5vbi1uaWwsIGlzIHRo ZQorICogc3ltYm9sIG9mIHRoZSBwYXJhbWV0ZXIgY2hhbmdlZCAobGlrZSBgbWVudS1iYXIt bGluZXMnLCBgZm9udCcsIC4uLikuCisgKiBUaGlzIGlzIHBhc3NlZCBvbiB0byBmcmFtZV9p bmhpYml0X3Jlc2l6ZSB0byBsZXQgdGhlIGxhdHRlciBkZWNpZGUgb24KKyAqIGEgY2FzZS1i eS1jYXNlIGJhc2lzIHdoZXRoZXIgdGhlIGZyYW1lIG1heSBiZSByZXNpemVkIGV4dGVybmFs bHkuCisgKi8KIHZvaWQKIGFkanVzdF9mcmFtZV9zaXplIChzdHJ1Y3QgZnJhbWUgKmYsIGlu dCBuZXdfd2lkdGgsIGludCBuZXdfaGVpZ2h0LCBpbnQgaW5oaWJpdCwKIAkJICAgYm9vbCBw cmV0ZW5kLCBMaXNwX09iamVjdCBwYXJhbWV0ZXIpCkBAIC02MzYsNiArNzY5LDE4IEBAIHN0 cnVjdCBmcmFtZSAqCiAJCSAgfHwgbmV3X3BpeGVsX2hlaWdodCAhPSBvbGRfcGl4ZWxfaGVp Z2h0KTsKCiAgIHVuYmxvY2tfaW5wdXQgKCk7CisKKyNpZmRlZiBIQVZFX1dJTkRPV19TWVNU RU0KKyAgeworICAgIC8qIEFkanVzdCBzaXplIG9mIEYncyBjaGlsZCBmcmFtZXMuICAqLwor ICAgIExpc3BfT2JqZWN0IGZyYW1lcywgZnJhbWUxOworCisgICAgRk9SX0VBQ0hfRlJBTUUg KGZyYW1lcywgZnJhbWUxKQorICAgICAgaWYgKEZSQU1FX1BBUkVOVF9GUkFNRSAoWEZSQU1F IChmcmFtZTEpKSA9PSBmKQorCWtlZXBfcmF0aW8gKFhGUkFNRSAoZnJhbWUxKSwgb2xkX3Bp eGVsX3dpZHRoLCBvbGRfcGl4ZWxfaGVpZ2h0LAorCQkJIG5ld19waXhlbF93aWR0aCwgbmV3 X3BpeGVsX2hlaWdodCk7CisgIH0KKyNlbmRpZgogfQoKIC8qIEFsbG9jYXRlIGJhc2ljYWxs eSBpbml0aWFsaXplZCBmcmFtZS4gICovCkBAIC02ODQsNiArODI5LDcgQEAgc3RydWN0IGZy YW1lICoKICAgZi0+aG9yaXpvbnRhbF9zY3JvbGxfYmFycyA9IGZhbHNlOwogICBmLT53YW50 X2Z1bGxzY3JlZW4gPSBGVUxMU0NSRUVOX05PTkU7CiAgIGYtPnVuZGVjb3JhdGVkID0gZmFs c2U7CisgIGYtPm5vX3NwZWNpYWxfZ2x5cGhzID0gZmFsc2U7CiAjaWZuZGVmIEhBVkVfTlRH VUkKICAgZi0+b3ZlcnJpZGVfcmVkaXJlY3QgPSBmYWxzZTsKICNlbmRpZgpAQCAtMjAwNCw4 ICsyMTUwLDEwMSBAQCBvZiB0aGVtICh0aGUgc2VsZWN0ZWQgdGVybWluYWwgZnJhbWUpIGlz IGFjdHVhbGx5IGRpc3BsYXllZC4KIHsKICAgcmV0dXJuIGRlbGV0ZV9mcmFtZSAoZnJhbWUs ICFOSUxQIChmb3JjZSkgPyBRdCA6IFFuaWwpOwogfQotCiAMCisjaWZkZWYgSEFWRV9XSU5E T1dfU1lTVEVNCisvKioKKyAqIGZyYW1lX2ludGVybmFsX2JvcmRlcl9wYXJ0OgorICoKKyAq IFJldHVybiBwYXJ0IG9mIGludGVybmFsIGJvcmRlciB0aGUgY29vcmRpbmF0ZXMgWCBhbmQg WSByZWxhdGl2ZSB0bworICogZnJhbWUgRiBhcmUgb24uICBSZXR1cm4gbmlsIGlmIHRoZSBj b29yZGluYXRlcyBhcmUgbm90IG9uIHRoZQorICogaW50ZXJuYWwgYm9yZGVyIG9mIEYuCisg KgorICogUmV0dXJuIG9uZSBvZiBJTlRFUk5BTF9CT1JERVJfTEVGVF9FREdFLCBJTlRFUk5B TF9CT1JERVJfVE9QX0VER0UsCisgKiBJTlRFUk5BTF9CT1JERVJfUklHSFRfRURHRSBvciBJ TlRFUk5BTF9CT1JERVJfQk9UVE9NX0VER0Ugd2hlbiB0aGUKKyAqIG1vdXNlIGN1cnNvciBp cyBvbiB0aGUgY29ycmVzcG9uZGluZyBib3JkZXIgd2l0aCBhbiBvZmZzZXQgb2YgYXQKKyAq IGxlYXN0IG9uZSBjYW5vbmljYWwgY2hhcmFjdGVyIGhlaWdodCBmcm9tIHRoYXQgYm9yZGVy J3MgZWRnZXMuCisgKgorICogSWYgbm8gYm9yZGVyIHBhcnQgY291bGQgYmUgZm91bmQgdGhp cyB3YXksIHJldHVybiBvbmUgb2YKKyAqIElOVEVSTkFMX0JPUkRFUl9UT1BfTEVGVF9DT1JO RVIsIElOVEVSTkFMX0JPUkRFUl9UT1BfUklHSFRfQ09STkVSLAorICogSU5URVJOQUxfQk9S REVSX0JPVFRPTV9MRUZUX0NPUk5FUiBvcgorICogSU5URVJOQUxfQk9SREVSX0JPVFRPTV9S SUdIVF9DT1JORVIgdG8gaW5kaWNhdGUgdGhhdCB0aGUgbW91c2UgaXMgaW4KKyAqIG9uZSBv ZiB0aGUgY29ycmVzcG9uZGluZyBjb3JuZXJzLiAgVGhpcyBtZWFucyB0aGF0IGZvciB2ZXJ5 IHNtYWxsCisgKiBmcmFtZXMgYW4gYGVkZ2UnIHJldHVybiB2YWx1ZSBpcyBwcmVmZXJyZWQu CisgKi8KK2VudW0gaW50ZXJuYWxfYm9yZGVyX3BhcnQKK2ZyYW1lX2ludGVybmFsX2JvcmRl cl9wYXJ0IChzdHJ1Y3QgZnJhbWUgKmYsIGludCB4LCBpbnQgeSkKK3sKKyAgaW50IGJvcmRl ciA9IEZSQU1FX0lOVEVSTkFMX0JPUkRFUl9XSURUSCAoZik7CisgIGludCBvZmZzZXQgPSBG UkFNRV9MSU5FX0hFSUdIVCAoZik7CisgIGludCB3aWR0aCA9IEZSQU1FX1BJWEVMX1dJRFRI IChmKTsKKyAgaW50IGhlaWdodCA9IEZSQU1FX1BJWEVMX0hFSUdIVCAoZik7CisgIGVudW0g aW50ZXJuYWxfYm9yZGVyX3BhcnQgcGFydCA9IElOVEVSTkFMX0JPUkRFUl9OT05FOworCisg IGlmIChvZmZzZXQgPCBib3JkZXIpCisgICAgLyogRm9yIHZlcnkgd2lkZSBib3JkZXJzIG1h a2Ugb2Zmc2V0IGF0IGxlYXN0IGFzIGxhcmdlIGFzCisgICAgICAgYm9yZGVyLiAgKi8KKyAg ICBvZmZzZXQgPSBib3JkZXI7CisKKyAgaWYgKG9mZnNldCA8IHggJiYgeCA8IHdpZHRoIC0g b2Zmc2V0KQorICAgIC8qIFRvcCBvciBib3R0b20gYm9yZGVyLiAgKi8KKyAgICB7CisgICAg ICBpZiAoMCA8PSB5ICYmIHkgPD0gYm9yZGVyKQorCXBhcnQgPSBJTlRFUk5BTF9CT1JERVJf VE9QX0VER0U7CisgICAgICBlbHNlIGlmIChoZWlnaHQgLSBib3JkZXIgPD0geSAmJiB5IDw9 IGhlaWdodCkKKwlwYXJ0ID0gSU5URVJOQUxfQk9SREVSX0JPVFRPTV9FREdFOworICAgIH0K KyAgZWxzZSBpZiAob2Zmc2V0IDwgeSAmJiB5IDwgaGVpZ2h0IC0gb2Zmc2V0KQorICAgIC8q IExlZnQgb3IgcmlnaHQgYm9yZGVyLiAgKi8KKyAgICB7CisgICAgICBpZiAoMCA8PSB4ICYm IHggPD0gYm9yZGVyKQorCXBhcnQgPSBJTlRFUk5BTF9CT1JERVJfTEVGVF9FREdFOworICAg ICAgZWxzZSBpZiAod2lkdGggLSBib3JkZXIgPD0geCAmJiB4IDw9IHdpZHRoKQorCXBhcnQg PSBJTlRFUk5BTF9CT1JERVJfUklHSFRfRURHRTsKKyAgICB9CisgIGVsc2UKKyAgICB7Cisg ICAgICAvKiBBbiBlZGdlLiAgKi8KKyAgICAgIGludCBoYWxmX3dpZHRoID0gd2lkdGggLyAy OworICAgICAgaW50IGhhbGZfaGVpZ2h0ID0gaGVpZ2h0IC8gMjsKKworICAgICAgaWYgKDAg PD0geCAmJiB4IDw9IGJvcmRlcikKKwl7CisJICAvKiBBIGxlZnQgZWRnZS4gICovCisJICBp ZiAoMCA8PSB5ICYmIHkgPD0gaGFsZl9oZWlnaHQpCisJICAgICBwYXJ0ID0gSU5URVJOQUxf Qk9SREVSX1RPUF9MRUZUX0NPUk5FUjsKKwkgIGVsc2UgaWYgKGhhbGZfaGVpZ2h0IDwgeSAm JiB5IDw9IGhlaWdodCkKKwkgICAgIHBhcnQgPSBJTlRFUk5BTF9CT1JERVJfQk9UVE9NX0xF RlRfQ09STkVSOworCX0KKyAgICAgIGVsc2UgaWYgKHdpZHRoIC0gYm9yZGVyIDw9IHggJiYg eCA8PSB3aWR0aCkKKwl7CisJICAvKiBBIHJpZ2h0IGVkZ2UuICAqLworCSAgaWYgKDAgPD0g eSAmJiB5IDw9IGhhbGZfaGVpZ2h0KQorCSAgICAgcGFydCA9IElOVEVSTkFMX0JPUkRFUl9U T1BfUklHSFRfQ09STkVSOworCSAgZWxzZSBpZiAoaGFsZl9oZWlnaHQgPCB5ICYmIHkgPD0g aGVpZ2h0KQorCSAgICAgcGFydCA9IElOVEVSTkFMX0JPUkRFUl9CT1RUT01fUklHSFRfQ09S TkVSOworCX0KKyAgICAgIGVsc2UgaWYgKDAgPD0geSAmJiB5IDw9IGJvcmRlcikKKwl7CisJ ICAvKiBBIHRvcCBlZGdlLiAgKi8KKwkgIGlmICgwIDw9IHggJiYgeCA8PSBoYWxmX3dpZHRo KQorCSAgICAgcGFydCA9IElOVEVSTkFMX0JPUkRFUl9UT1BfTEVGVF9DT1JORVI7CisJICBl bHNlIGlmIChoYWxmX3dpZHRoIDwgeCAmJiB4IDw9IHdpZHRoKQorCSAgICBwYXJ0ID0gSU5U RVJOQUxfQk9SREVSX1RPUF9SSUdIVF9DT1JORVI7CisJfQorICAgICAgZWxzZSBpZiAoaGVp Z2h0IC0gYm9yZGVyIDw9IHkgJiYgeSA8PSBoZWlnaHQpCisJeworCSAgLyogQSBib3R0b20g ZWRnZS4gICovCisJICBpZiAoMCA8PSB4ICYmIHggPD0gaGFsZl93aWR0aCkKKwkgICAgIHBh cnQgPSBJTlRFUk5BTF9CT1JERVJfQk9UVE9NX0xFRlRfQ09STkVSOworCSAgZWxzZSBpZiAo aGFsZl93aWR0aCA8IHggJiYgeCA8PSB3aWR0aCkKKwkgICAgcGFydCA9IElOVEVSTkFMX0JP UkRFUl9CT1RUT01fUklHSFRfQ09STkVSOworCX0KKyAgICB9CisKKyAgcmV0dXJuIHBhcnQ7 Cit9CisjZW5kaWYKKwogLyogUmV0dXJuIG1vdXNlIHBvc2l0aW9uIGluIGNoYXJhY3RlciBj ZWxsIHVuaXRzLiAgKi8KCiBERUZVTiAoIm1vdXNlLXBvc2l0aW9uIiwgRm1vdXNlX3Bvc2l0 aW9uLCBTbW91c2VfcG9zaXRpb24sIDAsIDAsIDAsCkBAIC0yOTYyLDQ5ICszMjAxLDQ3IEBA IEVhY2ggZWxlbWVudCBvZiBBTElTVCBoYXMgdGhlIGZvcm0gKFBBUk0gLiBWQUxVRSksIHdo ZXJlIFBBUk0gaXMgYSBzeW1ib2wuCiAgICAgcmV0dXJuIG1ha2VfbnVtYmVyICgxKTsKIH0K Ci1ERUZVTiAoImZyYW1lLXBpeGVsLWhlaWdodCIsIEZmcmFtZV9waXhlbF9oZWlnaHQsCi0g ICAgICAgU2ZyYW1lX3BpeGVsX2hlaWdodCwgMCwgMSwgMCwKLSAgICAgICBkb2M6IC8qIFJl dHVybiBhIEZSQU1FJ3MgaGVpZ2h0IGluIHBpeGVscy4KLUlmIEZSQU1FIGlzIG9taXR0ZWQg b3IgbmlsLCB0aGUgc2VsZWN0ZWQgZnJhbWUgaXMgdXNlZC4gIFRoZSBleGFjdCB2YWx1ZQot b2YgdGhlIHJlc3VsdCBkZXBlbmRzIG9uIHRoZSB3aW5kb3ctc3lzdGVtIGFuZCB0b29sa2l0 IGluIHVzZToKLQotSW4gdGhlIEd0aysgdmVyc2lvbiBvZiBFbWFjcywgaXQgaW5jbHVkZXMg b25seSBhbnkgd2luZG93IChpbmNsdWRpbmcKLXRoZSBtaW5pYnVmZmVyIG9yIGVjaG8gYXJl YSksIG1vZGUgbGluZSwgYW5kIGhlYWRlciBsaW5lLiAgSXQgZG9lcyBub3QKLWluY2x1ZGUg dGhlIHRvb2wgYmFyIG9yIG1lbnUgYmFyLgotCi1XaXRoIG90aGVyIGdyYXBoaWNhbCB2ZXJz aW9ucywgaXQgYWxzbyBpbmNsdWRlcyB0aGUgdG9vbCBiYXIgYW5kIHRoZQotbWVudSBiYXIu Ci0KLUZvciBhIHRleHQgdGVybWluYWwsIGl0IGluY2x1ZGVzIHRoZSBtZW51IGJhci4gIElu IHRoaXMgY2FzZSwgdGhlCi1yZXN1bHQgaXMgcmVhbGx5IGluIGNoYXJhY3RlcnMgcmF0aGVy IHRoYW4gcGl4ZWxzIChpLmUuLCBpcyBpZGVudGljYWwKLXRvIGBmcmFtZS1oZWlnaHQnKS4g Ki8pCitERUZVTiAoImZyYW1lLW5hdGl2ZS13aWR0aCIsIEZmcmFtZV9uYXRpdmVfd2lkdGgs CisgICAgICAgU2ZyYW1lX25hdGl2ZV93aWR0aCwgMCwgMSwgMCwKKyAgICAgICBkb2M6IC8q IFJldHVybiBGUkFNRSdzIG5hdGl2ZSB3aWR0aCBpbiBwaXhlbHMuCitGb3IgYSB0ZXJtaW5h bCBmcmFtZSwgdGhlIHJlc3VsdCByZWFsbHkgZ2l2ZXMgdGhlIHdpZHRoIGluIGNoYXJhY3Rl cnMuCitJZiBGUkFNRSBpcyBvbWl0dGVkIG9yIG5pbCwgdGhlIHNlbGVjdGVkIGZyYW1lIGlz IHVzZWQuICAqLykKICAgKExpc3BfT2JqZWN0IGZyYW1lKQogewogICBzdHJ1Y3QgZnJhbWUg KmYgPSBkZWNvZGVfYW55X2ZyYW1lIChmcmFtZSk7CgogI2lmZGVmIEhBVkVfV0lORE9XX1NZ U1RFTQogICBpZiAoRlJBTUVfV0lORE9XX1AgKGYpKQotICAgIHJldHVybiBtYWtlX251bWJl ciAoRlJBTUVfUElYRUxfSEVJR0hUIChmKSk7CisgICAgcmV0dXJuIG1ha2VfbnVtYmVyIChG UkFNRV9QSVhFTF9XSURUSCAoZikpOwogICBlbHNlCiAjZW5kaWYKLSAgICByZXR1cm4gbWFr ZV9udW1iZXIgKEZSQU1FX1RPVEFMX0xJTkVTIChmKSk7CisgICAgcmV0dXJuIG1ha2VfbnVt YmVyIChGUkFNRV9UT1RBTF9DT0xTIChmKSk7CiB9CgotREVGVU4gKCJmcmFtZS1waXhlbC13 aWR0aCIsIEZmcmFtZV9waXhlbF93aWR0aCwKLSAgICAgICBTZnJhbWVfcGl4ZWxfd2lkdGgs IDAsIDEsIDAsCi0gICAgICAgZG9jOiAvKiBSZXR1cm4gRlJBTUUncyB3aWR0aCBpbiBwaXhl bHMuCi1Gb3IgYSB0ZXJtaW5hbCBmcmFtZSwgdGhlIHJlc3VsdCByZWFsbHkgZ2l2ZXMgdGhl IHdpZHRoIGluIGNoYXJhY3RlcnMuCi1JZiBGUkFNRSBpcyBvbWl0dGVkIG9yIG5pbCwgdGhl IHNlbGVjdGVkIGZyYW1lIGlzIHVzZWQuICAqLykKK0RFRlVOICgiZnJhbWUtbmF0aXZlLWhl aWdodCIsIEZmcmFtZV9uYXRpdmVfaGVpZ2h0LAorICAgICAgIFNmcmFtZV9uYXRpdmVfaGVp Z2h0LCAwLCAxLCAwLAorICAgICAgIGRvYzogLyogUmV0dXJuIEZSQU1FJ3MgbmF0aXZlIGhl aWdodCBpbiBwaXhlbHMuCitJZiBGUkFNRSBpcyBvbWl0dGVkIG9yIG5pbCwgdGhlIHNlbGVj dGVkIGZyYW1lIGlzIHVzZWQuICBUaGUgZXhhY3QgdmFsdWUKK29mIHRoZSByZXN1bHQgZGVw ZW5kcyBvbiB0aGUgd2luZG93LXN5c3RlbSBhbmQgdG9vbGtpdCBpbiB1c2U6CisKK0luIHRo ZSBHdGsrIGFuZCBOUyB2ZXJzaW9ucywgaXQgaW5jbHVkZXMgb25seSBhbnkgd2luZG93IChp bmNsdWRpbmcgdGhlCittaW5pYnVmZmVyIG9yIGVjaG8gYXJlYSksIG1vZGUgbGluZSwgYW5k IGhlYWRlciBsaW5lLiAgSXQgZG9lcyBub3QKK2luY2x1ZGUgdGhlIHRvb2wgYmFyIG9yIG1l bnUgYmFyLiAgV2l0aCBvdGhlciBncmFwaGljYWwgdmVyc2lvbnMsIGl0IG1heQorYWxzbyBp bmNsdWRlIHRoZSB0b29sIGJhciBhbmQgdGhlIG1lbnUgYmFyLgorCitGb3IgYSB0ZXh0IHRl cm1pbmFsLCBpdCBpbmNsdWRlcyB0aGUgbWVudSBiYXIuICBJbiB0aGlzIGNhc2UsIHRoZQor cmVzdWx0IGlzIHJlYWxseSBpbiBjaGFyYWN0ZXJzIHJhdGhlciB0aGFuIHBpeGVscyAoaS5l LiwgaXMgaWRlbnRpY2FsCit0byBgZnJhbWUtaGVpZ2h0JykuICovKQogICAoTGlzcF9PYmpl Y3QgZnJhbWUpCiB7CiAgIHN0cnVjdCBmcmFtZSAqZiA9IGRlY29kZV9hbnlfZnJhbWUgKGZy YW1lKTsKCiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCiAgIGlmIChGUkFNRV9XSU5ET1df UCAoZikpCi0gICAgcmV0dXJuIG1ha2VfbnVtYmVyIChGUkFNRV9QSVhFTF9XSURUSCAoZikp OworICAgIHJldHVybiBtYWtlX251bWJlciAoRlJBTUVfUElYRUxfSEVJR0hUIChmKSk7CiAg IGVsc2UKICNlbmRpZgotICAgIHJldHVybiBtYWtlX251bWJlciAoRlJBTUVfVE9UQUxfQ09M UyAoZikpOworICAgIHJldHVybiBtYWtlX251bWJlciAoRlJBTUVfVE9UQUxfTElORVMgKGYp KTsKIH0KCiBERUZVTiAoInRvb2wtYmFyLXBpeGVsLXdpZHRoIiwgRnRvb2xfYmFyX3BpeGVs X3dpZHRoLApAQCAtMzA4Nyw4ICszMzI0LDggQEAgcmVzdWx0IGlzIHJlYWxseSBpbiBjaGFy YWN0ZXJzIHJhdGhlciB0aGFuIHBpeGVscyAoaS5lLiwgaXMgaWRlbnRpY2FsCiAgIHJldHVy biBtYWtlX251bWJlciAoRlJBTUVfVE9UQUxfRlJJTkdFX1dJRFRIIChkZWNvZGVfYW55X2Zy YW1lIChmcmFtZSkpKTsKIH0KCi1ERUZVTiAoImZyYW1lLWJvcmRlci13aWR0aCIsIEZib3Jk ZXJfd2lkdGgsIFNib3JkZXJfd2lkdGgsIDAsIDEsIDAsCi0gICAgICAgZG9jOiAvKiBSZXR1 cm4gYm9yZGVyIHdpZHRoIG9mIEZSQU1FIGluIHBpeGVscy4gICovKQorREVGVU4gKCJmcmFt ZS1pbnRlcm5hbC1ib3JkZXItd2lkdGgiLCBGZnJhbWVfaW50ZXJuYWxfYm9yZGVyX3dpZHRo LCBTZnJhbWVfaW50ZXJuYWxfYm9yZGVyX3dpZHRoLCAwLCAxLCAwLAorICAgICAgIGRvYzog LyogUmV0dXJuIHdpZHRoIG9mIEZSQU1FJ3MgaW50ZXJuYWwgYm9yZGVyIGluIHBpeGVscy4g ICovKQogICAoTGlzcF9PYmplY3QgZnJhbWUpCiB7CiAgIHJldHVybiBtYWtlX251bWJlciAo RlJBTUVfSU5URVJOQUxfQk9SREVSX1dJRFRIIChkZWNvZGVfYW55X2ZyYW1lIChmcmFtZSkp KTsKQEAgLTMyMjQsNyArMzQ2MSw2IEBAIG91dGVyIGZyYW1lIGluIHBpeGVscyByZWxhdGl2 ZSB0byBhbiBvcmlnaW4gKDAsIDApIG9mIEZSQU1FJ3MgZGlzcGxheS4KCiAgIHJldHVybiBR dDsKIH0KLQogDAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAJCQkJRnJhbWUgUGFyYW1ldGVycwpA QCAtMzI4OSwxMCArMzUyNSwxOTMgQEAgc3RydWN0IGZyYW1lX3Bhcm1fdGFibGUgewogICB7 Im5vLWFjY2VwdC1mb2N1cyIsCQlTWU1CT0xfSU5ERVggKFFub19hY2NlcHRfZm9jdXMpfSwK ICAgeyJ6LWdyb3VwIiwJCQlTWU1CT0xfSU5ERVggKFF6X2dyb3VwKX0sCiAgIHsib3ZlcnJp ZGUtcmVkaXJlY3QiLAkJU1lNQk9MX0lOREVYIChRb3ZlcnJpZGVfcmVkaXJlY3QpfSwKKyAg eyJuby1zcGVjaWFsLWdseXBocyIsCQlTWU1CT0xfSU5ERVggKFFub19zcGVjaWFsX2dseXBo cyl9LAogfTsKCiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCgorLyogRW51bWVyYXRpb24g dHlwZSBmb3Igc3dpdGNoIGluIGZyYW1lX2Zsb2F0LiAgKi8KK2VudW0gZnJhbWVfZmxvYXRf dHlwZQoreworIEZSQU1FX0ZMT0FUX1dJRFRILAorIEZSQU1FX0ZMT0FUX0hFSUdIVCwKKyBG UkFNRV9GTE9BVF9MRUZULAorIEZSQU1FX0ZMT0FUX1RPUAorfTsKKworLyoqCisgKiBmcmFt ZV9mbG9hdDoKKyAqCisgKiBQcm9jZXNzIHRoZSB2YWx1ZSBWQUwgb2YgdGhlIGZsb2F0IHR5 cGUgZnJhbWUgcGFyYW1ldGVyICd3aWR0aCcsCisgKiAnaGVpZ2h0JywgJ2xlZnQnLCBvciAn dG9wJyBzcGVjaWZpZWQgdmlhIGEgZnJhbWVfZmxvYXRfdHlwZQorICogZW51bWVyYXRpb24g dHlwZSBXSEFUIGZvciBmcmFtZSBGLiAgU3VjaCBwYXJhbWV0ZXJzIHJlbGF0ZSB0aGUgb3V0 ZXIKKyAqIHNpemUgb3IgcG9zaXRpb24gb2YgRiB0byB0aGUgc2l6ZSBvZiB0aGUgRidzIGRp c3BsYXkgb3IgcGFyZW50IGZyYW1lCisgKiB3aGljaCBoYXZlIHRvIGJlIGJvdGggYXZhaWxh YmxlIGluIHNvbWUgd2F5LgorICoKKyAqIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzaXplIG9y IHBvc2l0aW9uIHZhbHVlIGluIHBpeGVscy4gIFZBTCBtdXN0IGJlCisgKiBpbiB0aGUgcmFu Z2UgMC4wIHRvIDEuMCB3aGVyZSBhIHdpZHRoL2hlaWdodCBvZiAwLjAgbWVhbnMgdG8gcmV0 dXJuIDAKKyAqIGFuZCAxLjAgbWVhbnMgdG8gcmV0dXJuIHRoZSBmdWxsIHdpZHRoL2hlaWdo dCBvZiB0aGUgZGlzcGxheS9wYXJlbnQuCisgKiBGb3IgcG9zaXRpb25zLCAwLjAgbWVhbnMg cG9zaXRpb24gaW4gdGhlIGxlZnQvdG9wIGNvcm5lciBvZiB0aGUKKyAqIGRpc3BsYXkvcGFy ZW50IHdoaWxlIDEuMCBtZWFucyB0byBwb3NpdGlvbiBhdCB0aGUgcmlnaHQvYm90dG9tIGNv cm5lcgorICogb2YgdGhlIGRpc3BsYXkvcGFyZW50IGZyYW1lLgorICoKKyAqIFNldCBQQVJF TlRfRE9ORSBhbmQgT1VURVJfRE9ORSB0byBhdm9pZCByZWNhbGN1bGF0aW9uIG9mIHRoZSBv dXRlcgorICogc2l6ZSBvciBwYXJlbnQgb3IgZGlzcGxheSBhdHRyaWJ1dGVzIHdoZW4gbW9y ZSBmbG9hdCBwYXJhbWV0ZXJzIGFyZQorICogY2FsY3VsYXRlZCBpbiBhIHJvdzogLTEgbWVh bnMgbm90IHByb2Nlc3NlZCB5ZXQsIDAgbWVhbnMgcHJvY2Vzc2luZworICogZmFpbGVkLCAx IG1lYW5zIHByb2Nlc3Npbmcgc3VjY2VlZGVkLgorICoKKyAqIFJldHVybiBERUZBVUxUX1ZB TFVFIHdoZW4gcHJvY2Vzc2luZyBmYWlscyBmb3Igd2hhdGV2ZXIgcmVhc29uIHdpdGgKKyAq IG9uZSBleGNlcHRpb246IFdoZW4gY2FsY3VsYXRpbmcgRidzIG91dGVyIGVkZ2VzIGZhaWxz IChwcm9iYWJseQorICogYmVjYXVzZSBGIGhhcyBub3QgYmVlbiBjcmVhdGVkIHlldCkgcmV0 dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gRidzCisgKiBuYXRpdmUgYW5kIHRleHQgc2l6 ZS4KKyAqLworc3RhdGljIGludAorZnJhbWVfZmxvYXQgKHN0cnVjdCBmcmFtZSAqZiwgTGlz cF9PYmplY3QgdmFsLCBlbnVtIGZyYW1lX2Zsb2F0X3R5cGUgd2hhdCwKKwkgICAgIGludCAq cGFyZW50X2RvbmUsIGludCAqb3V0ZXJfZG9uZSwgaW50IGRlZmF1bHRfdmFsdWUpCit7Cisg IGRvdWJsZSBkX3ZhbCA9IFhGTE9BVF9EQVRBICh2YWwpOworCisgIGlmIChkX3ZhbCA8IDAu MCB8fCBkX3ZhbCA+IDEuMCkKKyAgICAvKiBJbnZhbGlkIFZBTC4gICovCisgICAgcmV0dXJu IGRlZmF1bHRfdmFsdWU7CisgIGVsc2UKKyAgICB7CisgICAgICBzdGF0aWMgdW5zaWduZWQg cGFyZW50X3dpZHRoLCBwYXJlbnRfaGVpZ2h0OworICAgICAgc3RhdGljIGludCBwYXJlbnRf bGVmdCwgcGFyZW50X3RvcDsKKyAgICAgIHN0YXRpYyB1bnNpZ25lZCBvdXRlcl9taW51c190 ZXh0X3dpZHRoLCBvdXRlcl9taW51c190ZXh0X2hlaWdodDsKKyAgICAgIHN0cnVjdCBmcmFt ZSAqcCA9IEZSQU1FX1BBUkVOVF9GUkFNRSAoZik7CisKKyAgICAgIGlmICgqcGFyZW50X2Rv bmUgPT0gMSkKKwk7CisgICAgICBlbHNlIGlmIChwKQorCXsKKwkgIHBhcmVudF93aWR0aCA9 IEZSQU1FX1BJWEVMX1dJRFRIIChwKTsKKwkgIHBhcmVudF9oZWlnaHQgPSBGUkFNRV9QSVhF TF9IRUlHSFQgKHApOworCSAgKnBhcmVudF9kb25lID0gMTsKKwl9CisgICAgICBlbHNlCisJ eworCSAgaWYgKCpwYXJlbnRfZG9uZSA9PSAwKQorCSAgICAvKiBObyB3b3JrYXJlYSBhdmFp bGFibGUuICAqLworCSAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKKwkgIGVsc2UgaWYgKCpw YXJlbnRfZG9uZSA9PSAtMSkKKwkgICAgeworCSAgICAgIExpc3BfT2JqZWN0IG1vbml0b3Jf YXR0cmlidXRlczsKKwkgICAgICBMaXNwX09iamVjdCB3b3JrYXJlYTsKKwkgICAgICBMaXNw X09iamVjdCBmcmFtZTsKKworCSAgICAgIFhTRVRGUkFNRSAoZnJhbWUsIGYpOworCSAgICAg IG1vbml0b3JfYXR0cmlidXRlcyA9IEZjYXIgKGNhbGwxIChRZGlzcGxheV9tb25pdG9yX2F0 dHJpYnV0ZXNfbGlzdCwgZnJhbWUpKTsKKwkgICAgICBpZiAoTklMUCAobW9uaXRvcl9hdHRy aWJ1dGVzKSkKKwkJeworCQkgIC8qIE5vIG1vbml0b3IgYXR0cmlidXRlcyBhdmFpbGFibGUu ICAqLworCQkgICpwYXJlbnRfZG9uZSA9IDA7CisKKwkJICByZXR1cm4gZGVmYXVsdF92YWx1 ZTsKKwkJfQorCisJICAgICAgd29ya2FyZWEgPSBGY2RyIChGYXNzcSAoUXdvcmthcmVhLCBt b25pdG9yX2F0dHJpYnV0ZXMpKTsKKwkgICAgICBpZiAoTklMUCAod29ya2FyZWEpKQorCQl7 CisJCSAgLyogTm8gd29ya2FyZWEgYXZhaWxhYmxlLiAgKi8KKwkJICAqcGFyZW50X2RvbmUg PSAwOworCisJCSAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7CisJCX0KKworCSAgICAgIC8qIFdv cmthcmVhIGF2YWlsYWJsZS4gICovCisJICAgICAgcGFyZW50X2xlZnQgPSBYSU5UIChGbnRo IChtYWtlX251bWJlciAoMCksIHdvcmthcmVhKSk7CisJICAgICAgcGFyZW50X3RvcCA9IFhJ TlQgKEZudGggKG1ha2VfbnVtYmVyICgxKSwgd29ya2FyZWEpKTsKKwkgICAgICBwYXJlbnRf d2lkdGggPSBYSU5UIChGbnRoIChtYWtlX251bWJlciAoMiksIHdvcmthcmVhKSk7CisJICAg ICAgcGFyZW50X2hlaWdodCA9IFhJTlQgKEZudGggKG1ha2VfbnVtYmVyICgzKSwgd29ya2Fy ZWEpKTsKKwkgICAgICAqcGFyZW50X2RvbmUgPSAxOworCSAgICB9CisJfQorCisgICAgICBp ZiAoKm91dGVyX2RvbmUgPT0gMSkKKwk7CisgICAgICBlbHNlIGlmIChGUkFNRV9VTkRFQ09S QVRFRCAoZikpCisJeworCSAgb3V0ZXJfbWludXNfdGV4dF93aWR0aAorCSAgICA9IEZSQU1F X1BJWEVMX1dJRFRIIChmKSAtIEZSQU1FX1RFWFRfV0lEVEggKGYpOworCSAgb3V0ZXJfbWlu dXNfdGV4dF9oZWlnaHQKKwkgICAgPSBGUkFNRV9QSVhFTF9IRUlHSFQgKGYpIC0gRlJBTUVf VEVYVF9IRUlHSFQgKGYpOworCSAgKm91dGVyX2RvbmUgPSAxOworCX0KKyAgICAgIGVsc2Ug aWYgKCpvdXRlcl9kb25lID09IDApCisJLyogTm8gb3V0ZXIgc2l6ZSBhdmFpbGFibGUuICAq LworCXJldHVybiBkZWZhdWx0X3ZhbHVlOworICAgICAgZWxzZSBpZiAoKm91dGVyX2RvbmUg PT0gLTEpCisJeworCSAgTGlzcF9PYmplY3QgZnJhbWUsIG91dGVyX2VkZ2VzOworCisJICBY U0VURlJBTUUgKGZyYW1lLCBmKTsKKwkgIG91dGVyX2VkZ2VzID0gY2FsbDIgKFFmcmFtZV9l ZGdlcywgZnJhbWUsIFFvdXRlcl9lZGdlcyk7CisKKwkgIGlmICghTklMUCAob3V0ZXJfZWRn ZXMpKQorCSAgICB7CisJICAgICAgb3V0ZXJfbWludXNfdGV4dF93aWR0aAorCQk9IChYSU5U IChGbnRoIChtYWtlX251bWJlciAoMiksIG91dGVyX2VkZ2VzKSkKKwkJICAgLSBYSU5UIChG bnRoIChtYWtlX251bWJlciAoMCksIG91dGVyX2VkZ2VzKSkKKwkJICAgLSBGUkFNRV9URVhU X1dJRFRIIChmKSk7CisJICAgICAgb3V0ZXJfbWludXNfdGV4dF9oZWlnaHQKKwkJPSAoWElO VCAoRm50aCAobWFrZV9udW1iZXIgKDMpLCBvdXRlcl9lZGdlcykpCisJCSAgIC0gWElOVCAo Rm50aCAobWFrZV9udW1iZXIgKDEpLCBvdXRlcl9lZGdlcykpCisJCSAgIC0gRlJBTUVfVEVY VF9IRUlHSFQgKGYpKTsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgLyogSWYg d2UgY2FuJ3QgZ2V0IGFueSBvdXRlciBlZGdlcywgcHJvY2VlZCBhcyBpZiB0aGUgZnJhbWUK KwkJIHdlcmUgdW5kZWNvcmF0ZWQuICAqLworCSAgICAgIG91dGVyX21pbnVzX3RleHRfd2lk dGgKKwkJPSBGUkFNRV9QSVhFTF9XSURUSCAoZikgLSBGUkFNRV9URVhUX1dJRFRIIChmKTsK KwkgICAgICBvdXRlcl9taW51c190ZXh0X2hlaWdodAorCQk9IEZSQU1FX1BJWEVMX0hFSUdI VCAoZikgLSBGUkFNRV9URVhUX0hFSUdIVCAoZik7CisJICAgIH0KKworCSAgKm91dGVyX2Rv bmUgPSAxOworCX0KKworICAgICAgc3dpdGNoICh3aGF0KQorCXsKKwljYXNlIEZSQU1FX0ZM T0FUX1dJRFRIOgorCSAgcmV0dXJuIHBhcmVudF93aWR0aCAqIGRfdmFsIC0gb3V0ZXJfbWlu dXNfdGV4dF93aWR0aDsKKworCWNhc2UgRlJBTUVfRkxPQVRfSEVJR0hUOgorCSAgcmV0dXJu IHBhcmVudF9oZWlnaHQgKiBkX3ZhbCAtIG91dGVyX21pbnVzX3RleHRfaGVpZ2h0OworCisJ Y2FzZSBGUkFNRV9GTE9BVF9MRUZUOgorCSAgeworCSAgICBpbnQgcmVzdF93aWR0aCA9IChw YXJlbnRfd2lkdGgKKwkJCSAgICAgIC0gRlJBTUVfVEVYVF9XSURUSCAoZikKKwkJCSAgICAg IC0gb3V0ZXJfbWludXNfdGV4dF93aWR0aCk7CisKKwkgICAgaWYgKHApCisJICAgICAgcmV0 dXJuIChyZXN0X3dpZHRoIDw9IDAgPyAwIDogZF92YWwgKiByZXN0X3dpZHRoKTsKKwkgICAg ZWxzZQorCSAgICAgIHJldHVybiAocmVzdF93aWR0aCA8PSAwCisJCSAgICAgID8gcGFyZW50 X2xlZnQKKwkJICAgICAgOiBwYXJlbnRfbGVmdCArIGRfdmFsICogcmVzdF93aWR0aCk7CisJ ICB9CisJY2FzZSBGUkFNRV9GTE9BVF9UT1A6CisJICB7CisJICAgIGludCByZXN0X2hlaWdo dCA9IChwYXJlbnRfaGVpZ2h0CisJCQkgICAgICAgLSBGUkFNRV9URVhUX0hFSUdIVCAoZikK KwkJCSAgICAgICAtIG91dGVyX21pbnVzX3RleHRfaGVpZ2h0KTsKKworCSAgICBpZiAocCkK KwkgICAgICByZXR1cm4gKHJlc3RfaGVpZ2h0IDw9IDAgPyAwIDogZF92YWwgKiByZXN0X2hl aWdodCk7CisJICAgIGVsc2UKKwkgICAgICByZXR1cm4gKHJlc3RfaGVpZ2h0IDw9IDAKKwkJ ICAgICAgPyBwYXJlbnRfdG9wCisJCSAgICAgIDogcGFyZW50X3RvcCArIGRfdmFsICogcmVz dF9oZWlnaHQpOworCSAgfQorCWRlZmF1bHQ6CisJICBlbWFjc19hYm9ydCAoKTsKKwl9Cisg ICAgfQorfQorCiAvKiBDaGFuZ2UgdGhlIHBhcmFtZXRlcnMgb2YgZnJhbWUgRiBhcyBzcGVj aWZpZWQgYnkgQUxJU1QuCiAgICBJZiBhIHBhcmFtZXRlciBpcyBub3Qgc3BlY2lhbGx5IHJl Y29nbml6ZWQsIGRvIG5vdGhpbmcgc3BlY2lhbDsKICAgIG90aGVyd2lzZSBjYWxsIHRoZSBg eF9zZXRfLi4uJyBmdW5jdGlvbiBmb3IgdGhhdCBwYXJhbWV0ZXIuCkBAIC0zMzAyLDcgKzM3 MjEsOCBAQCBzdHJ1Y3QgZnJhbWVfcGFybV90YWJsZSB7CiB2b2lkCiB4X3NldF9mcmFtZV9w YXJhbWV0ZXJzIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IGFsaXN0KQogewotICBM aXNwX09iamVjdCB0YWlsOworICBMaXNwX09iamVjdCB0YWlsLCBmcmFtZTsKKwoKICAgLyog SWYgYm90aCBvZiB0aGVzZSBwYXJhbWV0ZXJzIGFyZSBwcmVzZW50LCBpdCdzIG1vcmUgZWZm aWNpZW50IHRvCiAgICAgIHNldCB0aGVtIGJvdGggYXQgb25jZS4gIFNvIHdlIHdhaXQgdW50 aWwgd2UndmUgbG9va2VkIGF0IHRoZQpAQCAtMzMyNyw3ICszNzQ3LDkgQEAgc3RydWN0IGZy YW1lX3Bhcm1fdGFibGUgewogI2lmZGVmIEhBVkVfWF9XSU5ET1dTCiAgIGJvb2wgaWNvbl9s ZWZ0X25vX2NoYW5nZSA9IDAsIGljb25fdG9wX25vX2NoYW5nZSA9IDA7CiAjZW5kaWYKKyAg aW50IHBhcmVudF9kb25lID0gLTEsIG91dGVyX2RvbmUgPSAtMTsKCisgIFhTRVRGUkFNRSAo ZnJhbWUsIGYpOwogICBmb3IgKHNpemUgPSAwLCB0YWlsID0gYWxpc3Q7IENPTlNQICh0YWls KTsgdGFpbCA9IFhDRFIgKHRhaWwpKQogICAgIHNpemUrKzsKICAgQ0hFQ0tfTElTVF9FTkQg KHRhaWwsIGFsaXN0KTsKQEAgLTMzODgsNiArMzgxMCw5IEBAIHN0cnVjdCBmcmFtZV9wYXJt X3RhYmxlIHsKIAkgIGVsc2UgaWYgKENPTlNQICh2YWwpICYmIEVRIChYQ0FSICh2YWwpLCBR dGV4dF9waXhlbHMpCiAJCSAgICYmIFJBTkdFRF9JTlRFR0VSUCAoMCwgWENEUiAodmFsKSwg SU5UX01BWCkpCiAJICAgIHdpZHRoID0gWEZBU1RJTlQgKFhDRFIgKHZhbCkpOworCSAgZWxz ZSBpZiAoRkxPQVRQICh2YWwpKQorCSAgICB3aWR0aCA9IGZyYW1lX2Zsb2F0IChmLCB2YWws IEZSQU1FX0ZMT0FUX1dJRFRILCAmcGFyZW50X2RvbmUsCisJCQkJICZvdXRlcl9kb25lLCAt MSk7CiAgICAgICAgIH0KICAgICAgIGVsc2UgaWYgKEVRIChwcm9wLCBRaGVpZ2h0KSkKICAg ICAgICAgewpAQCAtMzM5Niw2ICszODIxLDkgQEAgc3RydWN0IGZyYW1lX3Bhcm1fdGFibGUg ewogCSAgZWxzZSBpZiAoQ09OU1AgKHZhbCkgJiYgRVEgKFhDQVIgKHZhbCksIFF0ZXh0X3Bp eGVscykKIAkJICAgJiYgUkFOR0VEX0lOVEVHRVJQICgwLCBYQ0RSICh2YWwpLCBJTlRfTUFY KSkKIAkgICAgaGVpZ2h0ID0gWEZBU1RJTlQgKFhDRFIgKHZhbCkpOworCSAgZWxzZSBpZiAo RkxPQVRQICh2YWwpKQorCSAgICBoZWlnaHQgPSBmcmFtZV9mbG9hdCAoZiwgdmFsLCBGUkFN RV9GTE9BVF9IRUlHSFQsICZwYXJlbnRfZG9uZSwKKwkJCQkgJm91dGVyX2RvbmUsIC0xKTsK ICAgICAgICAgfQogICAgICAgZWxzZSBpZiAoRVEgKHByb3AsIFF0b3ApKQogCXRvcCA9IHZh bDsKQEAgLTM0NzIsMTA1ICszOTAwLDEwMCBAQCBzdHJ1Y3QgZnJhbWVfcGFybV90YWJsZSB7 CiAgICAgIERvbid0IHNldCB0aGVzZSBwYXJhbWV0ZXJzIHVubGVzcyB0aGV5IGFjdHVhbGx5 IGRpZmZlciBmcm9tIHRoZQogICAgICB3aW5kb3cncyBjdXJyZW50IHBhcmFtZXRlcnM7IHRo ZSB3aW5kb3cgbWF5IG5vdCBhY3R1YWxseSBleGlzdAogICAgICB5ZXQuICAqLwotICB7Ci0g ICAgTGlzcF9PYmplY3QgZnJhbWU7Ci0KLSAgICBYU0VURlJBTUUgKGZyYW1lLCBmKTsKLQot ICAgIGlmICgod2lkdGggIT0gLTEgJiYgd2lkdGggIT0gRlJBTUVfVEVYVF9XSURUSCAoZikp Ci0JfHwgKGhlaWdodCAhPSAtMSAmJiBoZWlnaHQgIT0gRlJBTUVfVEVYVF9IRUlHSFQgKGYp KSkKLSAgICAgIC8qIFdlIGNvdWxkIGNvbnNpZGVyIGNoZWNraW5nIGYtPmFmdGVyX21ha2Vf ZnJhbWUgaGVyZSwgYnV0IEkKLQkgZG9uJ3QgaGF2ZSB0aGUgZmFpbnRlc3QgaWRlYSB3aHkg dGhlIGZvbGxvd2luZyBpcyBuZWVkZWQgYXQKLQkgYWxsLiAgV2l0aCB0aGUgb2xkIHNldHRp bmcgaXQgY2FuIGdldCBhIEhlaXNlbmJ1ZyB3aGVuCi0JIEVtYWNzRnJhbWVSZXNpemUgaW50 ZXJtaXR0ZW50bHkgcHJvdm9rZXMgYSBkZWxheWVkCi0JIGNoYW5nZV9mcmFtZV9zaXplIGlu IHRoZSBtaWRkbGUgb2YgYWRqdXN0X2ZyYW1lX3NpemUuICAqLwotICAgICAgLyoqIAl8fCAo Zi0+Y2FuX3hfc2V0X3dpbmRvd19zaXplICYmIChmLT5uZXdfaGVpZ2h0IHx8IGYtPm5ld193 aWR0aCkpKSAqKi8KLSAgICAgIGFkanVzdF9mcmFtZV9zaXplIChmLCB3aWR0aCwgaGVpZ2h0 LCAxLCAwLCBReF9zZXRfZnJhbWVfcGFyYW1ldGVycyk7Ci0KLSAgICBpZiAoKCFOSUxQIChs ZWZ0KSB8fCAhTklMUCAodG9wKSkKLQkmJiAhIChsZWZ0X25vX2NoYW5nZSAmJiB0b3Bfbm9f Y2hhbmdlKQotCSYmICEgKE5VTUJFUlAgKGxlZnQpICYmIFhJTlQgKGxlZnQpID09IGYtPmxl ZnRfcG9zCi0JICAgICAgJiYgTlVNQkVSUCAodG9wKSAmJiBYSU5UICh0b3ApID09IGYtPnRv cF9wb3MpKQotICAgICAgewotCWludCBsZWZ0cG9zID0gMDsKLQlpbnQgdG9wcG9zID0gMDsK KyAgaWYgKCh3aWR0aCAhPSAtMSAmJiB3aWR0aCAhPSBGUkFNRV9URVhUX1dJRFRIIChmKSkK KyAgICAgIHx8IChoZWlnaHQgIT0gLTEgJiYgaGVpZ2h0ICE9IEZSQU1FX1RFWFRfSEVJR0hU IChmKSkpCisgICAgLyogV2UgY291bGQgY29uc2lkZXIgY2hlY2tpbmcgZi0+YWZ0ZXJfbWFr ZV9mcmFtZSBoZXJlLCBidXQgSQorICAgICAgIGRvbid0IGhhdmUgdGhlIGZhaW50ZXN0IGlk ZWEgd2h5IHRoZSBmb2xsb3dpbmcgaXMgbmVlZGVkIGF0CisgICAgICAgYWxsLiAgV2l0aCB0 aGUgb2xkIHNldHRpbmcgaXQgY2FuIGdldCBhIEhlaXNlbmJ1ZyB3aGVuCisgICAgICAgRW1h Y3NGcmFtZVJlc2l6ZSBpbnRlcm1pdHRlbnRseSBwcm92b2tlcyBhIGRlbGF5ZWQKKyAgICAg ICBjaGFuZ2VfZnJhbWVfc2l6ZSBpbiB0aGUgbWlkZGxlIG9mIGFkanVzdF9mcmFtZV9zaXpl LiAgKi8KKyAgICAvKiogCXx8IChmLT5jYW5feF9zZXRfd2luZG93X3NpemUgJiYgKGYtPm5l d19oZWlnaHQgfHwgZi0+bmV3X3dpZHRoKSkpICoqLworICAgIGFkanVzdF9mcmFtZV9zaXpl IChmLCB3aWR0aCwgaGVpZ2h0LCAxLCAwLCBReF9zZXRfZnJhbWVfcGFyYW1ldGVycyk7CisK KyAgaWYgKCghTklMUCAobGVmdCkgfHwgIU5JTFAgKHRvcCkpCisgICAgICAmJiAhIChsZWZ0 X25vX2NoYW5nZSAmJiB0b3Bfbm9fY2hhbmdlKQorICAgICAgJiYgISAoTlVNQkVSUCAobGVm dCkgJiYgWElOVCAobGVmdCkgPT0gZi0+bGVmdF9wb3MKKwkgICAgJiYgTlVNQkVSUCAodG9w KSAmJiBYSU5UICh0b3ApID09IGYtPnRvcF9wb3MpKQorICAgIHsKKyAgICAgIGludCBsZWZ0 cG9zID0gMDsKKyAgICAgIGludCB0b3Bwb3MgPSAwOwoKLQkvKiBSZWNvcmQgdGhlIHNpZ25z LiAgKi8KLQlmLT5zaXplX2hpbnRfZmxhZ3MgJj0gfiAoWE5lZ2F0aXZlIHwgWU5lZ2F0aXZl KTsKLQlpZiAoRVEgKGxlZnQsIFFtaW51cykpCi0JICBmLT5zaXplX2hpbnRfZmxhZ3MgfD0g WE5lZ2F0aXZlOwotCWVsc2UgaWYgKFRZUEVfUkFOR0VEX0lOVEVHRVJQIChpbnQsIGxlZnQp KQotCSAgewotCSAgICBsZWZ0cG9zID0gWElOVCAobGVmdCk7Ci0JICAgIGlmIChsZWZ0cG9z IDwgMCkKLQkgICAgICBmLT5zaXplX2hpbnRfZmxhZ3MgfD0gWE5lZ2F0aXZlOwotCSAgfQot CWVsc2UgaWYgKENPTlNQIChsZWZ0KSAmJiBFUSAoWENBUiAobGVmdCksIFFtaW51cykKLQkJ ICYmIENPTlNQIChYQ0RSIChsZWZ0KSkKLQkJICYmIFJBTkdFRF9JTlRFR0VSUCAoLUlOVF9N QVgsIFhDQVIgKFhDRFIgKGxlZnQpKSwgSU5UX01BWCkpCi0JICB7Ci0JICAgIGxlZnRwb3Mg PSAtIFhJTlQgKFhDQVIgKFhDRFIgKGxlZnQpKSk7CisgICAgICAvKiBSZWNvcmQgdGhlIHNp Z25zLiAgKi8KKyAgICAgIGYtPnNpemVfaGludF9mbGFncyAmPSB+IChYTmVnYXRpdmUgfCBZ TmVnYXRpdmUpOworICAgICAgaWYgKEVRIChsZWZ0LCBRbWludXMpKQorCWYtPnNpemVfaGlu dF9mbGFncyB8PSBYTmVnYXRpdmU7CisgICAgICBlbHNlIGlmIChUWVBFX1JBTkdFRF9JTlRF R0VSUCAoaW50LCBsZWZ0KSkKKwl7CisJICBsZWZ0cG9zID0gWElOVCAobGVmdCk7CisJICBp ZiAobGVmdHBvcyA8IDApCiAJICAgIGYtPnNpemVfaGludF9mbGFncyB8PSBYTmVnYXRpdmU7 Ci0JICB9Ci0JZWxzZSBpZiAoQ09OU1AgKGxlZnQpICYmIEVRIChYQ0FSIChsZWZ0KSwgUXBs dXMpCi0JCSAmJiBDT05TUCAoWENEUiAobGVmdCkpCi0JCSAmJiBUWVBFX1JBTkdFRF9JTlRF R0VSUCAoaW50LCBYQ0FSIChYQ0RSIChsZWZ0KSkpKQotCSAgewotCSAgICBsZWZ0cG9zID0g WElOVCAoWENBUiAoWENEUiAobGVmdCkpKTsKLQkgIH0KKwl9CisgICAgICBlbHNlIGlmIChD T05TUCAobGVmdCkgJiYgRVEgKFhDQVIgKGxlZnQpLCBRbWludXMpCisJICAgICAgICYmIENP TlNQIChYQ0RSIChsZWZ0KSkKKwkgICAgICAgJiYgUkFOR0VEX0lOVEVHRVJQICgtSU5UX01B WCwgWENBUiAoWENEUiAobGVmdCkpLCBJTlRfTUFYKSkKKwl7CisJICBsZWZ0cG9zID0gLSBY SU5UIChYQ0FSIChYQ0RSIChsZWZ0KSkpOworCSAgZi0+c2l6ZV9oaW50X2ZsYWdzIHw9IFhO ZWdhdGl2ZTsKKwl9CisgICAgICBlbHNlIGlmIChDT05TUCAobGVmdCkgJiYgRVEgKFhDQVIg KGxlZnQpLCBRcGx1cykKKwkgICAgICAgJiYgQ09OU1AgKFhDRFIgKGxlZnQpKQorCSAgICAg ICAmJiBUWVBFX1JBTkdFRF9JTlRFR0VSUCAoaW50LCBYQ0FSIChYQ0RSIChsZWZ0KSkpKQor CWxlZnRwb3MgPSBYSU5UIChYQ0FSIChYQ0RSIChsZWZ0KSkpOworICAgICAgZWxzZSBpZiAo RkxPQVRQIChsZWZ0KSkKKwlsZWZ0cG9zID0gZnJhbWVfZmxvYXQgKGYsIGxlZnQsIEZSQU1F X0ZMT0FUX0xFRlQsICZwYXJlbnRfZG9uZSwKKwkJCSAgICAgICAmb3V0ZXJfZG9uZSwgMCk7 CgotCWlmIChFUSAodG9wLCBRbWludXMpKQotCSAgZi0+c2l6ZV9oaW50X2ZsYWdzIHw9IFlO ZWdhdGl2ZTsKLQllbHNlIGlmIChUWVBFX1JBTkdFRF9JTlRFR0VSUCAoaW50LCB0b3ApKQot CSAgewotCSAgICB0b3Bwb3MgPSBYSU5UICh0b3ApOwotCSAgICBpZiAodG9wcG9zIDwgMCkK LQkgICAgICBmLT5zaXplX2hpbnRfZmxhZ3MgfD0gWU5lZ2F0aXZlOwotCSAgfQotCWVsc2Ug aWYgKENPTlNQICh0b3ApICYmIEVRIChYQ0FSICh0b3ApLCBRbWludXMpCi0JCSAmJiBDT05T UCAoWENEUiAodG9wKSkKLQkJICYmIFJBTkdFRF9JTlRFR0VSUCAoLUlOVF9NQVgsIFhDQVIg KFhDRFIgKHRvcCkpLCBJTlRfTUFYKSkKLQkgIHsKLQkgICAgdG9wcG9zID0gLSBYSU5UIChY Q0FSIChYQ0RSICh0b3ApKSk7CisgICAgICBpZiAoRVEgKHRvcCwgUW1pbnVzKSkKKwlmLT5z aXplX2hpbnRfZmxhZ3MgfD0gWU5lZ2F0aXZlOworICAgICAgZWxzZSBpZiAoVFlQRV9SQU5H RURfSU5URUdFUlAgKGludCwgdG9wKSkKKwl7CisJICB0b3Bwb3MgPSBYSU5UICh0b3ApOwor CSAgaWYgKHRvcHBvcyA8IDApCiAJICAgIGYtPnNpemVfaGludF9mbGFncyB8PSBZTmVnYXRp dmU7Ci0JICB9Ci0JZWxzZSBpZiAoQ09OU1AgKHRvcCkgJiYgRVEgKFhDQVIgKHRvcCksIFFw bHVzKQotCQkgJiYgQ09OU1AgKFhDRFIgKHRvcCkpCi0JCSAmJiBUWVBFX1JBTkdFRF9JTlRF R0VSUCAoaW50LCBYQ0FSIChYQ0RSICh0b3ApKSkpCi0JICB7Ci0JICAgIHRvcHBvcyA9IFhJ TlQgKFhDQVIgKFhDRFIgKHRvcCkpKTsKLQkgIH0KLQorCX0KKyAgICAgIGVsc2UgaWYgKENP TlNQICh0b3ApICYmIEVRIChYQ0FSICh0b3ApLCBRbWludXMpCisJICAgICAgICYmIENPTlNQ IChYQ0RSICh0b3ApKQorCSAgICAgICAmJiBSQU5HRURfSU5URUdFUlAgKC1JTlRfTUFYLCBY Q0FSIChYQ0RSICh0b3ApKSwgSU5UX01BWCkpCisJeworCSAgdG9wcG9zID0gLSBYSU5UIChY Q0FSIChYQ0RSICh0b3ApKSk7CisJICBmLT5zaXplX2hpbnRfZmxhZ3MgfD0gWU5lZ2F0aXZl OworCX0KKyAgICAgIGVsc2UgaWYgKENPTlNQICh0b3ApICYmIEVRIChYQ0FSICh0b3ApLCBR cGx1cykKKwkgICAgICAgJiYgQ09OU1AgKFhDRFIgKHRvcCkpCisJICAgICAgICYmIFRZUEVf UkFOR0VEX0lOVEVHRVJQIChpbnQsIFhDQVIgKFhDRFIgKHRvcCkpKSkKKwl0b3Bwb3MgPSBY SU5UIChYQ0FSIChYQ0RSICh0b3ApKSk7CisgICAgICBlbHNlIGlmIChGTE9BVFAgKHRvcCkp CisJdG9wcG9zID0gZnJhbWVfZmxvYXQgKGYsIHRvcCwgRlJBTUVfRkxPQVRfVE9QLCAmcGFy ZW50X2RvbmUsCisJCQkgICAgICAmb3V0ZXJfZG9uZSwgMCk7CgotCS8qIFN0b3JlIHRoZSBu dW1lcmljIHZhbHVlIG9mIHRoZSBwb3NpdGlvbi4gICovCi0JZi0+dG9wX3BvcyA9IHRvcHBv czsKLQlmLT5sZWZ0X3BvcyA9IGxlZnRwb3M7CisgICAgICAvKiBTdG9yZSB0aGUgbnVtZXJp YyB2YWx1ZSBvZiB0aGUgcG9zaXRpb24uICAqLworICAgICAgZi0+dG9wX3BvcyA9IHRvcHBv czsKKyAgICAgIGYtPmxlZnRfcG9zID0gbGVmdHBvczsKCi0JZi0+d2luX2dyYXZpdHkgPSBO b3J0aFdlc3RHcmF2aXR5OworICAgICAgZi0+d2luX2dyYXZpdHkgPSBOb3J0aFdlc3RHcmF2 aXR5OwoKLQkvKiBBY3R1YWxseSBzZXQgdGhhdCBwb3NpdGlvbiwgYW5kIGNvbnZlcnQgdG8g YWJzb2x1dGUuICAqLwotCXhfc2V0X29mZnNldCAoZiwgbGVmdHBvcywgdG9wcG9zLCAtMSk7 Ci0gICAgICB9CisgICAgICAvKiBBY3R1YWxseSBzZXQgdGhhdCBwb3NpdGlvbiwgYW5kIGNv bnZlcnQgdG8gYWJzb2x1dGUuICAqLworICAgICAgeF9zZXRfb2Zmc2V0IChmLCBsZWZ0cG9z LCB0b3Bwb3MsIC0xKTsKKyAgICB9CgotICAgIGlmIChmdWxsc2NyZWVuX2NoYW5nZSkKLSAg ICAgIHsKLQlMaXNwX09iamVjdCBvbGRfdmFsdWUgPSBnZXRfZnJhbWVfcGFyYW0gKGYsIFFm dWxsc2NyZWVuKTsKKyAgaWYgKGZ1bGxzY3JlZW5fY2hhbmdlKQorICAgIHsKKyAgICAgIExp c3BfT2JqZWN0IG9sZF92YWx1ZSA9IGdldF9mcmFtZV9wYXJhbSAoZiwgUWZ1bGxzY3JlZW4p OwoKLQlmcmFtZV9zaXplX2hpc3RvcnlfYWRkCi0JICAoZiwgUXhfc2V0X2Z1bGxzY3JlZW4s IDAsIDAsIGxpc3QyIChvbGRfdmFsdWUsIGZ1bGxzY3JlZW4pKTsKKyAgICAgIGZyYW1lX3Np emVfaGlzdG9yeV9hZGQKKwkoZiwgUXhfc2V0X2Z1bGxzY3JlZW4sIDAsIDAsIGxpc3QyIChv bGRfdmFsdWUsIGZ1bGxzY3JlZW4pKTsKCi0Jc3RvcmVfZnJhbWVfcGFyYW0gKGYsIFFmdWxs c2NyZWVuLCBmdWxsc2NyZWVuKTsKLQlpZiAoIUVRIChmdWxsc2NyZWVuLCBvbGRfdmFsdWUp KQotCSAgeF9zZXRfZnVsbHNjcmVlbiAoZiwgZnVsbHNjcmVlbiwgb2xkX3ZhbHVlKTsKLSAg ICAgIH0KKyAgICAgIHN0b3JlX2ZyYW1lX3BhcmFtIChmLCBRZnVsbHNjcmVlbiwgZnVsbHNj cmVlbik7CisgICAgICBpZiAoIUVRIChmdWxsc2NyZWVuLCBvbGRfdmFsdWUpKQorCXhfc2V0 X2Z1bGxzY3JlZW4gKGYsIGZ1bGxzY3JlZW4sIG9sZF92YWx1ZSk7CisgICAgfQoKCiAjaWZk ZWYgSEFWRV9YX1dJTkRPV1MKLSAgICBpZiAoKCFOSUxQIChpY29uX2xlZnQpIHx8ICFOSUxQ IChpY29uX3RvcCkpCi0JJiYgISAoaWNvbl9sZWZ0X25vX2NoYW5nZSAmJiBpY29uX3RvcF9u b19jaGFuZ2UpKQotICAgICAgeF93bV9zZXRfaWNvbl9wb3NpdGlvbiAoZiwgWElOVCAoaWNv bl9sZWZ0KSwgWElOVCAoaWNvbl90b3ApKTsKKyAgaWYgKCghTklMUCAoaWNvbl9sZWZ0KSB8 fCAhTklMUCAoaWNvbl90b3ApKQorICAgICAgJiYgISAoaWNvbl9sZWZ0X25vX2NoYW5nZSAm JiBpY29uX3RvcF9ub19jaGFuZ2UpKQorICAgIHhfd21fc2V0X2ljb25fcG9zaXRpb24gKGYs IFhJTlQgKGljb25fbGVmdCksIFhJTlQgKGljb25fdG9wKSk7CiAjZW5kaWYgLyogSEFWRV9Y X1dJTkRPV1MgKi8KLSAgfQoKICAgU0FGRV9GUkVFICgpOwogfQpAQCAtMzk5MCw3ICs0NDEz LDYgQEAgc3RydWN0IGZyYW1lX3Bhcm1fdGFibGUgewogICAgICAgYWRqdXN0X2ZyYW1lX2ds eXBocyAoZik7CiAgICAgICBTRVRfRlJBTUVfR0FSQkFHRUQgKGYpOwogICAgIH0KLQogfQoK IHZvaWQKQEAgLTQyMDQsNiArNDYyNiwyMiBAQCBzdHJ1Y3QgZnJhbWVfcGFybV90YWJsZSB7 CiAgIHJldHVybjsKIH0KCisKKy8qKgorICogeF9zZXRfbm9fc3BlY2lhbF9nbHlwaHM6Cisg KgorICogU2V0IGZyYW1lIEYncyBgbm8tc3BlY2lhbC1nbHlwaHMnIHBhcmFtZXRlciB3aGlj aCwgaWYgbm9uLW5pbCwKKyAqIHN1cHByZXNzZXMgdGhlIGRpc3BsYXkgb2YgdHJ1bmNhdGlv biBhbmQgY29udGludWF0aW9uIGdseXBocworICogb3V0c2lkZSBmcmluZ2VzLgorICovCit2 b2lkCit4X3NldF9ub19zcGVjaWFsX2dseXBocyAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09i amVjdCBuZXdfdmFsdWUsIExpc3BfT2JqZWN0IG9sZF92YWx1ZSkKK3sKKyAgaWYgKCFFUSAo bmV3X3ZhbHVlLCBvbGRfdmFsdWUpKQorICAgIEZSQU1FX05PX1NQRUNJQUxfR0xZUEhTIChm KSA9ICFOSUxQIChuZXdfdmFsdWUpOworfQorCisKICNpZm5kZWYgSEFWRV9OUwoKIC8qIE5v bi16ZXJvIGlmIG1vdXNlIGlzIGdyYWJiZWQgb24gRFBZSU5GTwpAQCAtNDc1OSw2ICs1MTk3 LDcgQEAgb3IgYSBsaXN0ICgtIE4pIG1lYW5pbmcgLU4gcGl4ZWxzIHJlbGF0aXZlIHRvIGJv dHRvbS9yaWdodCBjb3JuZXIuCiAgIExpc3BfT2JqZWN0IGhlaWdodCwgd2lkdGgsIHVzZXJf c2l6ZSwgdG9wLCBsZWZ0LCB1c2VyX3Bvc2l0aW9uOwogICBsb25nIHdpbmRvd19wcm9tcHRp bmcgPSAwOwogICBEaXNwbGF5X0luZm8gKmRweWluZm8gPSBGUkFNRV9ESVNQTEFZX0lORk8g KGYpOworICBpbnQgcGFyZW50X2RvbmUgPSAtMSwgb3V0ZXJfZG9uZSA9IC0xOwoKICAgLyog RGVmYXVsdCB2YWx1ZXMgaWYgd2UgZmFsbCB0aHJvdWdoLgogICAgICBBY3R1YWxseSwgaWYg dGhhdCBoYXBwZW5zIHdlIHNob3VsZCBnZXQKQEAgLTQ4MjMsNiArNTI2MiwyMSBAQCBvciBh IGxpc3QgKC0gTikgbWVhbmluZyAtTiBwaXhlbHMgcmVsYXRpdmUgdG8gYm90dG9tL3JpZ2h0 IGNvcm5lci4KIAkgICAgICBmLT5pbmhpYml0X2hvcml6b250YWxfcmVzaXplID0gdHJ1ZTsK IAkgICAgICAqeF93aWR0aCA9IFhJTlQgKFhDRFIgKHdpZHRoKSk7CiAJICAgIH0KKwkgIGVs c2UgaWYgKEZMT0FUUCAod2lkdGgpKQorCSAgICB7CisJICAgICAgZG91YmxlIGRfd2lkdGgg PSBYRkxPQVRfREFUQSAod2lkdGgpOworCisJICAgICAgaWYgKGRfd2lkdGggPCAwLjAgfHwg ZF93aWR0aCA+IDEuMCkKKwkJeHNpZ25hbDEgKFFhcmdzX291dF9vZl9yYW5nZSwgd2lkdGgp OworCSAgICAgIGVsc2UKKwkJeworCQkgIGludCBuZXdfd2lkdGggPSBmcmFtZV9mbG9hdCAo Ziwgd2lkdGgsIEZSQU1FX0ZMT0FUX1dJRFRILAorCQkJCQkgICAgICAgJnBhcmVudF9kb25l LCAmb3V0ZXJfZG9uZSwgLTEpOworCisJCSAgaWYgKG5ld193aWR0aCA+IC0xKQorCQkgICAg U0VUX0ZSQU1FX1dJRFRIIChmLCBuZXdfd2lkdGgpOworCQl9CisJICAgIH0KIAkgIGVsc2UK IAkgICAgewogCSAgICAgIENIRUNLX05VTUJFUiAod2lkdGgpOwpAQCAtNDg0NSw2ICs1Mjk5 LDIxIEBAIG9yIGEgbGlzdCAoLSBOKSBtZWFuaW5nIC1OIHBpeGVscyByZWxhdGl2ZSB0byBi b3R0b20vcmlnaHQgY29ybmVyLgogCSAgICAgIGYtPmluaGliaXRfdmVydGljYWxfcmVzaXpl ID0gdHJ1ZTsKIAkgICAgICAqeF9oZWlnaHQgPSBYSU5UIChYQ0RSIChoZWlnaHQpKTsKIAkg ICAgfQorCSAgZWxzZSBpZiAoRkxPQVRQIChoZWlnaHQpKQorCSAgICB7CisJICAgICAgZG91 YmxlIGRfaGVpZ2h0ID0gWEZMT0FUX0RBVEEgKGhlaWdodCk7CisKKwkgICAgICBpZiAoZF9o ZWlnaHQgPCAwLjAgfHwgZF9oZWlnaHQgPiAxLjApCisJCXhzaWduYWwxIChRYXJnc19vdXRf b2ZfcmFuZ2UsIGhlaWdodCk7CisJICAgICAgZWxzZQorCQl7CisJCSAgaW50IG5ld19oZWln aHQgPSBmcmFtZV9mbG9hdCAoZiwgaGVpZ2h0LCBGUkFNRV9GTE9BVF9IRUlHSFQsCisJCQkJ CQkmcGFyZW50X2RvbmUsICZvdXRlcl9kb25lLCAtMSk7CisKKwkJICBpZiAobmV3X2hlaWdo dCA+IC0xKQorCQkgICAgU0VUX0ZSQU1FX0hFSUdIVCAoZiwgbmV3X2hlaWdodCk7CisJCX0K KwkgICAgfQogCSAgZWxzZQogCSAgICB7CiAJICAgICAgQ0hFQ0tfTlVNQkVSIChoZWlnaHQp OwpAQCAtNDg4NSw2ICs1MzU0LDkgQEAgb3IgYSBsaXN0ICgtIE4pIG1lYW5pbmcgLU4gcGl4 ZWxzIHJlbGF0aXZlIHRvIGJvdHRvbS9yaWdodCBjb3JuZXIuCiAJewogCSAgZi0+dG9wX3Bv cyA9IFhJTlQgKFhDQVIgKFhDRFIgKHRvcCkpKTsKIAl9CisgICAgICBlbHNlIGlmIChGTE9B VFAgKHRvcCkpCisJZi0+dG9wX3BvcyA9IGZyYW1lX2Zsb2F0IChmLCB0b3AsIEZSQU1FX0ZM T0FUX1RPUCwgJnBhcmVudF9kb25lLAorCQkJCSAgJm91dGVyX2RvbmUsIDApOwogICAgICAg ZWxzZSBpZiAoRVEgKHRvcCwgUXVuYm91bmQpKQogCWYtPnRvcF9wb3MgPSAwOwogICAgICAg ZWxzZQpAQCAtNDkxMyw2ICs1Mzg1LDkgQEAgb3IgYSBsaXN0ICgtIE4pIG1lYW5pbmcgLU4g cGl4ZWxzIHJlbGF0aXZlIHRvIGJvdHRvbS9yaWdodCBjb3JuZXIuCiAJewogCSAgZi0+bGVm dF9wb3MgPSBYSU5UIChYQ0FSIChYQ0RSIChsZWZ0KSkpOwogCX0KKyAgICAgIGVsc2UgaWYg KEZMT0FUUCAobGVmdCkpCisJZi0+bGVmdF9wb3MgPSBmcmFtZV9mbG9hdCAoZiwgdG9wLCBG UkFNRV9GTE9BVF9MRUZULCAmcGFyZW50X2RvbmUsCisJCQkJICAgJm91dGVyX2RvbmUsIDAp OwogICAgICAgZWxzZSBpZiAoRVEgKGxlZnQsIFF1bmJvdW5kKSkKIAlmLT5sZWZ0X3BvcyA9 IDA7CiAgICAgICBlbHNlCkBAIC01MDcxLDEyICs1NTQ2LDE0IEBAIG9yIGEgbGlzdCAoLSBO KSBtZWFuaW5nIC1OIHBpeGVscyByZWxhdGl2ZSB0byBib3R0b20vcmlnaHQgY29ybmVyLgog ICBERUZTWU0gKFFmcmFtZXAsICJmcmFtZXAiKTsKICAgREVGU1lNIChRZnJhbWVfbGl2ZV9w LCAiZnJhbWUtbGl2ZS1wIik7CiAgIERFRlNZTSAoUWZyYW1lX3dpbmRvd3NfbWluX3NpemUs ICJmcmFtZS13aW5kb3dzLW1pbi1zaXplIik7CisgIERFRlNZTSAoUWRpc3BsYXlfbW9uaXRv cl9hdHRyaWJ1dGVzX2xpc3QsICJkaXNwbGF5LW1vbml0b3ItYXR0cmlidXRlcy1saXN0Iik7 CiAgIERFRlNZTSAoUXdpbmRvd19fcGl4ZWxfdG9fdG90YWwsICJ3aW5kb3ctLXBpeGVsLXRv LXRvdGFsIik7CiAgIERFRlNZTSAoUWV4cGxpY2l0X25hbWUsICJleHBsaWNpdC1uYW1lIik7 CiAgIERFRlNZTSAoUWhlaWdodCwgImhlaWdodCIpOwogICBERUZTWU0gKFFpY29uLCAiaWNv biIpOwogICBERUZTWU0gKFFtaW5pYnVmZmVyLCAibWluaWJ1ZmZlciIpOwogICBERUZTWU0g KFF1bmRlY29yYXRlZCwgInVuZGVjb3JhdGVkIik7CisgIERFRlNZTSAoUW5vX3NwZWNpYWxf Z2x5cGhzLCAibm8tc3BlY2lhbC1nbHlwaHMiKTsKICAgREVGU1lNIChRcGFyZW50X2ZyYW1l LCAicGFyZW50LWZyYW1lIik7CiAgIERFRlNZTSAoUXNraXBfdGFza2JhciwgInNraXAtdGFz a2JhciIpOwogICBERUZTWU0gKFFub19mb2N1c19vbl9tYXAsICJuby1mb2N1cy1vbi1tYXAi KTsKQEAgLTUxMjksNiArNTYwNiw3IEBAIG9yIGEgbGlzdCAoLSBOKSBtZWFuaW5nIC1OIHBp eGVscyByZWxhdGl2ZSB0byBib3R0b20vcmlnaHQgY29ybmVyLgogICBERUZTWU0gKFFmcmFt ZXMsICJmcmFtZXMiKTsKICAgREVGU1lNIChRc291cmNlLCAic291cmNlIik7CgorICBERUZT WU0gKFFmcmFtZV9lZGdlcywgImZyYW1lLWVkZ2VzIik7CiAgIERFRlNZTSAoUW91dGVyX2Vk Z2VzLCAib3V0ZXItZWRnZXMiKTsKICAgREVGU1lNIChRb3V0ZXJfcG9zaXRpb24sICJvdXRl ci1wb3NpdGlvbiIpOwogICBERUZTWU0gKFFvdXRlcl9zaXplLCAib3V0ZXItc2l6ZSIpOwpA QCAtNTIyMCw2ICs1Njk4LDExIEBAIG9yIGEgbGlzdCAoLSBOKSBtZWFuaW5nIC1OIHBpeGVs cyByZWxhdGl2ZSB0byBib3R0b20vcmlnaHQgY29ybmVyLgogICBERUZTWU0gKFFtaW5fd2lk dGgsICJtaW4td2lkdGgiKTsKICAgREVGU1lNIChRbWluX2hlaWdodCwgIm1pbi1oZWlnaHQi KTsKICAgREVGU1lNIChRbW91c2Vfd2hlZWxfZnJhbWUsICJtb3VzZS13aGVlbC1mcmFtZSIp OworICBERUZTWU0gKFFrZWVwX3JhdGlvLCAia2VlcC1yYXRpbyIpOworICBERUZTWU0gKFF3 aWR0aF9vbmx5LCAid2lkdGgtb25seSIpOworICBERUZTWU0gKFFoZWlnaHRfb25seSwgImhl aWdodC1vbmx5Iik7CisgIERFRlNZTSAoUWxlZnRfb25seSwgImxlZnQtb25seSIpOworICBE RUZTWU0gKFF0b3Bfb25seSwgInRvcC1vbmx5Iik7CgogICB7CiAgICAgaW50IGk7CkBAIC01 NTY0LDggKzYwNDcsOCBAQCBUaGlzIHZhcmlhYmxlIGlzIGVmZmVjdGl2ZSBvbmx5IHdpdGgg dGhlIFggdG9vbGtpdCAoYW5kIHRoZXJlIG9ubHkgd2hlbgogICBkZWZzdWJyICgmU21vZGlm eV9mcmFtZV9wYXJhbWV0ZXJzKTsKICAgZGVmc3ViciAoJlNmcmFtZV9jaGFyX2hlaWdodCk7 CiAgIGRlZnN1YnIgKCZTZnJhbWVfY2hhcl93aWR0aCk7Ci0gIGRlZnN1YnIgKCZTZnJhbWVf cGl4ZWxfaGVpZ2h0KTsKLSAgZGVmc3ViciAoJlNmcmFtZV9waXhlbF93aWR0aCk7CisgIGRl ZnN1YnIgKCZTZnJhbWVfbmF0aXZlX2hlaWdodCk7CisgIGRlZnN1YnIgKCZTZnJhbWVfbmF0 aXZlX3dpZHRoKTsKICAgZGVmc3ViciAoJlNmcmFtZV90ZXh0X2NvbHMpOwogICBkZWZzdWJy ICgmU2ZyYW1lX3RleHRfbGluZXMpOwogICBkZWZzdWJyICgmU2ZyYW1lX3RvdGFsX2NvbHMp OwpAQCAtNTU3NSw3ICs2MDU4LDcgQEAgVGhpcyB2YXJpYWJsZSBpcyBlZmZlY3RpdmUgb25s eSB3aXRoIHRoZSBYIHRvb2xraXQgKGFuZCB0aGVyZSBvbmx5IHdoZW4KICAgZGVmc3ViciAo JlNzY3JvbGxfYmFyX3dpZHRoKTsKICAgZGVmc3ViciAoJlNzY3JvbGxfYmFyX2hlaWdodCk7 CiAgIGRlZnN1YnIgKCZTZnJpbmdlX3dpZHRoKTsKLSAgZGVmc3ViciAoJlNib3JkZXJfd2lk dGgpOworICBkZWZzdWJyICgmU2ZyYW1lX2ludGVybmFsX2JvcmRlcl93aWR0aCk7CiAgIGRl ZnN1YnIgKCZTcmlnaHRfZGl2aWRlcl93aWR0aCk7CiAgIGRlZnN1YnIgKCZTYm90dG9tX2Rp dmlkZXJfd2lkdGgpOwogICBkZWZzdWJyICgmU3Rvb2xfYmFyX3BpeGVsX3dpZHRoKTsKZGlm ZiAtLWdpdCBhL3NyYy9mcmFtZS5oIGIvc3JjL2ZyYW1lLmgKaW5kZXggNGFhN2MzNC4uMmZl YjA5YiAxMDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmgKKysrIGIvc3JjL2ZyYW1lLmgKQEAgLTUy LDYgKzUyLDE5IEBAIGVudW0gel9ncm91cAogICB6X2dyb3VwX2JlbG93LAogICB6X2dyb3Vw X2Fib3ZlX3N1c3BlbmRlZCwKIH07CisKK2VudW0gaW50ZXJuYWxfYm9yZGVyX3BhcnQKKyAg eworICAgSU5URVJOQUxfQk9SREVSX05PTkUsCisgICBJTlRFUk5BTF9CT1JERVJfTEVGVF9F REdFLAorICAgSU5URVJOQUxfQk9SREVSX1RPUF9MRUZUX0NPUk5FUiwKKyAgIElOVEVSTkFM X0JPUkRFUl9UT1BfRURHRSwKKyAgIElOVEVSTkFMX0JPUkRFUl9UT1BfUklHSFRfQ09STkVS LAorICAgSU5URVJOQUxfQk9SREVSX1JJR0hUX0VER0UsCisgICBJTlRFUk5BTF9CT1JERVJf Qk9UVE9NX1JJR0hUX0NPUk5FUiwKKyAgIElOVEVSTkFMX0JPUkRFUl9CT1RUT01fRURHRSwK KyAgIElOVEVSTkFMX0JPUkRFUl9CT1RUT01fTEVGVF9DT1JORVIsCisgIH07CiAjZW5kaWYg LyogSEFWRV9XSU5ET1dfU1lTVEVNICovCgogLyogVGhlIHN0cnVjdHVyZSByZXByZXNlbnRp bmcgYSBmcmFtZS4gICovCkBAIC0zNTQsNyArMzY3LDExIEBAIHN0cnVjdCBmcmFtZQoKICAg LyogVGhlIHotZ3JvdXAgdGhpcyBmcmFtZSdzIHdpbmRvdyBiZWxvbmdzIHRvLiAqLwogICBF TlVNX0JGICh6X2dyb3VwKSB6X2dyb3VwIDogMjsKLSNlbmRpZiAvKiBIQVZFX1dJTkRPV19T WVNURU0gYW5kIG5vdCBIQVZFX05TICovCisKKyAgLyogTm9uLXplcm8gaWYgZGlzcGxheSBv ZiB0cnVuY2F0aW9uIGFuZCBjb250aW51YXRpb24gZ2x5cGhzIG91dHNpZGUKKyAgICAgdGhl IGZyaW5nZXMgaXMgc3VwcHJlc3NlZC4gICovCisgIGJvb2xfYmYgbm9fc3BlY2lhbF9nbHlw aHMgOiAxOworI2VuZGlmIC8qIEhBVkVfV0lORE9XX1NZU1RFTSAqLwoKICAgLyogV2hldGhl ciBuZXdfaGVpZ2h0IGFuZCBuZXdfd2lkdGggc2hhbGwgYmUgaW50ZXJwcmV0ZWQKICAgICAg aW4gcGl4ZWxzLiAgKi8KQEAgLTkyOCw2ICs5NDUsNyBAQCBzdHJ1Y3QgZnJhbWUKICNkZWZp bmUgRlJBTUVfU0tJUF9UQVNLQkFSKGYpICgoZiktPnNraXBfdGFza2JhcikKICNkZWZpbmUg RlJBTUVfTk9fRk9DVVNfT05fTUFQKGYpICgoZiktPm5vX2ZvY3VzX29uX21hcCkKICNkZWZp bmUgRlJBTUVfTk9fQUNDRVBUX0ZPQ1VTKGYpICgoZiktPm5vX2FjY2VwdF9mb2N1cykKKyNk ZWZpbmUgRlJBTUVfTk9fU1BFQ0lBTF9HTFlQSFMoZikgKChmKS0+bm9fc3BlY2lhbF9nbHlw aHMpCiAjZGVmaW5lIEZSQU1FX1pfR1JPVVAoZikgKChmKS0+el9ncm91cCkKICNkZWZpbmUg RlJBTUVfWl9HUk9VUF9OT05FKGYpICgoZiktPnpfZ3JvdXAgPT0gel9ncm91cF9ub25lKQog I2RlZmluZSBGUkFNRV9aX0dST1VQX0FCT1ZFKGYpICgoZiktPnpfZ3JvdXAgPT0gel9ncm91 cF9hYm92ZSkKQEAgLTk0MSw2ICs5NTksNyBAQCBzdHJ1Y3QgZnJhbWUKICNkZWZpbmUgRlJB TUVfU0tJUF9UQVNLQkFSKGYpICgodm9pZCkgZiwgMCkKICNkZWZpbmUgRlJBTUVfTk9fRk9D VVNfT05fTUFQKGYpICgodm9pZCkgZiwgMCkKICNkZWZpbmUgRlJBTUVfTk9fQUNDRVBUX0ZP Q1VTKGYpICgodm9pZCkgZiwgMCkKKyNkZWZpbmUgRlJBTUVfTk9fU1BFQ0lBTF9HTFlQSFMo ZikgKCh2b2lkKSBmLCAwKQogI2RlZmluZSBGUkFNRV9aX0dST1VQKGYpICgodm9pZCkgZiwg el9ncm91cF9ub25lKQogI2RlZmluZSBGUkFNRV9aX0dST1VQX05PTkUoZikgKCh2b2lkKSBm LCB0cnVlKQogI2RlZmluZSBGUkFNRV9aX0dST1VQX0FCT1ZFKGYpICgodm9pZCkgZiwgZmFs c2UpCkBAIC0xMjg4LDE5ICsxMzA3LDIwIEBAIGV4dGVybiB2b2lkIGZyYW1lX3NpemVfaGlz dG9yeV9hZGQgKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmplY3QgZnVuX3N5bWJvbCwKICAg cmV0dXJuIEZSQU1FX0xFRlRfRlJJTkdFX1dJRFRIIChmKSArIEZSQU1FX1JJR0hUX0ZSSU5H RV9XSURUSCAoZik7CiB9CgotLyogUGl4ZWwtd2lkdGggb2YgaW50ZXJuYWwgYm9yZGVyIGxp bmVzICovCisvKiBQaXhlbC13aWR0aCBvZiBpbnRlcm5hbCBib3JkZXIgbGluZXMuICAqLwog SU5MSU5FIGludAogRlJBTUVfSU5URVJOQUxfQk9SREVSX1dJRFRIIChzdHJ1Y3QgZnJhbWUg KmYpCiB7CiAgIHJldHVybiBmcmFtZV9kaW1lbnNpb24gKGYtPmludGVybmFsX2JvcmRlcl93 aWR0aCk7CiB9CgotLyogUGl4ZWwtc2l6ZSBvZiB3aW5kb3cgZGl2aWRlciBsaW5lcyAqLwor LyogUGl4ZWwtc2l6ZSBvZiB3aW5kb3cgZGl2aWRlciBsaW5lcy4gICovCiBJTkxJTkUgaW50 CiBGUkFNRV9SSUdIVF9ESVZJREVSX1dJRFRIIChzdHJ1Y3QgZnJhbWUgKmYpCiB7CiAgIHJl dHVybiBmcmFtZV9kaW1lbnNpb24gKGYtPnJpZ2h0X2RpdmlkZXJfd2lkdGgpOwogfQorCiBJ TkxJTkUgaW50CiBGUkFNRV9CT1RUT01fRElWSURFUl9XSURUSCAoc3RydWN0IGZyYW1lICpm KQogewpAQCAtMTQ5OCw2ICsxNTE4LDcgQEAgZXh0ZXJuIHZvaWQgeF9zZXRfYm90dG9tX2Rp dmlkZXJfd2lkdGggKHN0cnVjdCBmcmFtZSAqLCBMaXNwX09iamVjdCwKIGV4dGVybiBsb25n IHhfZmlndXJlX3dpbmRvd19zaXplIChzdHJ1Y3QgZnJhbWUgKiwgTGlzcF9PYmplY3QsIGJv b2wsIGludCAqLCBpbnQgKik7CgogZXh0ZXJuIHZvaWQgeF9zZXRfYWxwaGEgKHN0cnVjdCBm cmFtZSAqLCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QpOworZXh0ZXJuIHZvaWQgeF9zZXRf bm9fc3BlY2lhbF9nbHlwaHMgKHN0cnVjdCBmcmFtZSAqLCBMaXNwX09iamVjdCwgTGlzcF9P YmplY3QpOwoKIGV4dGVybiB2b2lkIHZhbGlkYXRlX3hfcmVzb3VyY2VfbmFtZSAodm9pZCk7 CgpAQCAtMTUyMSw2ICsxNTQyLDcgQEAgZXh0ZXJuIHZvaWQgeF9zZXRfd2luZG93X3NpemUg KHN0cnVjdCBmcmFtZSAqZiwgYm9vbCBjaGFuZ2VfZ3Jhdml0eSwKIGV4dGVybiB2b2lkIGZy ZWVfZnJhbWVfbWVudWJhciAoc3RydWN0IGZyYW1lICopOwogZXh0ZXJuIHZvaWQgeF9mcmVl X2ZyYW1lX3Jlc291cmNlcyAoc3RydWN0IGZyYW1lICopOwogZXh0ZXJuIGJvb2wgZnJhbWVf YW5jZXN0b3JfcCAoc3RydWN0IGZyYW1lICphZiwgc3RydWN0IGZyYW1lICpkZik7CitleHRl cm4gZW51bSBpbnRlcm5hbF9ib3JkZXJfcGFydCBmcmFtZV9pbnRlcm5hbF9ib3JkZXJfcGFy dCAoc3RydWN0IGZyYW1lICpmLCBpbnQgeCwgaW50IHkpOwoKICNpZiBkZWZpbmVkIEhBVkVf WF9XSU5ET1dTCiBleHRlcm4gdm9pZCB4X3dtX3NldF9pY29uX3Bvc2l0aW9uIChzdHJ1Y3Qg ZnJhbWUgKiwgaW50LCBpbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2tleWJvYXJkLmMgYi9zcmMv a2V5Ym9hcmQuYwppbmRleCA1NTQ4NmM2Li5iMjAyZDliIDEwMDY0NAotLS0gYS9zcmMva2V5 Ym9hcmQuYworKysgYi9zcmMva2V5Ym9hcmQuYwpAQCAtNTEyNiw2ICs1MTI2LDE3IEBAIGlu IHRoZSBzYW1lIHN0eWxlIGFzIChjdXJyZW50LXRpbWUpLgogICBTWU1CT0xfSU5ERVggKFFy aWdodG1vc3QpLCBTWU1CT0xfSU5ERVggKFFlbmRfc2Nyb2xsKSwgU1lNQk9MX0lOREVYIChR cmF0aW8pCiB9OwoKKy8qIEFuIGFycmF5IG9mIHN5bWJvbCBpbmRleGVzIG9mIGludGVybmFs IGJvcmRlciBwYXJ0cywgaW5kZXhlZCBieSBhbiBlbnVtCisgICBpbnRlcm5hbF9ib3JkZXJf cGFydCB2YWx1ZS4gIE5vdGUgdGhhdCBRbmlsIGNvcnJlc3BvbmRzIHRvCisgICBpbnRlcm5h bF9ib3JkZXJfcGFydF9ub25lIGFuZCBzaG91bGQgbm90IGFwcGVhciBpbiBMaXNwIGV2ZW50 cy4gICovCitzdGF0aWMgc2hvcnQgY29uc3QgaW50ZXJuYWxfYm9yZGVyX3BhcnRzW10gPSB7 CisgIFNZTUJPTF9JTkRFWCAoUW5pbCksIFNZTUJPTF9JTkRFWCAoUWxlZnRfZWRnZSksCisg IFNZTUJPTF9JTkRFWCAoUXRvcF9sZWZ0X2Nvcm5lciksIFNZTUJPTF9JTkRFWCAoUXRvcF9l ZGdlKSwKKyAgU1lNQk9MX0lOREVYIChRdG9wX3JpZ2h0X2Nvcm5lciksIFNZTUJPTF9JTkRF WCAoUXJpZ2h0X2VkZ2UpLAorICBTWU1CT0xfSU5ERVggKFFib3R0b21fcmlnaHRfY29ybmVy KSwgU1lNQk9MX0lOREVYIChRYm90dG9tX2VkZ2UpLAorICBTWU1CT0xfSU5ERVggKFFib3R0 b21fbGVmdF9jb3JuZXIpCit9OworCiAvKiBBIHZlY3RvciwgaW5kZXhlZCBieSBidXR0b24g bnVtYmVyLCBnaXZpbmcgdGhlIGRvd24tZ29pbmcgbG9jYXRpb24KICAgIG9mIGN1cnJlbnRs eSBkZXByZXNzZWQgYnV0dG9ucywgYm90aCBzY3JvbGwgYmFyIGFuZCBub24tc2Nyb2xsIGJh ci4KCkBAIC01MTYzLDE1ICs1MTc0LDE1IEBAIGluIHRoZSBzYW1lIHN0eWxlIGFzIChjdXJy ZW50LXRpbWUpLgogICBMaXNwX09iamVjdCBleHRyYV9pbmZvID0gUW5pbDsKICAgLyogQ29v cmRpbmF0ZSBwaXhlbCBwb3NpdGlvbnMgdG8gcmV0dXJuLiAgKi8KICAgaW50IHhyZXQgPSAw LCB5cmV0ID0gMDsKLSAgLyogVGhlIHdpbmRvdyB1bmRlciBmcmFtZSBwaXhlbCBjb29yZGlu YXRlcyAoeCx5KSAgKi8KLSAgTGlzcF9PYmplY3Qgd2luZG93ID0gZgorICAvKiBUaGUgd2lu ZG93IG9yIGZyYW1lIHVuZGVyIGZyYW1lIHBpeGVsIGNvb3JkaW5hdGVzICh4LHkpICAqLwor ICBMaXNwX09iamVjdCB3aW5kb3dfb3JfZnJhbWUgPSBmCiAgICAgPyB3aW5kb3dfZnJvbV9j b29yZGluYXRlcyAoZiwgWElOVCAoeCksIFhJTlQgKHkpLCAmcGFydCwgMCkKICAgICA6IFFu aWw7CgotICBpZiAoV0lORE9XUCAod2luZG93KSkKKyAgaWYgKFdJTkRPV1AgKHdpbmRvd19v cl9mcmFtZSkpCiAgICAgewogICAgICAgLyogSXQncyBhIGNsaWNrIGluIHdpbmRvdyBXSU5E T1cgYXQgZnJhbWUgY29vcmRpbmF0ZXMgKFgsWSkgICovCi0gICAgICBzdHJ1Y3Qgd2luZG93 ICp3ID0gWFdJTkRPVyAod2luZG93KTsKKyAgICAgIHN0cnVjdCB3aW5kb3cgKncgPSBYV0lO RE9XICh3aW5kb3dfb3JfZnJhbWUpOwogICAgICAgTGlzcF9PYmplY3Qgc3RyaW5nX2luZm8g PSBRbmlsOwogICAgICAgcHRyZGlmZl90IHRleHRwb3MgPSAwOwogICAgICAgaW50IGNvbCA9 IC0xLCByb3cgPSAtMTsKQEAgLTUzNjAsMTcgKzUzNzEsMzEgQEAgaW4gdGhlIHNhbWUgc3R5 bGUgYXMgKGN1cnJlbnQtdGltZSkuCiAJCQkJCSAgICAgICBtYWtlX251bWJlciAocm93KSks CiAJCQkJCWV4dHJhX2luZm8pKSk7CiAgICAgfQotICBlbHNlIGlmIChmICE9IDApCisKKyNp ZmRlZiBIQVZFX1dJTkRPV19TWVNURU0KKyAgZWxzZSBpZiAoZikKICAgICB7CiAgICAgICAv KiBSZXR1cm4gbW91c2UgcGl4ZWwgY29vcmRpbmF0ZXMgaGVyZS4gICovCi0gICAgICBYU0VU RlJBTUUgKHdpbmRvdywgZik7CisgICAgICBYU0VURlJBTUUgKHdpbmRvd19vcl9mcmFtZSwg Zik7CiAgICAgICB4cmV0ID0gWElOVCAoeCk7CiAgICAgICB5cmV0ID0gWElOVCAoeSk7CisK KyAgICAgIGlmIChGUkFNRV9MSVZFX1AgKGYpCisJICAmJiBGUkFNRV9JTlRFUk5BTF9CT1JE RVJfV0lEVEggKGYpID4gMAorCSAgJiYgIU5JTFAgKGdldF9mcmFtZV9wYXJhbSAoZiwgUWRy YWdfaW50ZXJuYWxfYm9yZGVyKSkpCisJeworCSAgZW51bSBpbnRlcm5hbF9ib3JkZXJfcGFy dCBwYXJ0CisJICAgID0gZnJhbWVfaW50ZXJuYWxfYm9yZGVyX3BhcnQgKGYsIHhyZXQsIHly ZXQpOworCisJICBwb3NuID0gYnVpbHRpbl9saXNwX3N5bWJvbCAoaW50ZXJuYWxfYm9yZGVy X3BhcnRzW3BhcnRdKTsKKwl9CiAgICAgfQorI2VuZGlmCisKICAgZWxzZQotICAgIHdpbmRv dyA9IFFuaWw7CisgICAgd2luZG93X29yX2ZyYW1lID0gUW5pbDsKCi0gIHJldHVybiBGY29u cyAod2luZG93LAorICByZXR1cm4gRmNvbnMgKHdpbmRvd19vcl9mcmFtZSwKIAkJRmNvbnMg KHBvc24sCiAJCSAgICAgICBGY29ucyAoRmNvbnMgKG1ha2VfbnVtYmVyICh4cmV0KSwKIAkJ CQkgICAgIG1ha2VfbnVtYmVyICh5cmV0KSksCkBAIC0xMTE1OCw2ICsxMTE4MywxNyBAQCBz dHJ1Y3QgZXZlbnRfaGVhZAogICBGc2V0IChRaW5wdXRfbWV0aG9kX2V4aXRfb25fZmlyc3Rf Y2hhciwgUW5pbCk7CiAgIEZzZXQgKFFpbnB1dF9tZXRob2RfdXNlX2VjaG9fYXJlYSwgUW5p bCk7CgorICAvKiBTeW1ib2xzIGZvciBkcmFnZ2luZyBpbnRlcm5hbCBib3JkZXJzLiAgKi8K KyAgREVGU1lNIChRZHJhZ19pbnRlcm5hbF9ib3JkZXIsICJkcmFnLWludGVybmFsLWJvcmRl ciIpOworICBERUZTWU0gKFFsZWZ0X2VkZ2UsICJsZWZ0LWVkZ2UiKTsKKyAgREVGU1lNIChR dG9wX2xlZnRfY29ybmVyLCAidG9wLWxlZnQtY29ybmVyIik7CisgIERFRlNZTSAoUXRvcF9l ZGdlLCAidG9wLWVkZ2UiKTsKKyAgREVGU1lNIChRdG9wX3JpZ2h0X2Nvcm5lciwgInRvcC1y aWdodC1jb3JuZXIiKTsKKyAgREVGU1lNIChRcmlnaHRfZWRnZSwgInJpZ2h0LWVkZ2UiKTsK KyAgREVGU1lNIChRYm90dG9tX3JpZ2h0X2Nvcm5lciwgImJvdHRvbS1yaWdodC1jb3JuZXIi KTsKKyAgREVGU1lNIChRYm90dG9tX2VkZ2UsICJib3R0b20tZWRnZSIpOworICBERUZTWU0g KFFib3R0b21fbGVmdF9jb3JuZXIsICJib3R0b20tbGVmdC1jb3JuZXIiKTsKKwogICAvKiBT eW1ib2xzIHRvIGhlYWQgZXZlbnRzLiAgKi8KICAgREVGU1lNIChRbW91c2VfbW92ZW1lbnQs ICJtb3VzZS1tb3ZlbWVudCIpOwogICBERUZTWU0gKFFzY3JvbGxfYmFyX21vdmVtZW50LCAi c2Nyb2xsLWJhci1tb3ZlbWVudCIpOwpkaWZmIC0tZ2l0IGEvc3JjL21pbmlidWYuYyBiL3Ny Yy9taW5pYnVmLmMKaW5kZXggMWJiZTI3Ni4uNGQ5MWI0OCAxMDA2NDQKLS0tIGEvc3JjL21p bmlidWYuYworKysgYi9zcmMvbWluaWJ1Zi5jCkBAIC04NzQsNiArODc0LDMwIEBACiAgIGlm IChtaW5pYnVmX2xldmVsID09IDApCiAgICAgcmVzaXplX21pbmlfd2luZG93IChYV0lORE9X ICh3aW5kb3cpLCAwKTsKCisgIC8qIERlYWwgd2l0aCBmcmFtZXMgdGhhdCBzaG91bGQgYmUg cmVtb3ZlZCB3aGVuIGV4aXRpbmcgdGhlCisgICAgIG1pbmlidWZmZXIuICAqLworICB7Cisg ICAgTGlzcF9PYmplY3QgZnJhbWVzLCBmcmFtZTEsIHZhbDsKKyAgICBzdHJ1Y3QgZnJhbWUg KmYxOworCisgICAgRk9SX0VBQ0hfRlJBTUUgKGZyYW1lcywgZnJhbWUxKQorICAgICAgewor CWYxID0gWEZSQU1FIChmcmFtZTEpOworCisJaWYgKChGUkFNRV9QQVJFTlRfRlJBTUUgKGYx KQorCSAgICAgfHwgIU5JTFAgKGdldF9mcmFtZV9wYXJhbSAoZjEsIFFkZWxldGVfYmVmb3Jl KSkpCisJICAgICYmICFOSUxQICh2YWwgPSAoZ2V0X2ZyYW1lX3BhcmFtIChmMSwgUW1pbmli dWZmZXJfZXhpdCkpKSkKKwkgIHsKKwkgICAgaWYgKEVRICh2YWwsIFFpY29uaWZ5X2ZyYW1l KSkKKwkgICAgICBGaWNvbmlmeV9mcmFtZSAoZnJhbWUxKTsKKwkgICAgZWxzZSBpZiAoRVEg KHZhbCwgUWRlbGV0ZV9mcmFtZSkpCisJICAgICAgRmRlbGV0ZV9mcmFtZSAoZnJhbWUxLCBR bmlsKTsKKwkgICAgZWxzZQorCSAgICAgIEZtYWtlX2ZyYW1lX2ludmlzaWJsZSAoZnJhbWUx LCBRbmlsKTsKKwkgIH0KKyAgICAgIH0KKyAgfQorCiAgIC8qIEluIGNhc2UgdGhlIHByZXZp b3VzIG1pbmlidWZmZXIgZGlzcGxheWVkIGluIHRoaXMgbWluaXdpbmRvdyBpcwogICAgICBk ZWFkLCB3ZSBtYXkga2VlcCBkaXNwbGF5aW5nIHRoaXMgYnVmZmVyICh0aG8gaXQncyBpbmFj dGl2ZSksIHNvIHJlc2V0IGl0LAogICAgICB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgbGVhdmUg YXJvdW5kIGJpbmRpbmdzIGFuZCBzdHVmZiB3aGljaCBvbmx5CkBAIC0xOTMwLDYgKzE5NTQs OCBAQAogICBERUZTWU0gKFFhY3RpdmF0ZV9pbnB1dF9tZXRob2QsICJhY3RpdmF0ZS1pbnB1 dC1tZXRob2QiKTsKICAgREVGU1lNIChRY2FzZV9mb2xkX3NlYXJjaCwgImNhc2UtZm9sZC1z ZWFyY2giKTsKICAgREVGU1lNIChRbWV0YWRhdGEsICJtZXRhZGF0YSIpOworICAvKiBBIGZy YW1lIHBhcmFtZXRlci4gICovCisgIERFRlNZTSAoUW1pbmlidWZmZXJfZXhpdCwgIm1pbmli dWZmZXItZXhpdCIpOwoKICAgREVGVkFSX0xJU1AgKCJyZWFkLWV4cHJlc3Npb24taGlzdG9y eSIsIFZyZWFkX2V4cHJlc3Npb25faGlzdG9yeSwKIAkgICAgICAgZG9jOiAvKiBBIGhpc3Rv cnkgbGlzdCBmb3IgYXJndW1lbnRzIHRoYXQgYXJlIExpc3AgZXhwcmVzc2lvbnMgdG8gZXZh bHVhdGUuCmRpZmYgLS1naXQgYS9zcmMvbnNmbnMubSBiL3NyYy9uc2Zucy5tCmluZGV4IGRi Y2UyNzkuLjY4ZWJhOGIgMTAwNjQ0Ci0tLSBhL3NyYy9uc2Zucy5tCisrKyBiL3NyYy9uc2Zu cy5tCkBAIC05ODQsNiArOTg0LDcgQEAgVHVybiB0aGUgaW5wdXQgbWVudSAoYW4gTlNNZW51 KSBpbnRvIGEgbGlzcCBsaXN0IGZvciB0cmFja2luZyBvbiBsaXNwIHNpZGUKICAgeF9zZXRf bm9fYWNjZXB0X2ZvY3VzLAogICB4X3NldF96X2dyb3VwLCAvKiB4X3NldF96X2dyb3VwICov CiAgIDAsIC8qIHhfc2V0X292ZXJyaWRlX3JlZGlyZWN0ICovCisgIHhfc2V0X25vX3NwZWNp YWxfZ2x5cGhzLAogfTsKCgpAQCAtMTI1Niw2ICsxMjU3LDggQEAgVHVybiB0aGUgaW5wdXQg bWVudSAoYW4gTlNNZW51KSBpbnRvIGEgbGlzcCBsaXN0IGZvciB0cmFja2luZyBvbiBsaXNw IHNpZGUKIAkJICAgICAgICJsZWZ0RnJpbmdlIiwgIkxlZnRGcmluZ2UiLCBSRVNfVFlQRV9O VU1CRVIpOwogICB4X2RlZmF1bHRfcGFyYW1ldGVyIChmLCBwYXJtcywgUXJpZ2h0X2ZyaW5n ZSwgUW5pbCwKIAkJICAgICAgICJyaWdodEZyaW5nZSIsICJSaWdodEZyaW5nZSIsIFJFU19U WVBFX05VTUJFUik7CisgIHhfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRbm9fc3Bl Y2lhbF9nbHlwaHMsIFFuaWwsCisJCSAgICAgICBOVUxMLCBOVUxMLCBSRVNfVFlQRV9CT09M RUFOKTsKCiAgIGluaXRfZnJhbWVfZmFjZXMgKGYpOwoKQEAgLTEzMjUsNiArMTMyOCwxNSBA QCBUdXJuIHRoZSBpbnB1dCBtZW51IChhbiBOU01lbnUpIGludG8gYSBsaXNwIGxpc3QgZm9y IHRyYWNraW5nIG9uIGxpc3Agc2lkZQogICBmLT5vdXRwdXRfZGF0YS5ucy0+aG91cmdsYXNz X2N1cnNvciA9IFtOU0N1cnNvciBkaXNhcHBlYXJpbmdJdGVtQ3Vyc29yXTsKICAgZi0+b3V0 cHV0X2RhdGEubnMtPmhvcml6b250YWxfZHJhZ19jdXJzb3IgPSBbTlNDdXJzb3IgcmVzaXpl TGVmdFJpZ2h0Q3Vyc29yXTsKICAgZi0+b3V0cHV0X2RhdGEubnMtPnZlcnRpY2FsX2RyYWdf Y3Vyc29yID0gW05TQ3Vyc29yIHJlc2l6ZVVwRG93bkN1cnNvcl07CisgIGYtPm91dHB1dF9k YXRhLm5zLT5sZWZ0X2VkZ2VfY3Vyc29yID0gW05TQ3Vyc29yIHJlc2l6ZUxlZnRSaWdodEN1 cnNvcl07CisgIGYtPm91dHB1dF9kYXRhLm5zLT50b3BfbGVmdF9jb3JuZXJfY3Vyc29yID0g W05TQ3Vyc29yIGFycm93Q3Vyc29yXTsKKyAgZi0+b3V0cHV0X2RhdGEubnMtPnRvcF9lZGdl X2N1cnNvciA9IFtOU0N1cnNvciByZXNpemVVcERvd25DdXJzb3JdOworICBmLT5vdXRwdXRf ZGF0YS5ucy0+dG9wX3JpZ2h0X2Nvcm5lcl9jdXJzb3IgPSBbTlNDdXJzb3IgYXJyb3dDdXJz b3JdOworICBmLT5vdXRwdXRfZGF0YS5ucy0+cmlnaHRfZWRnZV9jdXJzb3IgPSBbTlNDdXJz b3IgcmVzaXplTGVmdFJpZ2h0Q3Vyc29yXTsKKyAgZi0+b3V0cHV0X2RhdGEubnMtPmJvdHRv bV9yaWdodF9jb3JuZXJfY3Vyc29yID0gW05TQ3Vyc29yIGFycm93Q3Vyc29yXTsKKyAgZi0+ b3V0cHV0X2RhdGEubnMtPmJvdHRvbV9lZGdlX2N1cnNvciA9IFtOU0N1cnNvciByZXNpemVV cERvd25DdXJzb3JdOworICBmLT5vdXRwdXRfZGF0YS5ucy0+Ym90dG9tX2xlZnRfY29ybmVy X2N1cnNvciA9IFtOU0N1cnNvciBhcnJvd0N1cnNvcl07CisKICAgRlJBTUVfRElTUExBWV9J TkZPIChmKS0+dmVydGljYWxfc2Nyb2xsX2Jhcl9jdXJzb3IKICAgICAgPSBbTlNDdXJzb3Ig YXJyb3dDdXJzb3JdOwogICBGUkFNRV9ESVNQTEFZX0lORk8gKGYpLT5ob3Jpem9udGFsX3Nj cm9sbF9iYXJfY3Vyc29yCmRpZmYgLS1naXQgYS9zcmMvbnN0ZXJtLmggYi9zcmMvbnN0ZXJt LmgKaW5kZXggYmVkMGI5Mi4uODRmN2YwYSAxMDA2NDQKLS0tIGEvc3JjL25zdGVybS5oCisr KyBiL3NyYy9uc3Rlcm0uaApAQCAtOTU3LDYgKzk1NywxNCBAQCBzdHJ1Y3QgbnNfb3V0cHV0 CiAgIEN1cnNvciBob3VyZ2xhc3NfY3Vyc29yOwogICBDdXJzb3IgaG9yaXpvbnRhbF9kcmFn X2N1cnNvcjsKICAgQ3Vyc29yIHZlcnRpY2FsX2RyYWdfY3Vyc29yOworICBDdXJzb3IgbGVm dF9lZGdlX2N1cnNvcjsKKyAgQ3Vyc29yIHRvcF9sZWZ0X2Nvcm5lcl9jdXJzb3I7CisgIEN1 cnNvciB0b3BfZWRnZV9jdXJzb3I7CisgIEN1cnNvciB0b3BfcmlnaHRfY29ybmVyX2N1cnNv cjsKKyAgQ3Vyc29yIHJpZ2h0X2VkZ2VfY3Vyc29yOworICBDdXJzb3IgYm90dG9tX3JpZ2h0 X2Nvcm5lcl9jdXJzb3I7CisgIEN1cnNvciBib3R0b21fZWRnZV9jdXJzb3I7CisgIEN1cnNv ciBib3R0b21fbGVmdF9jb3JuZXJfY3Vyc29yOwoKICAgLyogTlMtc3BlY2lmaWMgKi8KICAg Q3Vyc29yIGN1cnJlbnRfcG9pbnRlcjsKZGlmZiAtLWdpdCBhL3NyYy93MzJmbnMuYyBiL3Ny Yy93MzJmbnMuYwppbmRleCBlNDkwNTg4Li5iMDg0MmI1IDEwMDY0NAotLS0gYS9zcmMvdzMy Zm5zLmMKKysrIGIvc3JjL3czMmZucy5jCkBAIC01ODg5LDYgKzU4ODksOCBAQCBzdHJ1Y3Qg ZnJhbWUgKgogCQkgICAgICAgTlVMTCwgTlVMTCwgUkVTX1RZUEVfQk9PTEVBTik7CiAgIHhf ZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcmFtZXRlcnMsIFFub19hY2NlcHRfZm9jdXMsIFFu aWwsCiAJCSAgICAgICBOVUxMLCBOVUxMLCBSRVNfVFlQRV9CT09MRUFOKTsKKyAgeF9kZWZh dWx0X3BhcmFtZXRlciAoZiwgcGFyYW1ldGVycywgUW5vX3NwZWNpYWxfZ2x5cGhzLCBRbmls LAorCQkgICAgICAgTlVMTCwgTlVMTCwgUkVTX1RZUEVfQk9PTEVBTik7CgogICAvKiBQcm9j ZXNzIGFscGhhIGhlcmUgKEJ1ZyMxNjYxOSkuICBPbiBYUCB0aGlzIGZhaWxzIHdpdGggY2hp bGQKICAgICAgZnJhbWVzLiAgRm9yIGBuby1mb2N1cy1vbi1tYXAnIGZyYW1lcyBkZWxheSBw cm9jZXNzaW5nIG9mIGFscGhhCkBAIC01OTU3LDYgKzU5NTksMTQgQEAgc3RydWN0IGZyYW1l ICoKICAgZi0+b3V0cHV0X2RhdGEudzMyLT5ob3VyZ2xhc3NfY3Vyc29yID0gdzMyX2xvYWRf Y3Vyc29yIChJRENfV0FJVCk7CiAgIGYtPm91dHB1dF9kYXRhLnczMi0+aG9yaXpvbnRhbF9k cmFnX2N1cnNvciA9IHczMl9sb2FkX2N1cnNvciAoSURDX1NJWkVXRSk7CiAgIGYtPm91dHB1 dF9kYXRhLnczMi0+dmVydGljYWxfZHJhZ19jdXJzb3IgPSB3MzJfbG9hZF9jdXJzb3IgKElE Q19TSVpFTlMpOworICBmLT5vdXRwdXRfZGF0YS53MzItPmxlZnRfZWRnZV9jdXJzb3IgPSB3 MzJfbG9hZF9jdXJzb3IgKElEQ19TSVpFV0UpOworICBmLT5vdXRwdXRfZGF0YS53MzItPnRv cF9sZWZ0X2Nvcm5lcl9jdXJzb3IgPSB3MzJfbG9hZF9jdXJzb3IgKElEQ19TSVpFTldTRSk7 CisgIGYtPm91dHB1dF9kYXRhLnczMi0+dG9wX2VkZ2VfY3Vyc29yID0gdzMyX2xvYWRfY3Vy c29yIChJRENfU0laRU5TKTsKKyAgZi0+b3V0cHV0X2RhdGEudzMyLT50b3BfcmlnaHRfY29y bmVyX2N1cnNvciA9IHczMl9sb2FkX2N1cnNvciAoSURDX1NJWkVORVNXKTsKKyAgZi0+b3V0 cHV0X2RhdGEudzMyLT5yaWdodF9lZGdlX2N1cnNvciA9IHczMl9sb2FkX2N1cnNvciAoSURD X1NJWkVXRSk7CisgIGYtPm91dHB1dF9kYXRhLnczMi0+Ym90dG9tX3JpZ2h0X2Nvcm5lcl9j dXJzb3IgPSB3MzJfbG9hZF9jdXJzb3IgKElEQ19TSVpFTldTRSk7CisgIGYtPm91dHB1dF9k YXRhLnczMi0+Ym90dG9tX2VkZ2VfY3Vyc29yID0gdzMyX2xvYWRfY3Vyc29yIChJRENfU0la RU5TKTsKKyAgZi0+b3V0cHV0X2RhdGEudzMyLT5ib3R0b21fbGVmdF9jb3JuZXJfY3Vyc29y ID0gdzMyX2xvYWRfY3Vyc29yIChJRENfU0laRU5FU1cpOwoKICAgZi0+b3V0cHV0X2RhdGEu dzMyLT5jdXJyZW50X2N1cnNvciA9IGYtPm91dHB1dF9kYXRhLnczMi0+bm9udGV4dF9jdXJz b3I7CgpAQCAtNzA0OSw2ICs3MDU5LDggQEAgc3RhdGljIHZvaWQgY29tcHV0ZV90aXBfeHkg KHN0cnVjdCBmcmFtZSAqLCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsCiAJCSAgICAgICAi Y3Vyc29yQ29sb3IiLCAiRm9yZWdyb3VuZCIsIFJFU19UWVBFX1NUUklORyk7CiAgIHhfZGVm YXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRYm9yZGVyX2NvbG9yLCBidWlsZF9zdHJpbmcg KCJibGFjayIpLAogCQkgICAgICAgImJvcmRlckNvbG9yIiwgIkJvcmRlckNvbG9yIiwgUkVT X1RZUEVfU1RSSU5HKTsKKyAgeF9kZWZhdWx0X3BhcmFtZXRlciAoZiwgcGFybXMsIFFub19z cGVjaWFsX2dseXBocywgUXQsCisJCSAgICAgICBOVUxMLCBOVUxMLCBSRVNfVFlQRV9CT09M RUFOKTsKCiAgIC8qIEluaXQgZmFjZXMgYmVmb3JlIHhfZGVmYXVsdF9wYXJhbWV0ZXIgaXMg Y2FsbGVkIGZvciB0aGUKICAgICAgc2Nyb2xsLWJhci13aWR0aCBwYXJhbWV0ZXIgYmVjYXVz ZSBvdGhlcndpc2Ugd2UgZW5kIHVwIGluCkBAIC04OTUwLDMzICs4OTYyLDQ3IEBAIHZhbHVl IGlzIGEgbGlzdCBvZiB0aGUgZm9ybSAoTEVGVCwgVE9QLCBSSUdIVCwgQk9UVE9NKS4gIEFs bCB2YWx1ZXMgYXJlCiAgIGlmIChFUSAodHlwZSwgUW91dGVyX2VkZ2VzKSkKICAgICB7CiAg ICAgICBSRUNUIHJlY3RhbmdsZTsKKyAgICAgIEJPT0wgc3VjY2VzcyA9IGZhbHNlOwoKICAg ICAgIGJsb2NrX2lucHV0ICgpOwogICAgICAgLyogT3V0ZXIgZnJhbWUgcmVjdGFuZ2xlLCBp bmNsdWRpbmcgb3V0ZXIgYm9yZGVycyBhbmQgdGl0bGUgYmFyLiAqLwotICAgICAgR2V0V2lu ZG93UmVjdCAoRlJBTUVfVzMyX1dJTkRPVyAoZiksICZyZWN0YW5nbGUpOworICAgICAgc3Vj Y2VzcyA9IEdldFdpbmRvd1JlY3QgKEZSQU1FX1czMl9XSU5ET1cgKGYpLCAmcmVjdGFuZ2xl KTsKICAgICAgIHVuYmxvY2tfaW5wdXQgKCk7CgotICAgICAgcmV0dXJuIGxpc3Q0IChtYWtl X251bWJlciAocmVjdGFuZ2xlLmxlZnQpLAotCQkgICAgbWFrZV9udW1iZXIgKHJlY3Rhbmds ZS50b3ApLAotCQkgICAgbWFrZV9udW1iZXIgKHJlY3RhbmdsZS5yaWdodCksCi0JCSAgICBt YWtlX251bWJlciAocmVjdGFuZ2xlLmJvdHRvbSkpOworICAgICAgaWYgKHN1Y2Nlc3MpCisJ cmV0dXJuIGxpc3Q0IChtYWtlX251bWJlciAocmVjdGFuZ2xlLmxlZnQpLAorCQkgICAgICBt YWtlX251bWJlciAocmVjdGFuZ2xlLnRvcCksCisJCSAgICAgIG1ha2VfbnVtYmVyIChyZWN0 YW5nbGUucmlnaHQpLAorCQkgICAgICBtYWtlX251bWJlciAocmVjdGFuZ2xlLmJvdHRvbSkp OworICAgICAgZWxzZQorCXJldHVybiBRbmlsOwogICAgIH0KICAgZWxzZQogICAgIHsKICAg ICAgIFJFQ1QgcmVjdGFuZ2xlOwogICAgICAgUE9JTlQgcHQ7CiAgICAgICBpbnQgbGVmdCwg dG9wLCByaWdodCwgYm90dG9tOworICAgICAgQk9PTCBzdWNjZXNzOwoKICAgICAgIGJsb2Nr X2lucHV0ICgpOwogICAgICAgLyogSW5uZXIgZnJhbWUgcmVjdGFuZ2xlLCBleGNsdWRpbmcg Ym9yZGVycyBhbmQgdGl0bGUgYmFyLiAgKi8KLSAgICAgIEdldENsaWVudFJlY3QgKEZSQU1F X1czMl9XSU5ET1cgKGYpLCAmcmVjdGFuZ2xlKTsKKyAgICAgIHN1Y2Nlc3MgPSBHZXRDbGll bnRSZWN0IChGUkFNRV9XMzJfV0lORE9XIChmKSwgJnJlY3RhbmdsZSk7CiAgICAgICAvKiBH ZXQgdG9wLWxlZnQgY29ybmVyIG9mIG5hdGl2ZSByZWN0YW5nbGUgaW4gc2NyZWVuCiAJIGNv b3JkaW5hdGVzLiAgKi8KKyAgICAgIGlmICghc3VjY2VzcykKKwl7CisJICB1bmJsb2NrX2lu cHV0ICgpOworCSAgcmV0dXJuIFFuaWw7CisJfQorCiAgICAgICBwdC54ID0gMDsKICAgICAg IHB0LnkgPSAwOwotICAgICAgQ2xpZW50VG9TY3JlZW4gKEZSQU1FX1czMl9XSU5ET1cgKGYp LCAmcHQpOworICAgICAgc3VjY2VzcyA9IENsaWVudFRvU2NyZWVuIChGUkFNRV9XMzJfV0lO RE9XIChmKSwgJnB0KTsKICAgICAgIHVuYmxvY2tfaW5wdXQgKCk7CgorICAgICAgaWYgKCFz dWNjZXNzKQorCXJldHVybiBRbmlsOworCiAgICAgICBsZWZ0ID0gcHQueDsKICAgICAgIHRv cCA9IHB0Lnk7CiAgICAgICByaWdodCA9IGxlZnQgKyByZWN0YW5nbGUucmlnaHQ7CkBAIC0x MDMzMCw2ICsxMDM1Niw3IEBAIGVudW0gTklfU2V2ZXJpdHkgewogICB4X3NldF9ub19hY2Nl cHRfZm9jdXMsCiAgIHhfc2V0X3pfZ3JvdXAsCiAgIDAsIC8qIHhfc2V0X292ZXJyaWRlX3Jl ZGlyZWN0ICovCisgIHhfc2V0X25vX3NwZWNpYWxfZ2x5cGhzLAogfTsKCiB2b2lkCmRpZmYg LS1naXQgYS9zcmMvdzMydGVybS5jIGIvc3JjL3czMnRlcm0uYwppbmRleCA3MTJiZGFlLi5j Mzc4MDVjIDEwMDY0NAotLS0gYS9zcmMvdzMydGVybS5jCisrKyBiL3NyYy93MzJ0ZXJtLmMK QEAgLTUwODYsNiArNTA4Niw1MSBAQCBzdGF0aWMgdm9pZCB4X2hvcml6b250YWxfc2Nyb2xs X2Jhcl9yZXBvcnRfbW90aW9uIChzdHJ1Y3QgZnJhbWUgKiosIExpc3BfT2JqZWN0CiAJICB9 CgogCWNhc2UgV01fV0lORE9XUE9TQ0hBTkdFRDoKKwkgIGYgPSB4X3dpbmRvd190b19mcmFt ZSAoZHB5aW5mbywgbXNnLm1zZy5od25kKTsKKworCSAgaWYgKGYpCisJICAgIHsKKwkgICAg ICBSRUNUIHJlY3Q7CisJICAgICAgaW50IC8qIHJvd3MsIGNvbHVtbnMsICovIHdpZHRoLCBo ZWlnaHQsIHRleHRfd2lkdGgsIHRleHRfaGVpZ2h0OworCisJICAgICAgaWYgKEdldENsaWVu dFJlY3QgKG1zZy5tc2cuaHduZCwgJnJlY3QpCisJCSAgLyogR2V0Q2xpZW50UmVjdCBldmlk ZW50bHkgcmV0dXJucyAoMCwgMCwgMCwgMCkgaWYKKwkJICAgICBjYWxsZWQgb24gYSBtaW5p bWl6ZWQgZnJhbWUuICBTdWNoICJkaW1lbnNpb25zIgorCQkgICAgIGFyZW4ndCB1c2VmdWwg YW55d2F5LiAgKi8KKwkJICAmJiAhKHJlY3QuYm90dG9tID09IDAKKwkJICAgICAgICYmIHJl Y3QudG9wID09IDAKKwkJICAgICAgICYmIHJlY3QubGVmdCA9PSAwCisJCSAgICAgICAmJiBy ZWN0LnJpZ2h0ID09IDApKQorCQl7CisJCSAgaGVpZ2h0ID0gcmVjdC5ib3R0b20gLSByZWN0 LnRvcDsKKwkJICB3aWR0aCA9IHJlY3QucmlnaHQgLSByZWN0LmxlZnQ7CisJCSAgdGV4dF93 aWR0aCA9IEZSQU1FX1BJWEVMX1RPX1RFWFRfV0lEVEggKGYsIHdpZHRoKTsKKwkJICB0ZXh0 X2hlaWdodCA9IEZSQU1FX1BJWEVMX1RPX1RFWFRfSEVJR0hUIChmLCBoZWlnaHQpOworCQkg IC8qIHJvd3MgPSBGUkFNRV9QSVhFTF9IRUlHSFRfVE9fVEVYVF9MSU5FUyAoZiwgaGVpZ2h0 KTsgKi8KKwkJICAvKiBjb2x1bW5zID0gRlJBTUVfUElYRUxfV0lEVEhfVE9fVEVYVF9DT0xT IChmLCB3aWR0aCk7ICovCisKKwkJICAvKiBUT0RPOiBDbGlwIHNpemUgdG8gdGhlIHNjcmVl biBkaW1lbnNpb25zLiAgKi8KKworCQkgIC8qIEV2ZW4gaWYgdGhlIG51bWJlciBvZiBjaGFy YWN0ZXIgcm93cyBhbmQgY29sdW1ucworCQkgICAgIGhhcyBub3QgY2hhbmdlZCwgdGhlIGZv bnQgc2l6ZSBtYXkgaGF2ZSBjaGFuZ2VkLAorCQkgICAgIHNvIHdlIG5lZWQgdG8gY2hlY2sg dGhlIHBpeGVsIGRpbWVuc2lvbnMgYXMgd2VsbC4gICovCisKKwkJICBpZiAod2lkdGggIT0g RlJBTUVfUElYRUxfV0lEVEggKGYpCisJCSAgICAgIHx8IGhlaWdodCAhPSBGUkFNRV9QSVhF TF9IRUlHSFQgKGYpCisJCSAgICAgIHx8IHRleHRfd2lkdGggIT0gRlJBTUVfVEVYVF9XSURU SCAoZikKKwkJICAgICAgfHwgdGV4dF9oZWlnaHQgIT0gRlJBTUVfVEVYVF9IRUlHSFQgKGYp KQorCQkgICAgeworCQkgICAgICBjaGFuZ2VfZnJhbWVfc2l6ZSAoZiwgdGV4dF93aWR0aCwg dGV4dF9oZWlnaHQsIDAsIDEsIDAsIDEpOworCQkgICAgICBTRVRfRlJBTUVfR0FSQkFHRUQg KGYpOworCQkgICAgICBjYW5jZWxfbW91c2VfZmFjZSAoZik7CisJCSAgICAgIGYtPndpbl9n cmF2aXR5ID0gTm9ydGhXZXN0R3Jhdml0eTsKKwkJICAgIH0KKwkJfQorCSAgICB9CisKKwkg IGNoZWNrX3Zpc2liaWxpdHkgPSAxOworCSAgYnJlYWs7CisKIAljYXNlIFdNX0FDVElWQVRF OgogCWNhc2UgV01fQUNUSVZBVEVBUFA6CiAJICBmID0geF93aW5kb3dfdG9fZnJhbWUgKGRw eWluZm8sIG1zZy5tc2cuaHduZCk7CkBAIC02MDUyLDcgKzYwOTcsNyBAQCBzdHJ1Y3QgeGlt X2luc3RfdAogICBpbnQgZGlzcGxheV90b3AgPSAwOwogICBzdHJ1Y3QgZnJhbWUgKnAgPSBG UkFNRV9QQVJFTlRfRlJBTUUgKGYpOwoKLSAgaWYgKGZsYWdzICYgKFhOZWdhdGl2ZSB8IFlO ZWdhdGl2ZSkpCisgIGlmICghcCAmJiBmbGFncyAmIChYTmVnYXRpdmUgfCBZTmVnYXRpdmUp KQogICAgIHsKICAgICAgIExpc3BfT2JqZWN0IGxpc3Q7CgpAQCAtNjA3OCwyMCArNjEyMywy NiBAQCBzdHJ1Y3QgeGltX2luc3RfdAogICAgIH0KCiAgIC8qIFRyZWF0IG5lZ2F0aXZlIHBv c2l0aW9ucyBhcyByZWxhdGl2ZSB0byB0aGUgcmlnaHRtb3N0IGJvdHRvbW1vc3QKLSAgICAg cG9zaXRpb24gdGhhdCBmaXRzIG9uIHRoZSBzY3JlZW4uICAqLworICAgICBwb3NpdGlvbiB0 aGF0IGZpdHMgb24gdGhlIHNjcmVlbiBvciBwYXJlbnQgZnJhbWUuCisKKyAgICAgSSBzZWUg bm8gbmVlZCBmb3Igc3VidHJhY3RpbmcgMSBmcm9tIHRoZSBib3JkZXIgd2lkdGhzIC0gaXMg dGhlcmUKKyAgICAgYW55IG9uIHRoZSByZW1haW5pbmcgcGxhdGZvcm1zPyAgSGVyZSB0aGVz ZSBzdWJ0cmFjdGlvbnMgZGlkIHB1dAorICAgICB0aGUgbGFzdCBwaXhlbCBsaW5lL2NvbHVt biBvZiBhIGZyYW1lIG9mZi1kaXNwbGF5IHdoZW4sIGZvcgorICAgICBleGFtcGxlLCBhIChz ZXQtZnJhbWUtcGFyYW1ldGVyIG5pbCAnbGVmdCAnKC0gMCkpIHNwZWNpZmljYXRpb24gd2Fz CisgICAgIHVzZWQgLSBtYXJ0aW4gMjAwMTctMDUtMDUuICovCiAgIGlmIChmbGFncyAmIFhO ZWdhdGl2ZSkKICAgICB7CiAgICAgICBpZiAocCkKIAlmLT5sZWZ0X3BvcyA9IChGUkFNRV9Q SVhFTF9XSURUSCAocCkKIAkJICAgICAgIC0gRlJBTUVfUElYRUxfV0lEVEggKGYpCiAJCSAg ICAgICArIGYtPmxlZnRfcG9zCi0JCSAgICAgICAtIChsZWZ0X3JpZ2h0X2JvcmRlcnNfd2lk dGggLSAxKSk7CisJCSAgICAgICAtIGxlZnRfcmlnaHRfYm9yZGVyc193aWR0aCk7CiAgICAg ICBlbHNlCiAJZi0+bGVmdF9wb3MgPSAoeF9kaXNwbGF5X3BpeGVsX3dpZHRoIChGUkFNRV9E SVNQTEFZX0lORk8gKGYpKQogCQkgICAgICAgKyBkaXNwbGF5X2xlZnQKIAkJICAgICAgIC0g RlJBTUVfUElYRUxfV0lEVEggKGYpCiAJCSAgICAgICArIGYtPmxlZnRfcG9zCi0JCSAgICAg ICAtIChsZWZ0X3JpZ2h0X2JvcmRlcnNfd2lkdGggLSAxKSk7CisJCSAgICAgICAtIGxlZnRf cmlnaHRfYm9yZGVyc193aWR0aCk7CiAgICAgfQoKICAgaWYgKGZsYWdzICYgWU5lZ2F0aXZl KQpAQCAtNjEwMCwxMyArNjE1MSwxMyBAQCBzdHJ1Y3QgeGltX2luc3RfdAogCWYtPnRvcF9w b3MgPSAoRlJBTUVfUElYRUxfSEVJR0hUIChwKQogCQkgICAgICAtIEZSQU1FX1BJWEVMX0hF SUdIVCAoZikKIAkJICAgICAgKyBmLT50b3BfcG9zCi0JCSAgICAgIC0gKHRvcF9ib3R0b21f Ym9yZGVyc19oZWlnaHQgLSAxKSk7CisJCSAgICAgIC0gdG9wX2JvdHRvbV9ib3JkZXJzX2hl aWdodCk7CiAgICAgICBlbHNlCiAJZi0+dG9wX3BvcyA9ICh4X2Rpc3BsYXlfcGl4ZWxfaGVp Z2h0IChGUkFNRV9ESVNQTEFZX0lORk8gKGYpKQogCQkgICAgICArIGRpc3BsYXlfdG9wCiAJ CSAgICAgIC0gRlJBTUVfUElYRUxfSEVJR0hUIChmKQogCQkgICAgICArIGYtPnRvcF9wb3MK LQkJICAgICAgLSAodG9wX2JvdHRvbV9ib3JkZXJzX2hlaWdodCAtIDEpKTsKKwkJICAgICAg LSB0b3BfYm90dG9tX2JvcmRlcnNfaGVpZ2h0KTsKICAgICB9CgogICAvKiBUaGUgbGVmdF9w b3MgYW5kIHRvcF9wb3MgYXJlIG5vdyByZWxhdGl2ZSB0byB0aGUgdG9wIGFuZCBsZWZ0CmRp ZmYgLS1naXQgYS9zcmMvdzMydGVybS5oIGIvc3JjL3czMnRlcm0uaAppbmRleCAzNzFjZjkw Li45OTU2NjgyIDEwMDY0NAotLS0gYS9zcmMvdzMydGVybS5oCisrKyBiL3NyYy93MzJ0ZXJt LmgKQEAgLTM0NSw2ICszNDUsMTQgQEAgc3RydWN0IHczMl9vdXRwdXQKICAgQ3Vyc29yIGhv dXJnbGFzc19jdXJzb3I7CiAgIEN1cnNvciBob3Jpem9udGFsX2RyYWdfY3Vyc29yOwogICBD dXJzb3IgdmVydGljYWxfZHJhZ19jdXJzb3I7CisgIEN1cnNvciBsZWZ0X2VkZ2VfY3Vyc29y OworICBDdXJzb3IgdG9wX2xlZnRfY29ybmVyX2N1cnNvcjsKKyAgQ3Vyc29yIHRvcF9lZGdl X2N1cnNvcjsKKyAgQ3Vyc29yIHRvcF9yaWdodF9jb3JuZXJfY3Vyc29yOworICBDdXJzb3Ig cmlnaHRfZWRnZV9jdXJzb3I7CisgIEN1cnNvciBib3R0b21fcmlnaHRfY29ybmVyX2N1cnNv cjsKKyAgQ3Vyc29yIGJvdHRvbV9lZGdlX2N1cnNvcjsKKyAgQ3Vyc29yIGJvdHRvbV9sZWZ0 X2Nvcm5lcl9jdXJzb3I7CgogICAvKiBOb24temVybyBtZWFucyBob3VyZ2xhc3MgY3Vyc29y IGlzIGN1cnJlbnRseSBkaXNwbGF5ZWQuICAqLwogICB1bnNpZ25lZCBob3VyZ2xhc3NfcCA6 IDE7CmRpZmYgLS1naXQgYS9zcmMvd2luZG93LmMgYi9zcmMvd2luZG93LmMKaW5kZXggYmY4 OWYwZS4uNDgxNmJkNiAxMDA2NDQKLS0tIGEvc3JjL3dpbmRvdy5jCisrKyBiL3NyYy93aW5k b3cuYwpAQCAtMTIwOCwxMyArMTIwOCwxMyBAQCBzaG91bGQgYmUgYSBidWZmZXIgcG9zaXRp b24gKHR5cGljYWxseSBhIG1hcmtlcikgb3IgbmlsLiAgSWYgaXQgaXMgYQogCQkgICAgIC0g V0lORE9XX0JPVFRPTV9ESVZJREVSX1dJRFRIICh3KSkpKQogICAgIHJldHVybiBPTl9IT1JJ Wk9OVEFMX1NDUk9MTF9CQVI7CiAgIC8qIE9uIHRoZSBtb2RlIG9yIGhlYWRlciBsaW5lPyAg ICovCi0gIGVsc2UgaWYgKChXSU5ET1dfV0FOVFNfTU9ERUxJTkVfUCAodykKKyAgZWxzZSBp ZiAoKHdpbmRvd193YW50c19tb2RlX2xpbmUgKHcpCiAJICAgICYmIHkgPj0gKGJvdHRvbV95 CiAJCSAgICAgLSBDVVJSRU5UX01PREVfTElORV9IRUlHSFQgKHcpCiAJCSAgICAgLSBXSU5E T1dfQk9UVE9NX0RJVklERVJfV0lEVEggKHcpKQogCSAgICAmJiB5IDw9IGJvdHRvbV95IC0g V0lORE9XX0JPVFRPTV9ESVZJREVSX1dJRFRIICh3KQogCSAgICAmJiAocGFydCA9IE9OX01P REVfTElORSkpCi0JICAgfHwgKFdJTkRPV19XQU5UU19IRUFERVJfTElORV9QICh3KQorCSAg IHx8ICh3aW5kb3dfd2FudHNfaGVhZGVyX2xpbmUgKHcpCiAJICAgICAgICYmIHkgPCB0b3Bf eSArIENVUlJFTlRfSEVBREVSX0xJTkVfSEVJR0hUICh3KQogCSAgICAgICAmJiAocGFydCA9 IE9OX0hFQURFUl9MSU5FKSkpCiAgICAgewpAQCAtMTg1MSw3ICsxODUxLDcgQEAgb2YgdGhl IChmaXJzdCkgdGV4dCBsaW5lLCBZUE9TIGlzIG5lZ2F0aXZlLgoKICAgaWYgKEVRIChsaW5l LCBRaGVhZGVyX2xpbmUpKQogICAgIHsKLSAgICAgIGlmICghV0lORE9XX1dBTlRTX0hFQURF Ul9MSU5FX1AgKHcpKQorICAgICAgaWYgKCF3aW5kb3dfd2FudHNfaGVhZGVyX2xpbmUgKHcp KQogCXJldHVybiBRbmlsOwogICAgICAgcm93ID0gTUFUUklYX0hFQURFUl9MSU5FX1JPVyAo dy0+Y3VycmVudF9tYXRyaXgpOwogICAgICAgcmV0dXJuIHJvdy0+ZW5hYmxlZF9wID8gbGlz dDRpIChyb3ctPmhlaWdodCwgMCwgMCwgMCkgOiBRbmlsOwpAQCAtMTg5OCw2ICsxODk4LDEy OSBAQCBvZiB0aGUgKGZpcnN0KSB0ZXh0IGxpbmUsIFlQT1MgaXMgbmVnYXRpdmUuCiAgIHJl dHVybiBsaXN0NGkgKHJvdy0+aGVpZ2h0ICsgbWluICgwLCByb3ctPnkpIC0gY3JvcCwgaSwg cm93LT55LCBjcm9wKTsKIH0KCitERUZVTiAoIndpbmRvdy1saW5lcy1waXhlbC1kaW1lbnNp b25zIiwgRndpbmRvd19saW5lc19waXhlbF9kaW1lbnNpb25zLCBTd2luZG93X2xpbmVzX3Bp eGVsX2RpbWVuc2lvbnMsIDAsIDYsIDAsCisgICAgICAgZG9jOiAvKiBSZXR1cm4gcGl4ZWwg ZGltZW5zaW9ucyBvZiBXSU5ET1cncyBsaW5lcy4KK1RoZSByZXR1cm4gdmFsdWUgaXMgYSBs aXN0IG9mIHRoZSB4LSBhbmQgeS1jb29yZGluYXRlcyBvZiB0aGUgbG93ZXIKK3JpZ2h0IGNv cm5lciBvZiB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgZWFjaCBsaW5lLiAgUmV0dXJuIG5pbCBp ZiB0aGUKK2N1cnJlbnQgZ2x5cGggbWF0cml4IG9mIFdJTkRPVyBpcyBub3QgdXAtdG8tZGF0 ZS4KKworT3B0aW9uYWwgYXJndW1lbnQgV0lORE9XIHNwZWNpZmllcyB0aGUgd2luZG93IHdo b3NlIGxpbmVzJyBkaW1lbnNpb25zCitzaGFsbCBiZSByZXR1cm5lZC4gIE5pbCBvciBvbWl0 dGVkIG1lYW5zIHRvIHJldHVybiB0aGUgZGltZW5zaW9ucyBmb3IKK3RoZSBzZWxlY3RlZCB3 aW5kb3cuCisKK0ZJUlNULCBpZiBub24tbmlsLCBzcGVjaWZpZXMgdGhlIGluZGV4IG9mIHRo ZSBmaXJzdCBsaW5lIHdob3NlCitkaW1lbnNpb25zIHNoYWxsIGJlIHJldHVybmVkLiAgSWYg RklSU1QgaXMgbmlsIGFuZCBCT0RZIGlzIG5vbi1uaWwsCitzdGFydCB3aXRoIHRoZSBmaXJz dCB0ZXh0IGxpbmUgb2YgV0lORE9XLiAgT3RoZXJ3aXNlLCBzdGFydCB3aXRoIHRoZQorZmly c3QgbGluZSBvZiBXSU5ET1cuCisKK0xBU1QsIGlmIG5vbi1uaWwsIHNwZWNpZmllcyB0aGUg bGFzdCBsaW5lIHdob3NlIGRpbWVuc2lvbnMgc2hhbGwgYmUKK3JldHVybmVkLiAgSWYgTEFT VCBpcyBuaWwgYW5kIEJPRFkgaXMgbm9uLW5pbCwgdGhlIGxhc3QgbGluZSBpcyB0aGUgbGFz dAorbGluZSBvZiB0aGUgYm9keSAodGV4dCBhcmVhKSBvZiBXSU5ET1cuICBPdGhlcndpc2Us IGxhc3QgaXMgdGhlIGxhc3QKK2xpbmUgb2YgV0lORE9XLgorCitJTlZFUlNFLCBpZiBuaWws IG1lYW5zIHRoYXQgdGhlIHktcGl4ZWwgdmFsdWUgcmV0dXJuZWQgZm9yIGEgc3BlY2lmaWMK K2xpbmUgc3BlY2lmaWVzIHRoZSBkaXN0YW5jZSBpbiBwaXhlbHMgZnJvbSB0aGUgbGVmdCBl ZGdlIChib2R5IGVkZ2UgaWYKK0JPRFkgaXMgbm9uLW5pbCkgb2YgV0lORE9XIHRvIHRoZSBy aWdodCBlZGdlIG9mIHRoZSBsYXN0IGdseXBoIG9mIHRoYXQKK2xpbmUuICBJTlZFUlNFIG5v bi1uaWwgbWVhbnMgdGhhdCB0aGUgeS1waXhlbCB2YWx1ZSByZXR1cm5lZCBmb3IgYQorc3Bl Y2lmaWMgbGluZSBzcGVjaWZpZXMgdGhlIGRpc3RhbmNlIGluIHBpeGVscyBmcm9tIHRoZSBy aWdodCBlZGdlIG9mCit0aGUgbGFzdCBnbHlwaCBvZiB0aGF0IGxpbmUgdG8gdGhlIHJpZ2h0 IGVkZ2UgKGJvZHkgZWRnZSBpZiBCT0RZIGlzCitub24tbmlsKSBvZiBXSU5ET1cuCisKK0xF RlQgbm9uLW5pbCBtZWFucyB0byByZXR1cm4gdGhlIHgtIGFuZCB5LWNvb3JkaW5hdGVzIG9m IHRoZSBsb3dlciBsZWZ0Citjb3JuZXIgb2YgdGhlIGxlZnRtb3N0IGNoYXJhY3RlciBvbiBl YWNoIGxpbmUuICBUaGlzIGlzIHRoZSB2YWx1ZSB0aGF0CitzaG91bGQgYmUgdXNlZCBmb3Ig YnVmZmVycyB0aGF0IG1vc3RseSBkaXNwbGF5IHRleHQgZnJvbSByaWdodCB0byBsZWZ0Lgor CitJZiBMRUZUIGlzIG5vbi1uaWwgYW5kIElOVkVSU0UgaXMgbmlsLCB0aGlzIG1lYW5zIHRo YXQgdGhlIHktcGl4ZWwgdmFsdWUKK3JldHVybmVkIGZvciBhIHNwZWNpZmljIGxpbmUgc3Bl Y2lmaWVzIHRoZSBkaXN0YW5jZSBpbiBwaXhlbHMgZnJvbSB0aGUKK2xlZnQgZWRnZSBvZiB0 aGUgbGFzdCAobGVmdG1vc3QpIGdseXBoIG9mIHRoYXQgbGluZSB0byB0aGUgcmlnaHQgZWRn ZQorKGJvZHkgZWRnZSBpZiBCT0RZIGlzIG5vbi1uaWwpIG9mIFdJTkRPVy4gIElmIExFRlQg YW5kIElOVkVSU0UgYXJlIGJvdGgKK25vbi1uaWwsIHRoZSB5LXBpeGVsIHZhbHVlIHJldHVy bmVkIGZvciBhIHNwZWNpZmljIGxpbmUgc3BlY2lmaWVzIHRoZQorZGlzdGFuY2UgaW4gcGl4 ZWxzIGZyb20gdGhlIGxlZnQgZWRnZSAoYm9keSBlZGdlIGlmIEJPRFkgaXMgbm9uLW5pbCkg b2YKK1dJTkRPVyB0byB0aGUgbGVmdCBlZGdlIG9mIHRoZSBsYXN0IChsZWZ0bW9zdCkgZ2x5 cGggb2YgdGhhdCBsaW5lLgorCitOb3JtYWxseSwgdGhlIHZhbHVlIG9mIHRoaXMgZnVuY3Rp b24gaXMgbm90IGF2YWlsYWJsZSB3aGlsZSBFbWFjcyBpcworYnVzeSwgZm9yIGV4YW1wbGUs IHdoZW4gcHJvY2Vzc2luZyBhIGNvbW1hbmQuICBJdCBzaG91bGQgYmUgcmV0cmlldmFibGUK K3Rob3VnaCB3aGVuIHJ1biBmcm9tIGFuIGlkbGUgdGltZXIgd2l0aCBhIGRlbGF5IG9mIHpl cm8gc2Vjb25kcy4gICovKQorICAoTGlzcF9PYmplY3Qgd2luZG93LCBMaXNwX09iamVjdCBm aXJzdCwgTGlzcF9PYmplY3QgbGFzdCwgTGlzcF9PYmplY3QgYm9keSwgTGlzcF9PYmplY3Qg aW52ZXJzZSwgTGlzcF9PYmplY3QgbGVmdCkKK3sKKyAgc3RydWN0IHdpbmRvdyAqdyA9IGRl Y29kZV9saXZlX3dpbmRvdyAod2luZG93KTsKKyAgc3RydWN0IGJ1ZmZlciAqYjsKKyAgc3Ry dWN0IGdseXBoX3JvdyAqcm93LCAqZW5kX3JvdzsKKyAgaW50IG1heF95ID0gTklMUCAoYm9k eSkgPyBXSU5ET1dfUElYRUxfSEVJR0hUICh3KSA6IHdpbmRvd190ZXh0X2JvdHRvbV95ICh3 KTsKKyAgTGlzcF9PYmplY3Qgcm93cyA9IFFuaWw7CisgIGludCB3aW5kb3dfd2lkdGggPSBO SUxQIChib2R5KSA/IHctPnBpeGVsX3dpZHRoIDogd2luZG93X2JvZHlfd2lkdGggKHcsIHRy dWUpOworICBpbnQgaGVhZGVyX2xpbmVfaGVpZ2h0ID0gV0lORE9XX0hFQURFUl9MSU5FX0hF SUdIVCAodyk7CisgIGludCBzdWJ0cmFjdCA9IE5JTFAgKGJvZHkpID8gMCA6IGhlYWRlcl9s aW5lX2hlaWdodDsKKyAgYm9vbCBpbnZlcnQgPSAhTklMUCAoaW52ZXJzZSk7CisgIGJvb2wg bGVmdF9mbGFnID0gIU5JTFAgKGxlZnQpOworCisgIGlmIChub25pbnRlcmFjdGl2ZSB8fCB3 LT5wc2V1ZG9fd2luZG93X3ApCisgICAgcmV0dXJuIFFuaWw7CisKKyAgQ0hFQ0tfQlVGRkVS ICh3LT5jb250ZW50cyk7CisgIGIgPSBYQlVGRkVSICh3LT5jb250ZW50cyk7CisKKyAgLyog RmFpbCBpZiBjdXJyZW50IG1hdHJpeCBpcyBub3QgdXAtdG8tZGF0ZS4gICovCisgIGlmICgh dy0+d2luZG93X2VuZF92YWxpZAorICAgICAgfHwgd2luZG93c19vcl9idWZmZXJzX2NoYW5n ZWQKKyAgICAgIHx8IGItPmNsaXBfY2hhbmdlZAorICAgICAgfHwgYi0+cHJldmVudF9yZWRp c3BsYXlfb3B0aW1pemF0aW9uc19wCisgICAgICB8fCB3aW5kb3dfb3V0ZGF0ZWQgKHcpKQor ICAgIHJldHVybiBRbmlsOworCisgIGlmIChOSUxQIChmaXJzdCkpCisgICAgcm93ID0gKE5J TFAgKGJvZHkpCisJICAgPyBNQVRSSVhfUk9XICh3LT5jdXJyZW50X21hdHJpeCwgMCkKKwkg ICA6IE1BVFJJWF9GSVJTVF9URVhUX1JPVyAody0+Y3VycmVudF9tYXRyaXgpKTsKKyAgZWxz ZSBpZiAoTlVNQkVSUCAoZmlyc3QpKQorICAgIHsKKyAgICAgIENIRUNLX1JBTkdFRF9JTlRF R0VSIChmaXJzdCwgMCwgdy0+Y3VycmVudF9tYXRyaXgtPm5yb3dzKTsKKyAgICAgIHJvdyA9 IE1BVFJJWF9ST1cgKHctPmN1cnJlbnRfbWF0cml4LCBYSU5UIChmaXJzdCkpOworICAgIH0K KyAgZWxzZQorICAgIGVycm9yICgiSW52YWxpZCBzcGVjaWZpY2F0aW9uIG9mIGZpcnN0IGxp bmUiKTsKKworICBpZiAoTklMUCAobGFzdCkpCisKKyAgICBlbmRfcm93ID0gKE5JTFAgKGJv ZHkpCisJICAgICAgID8gTUFUUklYX1JPVyAody0+Y3VycmVudF9tYXRyaXgsIHctPmN1cnJl bnRfbWF0cml4LT5ucm93cykKKwkgICAgICAgOiBNQVRSSVhfQk9UVE9NX1RFWFRfUk9XICh3 LT5jdXJyZW50X21hdHJpeCwgdykpOworICBlbHNlIGlmIChOVU1CRVJQIChsYXN0KSkKKyAg ICB7CisgICAgICBDSEVDS19SQU5HRURfSU5URUdFUiAobGFzdCwgMCwgdy0+Y3VycmVudF9t YXRyaXgtPm5yb3dzKTsKKyAgICAgIGVuZF9yb3cgPSBNQVRSSVhfUk9XICh3LT5jdXJyZW50 X21hdHJpeCwgWElOVCAobGFzdCkpOworICAgIH0KKyAgZWxzZQorICAgIGVycm9yICgiSW52 YWxpZCBzcGVjaWZpY2F0aW9uIG9mIGxhc3QgbGluZSIpOworCisgIHdoaWxlIChyb3cgPD0g ZW5kX3JvdyAmJiByb3ctPmVuYWJsZWRfcAorCSAmJiByb3ctPnkgKyByb3ctPmhlaWdodCA8 IG1heF95KQorICAgIHsKKworICAgICAgaWYgKGxlZnRfZmxhZykKKwl7CisJICBzdHJ1Y3Qg Z2x5cGggKmdseXBoID0gcm93LT5nbHlwaHNbVEVYVF9BUkVBXTsKKworCSAgcm93cyA9IEZj b25zIChGY29ucyAobWFrZV9udW1iZXIKKwkJCSAgICAgICAoaW52ZXJ0CisJCQkJPyBnbHlw aC0+cGl4ZWxfd2lkdGgKKwkJCQk6IHdpbmRvd193aWR0aCAtIGdseXBoLT5waXhlbF93aWR0 aCksCisJCQkgICAgICAgbWFrZV9udW1iZXIgKHJvdy0+eSArIHJvdy0+aGVpZ2h0IC0gc3Vi dHJhY3QpKSwKKwkJCXJvd3MpOworCX0KKyAgICAgIGVsc2UKKwlyb3dzID0gRmNvbnMgKEZj b25zIChtYWtlX251bWJlcgorCQkJICAgICAoaW52ZXJ0CisJCQkgICAgICA/IHdpbmRvd193 aWR0aCAtIHJvdy0+cGl4ZWxfd2lkdGgKKwkJCSAgICAgIDogcm93LT5waXhlbF93aWR0aCks CisJCQkgICAgIG1ha2VfbnVtYmVyIChyb3ctPnkgKyByb3ctPmhlaWdodCAtIHN1YnRyYWN0 KSksCisJCSAgICAgIHJvd3MpOworICAgICAgcm93Kys7CisgICAgfQorCisgIHJldHVybiBG bnJldmVyc2UgKHJvd3MpOworfQorCiBERUZVTiAoIndpbmRvdy1kZWRpY2F0ZWQtcCIsIEZ3 aW5kb3dfZGVkaWNhdGVkX3AsIFN3aW5kb3dfZGVkaWNhdGVkX3AsCiAgICAgICAgMCwgMSwg MCwKICAgICAgICBkb2M6IC8qIFJldHVybiBub24tbmlsIHdoZW4gV0lORE9XIGlzIGRlZGlj YXRlZCB0byBpdHMgYnVmZmVyLgpAQCAtMjAwMywxNiArMjEyNiwyNCBAQCByZXR1cm4gdmFs dWUgaXMgYSBsaXN0IG9mIGVsZW1lbnRzIG9mIHRoZSBmb3JtIChQQVJBTUVURVIgLiBWQUxV RSkuICAqLykKICAgcmV0dXJuIEZjb3B5X2FsaXN0IChkZWNvZGVfdmFsaWRfd2luZG93ICh3 aW5kb3cpLT53aW5kb3dfcGFyYW1ldGVycyk7CiB9CgorTGlzcF9PYmplY3QKK3dpbmRvd19w YXJhbWV0ZXIgKHN0cnVjdCB3aW5kb3cgKncsIExpc3BfT2JqZWN0IHBhcmFtZXRlcikKK3sK KyAgTGlzcF9PYmplY3QgcmVzdWx0ID0gRmFzc3EgKHBhcmFtZXRlciwgdy0+d2luZG93X3Bh cmFtZXRlcnMpOworCisgIHJldHVybiBDRFJfU0FGRSAocmVzdWx0KTsKK30KKworCiBERUZV TiAoIndpbmRvdy1wYXJhbWV0ZXIiLCBGd2luZG93X3BhcmFtZXRlciwgU3dpbmRvd19wYXJh bWV0ZXIsCiAgICAgICAgMiwgMiwgMCwKICAgICAgICBkb2M6ICAvKiBSZXR1cm4gV0lORE9X J3MgdmFsdWUgZm9yIFBBUkFNRVRFUi4KIFdJTkRPVyBjYW4gYmUgYW55IHdpbmRvdyBhbmQg ZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4gICovKQogICAoTGlzcF9PYmplY3Qgd2lu ZG93LCBMaXNwX09iamVjdCBwYXJhbWV0ZXIpCiB7Ci0gIExpc3BfT2JqZWN0IHJlc3VsdDsK KyAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV9hbnlfd2luZG93ICh3aW5kb3cpOwoKLSAg cmVzdWx0ID0gRmFzc3EgKHBhcmFtZXRlciwgZGVjb2RlX2FueV93aW5kb3cgKHdpbmRvdykt PndpbmRvd19wYXJhbWV0ZXJzKTsKLSAgcmV0dXJuIENEUl9TQUZFIChyZXN1bHQpOworICBy ZXR1cm4gd2luZG93X3BhcmFtZXRlciAodywgcGFyYW1ldGVyKTsKIH0KCiBERUZVTiAoInNl dC13aW5kb3ctcGFyYW1ldGVyIiwgRnNldF93aW5kb3dfcGFyYW1ldGVyLApAQCAtNDc0MCw2 ICs0ODcxLDY5IEBAIFNJREUgdCAob3IgYHJpZ2h0Jykgc3BlY2lmaWVzIHRoYXQgdGhlIG5l dyB3aW5kb3cgc2hhbGwgYmUgbG9jYXRlZCBvbgogfQoKCisvKioKKyAqIHdpbmRvd193YW50 c19tb2RlX2xpbmU6CisgKgorICogUmV0dXJuIDEgaWYgd2luZG93IFcgd2FudHMgYSBtb2Rl IGxpbmUgYW5kIGlzIGhpZ2ggZW5vdWdoIHRvCisgKiBhY2NvbW9kYXRlIGl0LCAwIG90aGVy d2lzZS4KKyAqCisgKiBXIHdhbnRzIGEgbW9kZSBsaW5lIGlmIGl0J3MgYSBsZWFmIHdpbmRv dyBhbmQgbmVpdGhlciBhIG1pbmlidWZmZXIKKyAqIG5vciBhIHBzZXVkbyB3aW5kb3cuICBN b3Jlb3ZlciwgaXRzICd3aW5kb3ctbW9kZS1saW5lLWZvcm1hdCcKKyAqIHBhcmFtZXRlciBt dXN0IG5vdCBiZSAnbm9uZScgYW5kIGVpdGhlciB0aGF0IHBhcmFtZXRlciBvciBXJ3MKKyAq IGJ1ZmZlcidzICdtb2RlLWxpbmUtZm9ybWF0JyB2YWx1ZSBtdXN0IGJlIG5vbi1uaWwuICBG aW5hbGx5LCBXIG11c3QKKyAqIGJlIGhpZ2hlciB0aGFuIGl0cyBmcmFtZSdzIGNhbm9uaWNh bCBjaGFyYWN0ZXIgaGVpZ2h0LgorICovCitib29sCit3aW5kb3dfd2FudHNfbW9kZV9saW5l IChzdHJ1Y3Qgd2luZG93ICp3KQoreworICBMaXNwX09iamVjdCB3aW5kb3dfbW9kZV9saW5l X2Zvcm1hdCA9CisgICAgd2luZG93X3BhcmFtZXRlciAodywgUW1vZGVfbGluZV9mb3JtYXQp OworCisgIHJldHVybiAoKFdJTkRPV19MRUFGX1AgKHcpCisJICAgJiYgIU1JTklfV0lORE9X X1AgKHcpCisJICAgJiYgIVdJTkRPV19QU0VVRE9fUCAodykKKwkgICAmJiAhRVEgKHdpbmRv d19tb2RlX2xpbmVfZm9ybWF0LCBRbm9uZSkKKwkgICAmJiAoIU5JTFAgKHdpbmRvd19tb2Rl X2xpbmVfZm9ybWF0KQorCSAgICAgICB8fCAhTklMUCAoQlZBUiAoWEJVRkZFUiAoV0lORE9X X0JVRkZFUiAodykpLCBtb2RlX2xpbmVfZm9ybWF0KSkpCisJICAgJiYgV0lORE9XX1BJWEVM X0hFSUdIVCAodykgPiBXSU5ET1dfRlJBTUVfTElORV9IRUlHSFQgKHcpKQorCSAgPyAxCisJ ICA6IDApOworfQorCisKKy8qKgorICogd2luZG93X3dhbnRzX2hlYWRlcl9saW5lOgorICoK KyAqIFJldHVybiAxIGlmIHdpbmRvdyBXIHdhbnRzIGEgaGVhZGVyIGxpbmUgYW5kIGlzIGhp Z2ggZW5vdWdoIHRvCisgKiBhY2NvbW9kYXRlIGl0LCAwIG90aGVyd2lzZS4KKyAqCisgKiBX IHdhbnRzIGEgaGVhZGVyIGxpbmUgaWYgaXQncyBhIGxlYWYgd2luZG93IGFuZCBuZWl0aGVy IGEgbWluaWJ1ZmZlcgorICogbm9yIGEgcHNldWRvIHdpbmRvdy4gIE1vcmVvdmVyLCBpdHMg J3dpbmRvdy1tb2RlLWxpbmUtZm9ybWF0JworICogcGFyYW1ldGVyIG11c3Qgbm90IGJlICdu b25lJyBhbmQgZWl0aGVyIHRoYXQgcGFyYW1ldGVyIG9yIFcncworICogYnVmZmVyJ3MgJ21v ZGUtbGluZS1mb3JtYXQnIHZhbHVlIG11c3QgYmUgbm9uLW5pbC4gIEZpbmFsbHksIFcgbXVz dAorICogYmUgaGlnaGVyIHRoYW4gaXRzIGZyYW1lJ3MgY2Fub25pY2FsIGNoYXJhY3RlciBo ZWlnaHQgYW5kIGJlIGFibGUgdG8KKyAqIGFjY29tb2RhdGUgYSBtb2RlIGxpbmUgdG9vIGlm IG5lY2Vzc2FyeSAodGhlIG1vZGUgbGluZSBwcmV2YWlscykuCisgKi8KK2Jvb2wKK3dpbmRv d193YW50c19oZWFkZXJfbGluZSAoc3RydWN0IHdpbmRvdyAqdykKK3sKKyAgTGlzcF9PYmpl Y3Qgd2luZG93X2hlYWRlcl9saW5lX2Zvcm1hdCA9CisgICAgd2luZG93X3BhcmFtZXRlciAo dywgUWhlYWRlcl9saW5lX2Zvcm1hdCk7CisKKyAgcmV0dXJuICgoV0lORE9XX0xFQUZfUCAo dykKKwkgICAmJiAhTUlOSV9XSU5ET1dfUCAodykKKwkgICAmJiAhV0lORE9XX1BTRVVET19Q ICh3KQorCSAgICYmICFFUSAod2luZG93X2hlYWRlcl9saW5lX2Zvcm1hdCwgUW5vbmUpCisJ ICAgJiYgKCFOSUxQICh3aW5kb3dfaGVhZGVyX2xpbmVfZm9ybWF0KQorCSAgICAgICB8fCAh TklMUCAoQlZBUiAoWEJVRkZFUiAoV0lORE9XX0JVRkZFUiAodykpLCBoZWFkZXJfbGluZV9m b3JtYXQpKSkKKwkgICAmJiAoV0lORE9XX1BJWEVMX0hFSUdIVCAodykKKwkgICAgICAgPiAo d2luZG93X3dhbnRzX21vZGVfbGluZSAodykKKwkJICA/IDIgKiBXSU5ET1dfRlJBTUVfTElO RV9IRUlHSFQgKHcpCisJCSAgOiBXSU5ET1dfRlJBTUVfTElORV9IRUlHSFQgKHcpKSkpCisJ ICA/IDEKKwkgIDogMCk7Cit9CisKIC8qIFJldHVybiBudW1iZXIgb2YgbGluZXMgb2YgdGV4 dCAobm90IGNvdW50aW5nIG1vZGUgbGluZXMpIGluIFcuICAqLwoKIGludApAQCAtNDc1Mywx MCArNDk0NywxMCBAQCBTSURFIHQgKG9yIGByaWdodCcpIHNwZWNpZmllcyB0aGF0IHRoZSBu ZXcgd2luZG93IHNoYWxsIGJlIGxvY2F0ZWQgb24KIAkgIHx8IFdJTkRPV1AgKHctPmNvbnRl bnRzKQogCSAgfHwgIU5JTFAgKHctPm5leHQpCiAJICB8fCAhTklMUCAody0+cHJldikKLQkg IHx8IFdJTkRPV19XQU5UU19NT0RFTElORV9QICh3KSkKKwkgIHx8IHdpbmRvd193YW50c19t b2RlX2xpbmUgKHcpKQogCS0taHQ7CgotICAgICAgaWYgKFdJTkRPV19XQU5UU19IRUFERVJf TElORV9QICh3KSkKKyAgICAgIGlmICh3aW5kb3dfd2FudHNfaGVhZGVyX2xpbmUgKHcpKQog CS0taHQ7CiAgICAgfQoKQEAgLTczNTQsNiArNzU0OCw4IEBAIFZhbHVlIGlzIGEgbGlzdCBv ZiB0aGUgZm9ybSAoV0lEVEggQ09MVU1OUyBWRVJUSUNBTC1UWVBFIEhFSUdIVCBMSU5FUwog ICBERUZTWU0gKFFmbG9vciwgImZsb29yIik7CiAgIERFRlNZTSAoUWNlaWxpbmcsICJjZWls aW5nIik7CiAgIERFRlNZTSAoUW1hcmtfZm9yX3JlZGlzcGxheSwgIm1hcmstZm9yLXJlZGlz cGxheSIpOworICBERUZTWU0gKFFtb2RlX2xpbmVfZm9ybWF0LCAibW9kZS1saW5lLWZvcm1h dCIpOworICBERUZTWU0gKFFoZWFkZXJfbGluZV9mb3JtYXQsICJoZWFkZXItbGluZS1mb3Jt YXQiKTsKCiAgIHN0YXRpY3BybyAoJlZ3aW5kb3dfbGlzdCk7CgpAQCAtNzYwMyw2ICs3Nzk5 LDcgQEAgdGhpcyB2YWx1ZSBmb3IgcGFyYW1ldGVycyB3aXRob3V0IHJlYWQgc3ludGF4IChs aWtlIHdpbmRvd3Mgb3IgZnJhbWVzKS4KICAgZGVmc3ViciAoJlNzZXRfd2luZG93X3BvaW50 KTsKICAgZGVmc3ViciAoJlNzZXRfd2luZG93X3N0YXJ0KTsKICAgZGVmc3ViciAoJlN3aW5k b3dfZGVkaWNhdGVkX3ApOworICBkZWZzdWJyICgmU3dpbmRvd19saW5lc19waXhlbF9kaW1l bnNpb25zKTsKICAgZGVmc3ViciAoJlNzZXRfd2luZG93X2RlZGljYXRlZF9wKTsKICAgZGVm c3ViciAoJlN3aW5kb3dfZGlzcGxheV90YWJsZSk7CiAgIGRlZnN1YnIgKCZTc2V0X3dpbmRv d19kaXNwbGF5X3RhYmxlKTsKZGlmZiAtLWdpdCBhL3NyYy93aW5kb3cuaCBiL3NyYy93aW5k b3cuaAppbmRleCBhY2I4YTVjLi5lOTA0MGY4MTYgMTAwNjQ0Ci0tLSBhL3NyYy93aW5kb3cu aAorKysgYi9zcmMvd2luZG93LmgKQEAgLTMyOCw4ICszMjgsOSBAQCBzdHJ1Y3Qgd2luZG93 CiAgICAgLyogVHJ1ZSBpZiB0aGlzIHdpbmRvdyBpcyBhIG1pbmlidWZmZXIgd2luZG93LiAg Ki8KICAgICBib29sX2JmIG1pbmkgOiAxOwoKLSAgICAvKiBNZWFuaW5nZnVsIG9ubHkgaWYg Y29udGVudHMgaXMgYSB3aW5kb3csIHRydWUgaWYgdGhpcwotICAgICAgIGludGVybmFsIHdp bmRvdyBpcyB1c2VkIGluIGhvcml6b250YWwgY29tYmluYXRpb24uICAqLworICAgIC8qIE1l YW5pbmdmdWwgZm9yIGludGVybmFsIHdpbmRvd3Mgb25seTogdHJ1ZSBpZiB0aGlzIHdpbmRv dyBpcyBhCisgICAgICAgaG9yaXpvbnRhbCBjb21iaW5hdGlvbiwgZmFsc2UgaWYgaXQgaXMg YSB2ZXJ0aWNhbAorICAgICAgIGNvbWJpbmF0aW9uLiAgKi8KICAgICBib29sX2JmIGhvcml6 b250YWwgOiAxOwoKICAgICAvKiBUcnVlIG1lYW5zIG11c3QgcmVnZW5lcmF0ZSBtb2RlIGxp bmUgb2YgdGhpcyB3aW5kb3cuICAqLwpAQCAtNDgxLDE1ICs0ODIsMTQgQEAgc3RydWN0IHdp bmRvdwogLyogVHJ1ZSBpZiBXIGlzIGEgbWluaWJ1ZmZlciB3aW5kb3cuICAqLwogI2RlZmlu ZSBNSU5JX1dJTkRPV19QKFcpICgoVyktPm1pbmkpCgotLyogMSBpZiBXIGlzIGEgbm9uLW9u bHkgbWluaWJ1ZmZlciB3aW5kb3cuICAqLwotLyogVGhlIGZpcnN0IGNoZWNrIGlzIHJlZHVu ZGFudCBhbmQgdGhlIHNlY29uZCBvdmVybHkgY29tcGxpY2F0ZWQuICovCi0jZGVmaW5lIE1J TklfTk9OX09OTFlfV0lORE9XX1AoVykJCQkJXAotICAoTUlOSV9XSU5ET1dfUCAoVykJCQkJ CQlcCi0gICAmJiAoRVEgKFctPnByZXYsIEZSQU1FX1JPT1RfV0lORE9XIChXSU5ET1dfWEZS QU1FIChXKSkpKSkKKy8qIFRydWUgaWYgVyBpcyBhIG1pbmlidWZmZXIgd2luZG93IG9uIGEg ZnJhbWUgdGhhdCBjb250YWlucyBhdCBsZWFzdAorICAgb25lIG90aGVyIHdpbmRvdy4gICov CisjZGVmaW5lIE1JTklfTk9OX09OTFlfV0lORE9XX1AoVykJIFwKKyAgKE1JTklfV0lORE9X X1AgKFcpICYmICFOSUxQICgoVyktPnByZXYpKQoKLS8qIDEgaWYgVyBpcyBhIG1pbmlidWZm ZXItb25seSB3aW5kb3cuICAqLwotI2RlZmluZSBNSU5JX09OTFlfV0lORE9XX1AoVykJCQlc Ci0gIChNSU5JX1dJTkRPV19QIChXKSAmJiBOSUxQIChXLT5wcmV2KSkKKy8qIFRydWUgaWYg VyBpcyBhIG1pbmlidWZmZXIgd2luZG93IHRoYXQgaXMgYWxvbmUgb24gaXRzIGZyYW1lLiAg Ki8KKyNkZWZpbmUgTUlOSV9PTkxZX1dJTkRPV19QKFcpCQkgXAorICAoTUlOSV9XSU5ET1df UCAoVykgJiYgTklMUCAoKFcpLT5wcmV2KSkKCiAvKiBHZW5lcmFsIHdpbmRvdyBsYXlvdXQ6 CgpAQCAtNTE4LDI5ICs1MTgsMzQgQEAgc3RydWN0IHdpbmRvdwoKIC8qIEEgaGFuZHkgbWFj cm8uICAqLwoKLS8qIE5vbi1uaWwgaWYgVyBpcyBsZWFmIChjYXJyeSB0aGUgYnVmZmVyKS4g ICovCi0KKy8qIE5vbi1uaWwgaWYgd2luZG93IFcgaXMgbGVhZiB3aW5kb3cgKGhhcyBhIGJ1 ZmZlcikuICAqLwogI2RlZmluZSBXSU5ET1dfTEVBRl9QKFcpIFwKICAgKEJVRkZFUlAgKChX KS0+Y29udGVudHMpKQoKLS8qIE5vbi1uaWwgaWYgVyBpcyBpbnRlcm5hbC4gICovCisvKiBO b24tbmlsIGlmIHdpbmRvdyBXIGlzIGludGVybmFsIChpcyBhIHBhcmVudCB3aW5kb3cpLiAg Ki8KICNkZWZpbmUgV0lORE9XX0lOVEVSTkFMX1AoVykgXAogICAoV0lORE9XUCAoKFcpLT5j b250ZW50cykpCgotLyogVHJ1ZSBpZiBXIGlzIGEgbWVtYmVyIG9mIGhvcml6b250YWwgY29t YmluYXRpb24uICAqLworLyogVHJ1ZSBpZiB3aW5kb3cgVyBpcyBhIGhvcml6b250YWwgY29t YmluYXRpb24gb2Ygd2luZG93cy4gICovCiAjZGVmaW5lIFdJTkRPV19IT1JJWk9OVEFMX0NP TUJJTkFUSU9OX1AoVykgXAogICAoV0lORE9XX0lOVEVSTkFMX1AgKFcpICYmIChXKS0+aG9y aXpvbnRhbCkKCi0vKiBUcnVlIGlmIFcgaXMgYSBtZW1iZXIgb2YgdmVydGljYWwgY29tYmlu YXRpb24uICAqLworLyogVHJ1ZSBpZiB3aW5kb3cgVyBpcyBhIHZlcnRpY2FsIGNvbWJpbmF0 aW9uIG9mIHdpbmRvd3MuICAqLwogI2RlZmluZSBXSU5ET1dfVkVSVElDQUxfQ09NQklOQVRJ T05fUChXKSBcCiAgIChXSU5ET1dfSU5URVJOQUxfUCAoVykgJiYgIShXKS0+aG9yaXpvbnRh bCkKCi0vKiBXSU5ET1cncyBYRlJBTUUuICAqLworLyogV2luZG93IFcncyBYRlJBTUUuICAq LwogI2RlZmluZSBXSU5ET1dfWEZSQU1FKFcpIChYRlJBTUUgKFdJTkRPV19GUkFNRSAoKFcp KSkpCgotLyogV2hldGhlciBXSU5ET1cgaXMgYSBwc2V1ZG8gd2luZG93LiAgKi8KKy8qIFdo ZXRoZXIgd2luZG93IFcgaXMgYSBwc2V1ZG8gd2luZG93LiAgKi8KICNkZWZpbmUgV0lORE9X X1BTRVVET19QKFcpICgoVyktPnBzZXVkb193aW5kb3dfcCkKCisvKiBXaW5kb3cgVydzIGJ1 ZmZlci4gICovCisjZGVmaW5lIFdJTkRPV19CVUZGRVIoVykJCQlcCisgIChXSU5ET1dfTEVB Rl9QKFcpCQkJCVwKKyAgID8gKFcpLT5jb250ZW50cwkJCQlcCisgICA6IFFuaWwpCQkJCQlc CisKIC8qIFJldHVybiB0aGUgY2Fub25pY2FsIGNvbHVtbiB3aWR0aCBvZiB0aGUgZnJhbWUg b2Ygd2luZG93IFcuICAqLwogI2RlZmluZSBXSU5ET1dfRlJBTUVfQ09MVU1OX1dJRFRIKFcp IFwKICAgKEZSQU1FX0NPTFVNTl9XSURUSCAoV0lORE9XX1hGUkFNRSAoKFcpKSkpCkBAIC01 NDksMjQgKzU1NCwyNCBAQCBzdHJ1Y3Qgd2luZG93CiAjZGVmaW5lIFdJTkRPV19GUkFNRV9M SU5FX0hFSUdIVChXKSBcCiAgIChGUkFNRV9MSU5FX0hFSUdIVCAoV0lORE9XX1hGUkFNRSAo KFcpKSkpCgotLyogUmV0dXJuIHRoZSBwaXhlbCB3aWR0aCBvZiB3aW5kb3cgVy4KLSAgIFRo aXMgaW5jbHVkZXMgc2Nyb2xsIGJhcnMgYW5kIGZyaW5nZXMuICAqLworLyogUmV0dXJuIHRo ZSBwaXhlbCB3aWR0aCBvZiB3aW5kb3cgVy4gIFRoaXMgaW5jbHVkZXMgZGl2aWRlcnMsIHNj cm9sbAorICAgYmFycywgZnJpbmdlcyBhbmQgbWFyZ2lucywgaWYgYW55LiAgKi8KICNkZWZp bmUgV0lORE9XX1BJWEVMX1dJRFRIKFcpIChXKS0+cGl4ZWxfd2lkdGgKCi0vKiBSZXR1cm4g dGhlIHBpeGVsIGhlaWdodCBvZiB3aW5kb3cgVy4KLSAgIFRoaXMgaW5jbHVkZXMgaGVhZGVy IGFuZCBtb2RlIGxpbmVzLCBpZiBhbnkuICAqLworLyogUmV0dXJuIHRoZSBwaXhlbCBoZWln aHQgb2Ygd2luZG93IFcuICBUaGlzIGluY2x1ZGVzIGRpdmlkZXJzLCBzY3JvbGwKKyAgIGJh cnMsIGhlYWRlciBhbmQgbW9kZSBsaW5lcywgaWYgYW55LiAgKi8KICNkZWZpbmUgV0lORE9X X1BJWEVMX0hFSUdIVChXKSAoVyktPnBpeGVsX2hlaWdodAoKLS8qIFJldHVybiB0aGUgd2lk dGggb2Ygd2luZG93IFcgaW4gY2Fub25pY2FsIGNvbHVtbiB1bml0cy4KLSAgIFRoaXMgaW5j bHVkZXMgc2Nyb2xsIGJhcnMgYW5kIGZyaW5nZXMuCi0gICBUaGlzIHZhbHVlIGlzIGFkanVz dGVkIHN1Y2ggdGhhdCB0aGUgc3VtIG9mIHRoZSB3aWR0aHMgb2YgYWxsIGNoaWxkCisvKiBS ZXR1cm4gdGhlIHdpZHRoIG9mIHdpbmRvdyBXIGluIGNhbm9uaWNhbCBjb2x1bW4gdW5pdHMu ICBUaGlzCisgICBpbmNsdWRlcyBkaXZpZGVycywgc2Nyb2xsIGJhcnMsIGZyaW5nZXMgYW5k IG1hcmdpbnMsIGlmIGFueS4gIFRoZQorICAgdmFsdWUgaXMgYWRqdXN0ZWQgc3VjaCB0aGF0 IHRoZSBzdW0gb2YgdGhlIHdpZHRocyBvZiBhbGwgY2hpbGQKICAgIHdpbmRvd3MgZXF1YWxz IHRoZSB3aWR0aCBvZiB0aGVpciBwYXJlbnQgd2luZG93LiAgKi8KICNkZWZpbmUgV0lORE9X X1RPVEFMX0NPTFMoVykgKFcpLT50b3RhbF9jb2xzCgotLyogUmV0dXJuIHRoZSBoZWlnaHQg b2Ygd2luZG93IFcgaW4gY2Fub25pY2FsIGxpbmUgdW5pdHMuCi0gICBUaGlzIGluY2x1ZGVz IGhlYWRlciBhbmQgbW9kZSBsaW5lcywgaWYgYW55LgotICAgVGhpcyB2YWx1ZSBpcyBhZGp1 c3RlZCBzdWNoIHRoYXQgdGhlIHN1bSBvZiB0aGUgaGVpZ2h0cyBvZiBhbGwgY2hpbGQKLSAg IHdpbmRvd3MgZXF1YWxzIHRoZSBoZWlnaHQgb2YgdGhlaXIgcGFyZW50IHdpbmRvdy4gICov CisvKiBSZXR1cm4gdGhlIGhlaWdodCBvZiB3aW5kb3cgVyBpbiBjYW5vbmljYWwgbGluZSB1 bml0cy4gIFRoaXMgaW5jbHVkZXMKKyAgIGRpdmlkZXJzLCBzY3JvbGwgYmFycywgaGVhZGVy IGFuZCBtb2RlIGxpbmVzLCBpZiBhbnkuICBUaGUgdmFsdWUgaXMKKyAgIGFkanVzdGVkIHN1 Y2ggdGhhdCB0aGUgc3VtIG9mIHRoZSBoZWlnaHRzIG9mIGFsbCBjaGlsZCB3aW5kb3dzIGVx dWFscworICAgdGhlIGhlaWdodCBvZiB0aGVpciBwYXJlbnQgd2luZG93LiAgKi8KICNkZWZp bmUgV0lORE9XX1RPVEFMX0xJTkVTKFcpIChXKS0+dG90YWxfbGluZXMKCiAvKiBUaGUgc21h bGxlc3QgYWNjZXB0YWJsZSBkaW1lbnNpb25zIGZvciBhIHdpbmRvdy4gIEFueXRoaW5nIHNt YWxsZXIKQEAgLTU4MSwzMSArNTg2LDYzIEBAIHN0cnVjdCB3aW5kb3cKICNkZWZpbmUgTUlO X1NBRkVfV0lORE9XX1BJWEVMX0hFSUdIVChXKSBcCiAgIChXSU5ET1dfRlJBTUVfTElORV9I RUlHSFQgKFcpKQoKKy8qIFRydWUgaWYgd2luZG93IFcgaGFzIG5vIG90aGVyIHdpbmRvd3Mg dG8gaXRzIGxlZnQgb24gaXRzIGZyYW1lLiAgKi8KKyNkZWZpbmUgV0lORE9XX0xFRlRNT1NU X1AoVykJCQlcCisgIChXSU5ET1dfTEVGVF9QSVhFTF9FREdFIChXKSA9PSAwKQorCisvKiBU cnVlIGlmIHdpbmRvdyBXIGhhcyBubyBvdGhlciB3aW5kb3dzIGFib3ZlIGl0IG9uIGl0cyBm cmFtZS4gICovCisjZGVmaW5lIFdJTkRPV19UT1BNT1NUX1AoVykJCQlcCisgIChXSU5ET1df VE9QX1BJWEVMX0VER0UgKFcpID09IDApCisKKy8qIFRydWUgaWYgd2luZG93IFcgaGFzIG5v IG90aGVyIHdpbmRvd3MgdG8gaXRzIHJpZ2h0IG9uIGl0cyBmcmFtZS4gICovCisjZGVmaW5l IFdJTkRPV19SSUdIVE1PU1RfUChXKQkJCQkJXAorICAoV0lORE9XX1JJR0hUX1BJWEVMX0VE R0UgKFcpCQkJCQlcCisgICA9PSAoV0lORE9XX1JJR0hUX1BJWEVMX0VER0UJCQkJCVwKKyAg ICAgICAoWFdJTkRPVyAoRlJBTUVfUk9PVF9XSU5ET1cgKFdJTkRPV19YRlJBTUUgKFcpKSkp KSkJXAorCisvKiBUcnVlIGlmIHdpbmRvdyBXIGhhcyBubyBvdGhlciB3aW5kb3dzIGJlbG93 IGl0IG9uIGl0cyBmcmFtZSAodGhlCisgICBtaW5pYnVmZmVyIHdpbmRvdyBpcyBub3QgY291 bnRlZCBpbiB0aGlzIHJlc3BlY3QgdW5sZXNzIFcgaXRzZWxmIGlzIGEKKyAgIG1pbmlidWZm ZXIgd2luZG93KS4gICovCisjZGVmaW5lIFdJTkRPV19CT1RUT01NT1NUX1AoVykJCQkJCVwK KyAgKFdJTkRPV19CT1RUT01fUElYRUxfRURHRSAoVykJCQkJCVwKKyAgID09IChXSU5ET1df Qk9UVE9NX1BJWEVMX0VER0UJCQkJCVwKKyAgICAgICAoWFdJTkRPVyAoRlJBTUVfUk9PVF9X SU5ET1cgKFdJTkRPV19YRlJBTUUgKFcpKSkpKSkJXAorCisvKiBUcnVlIGlmIHdpbmRvdyBX IHRha2VzIHVwIHRoZSBmdWxsIHdpZHRoIG9mIGl0cyBmcmFtZS4gICovCisjZGVmaW5lIFdJ TkRPV19GVUxMX1dJRFRIX1AoVykJCQkJCVwKKyAgKFdJTkRPV19QSVhFTF9XSURUSCAoVykJ CQkJCVwKKyAgID09IChXSU5ET1dfUElYRUxfV0lEVEgJCQkJCVwKKyAgICAgICAoWFdJTkRP VyAoRlJBTUVfUk9PVF9XSU5ET1cgKFdJTkRPV19YRlJBTUUgKFcpKSkpKSkJXAorCiAvKiBX aWR0aCBvZiByaWdodCBkaXZpZGVyIG9mIHdpbmRvdyBXLiAgKi8KICNkZWZpbmUgV0lORE9X X1JJR0hUX0RJVklERVJfV0lEVEgoVykJCQkJXAotICAoKFdJTkRPV19SSUdIVE1PU1RfUCAo VykgfHwgTUlOSV9XSU5ET1dfUCAoVykpCQlcCi0gICA/IDAJCQkJCQkJCVwKLSAgIDogRlJB TUVfUklHSFRfRElWSURFUl9XSURUSCAoV0lORE9XX1hGUkFNRSAoVykpKQorICAoV0lORE9X X1JJR0hUTU9TVF9QIChXKQkJCQkJXAorICAgPyAwIDogRlJBTUVfUklHSFRfRElWSURFUl9X SURUSCAoV0lORE9XX1hGUkFNRSAoVykpKQorCisvKiBXaWR0aCBvZiBib3R0b20gZGl2aWRl ciBvZiB3aW5kb3cgVy4gICovCisjZGVmaW5lIFdJTkRPV19CT1RUT01fRElWSURFUl9XSURU SChXKQkJCQkJXAorICAoKChXSU5ET1dfQk9UVE9NTU9TVF9QIChXKQkJCQkJCVwKKyAgICAg JiYgTklMUCAoKFhXSU5ET1cgKEZSQU1FX1JPT1RfV0lORE9XCQkJCVwKKwkJCShXSU5ET1df WEZSQU1FIChXKSkpKS0+bmV4dCkpCQkJXAorICAgIHx8IEVRICgoVyktPnByZXYsIEZSQU1F X1JPT1RfV0lORE9XIChXSU5ET1dfWEZSQU1FIChXKSkpCQlcCisgICAgfHwgKFcpLT5wc2V1 ZG9fd2luZG93X3ApCQkJCQkJXAorICAgPyAwIDogRlJBTUVfQk9UVE9NX0RJVklERVJfV0lE VEggKFdJTkRPV19YRlJBTUUgKFcpKSkKCiAvKiBSZXR1cm4gdGhlIGNhbm9uaWNhbCBmcmFt ZSBjb2x1bW4gYXQgd2hpY2ggd2luZG93IFcgc3RhcnRzLgogICAgVGhpcyBpbmNsdWRlcyBh IGxlZnQtaGFuZCBzY3JvbGwgYmFyLCBpZiBhbnkuICAqLwotCiAjZGVmaW5lIFdJTkRPV19M RUZUX0VER0VfQ09MKFcpIChXKS0+bGVmdF9jb2wKCiAvKiBSZXR1cm4gdGhlIGNhbm9uaWNh bCBmcmFtZSBjb2x1bW4gYmVmb3JlIHdoaWNoIHdpbmRvdyBXIGVuZHMuCiAgICBUaGlzIGlu Y2x1ZGVzIGEgcmlnaHQtaGFuZCBzY3JvbGwgYmFyLCBpZiBhbnkuICAqLwotCiAjZGVmaW5l IFdJTkRPV19SSUdIVF9FREdFX0NPTChXKSBcCiAgIChXSU5ET1dfTEVGVF9FREdFX0NPTCAo VykgKyBXSU5ET1dfVE9UQUxfQ09MUyAoVykpCgogLyogUmV0dXJuIHRoZSBjYW5vbmljYWwg ZnJhbWUgbGluZSBhdCB3aGljaCB3aW5kb3cgVyBzdGFydHMuCiAgICBUaGlzIGluY2x1ZGVz IGEgaGVhZGVyIGxpbmUsIGlmIGFueS4gICovCi0KICNkZWZpbmUgV0lORE9XX1RPUF9FREdF X0xJTkUoVykgKFcpLT50b3BfbGluZQoKIC8qIFJldHVybiB0aGUgY2Fub25pY2FsIGZyYW1l IGxpbmUgYmVmb3JlIHdoaWNoIHdpbmRvdyBXIGVuZHMuCiAgICBUaGlzIGluY2x1ZGVzIGEg bW9kZSBsaW5lLCBpZiBhbnkuICAqLwotCiAjZGVmaW5lIFdJTkRPV19CT1RUT01fRURHRV9M SU5FKFcpIFwKICAgKFdJTkRPV19UT1BfRURHRV9MSU5FIChXKSArIFdJTkRPV19UT1RBTF9M SU5FUyAoVykpCgpAQCAtNjI5LDIwICs2NjYsMTcgQEAgc3RydWN0IHdpbmRvdwoKIC8qIFJl dHVybiB0aGUgZnJhbWUgeC1wb3NpdGlvbiBhdCB3aGljaCB3aW5kb3cgVyBzdGFydHMuCiAg ICBUaGlzIGluY2x1ZGVzIGEgbGVmdC1oYW5kIHNjcm9sbCBiYXIsIGlmIGFueS4gICovCi0K ICNkZWZpbmUgV0lORE9XX0xFRlRfRURHRV9YKFcpIFwKICAgKEZSQU1FX0lOVEVSTkFMX0JP UkRFUl9XSURUSCAoV0lORE9XX1hGUkFNRSAoVykpIFwKICAgICsgV0lORE9XX0xFRlRfUElY RUxfRURHRSAoVykpCgogLyogUmV0dXJuIHRoZSBmcmFtZSB4LSBwb3NpdGlvbiBiZWZvcmUg d2hpY2ggd2luZG93IFcgZW5kcy4KICAgIFRoaXMgaW5jbHVkZXMgYSByaWdodC1oYW5kIHNj cm9sbCBiYXIsIGlmIGFueS4gICovCi0KICNkZWZpbmUgV0lORE9XX1JJR0hUX0VER0VfWChX KSBcCiAgIChGUkFNRV9JTlRFUk5BTF9CT1JERVJfV0lEVEggKFdJTkRPV19YRlJBTUUgKFcp KSBcCiAgICArIFdJTkRPV19SSUdIVF9QSVhFTF9FREdFIChXKSkKCiAvKiBUcnVlIGlmIFcg aXMgYSBtZW51IGJhciB3aW5kb3cuICAqLwotCiAjaWYgZGVmaW5lZCAoSEFWRV9YX1dJTkRP V1MpICYmICEgZGVmaW5lZCAoVVNFX1hfVE9PTEtJVCkgJiYgISBkZWZpbmVkIChVU0VfR1RL KQogI2RlZmluZSBXSU5ET1dfTUVOVV9CQVJfUChXKSBcCiAgIChXSU5ET1dQIChXSU5ET1df WEZSQU1FIChXKS0+bWVudV9iYXJfd2luZG93KSBcCkBAIC02NjEsNzIgKzY5NSwyNCBAQCBz dHJ1Y3Qgd2luZG93CiAjZGVmaW5lIFdJTkRPV19UT09MX0JBUl9QKFcpIGZhbHNlCiAjZW5k aWYKCi0vKiBSZXR1cm4gdGhlIGZyYW1lIHktcG9zaXRpb24gYXQgd2hpY2ggd2luZG93IFcg c3RhcnRzLgotICAgVGhpcyBpbmNsdWRlcyBhIGhlYWRlciBsaW5lLCBpZiBhbnkuCi0KLSAg IFBYVzogV2l0aCBhIG1lbnUgb3IgdG9vbCBiYXIgdGhpcyBpcyBub3Qgc3ltbWV0cmljIHRv IHRoZSBfWCB2YWx1ZXMKLSAgIHNpbmNlIGl0IF9kb2VzXyBpbmNsdWRlIHRoZSBpbnRlcm5h bCBib3JkZXIgd2lkdGguICAqLworLyogUmV0dXJuIHRoZSBmcmFtZSB5LXBvc2l0aW9uIGF0 IHdoaWNoIHdpbmRvdyBXIHN0YXJ0cy4gICovCiAjZGVmaW5lIFdJTkRPV19UT1BfRURHRV9Z KFcpIFwKICAgKCgoV0lORE9XX01FTlVfQkFSX1AgKFcpIHx8IFdJTkRPV19UT09MX0JBUl9Q IChXKSkgXAogICAgID8gMCA6IEZSQU1FX0lOVEVSTkFMX0JPUkRFUl9XSURUSCAoV0lORE9X X1hGUkFNRSAoVykpKSBcCiAgICArIFdJTkRPV19UT1BfUElYRUxfRURHRSAoVykpCgotLyog UmV0dXJuIHRoZSBmcmFtZSB5LXBvc2l0aW9uIGJlZm9yZSB3aGljaCB3aW5kb3cgVyBlbmRz LgotICAgVGhpcyBpbmNsdWRlcyBhIG1vZGUgbGluZSwgaWYgYW55LiAgKi8KKy8qIFJldHVy biB0aGUgZnJhbWUgeS1wb3NpdGlvbiBiZWZvcmUgd2hpY2ggd2luZG93IFcgZW5kcy4gICov CiAjZGVmaW5lIFdJTkRPV19CT1RUT01fRURHRV9ZKFcpCQkJCSAgIFwKICAgKCgoV0lORE9X X01FTlVfQkFSX1AgKFcpIHx8IFdJTkRPV19UT09MX0JBUl9QIChXKSkJICAgXAogICAgID8g MCA6IEZSQU1FX0lOVEVSTkFMX0JPUkRFUl9XSURUSCAoV0lORE9XX1hGUkFNRSAoVykpKSBc CiAgICArIFdJTkRPV19CT1RUT01fUElYRUxfRURHRSAoVykpCgotLyogVHJ1ZSBpZiB3aW5k b3cgVyB0YWtlcyB1cCB0aGUgZnVsbCB3aWR0aCBvZiBpdHMgZnJhbWUuICAqLwotI2RlZmlu ZSBXSU5ET1dfRlVMTF9XSURUSF9QKFcpCQkJCQlcCi0gIChXSU5ET1dfUElYRUxfV0lEVEgg KFcpCQkJCQlcCi0gICA9PSAoV0lORE9XX1BJWEVMX1dJRFRICQkJCQlcCi0gICAgICAgKFhX SU5ET1cgKEZSQU1FX1JPT1RfV0lORE9XIChXSU5ET1dfWEZSQU1FIChXKSkpKSkpCVwKLQot LyogVHJ1ZSBpZiB3aW5kb3cgVydzIGhhcyBubyBvdGhlciB3aW5kb3dzIHRvIGl0cyBsZWZ0 IGluIGl0cyBmcmFtZS4gICovCi0KLSNkZWZpbmUgV0lORE9XX0xFRlRNT1NUX1AoVykgXAot ICAoV0lORE9XX0xFRlRfUElYRUxfRURHRSAoVykgPT0gMCkKLQotLyogVHJ1ZSBpZiB3aW5k b3cgVydzIGhhcyBubyBvdGhlciB3aW5kb3dzIGFib3ZlIGluIGl0cyBmcmFtZS4gICovCi0j ZGVmaW5lIFdJTkRPV19UT1BNT1NUX1AoVykgXAotICAoV0lORE9XX1RPUF9QSVhFTF9FREdF IChXKSA9PSAwKQotCi0vKiBUcnVlIGlmIHdpbmRvdyBXJ3MgaGFzIG5vIG90aGVyIHdpbmRv d3MgdG8gaXRzIHJpZ2h0IGluIGl0cyBmcmFtZS4gICovCi0jZGVmaW5lIFdJTkRPV19SSUdI VE1PU1RfUChXKQkJCQkJXAotICAoV0lORE9XX1JJR0hUX1BJWEVMX0VER0UgKFcpCQkJCQlc Ci0gICA9PSAoV0lORE9XX1JJR0hUX1BJWEVMX0VER0UJCQkJCVwKLSAgICAgICAoWFdJTkRP VyAoRlJBTUVfUk9PVF9XSU5ET1cgKFdJTkRPV19YRlJBTUUgKFcpKSkpKSkJXAotCi0vKiBU cnVlIGlmIHdpbmRvdyBXJ3MgaGFzIG5vIG90aGVyIHdpbmRvd3MgYmVsb3cgaXQgaW4gaXRz IGZyYW1lCi0gICAodGhlIG1pbmlidWZmZXIgd2luZG93IGlzIG5vdCBjb3VudGVkIGluIHRo aXMgcmVzcGVjdCkuICAqLwotI2RlZmluZSBXSU5ET1dfQk9UVE9NTU9TVF9QKFcpCQkJCQlc Ci0gIChXSU5ET1dfQk9UVE9NX1BJWEVMX0VER0UgKFcpCQkJCQlcCi0gICA9PSAoV0lORE9X X0JPVFRPTV9QSVhFTF9FREdFCQkJCQlcCi0gICAgICAgKFhXSU5ET1cgKEZSQU1FX1JPT1Rf V0lORE9XIChXSU5ET1dfWEZSQU1FIChXKSkpKSkpCVwKLQotLyogUmV0dXJuIHRoZSBmcmFt ZSBjb2x1bW4gYXQgd2hpY2ggdGhlIHRleHQgKG9yIGxlZnQgZnJpbmdlKSBpbgotICAgd2lu ZG93IFcgc3RhcnRzLiAgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgYExFRlRfRURHRScg YmVjYXVzZSBpdAotICAgZG9lcyBub3QgaW5jbHVkZSBhIGxlZnQtaGFuZCBzY3JvbGwgYmFy IGlmIGFueS4gICovCi0jZGVmaW5lIFdJTkRPV19CT1hfTEVGVF9FREdFX0NPTChXKSBcCi0g IChXSU5ET1dfTEVGVF9FREdFX0NPTCAoVykgXAotICAgKyBXSU5ET1dfTEVGVF9TQ1JPTExf QkFSX0NPTFMgKFcpKQotCi0vKiBSZXR1cm4gdGhlIHBpeGVsIHZhbHVlIHdoZXJlIHRoZSB0 ZXh0IChvciBsZWZ0IGZyaW5nZSkgaW4KLSAgIHdpbmRvdyBXIHN0YXJ0cy4gIFRoaXMgaXMg ZGlmZmVyZW50IGZyb20gdGhlIGBMRUZUX0VER0UnIGJlY2F1c2UgaXQKLSAgIGRvZXMgbm90 IGluY2x1ZGUgYSBsZWZ0LWhhbmQgc2Nyb2xsIGJhciBpZiBhbnkuICAqLworLyogUmV0dXJu IHRoZSBwaXhlbCB2YWx1ZSB3aGVyZSB0aGUgdGV4dCAob3IgbGVmdCBmcmluZ2UpIGluIHdp bmRvdyBXCisgICBzdGFydHMuICAqLwogI2RlZmluZSBXSU5ET1dfQk9YX0xFRlRfUElYRUxf RURHRShXKQkJXAogICAoV0lORE9XX0xFRlRfUElYRUxfRURHRSAoVykJCQlcCiAgICArIFdJ TkRPV19MRUZUX1NDUk9MTF9CQVJfQVJFQV9XSURUSCAoVykpCgotLyogUmV0dXJuIHRoZSB3 aW5kb3cgY29sdW1uIGJlZm9yZSB3aGljaCB0aGUgdGV4dCBpbiB3aW5kb3cgVyBlbmRzLgot ICAgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBXSU5ET1dfUklHSFRfRURHRV9DT0wgYmVjYXVz ZSBpdCBkb2VzIG5vdAotICAgaW5jbHVkZSBhIHNjcm9sbCBiYXIgb3Igd2luZG93LXNlcGFy YXRpbmcgbGluZSBvbiB0aGUgcmlnaHQgZWRnZS4gICovCi0jZGVmaW5lIFdJTkRPV19CT1hf UklHSFRfRURHRV9DT0woVykgXAotICAoV0lORE9XX1JJR0hUX0VER0VfQ09MIChXKSBcCi0g ICAtIFdJTkRPV19SSUdIVF9TQ1JPTExfQkFSX0NPTFMgKFcpKQotCiAvKiBSZXR1cm4gdGhl IHBpeGVsIHZhbHVlIGJlZm9yZSB3aGljaCB0aGUgdGV4dCBpbiB3aW5kb3cgVyBlbmRzLiAg VGhpcwogICAgaXMgZGlmZmVyZW50IGZyb20gdGhlIGBSSUdIVF9FREdFJyBiZWNhdXNlIGl0 IGRvZXMgbm90IGluY2x1ZGUgYQogICAgcmlnaHQtaGFuZCBzY3JvbGwgYmFyIG9yIHdpbmRv dy1zZXBhcmF0aW5nIGxpbmUgb24gdGhlIHJpZ2h0CkBAIC03MzYsMTYgKzcyMiwxNiBAQCBz dHJ1Y3Qgd2luZG93CiAgICAtIFdJTkRPV19SSUdIVF9ESVZJREVSX1dJRFRIIChXKQkJXAog ICAgLSBXSU5ET1dfUklHSFRfU0NST0xMX0JBUl9BUkVBX1dJRFRIIChXKSkKCi0vKiBSZXR1 cm4gdGhlIGZyYW1lIHBvc2l0aW9uIGF0IHdoaWNoIHRoZSB0ZXh0IChvciBsZWZ0IGZyaW5n ZSkgaW4KLSAgIHdpbmRvdyBXIHN0YXJ0cy4gIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhl IGBMRUZUX0VER0UnIGJlY2F1c2UgaXQKLSAgIGRvZXMgbm90IGluY2x1ZGUgYSBsZWZ0LWhh bmQgc2Nyb2xsIGJhciBpZiBhbnkuICAqLworLyogUmV0dXJuIHRoZSBmcmFtZSB4LXBvc2l0 aW9uIGF0IHdoaWNoIHRoZSB0ZXh0IChvciBsZWZ0IGZyaW5nZSkgaW4KKyAgIHdpbmRvdyBX IHN0YXJ0cy4gIFRoaXMgZG9lcyBub3QgaW5jbHVkZSBhIGxlZnQtaGFuZCBzY3JvbGwgYmFy IGlmCisgICBhbnkuICAqLwogI2RlZmluZSBXSU5ET1dfQk9YX0xFRlRfRURHRV9YKFcpCQkg ICBcCiAgIChGUkFNRV9JTlRFUk5BTF9CT1JERVJfV0lEVEggKFdJTkRPV19YRlJBTUUgKFcp KSBcCiAgICArIFdJTkRPV19CT1hfTEVGVF9QSVhFTF9FREdFIChXKSkKCi0vKiBSZXR1cm4g dGhlIHdpbmRvdyBjb2x1bW4gYmVmb3JlIHdoaWNoIHRoZSB0ZXh0IGluIHdpbmRvdyBXIGVu ZHMuCi0gICBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIFdJTkRPV19SSUdIVF9FREdFX0NPTCBi ZWNhdXNlIGl0IGRvZXMgbm90Ci0gICBpbmNsdWRlIGEgc2Nyb2xsIGJhciBvciB3aW5kb3ct c2VwYXJhdGluZyBsaW5lIG9uIHRoZSByaWdodCBlZGdlLiAgKi8KKy8qIFJldHVybiB0aGUg ZnJhbWUgeC1wb3NpdGlvbiBiZWZvcmUgd2hpY2ggdGhlIHRleHQgaW4gd2luZG93IFcgZW5k cy4KKyAgIFRoaXMgZG9lcyBub3QgaW5jbHVkZSBhIHNjcm9sbCBiYXIsIGRpdmlkZXIgb3Ig d2luZG93LXNlcGFyYXRpbmcgbGluZQorICAgb24gdGhlIHJpZ2h0IGVkZ2UuICAqLwogI2Rl ZmluZSBXSU5ET1dfQk9YX1JJR0hUX0VER0VfWChXKQkJICAgXAogICAoRlJBTUVfSU5URVJO QUxfQk9SREVSX1dJRFRIIChXSU5ET1dfWEZSQU1FIChXKSkgXAogICAgKyBXSU5ET1dfQk9Y X1JJR0hUX1BJWEVMX0VER0UgKFcpKQpAQCAtODk5LDE2ICs4ODUsNiBAQCBzdHJ1Y3Qgd2lu ZG93CiAgICA/IFdJTkRPV19CT1hfUklHSFRfRURHRV9YIChXKQkJXAogICAgOiBXSU5ET1df TEVGVF9FREdFX1ggKFcpKQoKLS8qIFdpZHRoIG9mIGJvdHRvbSBkaXZpZGVyIG9mIHdpbmRv dyBXLiAgKi8KLSNkZWZpbmUgV0lORE9XX0JPVFRPTV9ESVZJREVSX1dJRFRIKFcpCQkJCQlc Ci0gICgoKFdJTkRPV19CT1RUT01NT1NUX1AgKFcpCQkJCQkJXAotICAgICAmJiBOSUxQICgo WFdJTkRPVyAoRlJBTUVfUk9PVF9XSU5ET1cJCQkJXAotCQkJKFdJTkRPV19YRlJBTUUgKFcp KSkpLT5uZXh0KSkJCQlcCi0gICAgfHwgRVEgKChXKS0+cHJldiwgRlJBTUVfUk9PVF9XSU5E T1cgKFdJTkRPV19YRlJBTUUgKFcpKSkJCVwKLSAgICB8fCAoVyktPnBzZXVkb193aW5kb3df cCkJCQkJCQlcCi0gICA/IDAJCQkJCQkJCQlcCi0gICA6IEZSQU1FX0JPVFRPTV9ESVZJREVS X1dJRFRIIChXSU5ET1dfWEZSQU1FIChXKSkpCi0KIC8qIEhlaWdodCB0aGF0IGEgc2Nyb2xs IGJhciBpbiB3aW5kb3cgVyBzaG91bGQgaGF2ZSwgaWYgdGhlcmUgaXMgb25lLgogICAgTWVh c3VyZWQgaW4gcGl4ZWxzLiAgSWYgc2Nyb2xsIGJhcnMgYXJlIHR1cm5lZCBvZmYsIHRoaXMg aXMgc3RpbGwKICAgIG5vbnplcm8uICAqLwpAQCAtOTQyLDIyICs5MTgsMjIgQEAgc3RydWN0 IHdpbmRvdwogLyogSGVpZ2h0IGluIHBpeGVscyBvZiB0aGUgbW9kZSBsaW5lLgogICAgTWF5 IGJlIHplcm8gaWYgVyBkb2Vzbid0IGhhdmUgYSBtb2RlIGxpbmUuICAqLwogI2RlZmluZSBX SU5ET1dfTU9ERV9MSU5FX0hFSUdIVChXKQlcCi0gIChXSU5ET1dfV0FOVFNfTU9ERUxJTkVf UCAoKFcpKQlcCisgICh3aW5kb3dfd2FudHNfbW9kZV9saW5lICgoVykpCQlcCiAgICA/IENV UlJFTlRfTU9ERV9MSU5FX0hFSUdIVCAoVykJXAogICAgOiAwKQoKICNkZWZpbmUgV0lORE9X X01PREVfTElORV9MSU5FUyhXKQlcCi0gIFdJTkRPV19XQU5UU19NT0RFTElORV9QIChXKQor ICB3aW5kb3dfd2FudHNfbW9kZV9saW5lIChXKQoKIC8qIEhlaWdodCBpbiBwaXhlbHMgb2Yg dGhlIGhlYWRlciBsaW5lLgogICAgWmVybyBpZiBXIGRvZXNuJ3QgaGF2ZSBhIGhlYWRlciBs aW5lLiAgKi8KICNkZWZpbmUgV0lORE9XX0hFQURFUl9MSU5FX0hFSUdIVChXKQlcCi0gIChX SU5ET1dfV0FOVFNfSEVBREVSX0xJTkVfUCAoVykJXAorICAod2luZG93X3dhbnRzX2hlYWRl cl9saW5lIChXKQkJXAogICAgPyBDVVJSRU5UX0hFQURFUl9MSU5FX0hFSUdIVCAoVykJXAog ICAgOiAwKQoKICNkZWZpbmUgV0lORE9XX0hFQURFUl9MSU5FX0xJTkVTKFcpCVwKLSAgV0lO RE9XX1dBTlRTX0hFQURFUl9MSU5FX1AgKFcpCisgIHdpbmRvd193YW50c19oZWFkZXJfbGlu ZSAoVykKCiAvKiBQaXhlbCBoZWlnaHQgb2Ygd2luZG93IFcgd2l0aG91dCBtb2RlIGxpbmUs IGJvdHRvbSBzY3JvbGwgYmFyIGFuZAogICAgYm90dG9tIGRpdmlkZXIuICAqLwpAQCAtMTEx NCwxMCArMTA5MCwxMyBAQCB2b2lkIHNldF93aW5kb3dfYnVmZmVyIChMaXNwX09iamVjdCB3 aW5kb3csIExpc3BfT2JqZWN0IGJ1ZmZlciwKIGV4dGVybiBMaXNwX09iamVjdCBWd2luZG93 X2xpc3Q7CgogZXh0ZXJuIExpc3BfT2JqZWN0IHdpbmRvd19saXN0ICh2b2lkKTsKK2V4dGVy biBMaXNwX09iamVjdCB3aW5kb3dfcGFyYW1ldGVyIChzdHJ1Y3Qgd2luZG93ICosIExpc3Bf T2JqZWN0IHBhcmFtZXRlcik7CiBleHRlcm4gc3RydWN0IHdpbmRvdyAqZGVjb2RlX2xpdmVf d2luZG93IChMaXNwX09iamVjdCk7CiBleHRlcm4gc3RydWN0IHdpbmRvdyAqZGVjb2RlX2Fu eV93aW5kb3cgKExpc3BfT2JqZWN0KTsKIGV4dGVybiBib29sIGNvbXBhcmVfd2luZG93X2Nv bmZpZ3VyYXRpb25zIChMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsIGJvb2wpOwogZXh0ZXJu IHZvaWQgbWFya193aW5kb3dfY3Vyc29yc19vZmYgKHN0cnVjdCB3aW5kb3cgKik7CitleHRl cm4gYm9vbCB3aW5kb3dfd2FudHNfbW9kZV9saW5lIChzdHJ1Y3Qgd2luZG93ICopOworZXh0 ZXJuIGJvb2wgd2luZG93X3dhbnRzX2hlYWRlcl9saW5lIChzdHJ1Y3Qgd2luZG93ICopOwog ZXh0ZXJuIGludCB3aW5kb3dfaW50ZXJuYWxfaGVpZ2h0IChzdHJ1Y3Qgd2luZG93ICopOwog ZXh0ZXJuIGludCB3aW5kb3dfYm9keV93aWR0aCAoc3RydWN0IHdpbmRvdyAqdywgYm9vbCk7 CiBlbnVtIG1hcmdpbl91bml0IHsgTUFSR0lOX0lOX0xJTkVTLCBNQVJHSU5fSU5fUElYRUxT IH07CkBAIC0xMTMzLDcgKzExMTIsNiBAQCB2b2lkIHNldF93aW5kb3dfYnVmZmVyIChMaXNw X09iamVjdCB3aW5kb3csIExpc3BfT2JqZWN0IGJ1ZmZlciwKIGV4dGVybiB2b2lkIGluaXRf d2luZG93ICh2b2lkKTsKIGV4dGVybiB2b2lkIHN5bXNfb2Zfd2luZG93ICh2b2lkKTsKIGV4 dGVybiB2b2lkIGtleXNfb2Zfd2luZG93ICh2b2lkKTsKLQogLyogTW92ZSBjdXJzb3IgdG8g cm93L2NvbHVtbiBwb3NpdGlvbiBWUE9TL0hQT1MsIHBpeGVsIGNvb3JkaW5hdGVzCiAgICBZ L1guIEhQT1MvVlBPUyBhcmUgd2luZG93LXJlbGF0aXZlIHJvdyBhbmQgY29sdW1uIG51bWJl cnMgYW5kIFgvWQogICAgYXJlIHdpbmRvdy1yZWxhdGl2ZSBwaXhlbCBwb3NpdGlvbnMuICBU aGlzIGlzIGFsd2F5cyBkb25lIGR1cmluZwpkaWZmIC0tZ2l0IGEvc3JjL3hkaXNwLmMgYi9z cmMveGRpc3AuYwppbmRleCAzNGVlODc3Li43ODQ4NDg5IDEwMDY0NAotLS0gYS9zcmMveGRp c3AuYworKysgYi9zcmMveGRpc3AuYwpAQCAtOTIxLDcgKzkyMSw3IEBAIHN0YXRpYyBMaXNw X09iamVjdCBjYWxjX2xpbmVfaGVpZ2h0X3Byb3BlcnR5IChzdHJ1Y3QgaXQgKiwgTGlzcF9P YmplY3QsCgogICBoZWlnaHQgLT0gV0lORE9XX0JPVFRPTV9ESVZJREVSX1dJRFRIICh3KTsK Ci0gIGlmIChXSU5ET1dfV0FOVFNfTU9ERUxJTkVfUCAodykpCisgIGlmICh3aW5kb3dfd2Fu dHNfbW9kZV9saW5lICh3KSkKICAgICBoZWlnaHQgLT0gQ1VSUkVOVF9NT0RFX0xJTkVfSEVJ R0hUICh3KTsKCiAgIGhlaWdodCAtPSBXSU5ET1dfU0NST0xMX0JBUl9BUkVBX0hFSUdIVCAo dyk7CkBAIC05NzgsNyArOTc4LDcgQEAgc3RhdGljIExpc3BfT2JqZWN0IGNhbGNfbGluZV9o ZWlnaHRfcHJvcGVydHkgKHN0cnVjdCBpdCAqLCBMaXNwX09iamVjdCwKICAgICAgdGhlIGFw cHJvcHJpYXRlIGdseXBoIHJvdyBoYXMgaXRzIGBtb2RlX2xpbmVfcCcgZmxhZyBzZXQsCiAg ICAgIGFuZCBpZiBpdCBkb2Vzbid0LCB1c2VzIGVzdGltYXRlX21vZGVfbGluZV9oZWlnaHQg aW5zdGVhZC4gICovCgotICBpZiAoV0lORE9XX1dBTlRTX01PREVMSU5FX1AgKHcpKQorICBp ZiAod2luZG93X3dhbnRzX21vZGVfbGluZSAodykpCiAgICAgewogICAgICAgc3RydWN0IGds eXBoX3JvdyAqbWxfcm93CiAJPSAody0+Y3VycmVudF9tYXRyaXggJiYgdy0+Y3VycmVudF9t YXRyaXgtPnJvd3MKQEAgLTk5MCw3ICs5OTAsNyBAQCBzdGF0aWMgTGlzcF9PYmplY3QgY2Fs Y19saW5lX2hlaWdodF9wcm9wZXJ0eSAoc3RydWN0IGl0ICosIExpc3BfT2JqZWN0LAogCWhl aWdodCAtPSBlc3RpbWF0ZV9tb2RlX2xpbmVfaGVpZ2h0IChmLCBDVVJSRU5UX01PREVfTElO RV9GQUNFX0lEICh3KSk7CiAgICAgfQoKLSAgaWYgKFdJTkRPV19XQU5UU19IRUFERVJfTElO RV9QICh3KSkKKyAgaWYgKHdpbmRvd193YW50c19oZWFkZXJfbGluZSAodykpCiAgICAgewog ICAgICAgc3RydWN0IGdseXBoX3JvdyAqaGxfcm93CiAJPSAody0+Y3VycmVudF9tYXRyaXgg JiYgdy0+Y3VycmVudF9tYXRyaXgtPnJvd3MKQEAgLTExMDIsNyArMTEwMiw3IEBAIHN0YXRp YyBMaXNwX09iamVjdCBjYWxjX2xpbmVfaGVpZ2h0X3Byb3BlcnR5IChzdHJ1Y3QgaXQgKiwg TGlzcF9PYmplY3QsCiAgIGlmIChib3hfeSkKICAgICB7CiAgICAgICAqYm94X3kgPSBXSU5E T1dfVE9QX0VER0VfWSAodyk7Ci0gICAgICBpZiAoV0lORE9XX1dBTlRTX0hFQURFUl9MSU5F X1AgKHcpKQorICAgICAgaWYgKHdpbmRvd193YW50c19oZWFkZXJfbGluZSAodykpCiAJKmJv eF95ICs9IENVUlJFTlRfSEVBREVSX0xJTkVfSEVJR0hUICh3KTsKICAgICB9CiB9CkBAIC0x MzIyLDE1ICsxMzIyLDI5IEBAIHN0YXRpYyBMaXNwX09iamVjdCBjYWxjX2xpbmVfaGVpZ2h0 X3Byb3BlcnR5IChzdHJ1Y3QgaXQgKiwgTGlzcF9PYmplY3QsCiAgICAgcmV0dXJuIHZpc2li bGVfcDsKCiAgIC8qIENvbXB1dGUgZXhhY3QgbW9kZSBsaW5lIGhlaWdodHMuICAqLwotICBp ZiAoV0lORE9XX1dBTlRTX01PREVMSU5FX1AgKHcpKQotICAgIHctPm1vZGVfbGluZV9oZWln aHQKLSAgICAgID0gZGlzcGxheV9tb2RlX2xpbmUgKHcsIENVUlJFTlRfTU9ERV9MSU5FX0ZB Q0VfSUQgKHcpLAotCQkJICAgQlZBUiAoY3VycmVudF9idWZmZXIsIG1vZGVfbGluZV9mb3Jt YXQpKTsKKyAgaWYgKHdpbmRvd193YW50c19tb2RlX2xpbmUgKHcpKQorICAgIHsKKyAgICAg IExpc3BfT2JqZWN0IHdpbmRvd19tb2RlX2xpbmVfZm9ybWF0CisJPSB3aW5kb3dfcGFyYW1l dGVyICh3LCBRbW9kZV9saW5lX2Zvcm1hdCk7CisKKyAgICAgIHctPm1vZGVfbGluZV9oZWln aHQKKwk9IGRpc3BsYXlfbW9kZV9saW5lICh3LCBDVVJSRU5UX01PREVfTElORV9GQUNFX0lE ICh3KSwKKwkJCSAgICAgTklMUCAod2luZG93X21vZGVfbGluZV9mb3JtYXQpCisJCQkgICAg ID8gQlZBUiAoY3VycmVudF9idWZmZXIsIG1vZGVfbGluZV9mb3JtYXQpCisJCQkgICAgIDog d2luZG93X21vZGVfbGluZV9mb3JtYXQpOworICAgIH0KCi0gIGlmIChXSU5ET1dfV0FOVFNf SEVBREVSX0xJTkVfUCAodykpCi0gICAgdy0+aGVhZGVyX2xpbmVfaGVpZ2h0Ci0gICAgICA9 IGRpc3BsYXlfbW9kZV9saW5lICh3LCBIRUFERVJfTElORV9GQUNFX0lELAotCQkJICAgQlZB UiAoY3VycmVudF9idWZmZXIsIGhlYWRlcl9saW5lX2Zvcm1hdCkpOworICBpZiAod2luZG93 X3dhbnRzX2hlYWRlcl9saW5lICh3KSkKKyAgICB7CisgICAgICBMaXNwX09iamVjdCB3aW5k b3dfaGVhZGVyX2xpbmVfZm9ybWF0CisJPSB3aW5kb3dfcGFyYW1ldGVyICh3LCBRaGVhZGVy X2xpbmVfZm9ybWF0KTsKKworICAgICAgdy0+aGVhZGVyX2xpbmVfaGVpZ2h0CisJPSBkaXNw bGF5X21vZGVfbGluZSAodywgSEVBREVSX0xJTkVfRkFDRV9JRCwKKwkJCSAgICAgTklMUCAo d2luZG93X2hlYWRlcl9saW5lX2Zvcm1hdCkKKwkJCSAgICAgPyBCVkFSIChjdXJyZW50X2J1 ZmZlciwgaGVhZGVyX2xpbmVfZm9ybWF0KQorCQkJICAgICA6IHdpbmRvd19oZWFkZXJfbGlu ZV9mb3JtYXQpOworICAgIH0KCiAgIHN0YXJ0X2Rpc3BsYXkgKCZpdCwgdywgdG9wKTsKICAg bW92ZV9pdF90byAoJml0LCBjaGFycG9zLCAtMSwgaXQubGFzdF92aXNpYmxlX3kgLSAxLCAt MSwKQEAgLTI4NDIsMTMgKzI4NTYsMTIgQEAgc3RhdGljIExpc3BfT2JqZWN0IGNhbGNfbGlu ZV9oZWlnaHRfcHJvcGVydHkgKHN0cnVjdCBpdCAqLCBMaXNwX09iamVjdCwKCiAgIC8qIEdl dCBkaW1lbnNpb25zIG9mIHRydW5jYXRpb24gYW5kIGNvbnRpbnVhdGlvbiBnbHlwaHMuICBU aGVzZSBhcmUKICAgICAgZGlzcGxheWVkIGFzIGZyaW5nZSBiaXRtYXBzIHVuZGVyIFgsIGJ1 dCB3ZSBuZWVkIHRoZW0gZm9yIHN1Y2gKLSAgICAgZnJhbWVzIHdoZW4gdGhlIGZyaW5nZXMg YXJlIHR1cm5lZCBvZmYuICBCdXQgbGVhdmUgdGhlIGRpbWVuc2lvbnMKLSAgICAgemVybyBm b3IgdG9vbHRpcCBmcmFtZXMsIGFzIHRoZXNlIGdseXBocyBsb29rIHVnbHkgdGhlcmUgYW5k IGFsc28KLSAgICAgc2Fib3RhZ2UgY2FsY3VsYXRpb25zIG9mIHRvb2x0aXAgZGltZW5zaW9u cyBpbiB4LXNob3ctdGlwLiAgKi8KKyAgICAgZnJhbWVzIHdoZW4gdGhlIGZyaW5nZXMgYXJl IHR1cm5lZCBvZmYuICBUaGUgbm9fc3BlY2lhbF9nbHlwaHMgc2xvdAorICAgICBvZiB0aGUg aXRlcmF0b3IncyBmcmFtZSwgd2hlbiBzZXQsIHN1cHByZXNzZXMgdGhlaXIgZGlzcGxheSAt IGJ5CisgICAgIGRlZmF1bHQgZm9yIHRvb2x0aXAgZnJhbWVzIGFuZCB3aGVuIHNldCB2aWEg dGhlICduby1zcGVjaWFsLWdseXBocycKKyAgICAgZnJhbWUgcGFyYW1ldGVyLiAgKi8KICNp ZmRlZiBIQVZFX1dJTkRPV19TWVNURU0KLSAgaWYgKCEoRlJBTUVfV0lORE9XX1AgKGl0LT5m KQotCSYmIEZSQU1FUCAodGlwX2ZyYW1lKQotCSYmIGl0LT5mID09IFhGUkFNRSAodGlwX2Zy YW1lKSkpCisgIGlmICghKEZSQU1FX1dJTkRPV19QIChpdC0+ZikgJiYgaXQtPmYtPm5vX3Nw ZWNpYWxfZ2x5cGhzKSkKICNlbmRpZgogICAgIHsKICAgICAgIGlmIChpdC0+bGluZV93cmFw ID09IFRSVU5DQVRFKQpAQCAtMjkyMCw3ICsyOTMzLDcgQEAgc3RhdGljIExpc3BfT2JqZWN0 IGNhbGNfbGluZV9oZWlnaHRfcHJvcGVydHkgKHN0cnVjdCBpdCAqLCBMaXNwX09iamVjdCwK IAkgICAgaXQtPmxhc3RfdmlzaWJsZV94IC09IGl0LT5jb250aW51YXRpb25fcGl4ZWxfd2lk dGg7CiAJfQoKLSAgICAgIGl0LT5oZWFkZXJfbGluZV9wID0gV0lORE9XX1dBTlRTX0hFQURF Ul9MSU5FX1AgKHcpOworICAgICAgaXQtPmhlYWRlcl9saW5lX3AgPSB3aW5kb3dfd2FudHNf aGVhZGVyX2xpbmUgKHcpOwogICAgICAgaXQtPmN1cnJlbnRfeSA9IFdJTkRPV19IRUFERVJf TElORV9IRUlHSFQgKHcpICsgdy0+dnNjcm9sbDsKICAgICB9CgpAQCAtMzAxOSw3ICszMDMy LDcgQEAgc3RhdGljIExpc3BfT2JqZWN0IGNhbGNfbGluZV9oZWlnaHRfcHJvcGVydHkgKHN0 cnVjdCBpdCAqLCBMaXNwX09iamVjdCwKIHN0YXJ0X2Rpc3BsYXkgKHN0cnVjdCBpdCAqaXQs IHN0cnVjdCB3aW5kb3cgKncsIHN0cnVjdCB0ZXh0X3BvcyBwb3MpCiB7CiAgIHN0cnVjdCBn bHlwaF9yb3cgKnJvdzsKLSAgYm9vbCBmaXJzdF92cG9zID0gV0lORE9XX1dBTlRTX0hFQURF Ul9MSU5FX1AgKHcpOworICBib29sIGZpcnN0X3Zwb3MgPSB3aW5kb3dfd2FudHNfaGVhZGVy X2xpbmUgKHcpOwoKICAgcm93ID0gdy0+ZGVzaXJlZF9tYXRyaXgtPnJvd3MgKyBmaXJzdF92 cG9zOwogICBpbml0X2l0ZXJhdG9yIChpdCwgdywgQ0hBUlBPUyAocG9zKSwgQllURVBPUyAo cG9zKSwgcm93LCBERUZBVUxUX0ZBQ0VfSUQpOwpAQCAtMTU3OTksNyArMTU4MTIsNyBAQCBl bnVtCgogICAgICAgLyogRmluZCB0aGUgc3RhcnQgb2YgdGhlIGNvbnRpbnVlZCBsaW5lLiAg VGhpcyBzaG91bGQgYmUgZmFzdAogCSBiZWNhdXNlIGZpbmRfbmV3bGluZSBpcyBmYXN0IChu ZXdsaW5lIGNhY2hlKS4gICovCi0gICAgICByb3cgPSB3LT5kZXNpcmVkX21hdHJpeC0+cm93 cyArIFdJTkRPV19XQU5UU19IRUFERVJfTElORV9QICh3KTsKKyAgICAgIHJvdyA9IHctPmRl c2lyZWRfbWF0cml4LT5yb3dzICsgd2luZG93X3dhbnRzX2hlYWRlcl9saW5lICh3KTsKICAg ICAgIGluaXRfaXRlcmF0b3IgKCZpdCwgdywgQ0hBUlBPUyAoc3RhcnRfcG9zKSwgQllURVBP UyAoc3RhcnRfcG9zKSwKIAkJICAgICByb3csIERFRkFVTFRfRkFDRV9JRCk7CiAgICAgICBy ZXNlYXRfYXRfcHJldmlvdXNfdmlzaWJsZV9saW5lX3N0YXJ0ICgmaXQpOwpAQCAtMTU5NDks NyArMTU5NjIsNyBAQCBlbnVtCiAgICAgICB0aGlzX3Njcm9sbF9tYXJnaW4gPSB3aW5kb3df c2Nyb2xsX21hcmdpbiAodywgTUFSR0lOX0lOX1BJWEVMUyk7CgogICAgICAgdG9wX3Njcm9s bF9tYXJnaW4gPSB0aGlzX3Njcm9sbF9tYXJnaW47Ci0gICAgICBpZiAoV0lORE9XX1dBTlRT X0hFQURFUl9MSU5FX1AgKHcpKQorICAgICAgaWYgKHdpbmRvd193YW50c19oZWFkZXJfbGlu ZSAodykpCiAJdG9wX3Njcm9sbF9tYXJnaW4gKz0gQ1VSUkVOVF9IRUFERVJfTElORV9IRUlH SFQgKHcpOwoKICAgICAgIC8qIFN0YXJ0IHdpdGggdGhlIHJvdyB0aGUgY3Vyc29yIHdhcyBk aXNwbGF5ZWQgZHVyaW5nIHRoZSBsYXN0CkBAIC0xNjczMiw3ICsxNjc0NSw3IEBAIGVudW0K IAkgICAgIG1hcmdpbiwgZXZlbiB0aG91Z2ggdGhpcyBwYXJ0IGhhbmRsZXMgd2luZG93cyB0 aGF0IGRpZG4ndAogCSAgICAgc2Nyb2xsIGF0IGFsbC4gICovCiAgICAgICAgICAgaW50IHBp eGVsX21hcmdpbiA9IG1hcmdpbiAqIGZyYW1lX2xpbmVfaGVpZ2h0OwotCSAgYm9vbCBoZWFk ZXJfbGluZSA9IFdJTkRPV19XQU5UU19IRUFERVJfTElORV9QICh3KTsKKwkgIGJvb2wgaGVh ZGVyX2xpbmUgPSB3aW5kb3dfd2FudHNfaGVhZGVyX2xpbmUgKHcpOwoKIAkgIC8qIE5vdGU6 IFdlIGFkZCBhbiBleHRyYSBGUkFNRV9MSU5FX0hFSUdIVCwgYmVjYXVzZSB0aGUgbG9vcAog CSAgICAgYmVsb3csIHdoaWNoIGZpbmRzIHRoZSByb3cgdG8gbW92ZSBwb2ludCB0bywgYWR2 YW5jZXMgYnkKQEAgLTE3Mjk5LDE1ICsxNzMxMiwxNSBAQCBlbnVtCiAgICAgICAgfHwgKHct PmNvbHVtbl9udW1iZXJfZGlzcGxheWVkICE9IC0xCiAJICAgJiYgKHctPmNvbHVtbl9udW1i ZXJfZGlzcGxheWVkICE9IGN1cnJlbnRfY29sdW1uICgpKSkpCiAgICAgICAvKiBUaGlzIG1l YW5zIHRoYXQgdGhlIHdpbmRvdyBoYXMgYSBtb2RlIGxpbmUuICAqLwotICAgICAgJiYgKFdJ TkRPV19XQU5UU19NT0RFTElORV9QICh3KQotCSAgfHwgV0lORE9XX1dBTlRTX0hFQURFUl9M SU5FX1AgKHcpKSkKKyAgICAgICYmICh3aW5kb3dfd2FudHNfbW9kZV9saW5lICh3KQorCSAg fHwgd2luZG93X3dhbnRzX2hlYWRlcl9saW5lICh3KSkpCiAgICAgewoKICAgICAgIGRpc3Bs YXlfbW9kZV9saW5lcyAodyk7CgogICAgICAgLyogSWYgbW9kZSBsaW5lIGhlaWdodCBoYXMg Y2hhbmdlZCwgYXJyYW5nZSBmb3IgYSB0aG9yb3VnaAogCSBpbW1lZGlhdGUgcmVkaXNwbGF5 IHVzaW5nIHRoZSBjb3JyZWN0IG1vZGUgbGluZSBoZWlnaHQuICAqLwotICAgICAgaWYgKFdJ TkRPV19XQU5UU19NT0RFTElORV9QICh3KQorICAgICAgaWYgKHdpbmRvd193YW50c19tb2Rl X2xpbmUgKHcpCiAJICAmJiBDVVJSRU5UX01PREVfTElORV9IRUlHSFQgKHcpICE9IERFU0lS RURfTU9ERV9MSU5FX0hFSUdIVCAodykpCiAJewogCSAgZi0+Zm9udHNfY2hhbmdlZCA9IHRy dWU7CkBAIC0xNzMxOCw3ICsxNzMzMSw3IEBAIGVudW0KCiAgICAgICAvKiBJZiBoZWFkZXIg bGluZSBoZWlnaHQgaGFzIGNoYW5nZWQsIGFycmFuZ2UgZm9yIGEgdGhvcm91Z2gKIAkgaW1t ZWRpYXRlIHJlZGlzcGxheSB1c2luZyB0aGUgY29ycmVjdCBoZWFkZXIgbGluZSBoZWlnaHQu ICAqLwotICAgICAgaWYgKFdJTkRPV19XQU5UU19IRUFERVJfTElORV9QICh3KQorICAgICAg aWYgKHdpbmRvd193YW50c19oZWFkZXJfbGluZSAodykKIAkgICYmIENVUlJFTlRfSEVBREVS X0xJTkVfSEVJR0hUICh3KSAhPSBERVNJUkVEX0hFQURFUl9MSU5FX0hFSUdIVCAodykpCiAJ ewogCSAgZi0+Zm9udHNfY2hhbmdlZCA9IHRydWU7CkBAIC0xNzU4Myw3ICsxNzU5Niw3IEBA IGVudW0KICAgICByZXR1cm4gZmFsc2U7CgogICAvKiBJZiB0b3AtbGluZSB2aXNpYmlsaXR5 IGhhcyBjaGFuZ2VkLCBnaXZlIHVwLiAgKi8KLSAgaWYgKFdJTkRPV19XQU5UU19IRUFERVJf TElORV9QICh3KQorICBpZiAod2luZG93X3dhbnRzX2hlYWRlcl9saW5lICh3KQogICAgICAg IT0gTUFUUklYX0hFQURFUl9MSU5FX1JPVyAody0+Y3VycmVudF9tYXRyaXgpLT5tb2RlX2xp bmVfcCkKICAgICByZXR1cm4gZmFsc2U7CgpAQCAtMTg4MTgsNyArMTg4MzEsNyBAQCBzdHJ1 Y3QgZ2x5cGhfcm93ICoKIAkgICAgPSBNQVRSSVhfUk9XX1ZQT1MgKGZpcnN0X3VuY2hhbmdl ZF9hdF9lbmRfcm93LCB3LT5jdXJyZW50X21hdHJpeCk7CiAJICBpbnQgZnJvbSA9IFdJTkRP V19UT1BfRURHRV9MSU5FICh3KSArIGZyb21fdnBvczsKIAkgIGludCBlbmQgPSAoV0lORE9X X1RPUF9FREdFX0xJTkUgKHcpCi0JCSAgICAgKyBXSU5ET1dfV0FOVFNfSEVBREVSX0xJTkVf UCAodykKKwkJICAgICArIHdpbmRvd193YW50c19oZWFkZXJfbGluZSAodykKIAkJICAgICAr IHdpbmRvd19pbnRlcm5hbF9oZWlnaHQgKHcpKTsKCiAjaWYgZGVmaW5lZCAoSEFWRV9HUE0p IHx8IGRlZmluZWQgKE1TRE9TKQpAQCAtMTg5OTYsNyArMTkwMDksNyBAQCBzdHJ1Y3QgZ2x5 cGhfcm93ICoKICAgICB7CiAgICAgICAvKiBEaXNwbGF5ZWQgdG8gZW5kIG9mIHdpbmRvdywg YnV0IG5vIGxpbmUgY29udGFpbmluZyB0ZXh0IHdhcwogCSBkaXNwbGF5ZWQuICBMaW5lcyB3 ZXJlIGRlbGV0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgd2luZG93LiAgKi8KLSAgICAgIGJvb2wg Zmlyc3RfdnBvcyA9IFdJTkRPV19XQU5UU19IRUFERVJfTElORV9QICh3KTsKKyAgICAgIGJv b2wgZmlyc3RfdnBvcyA9IHdpbmRvd193YW50c19oZWFkZXJfbGluZSAodyk7CiAgICAgICBp bnQgdnBvcyA9IHctPndpbmRvd19lbmRfdnBvczsKICAgICAgIHN0cnVjdCBnbHlwaF9yb3cg KmN1cnJlbnRfcm93ID0gY3VycmVudF9tYXRyaXgtPnJvd3MgKyB2cG9zOwogICAgICAgc3Ry dWN0IGdseXBoX3JvdyAqZGVzaXJlZF9yb3cgPSBkZXNpcmVkX21hdHJpeC0+cm93cyArIHZw b3M7CkBAIC0yMDY5Niw3ICsyMDcwOSw3IEBAIHN0cnVjdCBnbHlwaF9yb3cgKgogICBwdHJk aWZmX3QgbWluX3BvcyA9IFpWICsgMSwgbWF4X3BvcyA9IDA7CiAgIHB0cmRpZmZfdCBtaW5f YnBvcyBVTklOSVQsIG1heF9icG9zIFVOSU5JVDsKICAgYm9vbCBwZW5kaW5nX2hhbmRsZV9s aW5lX3ByZWZpeCA9IGZhbHNlOwotICBpbnQgaGVhZGVyX2xpbmUgPSBXSU5ET1dfV0FOVFNf SEVBREVSX0xJTkVfUCAoaXQtPncpOworICBpbnQgaGVhZGVyX2xpbmUgPSB3aW5kb3dfd2Fu dHNfaGVhZGVyX2xpbmUgKGl0LT53KTsKICAgYm9vbCBoc2Nyb2xsX3RoaXNfbGluZSA9IChj dXJzb3JfdnBvcyA+PSAwCiAJCQkgICAgJiYgaXQtPnZwb3MgPT0gY3Vyc29yX3Zwb3MgLSBo ZWFkZXJfbGluZQogCQkJICAgICYmIGhzY3JvbGxpbmdfY3VycmVudF9saW5lX3AgKGl0LT53 KSk7CkBAIC0yMjY0OSwyMCArMjI2NjIsMzAgQEAgY29udHJvbCBjaGFyYWN0ZXJzIFJMTyAo dSsyMDJlKSBhbmQgTFJPICh1KzIwMmQpLiAgU2VlIHRoZQogICBsaW5lX251bWJlcl9kaXNw bGF5ZWQgPSBmYWxzZTsKICAgdy0+Y29sdW1uX251bWJlcl9kaXNwbGF5ZWQgPSAtMTsKCi0g IGlmIChXSU5ET1dfV0FOVFNfTU9ERUxJTkVfUCAodykpCisgIGlmICh3aW5kb3dfd2FudHNf bW9kZV9saW5lICh3KSkKICAgICB7CisgICAgICBMaXNwX09iamVjdCB3aW5kb3dfbW9kZV9s aW5lX2Zvcm1hdAorCT0gd2luZG93X3BhcmFtZXRlciAodywgUW1vZGVfbGluZV9mb3JtYXQp OworCiAgICAgICBzdHJ1Y3Qgd2luZG93ICpzZWxfdyA9IFhXSU5ET1cgKG9sZF9zZWxlY3Rl ZF93aW5kb3cpOwoKICAgICAgIC8qIFNlbGVjdCBtb2RlIGxpbmUgZmFjZSBiYXNlZCBvbiB0 aGUgcmVhbCBzZWxlY3RlZCB3aW5kb3cuICAqLwogICAgICAgZGlzcGxheV9tb2RlX2xpbmUg KHcsIENVUlJFTlRfTU9ERV9MSU5FX0ZBQ0VfSURfMyAoc2VsX3csIHNlbF93LCB3KSwKLQkJ CSBCVkFSIChjdXJyZW50X2J1ZmZlciwgbW9kZV9saW5lX2Zvcm1hdCkpOworCQkJIE5JTFAg KHdpbmRvd19tb2RlX2xpbmVfZm9ybWF0KQorCQkJID8gQlZBUiAoY3VycmVudF9idWZmZXIs IG1vZGVfbGluZV9mb3JtYXQpCisJCQkgOiB3aW5kb3dfbW9kZV9saW5lX2Zvcm1hdCk7CiAg ICAgICArK247CiAgICAgfQoKLSAgaWYgKFdJTkRPV19XQU5UU19IRUFERVJfTElORV9QICh3 KSkKKyAgaWYgKHdpbmRvd193YW50c19oZWFkZXJfbGluZSAodykpCiAgICAgeworICAgICAg TGlzcF9PYmplY3Qgd2luZG93X2hlYWRlcl9saW5lX2Zvcm1hdAorCT0gd2luZG93X3BhcmFt ZXRlciAodywgUWhlYWRlcl9saW5lX2Zvcm1hdCk7CisKICAgICAgIGRpc3BsYXlfbW9kZV9s aW5lICh3LCBIRUFERVJfTElORV9GQUNFX0lELAotCQkJIEJWQVIgKGN1cnJlbnRfYnVmZmVy LCBoZWFkZXJfbGluZV9mb3JtYXQpKTsKKwkJCSBOSUxQICh3aW5kb3dfaGVhZGVyX2xpbmVf Zm9ybWF0KQorCQkJID8gQlZBUiAoY3VycmVudF9idWZmZXIsIGhlYWRlcl9saW5lX2Zvcm1h dCkKKwkJCSA6IHdpbmRvd19oZWFkZXJfbGluZV9mb3JtYXQpOwogICAgICAgKytuOwogICAg IH0KCkBAIC0zMDQ0MiwxMyArMzA0NjUsNjcgQEAgQSBwb2x5Z29uIGlzIGEgY29ucyAocG9s eSAuIFt4MCB5MCB4MSB5MSAuLi5dKSB3aGVyZSBlYWNoIHBhaXIgaW4gdGhlCiAJICAmJiBw YXJ0ICE9IE9OX0hFQURFUl9MSU5FKSkKICAgICBjbGVhcl9tb3VzZV9mYWNlIChobGluZm8p OwoKKyAgLyogUmVzZXQgaGVscF9lY2hvX3N0cmluZy4gSXQgd2lsbCBnZXQgcmVjb21wdXRl ZCBiZWxvdy4gICovCisgIGhlbHBfZWNob19zdHJpbmcgPSBRbmlsOworCisjaWZkZWYgSEFW RV9XSU5ET1dfU1lTVEVNCisgIC8qIElmIHRoZSBjdXJzb3IgaXMgb24gdGhlIGludGVybmFs IGJvcmRlciBvZiBGUkFNRSBhbmQgRlJBTUUncworICAgICBpbnRlcm5hbCBib3JkZXIgaXMg ZHJhZ2dhYmxlLCBwcm92aWRlIHNvbWUgdmlzdWFsIGZlZWRiYWNrLiAgKi8KKyAgaWYgKEZS QU1FX0lOVEVSTkFMX0JPUkRFUl9XSURUSCAoZikgPiAwCisgICAgICAmJiAhTklMUCAoZ2V0 X2ZyYW1lX3BhcmFtIChmLCBRZHJhZ19pbnRlcm5hbF9ib3JkZXIpKSkKKyAgICB7CisgICAg ICBlbnVtIGludGVybmFsX2JvcmRlcl9wYXJ0IHBhcnQgPSBmcmFtZV9pbnRlcm5hbF9ib3Jk ZXJfcGFydCAoZiwgeCwgeSk7CisKKyAgICAgIHN3aXRjaCAocGFydCkKKwl7CisJY2FzZSBJ TlRFUk5BTF9CT1JERVJfTk9ORToKKwkgIGlmIChjdXJzb3IgIT0gRlJBTUVfWF9PVVRQVVQg KGYpLT5ub250ZXh0X2N1cnNvcikKKwkgICAgLyogUmVzZXQgY3Vyc29yLiAgKi8KKwkgICAg Y3Vyc29yID0gRlJBTUVfWF9PVVRQVVQgKGYpLT5ub250ZXh0X2N1cnNvcjsKKwkgIGJyZWFr OworCWNhc2UgSU5URVJOQUxfQk9SREVSX0xFRlRfRURHRToKKwkgIGN1cnNvciA9IEZSQU1F X1hfT1VUUFVUIChmKS0+bGVmdF9lZGdlX2N1cnNvcjsKKwkgIGJyZWFrOworCWNhc2UgSU5U RVJOQUxfQk9SREVSX1RPUF9MRUZUX0NPUk5FUjoKKwkgIGN1cnNvciA9IEZSQU1FX1hfT1VU UFVUIChmKS0+dG9wX2xlZnRfY29ybmVyX2N1cnNvcjsKKwkgIGJyZWFrOworCWNhc2UgSU5U RVJOQUxfQk9SREVSX1RPUF9FREdFOgorCSAgY3Vyc29yID0gRlJBTUVfWF9PVVRQVVQgKGYp LT50b3BfZWRnZV9jdXJzb3I7CisJICBicmVhazsKKwljYXNlIElOVEVSTkFMX0JPUkRFUl9U T1BfUklHSFRfQ09STkVSOgorCSAgY3Vyc29yID0gRlJBTUVfWF9PVVRQVVQgKGYpLT50b3Bf cmlnaHRfY29ybmVyX2N1cnNvcjsKKwkgIGJyZWFrOworCWNhc2UgSU5URVJOQUxfQk9SREVS X1JJR0hUX0VER0U6CisJICBjdXJzb3IgPSBGUkFNRV9YX09VVFBVVCAoZiktPnJpZ2h0X2Vk Z2VfY3Vyc29yOworCSAgYnJlYWs7CisJY2FzZSBJTlRFUk5BTF9CT1JERVJfQk9UVE9NX1JJ R0hUX0NPUk5FUjoKKwkgIGN1cnNvciA9IEZSQU1FX1hfT1VUUFVUIChmKS0+Ym90dG9tX3Jp Z2h0X2Nvcm5lcl9jdXJzb3I7CisJICBicmVhazsKKwljYXNlIElOVEVSTkFMX0JPUkRFUl9C T1RUT01fRURHRToKKwkgIGN1cnNvciA9IEZSQU1FX1hfT1VUUFVUIChmKS0+Ym90dG9tX2Vk Z2VfY3Vyc29yOworCSAgYnJlYWs7CisJY2FzZSBJTlRFUk5BTF9CT1JERVJfQk9UVE9NX0xF RlRfQ09STkVSOgorCSAgY3Vyc29yID0gRlJBTUVfWF9PVVRQVVQgKGYpLT5ib3R0b21fbGVm dF9jb3JuZXJfY3Vyc29yOworCSAgYnJlYWs7CisJZGVmYXVsdDoKKwkgIC8qIFRoaXMgc2hv dWxkIG5vdCBoYXBwZW4uICAqLworCSAgaWYgKGN1cnNvciAhPSBGUkFNRV9YX09VVFBVVCAo ZiktPm5vbnRleHRfY3Vyc29yKQorCSAgICBjdXJzb3IgPSBGUkFNRV9YX09VVFBVVCAoZikt Pm5vbnRleHRfY3Vyc29yOworCX0KKworICAgICAgaWYgKGN1cnNvciAhPSBGUkFNRV9YX09V VFBVVCAoZiktPm5vbnRleHRfY3Vyc29yKQorCXsKKwkgIC8qIERvIHdlIHJlYWxseSB3YW50 IGEgaGVscCBlY2hvIGhlcmU/ICAqLworCSAgaGVscF9lY2hvX3N0cmluZyA9IGJ1aWxkX3N0 cmluZyAoImRyYWctbW91c2UtMTogcmVzaXplIGZyYW1lIik7CisJICBnb3RvIHNldF9jdXJz b3I7CisJfQorICAgIH0KKyNlbmRpZiAvKiBIQVZFX1dJTkRPV19TWVNURU0gKi8KKwogICAv KiBOb3Qgb24gYSB3aW5kb3cgLT4gcmV0dXJuLiAgKi8KICAgaWYgKCFXSU5ET1dQICh3aW5k b3cpKQogICAgIHJldHVybjsKCi0gIC8qIFJlc2V0IGhlbHBfZWNob19zdHJpbmcuIEl0IHdp bGwgZ2V0IHJlY29tcHV0ZWQgYmVsb3cuICAqLwotICBoZWxwX2VjaG9fc3RyaW5nID0gUW5p bDsKLQogICAvKiBDb252ZXJ0IHRvIHdpbmRvdy1yZWxhdGl2ZSBwaXhlbCBjb29yZGluYXRl cy4gICovCiAgIHcgPSBYV0lORE9XICh3aW5kb3cpOwogICBmcmFtZV90b193aW5kb3dfcGl4 ZWxfeHkgKHcsICZ4LCAmeSk7CkBAIC0zMDQ4NiwxMSArMzA1NjMsMTMgQEAgQSBwb2x5Z29u IGlzIGEgY29ucyAocG9seSAuIFt4MCB5MCB4MSB5MSAuLi5dKSB3aGVyZSBlYWNoIHBhaXIg aW4gdGhlCiAgICAgewogICAgICAgY3Vyc29yID0gRlJBTUVfWF9PVVRQVVQgKGYpLT5ob3Jp em9udGFsX2RyYWdfY3Vyc29yOwogICAgICAgaGVscF9lY2hvX3N0cmluZyA9IGJ1aWxkX3N0 cmluZyAoImRyYWctbW91c2UtMTogcmVzaXplIik7CisgICAgICBnb3RvIHNldF9jdXJzb3I7 CiAgICAgfQogICBlbHNlIGlmIChwYXJ0ID09IE9OX1JJR0hUX0RJVklERVIpCiAgICAgewog ICAgICAgY3Vyc29yID0gRlJBTUVfWF9PVVRQVVQgKGYpLT5ob3Jpem9udGFsX2RyYWdfY3Vy c29yOwogICAgICAgaGVscF9lY2hvX3N0cmluZyA9IGJ1aWxkX3N0cmluZyAoImRyYWctbW91 c2UtMTogcmVzaXplIik7CisgICAgICBnb3RvIHNldF9jdXJzb3I7CiAgICAgfQogICBlbHNl IGlmIChwYXJ0ID09IE9OX0JPVFRPTV9ESVZJREVSKQogICAgIGlmICghIFdJTkRPV19CT1RU T01NT1NUX1AgKHcpCkBAIC0zMDQ5OSw2ICszMDU3OCw3IEBAIEEgcG9seWdvbiBpcyBhIGNv bnMgKHBvbHkgLiBbeDAgeTAgeDEgeTEgLi4uXSkgd2hlcmUgZWFjaCBwYWlyIGluIHRoZQog ICAgICAgewogCWN1cnNvciA9IEZSQU1FX1hfT1VUUFVUIChmKS0+dmVydGljYWxfZHJhZ19j dXJzb3I7CiAJaGVscF9lY2hvX3N0cmluZyA9IGJ1aWxkX3N0cmluZyAoImRyYWctbW91c2Ut MTogcmVzaXplIik7CisJZ290byBzZXRfY3Vyc29yOwogICAgICAgfQogICAgIGVsc2UKICAg ICAgIGN1cnNvciA9IEZSQU1FX1hfT1VUUFVUIChmKS0+bm9udGV4dF9jdXJzb3I7CkBAIC0z MTE5Myw4ICszMTI3MywxNSBAQCBBIHBvbHlnb24gaXMgYSBjb25zIChwb2x5IC4gW3gwIHkw IHgxIHkxIC4uLl0pIHdoZXJlIGVhY2ggcGFpciBpbiB0aGUKICAgICAgIGludCB4MCA9IFdJ TkRPV19SSUdIVF9FREdFX1ggKHcpIC0gV0lORE9XX1JJR0hUX0RJVklERVJfV0lEVEggKHcp OwogICAgICAgaW50IHgxID0gV0lORE9XX1JJR0hUX0VER0VfWCAodyk7CiAgICAgICBpbnQg eTAgPSBXSU5ET1dfVE9QX0VER0VfWSAodyk7Ci0gICAgICAvKiBUaGUgYm90dG9tIGRpdmlk ZXIgcHJldmFpbHMuICAqLwotICAgICAgaW50IHkxID0gV0lORE9XX0JPVFRPTV9FREdFX1kg KHcpIC0gV0lORE9XX0JPVFRPTV9ESVZJREVSX1dJRFRIICh3KTsKKyAgICAgIGludCB5MSA9 IFdJTkRPV19CT1RUT01fRURHRV9ZICh3KTsKKworICAgICAgLyogSWYgVyBpcyBob3Jpem9u dGFsbHkgY29tYmluZWQgYW5kIGhhcyBhIHJpZ2h0IHNpYmxpbmcsIGRvbid0CisJIGRyYXcg b3ZlciBhbnkgYm90dG9tIGRpdmlkZXIuICAqLworICAgICAgaWYgKFdJTkRPV19CT1RUT01f RElWSURFUl9XSURUSCAodykKKwkgICYmICFOSUxQICh3LT5wYXJlbnQpCisJICAmJiBXSU5E T1dfSE9SSVpPTlRBTF9DT01CSU5BVElPTl9QIChYV0lORE9XICh3LT5wYXJlbnQpKQorCSAg JiYgIU5JTFAgKHctPm5leHQpKQorCXkxIC09IFdJTkRPV19CT1RUT01fRElWSURFUl9XSURU SCAodyk7CgogICAgICAgRlJBTUVfUklGIChmKS0+ZHJhd193aW5kb3dfZGl2aWRlciAodywg eDAsIHgxLCB5MCwgeTEpOwogICAgIH0KQEAgLTMxMjEzLDggKzMxMzAwLDIyIEBAIEEgcG9s eWdvbiBpcyBhIGNvbnMgKHBvbHkgLiBbeDAgeTAgeDEgeTEgLi4uXSkgd2hlcmUgZWFjaCBw YWlyIGluIHRoZQogICAgICAgaW50IHgxID0gV0lORE9XX1JJR0hUX0VER0VfWCAodyk7CiAg ICAgICBpbnQgeTAgPSBXSU5ET1dfQk9UVE9NX0VER0VfWSAodykgLSBXSU5ET1dfQk9UVE9N X0RJVklERVJfV0lEVEggKHcpOwogICAgICAgaW50IHkxID0gV0lORE9XX0JPVFRPTV9FREdF X1kgKHcpOworICAgICAgc3RydWN0IHdpbmRvdyAqcCA9ICFOSUxQICh3LT5wYXJlbnQpID8g WFdJTkRPVyAody0+cGFyZW50KSA6IGZhbHNlOwoKLSAgICAgIEZSQU1FX1JJRiAoZiktPmRy YXdfd2luZG93X2RpdmlkZXIgKHcsIHgwLCB4MSwgeTAsIHkxKTsKKyAgICAgIC8qIElmIFcg aXMgdmVydGljYWxseSBjb21iaW5lZCBhbmQgaGFzIGEgc2libGluZyBiZWxvdywgZG9uJ3Qg ZHJhdworCSBvdmVyIGFueSByaWdodCBkaXZpZGVyLiAgKi8KKyAgICAgIGlmIChXSU5ET1df UklHSFRfRElWSURFUl9XSURUSCAodykKKwkgICYmIHAKKwkgICYmICgoV0lORE9XX1ZFUlRJ Q0FMX0NPTUJJTkFUSU9OX1AgKHApCisJICAgICAgICYmICFOSUxQICh3LT5uZXh0KSkKKwkg ICAgICB8fCAoV0lORE9XX0hPUklaT05UQUxfQ09NQklOQVRJT05fUCAocCkKKwkJICAmJiBO SUxQICh3LT5uZXh0KQorCQkgICYmICFOSUxQIChwLT5wYXJlbnQpCisJCSAgJiYgV0lORE9X X1ZFUlRJQ0FMX0NPTUJJTkFUSU9OX1AgKFhXSU5ET1cgKHAtPnBhcmVudCkpCisJCSAgJiYg IU5JTFAgKFhXSU5ET1cgKHAtPnBhcmVudCktPm5leHQpKSkpCisJeDEgLT0gV0lORE9XX1JJ R0hUX0RJVklERVJfV0lEVEggKHcpOworCisJRlJBTUVfUklGIChmKS0+ZHJhd193aW5kb3df ZGl2aWRlciAodywgeDAsIHgxLCB5MCwgeTEpOwogICAgIH0KIH0KCkBAIC0zMTMyOSw3ICsz MTQzMCw3IEBAIEEgcG9seWdvbiBpcyBhIGNvbnMgKHBvbHkgLiBbeDAgeTAgeDEgeTEgLi4u XSkgd2hlcmUgZWFjaCBwYWlyIGluIHRoZQogCX0KCiAgICAgICAvKiBEaXNwbGF5IHRoZSBt b2RlIGxpbmUgaWYgdGhlcmUgaXMgb25lLiAgKi8KLSAgICAgIGlmIChXSU5ET1dfV0FOVFNf TU9ERUxJTkVfUCAodykKKyAgICAgIGlmICh3aW5kb3dfd2FudHNfbW9kZV9saW5lICh3KQog CSAgJiYgKHJvdyA9IE1BVFJJWF9NT0RFX0xJTkVfUk9XICh3LT5jdXJyZW50X21hdHJpeCks CiAJICAgICAgcm93LT5lbmFibGVkX3ApCiAJICAmJiByb3ctPnkgPCByX2JvdHRvbSkKZGlm ZiAtLWdpdCBhL3NyYy94Zm5zLmMgYi9zcmMveGZucy5jCmluZGV4IDdiZTIyNTMuLjNkZDE5 NzAgMTAwNjQ0Ci0tLSBhL3NyYy94Zm5zLmMKKysrIGIvc3JjL3hmbnMuYwpAQCAtMTEyMCw2 ICsxMTIwLDE0IEBAIGVudW0gbW91c2VfY3Vyc29yIHsKICAgbW91c2VfY3Vyc29yX2hhbmQs CiAgIG1vdXNlX2N1cnNvcl9ob3Jpem9udGFsX2RyYWcsCiAgIG1vdXNlX2N1cnNvcl92ZXJ0 aWNhbF9kcmFnLAorICBtb3VzZV9jdXJzb3JfbGVmdF9lZGdlLAorICBtb3VzZV9jdXJzb3Jf dG9wX2xlZnRfY29ybmVyLAorICBtb3VzZV9jdXJzb3JfdG9wX2VkZ2UsCisgIG1vdXNlX2N1 cnNvcl90b3BfcmlnaHRfY29ybmVyLAorICBtb3VzZV9jdXJzb3JfcmlnaHRfZWRnZSwKKyAg bW91c2VfY3Vyc29yX2JvdHRvbV9yaWdodF9jb3JuZXIsCisgIG1vdXNlX2N1cnNvcl9ib3R0 b21fZWRnZSwKKyAgbW91c2VfY3Vyc29yX2JvdHRvbV9sZWZ0X2Nvcm5lciwKICAgbW91c2Vf Y3Vyc29yX21heAogfTsKCkBAIC0xMTM5LDEzICsxMTQ3LDIxIEBAIHN0cnVjdCBtb3VzZV9j dXJzb3JfdHlwZXMgewoKIC8qIFRoaXMgYXJyYXkgbXVzdCBzdGF5IGluIHN5bmMgd2l0aCBl bnVtIG1vdXNlX2N1cnNvciBhYm92ZSEgICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IG1vdXNl X2N1cnNvcl90eXBlcyBtb3VzZV9jdXJzb3JfdHlwZXNbXSA9IHsKLSAgeyAidGV4dCIsICAg ICAgJlZ4X3BvaW50ZXJfc2hhcGUsICAgICAgICAgICAgICAgIFhDX3h0ZXJtICAgICAgICAg ICAgIH0sCi0gIHsgIm5vbnRleHQiLCAgICZWeF9ub250ZXh0X3BvaW50ZXJfc2hhcGUsICAg ICAgICBYQ19sZWZ0X3B0ciAgICAgICAgICB9LAotICB7ICJob3VyZ2xhc3MiLCAmVnhfaG91 cmdsYXNzX3BvaW50ZXJfc2hhcGUsICAgICAgWENfd2F0Y2ggICAgICAgICAgICAgfSwKLSAg eyAibW9kZWxpbmUiLCAgJlZ4X21vZGVfcG9pbnRlcl9zaGFwZSwgICAgICAgICAgIFhDX3h0 ZXJtICAgICAgICAgICAgIH0sCi0gIHsgTlVMTCwgICAgICAgICZWeF9zZW5zaXRpdmVfdGV4 dF9wb2ludGVyX3NoYXBlLCBYQ19oYW5kMiAgICAgICAgICAgICB9LAotICB7IE5VTEwsICAg ICAgICAmVnhfd2luZG93X2hvcml6b250YWxfZHJhZ19zaGFwZSwgWENfc2JfaF9kb3VibGVf YXJyb3cgfSwKLSAgeyBOVUxMLCAgICAgICAgJlZ4X3dpbmRvd192ZXJ0aWNhbF9kcmFnX3No YXBlLCAgIFhDX3NiX3ZfZG91YmxlX2Fycm93IH0sCisgIHsgInRleHQiLCAgICAgICZWeF9w b2ludGVyX3NoYXBlLCAgICAgICAgICAgICAgICAgICAgWENfeHRlcm0gICAgICAgICAgICAg ICB9LAorICB7ICJub250ZXh0IiwgICAmVnhfbm9udGV4dF9wb2ludGVyX3NoYXBlLCAgICAg ICAgICAgIFhDX2xlZnRfcHRyICAgICAgICAgICAgfSwKKyAgeyAiaG91cmdsYXNzIiwgJlZ4 X2hvdXJnbGFzc19wb2ludGVyX3NoYXBlLCAgICAgICAgICBYQ193YXRjaCAgICAgICAgICAg ICAgIH0sCisgIHsgIm1vZGVsaW5lIiwgICZWeF9tb2RlX3BvaW50ZXJfc2hhcGUsICAgICAg ICAgICAgICAgWENfeHRlcm0gICAgICAgICAgICAgICB9LAorICB7IE5VTEwsICAgICAgICAm Vnhfc2Vuc2l0aXZlX3RleHRfcG9pbnRlcl9zaGFwZSwgICAgIFhDX2hhbmQyICAgICAgICAg ICAgICAgfSwKKyAgeyBOVUxMLCAgICAgICAgJlZ4X3dpbmRvd19ob3Jpem9udGFsX2RyYWdf c2hhcGUsICAgICBYQ19zYl9oX2RvdWJsZV9hcnJvdyAgIH0sCisgIHsgTlVMTCwgICAgICAg ICZWeF93aW5kb3dfdmVydGljYWxfZHJhZ19zaGFwZSwgICAgICAgWENfc2Jfdl9kb3VibGVf YXJyb3cgICB9LAorICB7IE5VTEwsICAgICAgICAmVnhfd2luZG93X2xlZnRfZWRnZV9zaGFw ZSwgICAgICAgICAgIFhDX2xlZnRfc2lkZSAgICAgICAgICAgfSwKKyAgeyBOVUxMLCAgICAg ICAgJlZ4X3dpbmRvd190b3BfbGVmdF9jb3JuZXJfc2hhcGUsICAgICBYQ190b3BfbGVmdF9j b3JuZXIgICAgIH0sCisgIHsgTlVMTCwgICAgICAgICZWeF93aW5kb3dfdG9wX2VkZ2Vfc2hh cGUsICAgICAgICAgICAgWENfdG9wX3NpZGUgICAgICAgICAgICB9LAorICB7IE5VTEwsICAg ICAgICAmVnhfd2luZG93X3RvcF9yaWdodF9jb3JuZXJfc2hhcGUsICAgIFhDX3RvcF9yaWdo dF9jb3JuZXIgICAgfSwKKyAgeyBOVUxMLCAgICAgICAgJlZ4X3dpbmRvd19yaWdodF9lZGdl X3NoYXBlLCAgICAgICAgICBYQ19yaWdodF9zaWRlICAgICAgICAgIH0sCisgIHsgTlVMTCwg ICAgICAgICZWeF93aW5kb3dfYm90dG9tX3JpZ2h0X2Nvcm5lcl9zaGFwZSwgWENfYm90dG9t X3JpZ2h0X2Nvcm5lciB9LAorICB7IE5VTEwsICAgICAgICAmVnhfd2luZG93X2JvdHRvbV9l ZGdlX3NoYXBlLCAgICAgICAgIFhDX2JvdHRvbV9zaWRlICAgICAgICAgfSwKKyAgeyBOVUxM LCAgICAgICAgJlZ4X3dpbmRvd19ib3R0b21fbGVmdF9jb3JuZXJfc2hhcGUsICBYQ19ib3R0 b21fbGVmdF9jb3JuZXIgIH0sCiB9OwoKIHN0cnVjdCBtb3VzZV9jdXJzb3JfZGF0YSB7CkBA IC0xMjk2LDYgKzEzMTIsMTQgQEAgc3RydWN0IG1vdXNlX2N1cnNvcl9kYXRhIHsKICAgSU5T VEFMTF9DVVJTT1IgKGhhbmRfY3Vyc29yLCBoYW5kKTsKICAgSU5TVEFMTF9DVVJTT1IgKGhv cml6b250YWxfZHJhZ19jdXJzb3IsIGhvcml6b250YWxfZHJhZyk7CiAgIElOU1RBTExfQ1VS U09SICh2ZXJ0aWNhbF9kcmFnX2N1cnNvciwgdmVydGljYWxfZHJhZyk7CisgIElOU1RBTExf Q1VSU09SIChsZWZ0X2VkZ2VfY3Vyc29yLCBsZWZ0X2VkZ2UpOworICBJTlNUQUxMX0NVUlNP UiAodG9wX2xlZnRfY29ybmVyX2N1cnNvciwgdG9wX2xlZnRfY29ybmVyKTsKKyAgSU5TVEFM TF9DVVJTT1IgKHRvcF9lZGdlX2N1cnNvciwgdG9wX2VkZ2UpOworICBJTlNUQUxMX0NVUlNP UiAodG9wX3JpZ2h0X2Nvcm5lcl9jdXJzb3IsIHRvcF9yaWdodF9jb3JuZXIpOworICBJTlNU QUxMX0NVUlNPUiAocmlnaHRfZWRnZV9jdXJzb3IsIHJpZ2h0X2VkZ2UpOworICBJTlNUQUxM X0NVUlNPUiAoYm90dG9tX3JpZ2h0X2Nvcm5lcl9jdXJzb3IsIGJvdHRvbV9yaWdodF9jb3Ju ZXIpOworICBJTlNUQUxMX0NVUlNPUiAoYm90dG9tX2VkZ2VfY3Vyc29yLCBib3R0b21fZWRn ZSk7CisgIElOU1RBTExfQ1VSU09SIChib3R0b21fbGVmdF9jb3JuZXJfY3Vyc29yLCBib3R0 b21fbGVmdF9jb3JuZXIpOwoKICN1bmRlZiBJTlNUQUxMX0NVUlNPUgoKQEAgLTM4MTQsNiAr MzgzOCw4IEBAIHN0cnVjdCBtb3VzZV9jdXJzb3JfZGF0YSB7CiAJCSAgICAgICAibGVmdEZy aW5nZSIsICJMZWZ0RnJpbmdlIiwgUkVTX1RZUEVfTlVNQkVSKTsKICAgeF9kZWZhdWx0X3Bh cmFtZXRlciAoZiwgcGFybXMsIFFyaWdodF9mcmluZ2UsIFFuaWwsCiAJCSAgICAgICAicmln aHRGcmluZ2UiLCAiUmlnaHRGcmluZ2UiLCBSRVNfVFlQRV9OVU1CRVIpOworICB4X2RlZmF1 bHRfcGFyYW1ldGVyIChmLCBwYXJtcywgUW5vX3NwZWNpYWxfZ2x5cGhzLCBRbmlsLAorCQkg ICAgICAgTlVMTCwgTlVMTCwgUkVTX1RZUEVfQk9PTEVBTik7CgogICB4X2RlZmF1bHRfc2Ny b2xsX2Jhcl9jb2xvcl9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRc2Nyb2xsX2Jhcl9mb3JlZ3Jv dW5kLAogCQkJCQkic2Nyb2xsQmFyRm9yZWdyb3VuZCIsCkBAIC02MTk2LDYgKzYyMjIsOCBA QCBzdGF0aWMgdm9pZCBjb21wdXRlX3RpcF94eSAoc3RydWN0IGZyYW1lICosIExpc3BfT2Jq ZWN0LCBMaXNwX09iamVjdCwKIAkJICAgICAgICJjdXJzb3JDb2xvciIsICJGb3JlZ3JvdW5k IiwgUkVTX1RZUEVfU1RSSU5HKTsKICAgeF9kZWZhdWx0X3BhcmFtZXRlciAoZiwgcGFybXMs IFFib3JkZXJfY29sb3IsIGJ1aWxkX3N0cmluZyAoImJsYWNrIiksCiAJCSAgICAgICAiYm9y ZGVyQ29sb3IiLCAiQm9yZGVyQ29sb3IiLCBSRVNfVFlQRV9TVFJJTkcpOworICB4X2RlZmF1 bHRfcGFyYW1ldGVyIChmLCBwYXJtcywgUW5vX3NwZWNpYWxfZ2x5cGhzLCBRbmlsLAorCQkg ICAgICAgTlVMTCwgTlVMTCwgUkVTX1RZUEVfQk9PTEVBTik7CgogICAvKiBJbml0IGZhY2Vz IGJlZm9yZSB4X2RlZmF1bHRfcGFyYW1ldGVyIGlzIGNhbGxlZCBmb3IgdGhlCiAgICAgIHNj cm9sbC1iYXItd2lkdGggcGFyYW1ldGVyIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIGVuZCB1cCBp bgpAQCAtNzQ4Niw2ICs3NTE0LDcgQEAgRlJBTUVTIHNob3VsZCBiZSBuaWwgKHRoZSBzZWxl Y3RlZCBmcmFtZSksIGEgZnJhbWUsIG9yIGEgbGlzdCBvZgogICB4X3NldF9ub19hY2NlcHRf Zm9jdXMsCiAgIHhfc2V0X3pfZ3JvdXAsCiAgIHhfc2V0X292ZXJyaWRlX3JlZGlyZWN0LAor ICB4X3NldF9ub19zcGVjaWFsX2dseXBocywKIH07Cgogdm9pZApAQCAtNzU2NCw2ICs3NTkz LDYyIEBAIEZSQU1FUyBzaG91bGQgYmUgbmlsICh0aGUgc2VsZWN0ZWQgZnJhbWUpLCBhIGZy YW1lLCBvciBhIGxpc3Qgb2YKIG9yIHdoZW4geW91IHNldCB0aGUgbW91c2UgY29sb3IuICAq Lyk7CiAgIFZ4X3dpbmRvd192ZXJ0aWNhbF9kcmFnX3NoYXBlID0gUW5pbDsKCisgIERFRlZB Ul9MSVNQICgieC13aW5kb3ctbGVmdC1lZGdlLWN1cnNvciIsCisJICAgICAgIFZ4X3dpbmRv d19sZWZ0X2VkZ2Vfc2hhcGUsCisgIGRvYzogLyogUG9pbnRlciBzaGFwZSBpbmRpY2F0aW5n IGEgbGVmdCB4LXdpbmRvdyBlZGdlIGNhbiBiZSBkcmFnZ2VkLgorVGhpcyB2YXJpYWJsZSB0 YWtlcyBlZmZlY3Qgd2hlbiB5b3UgY3JlYXRlIGEgbmV3IGZyYW1lCitvciB3aGVuIHlvdSBz ZXQgdGhlIG1vdXNlIGNvbG9yLiAgKi8pOworICBWeF93aW5kb3dfbGVmdF9lZGdlX3NoYXBl ID0gUW5pbDsKKworICBERUZWQVJfTElTUCAoIngtd2luZG93LXRvcC1sZWZ0LWNvcm5lci1j dXJzb3IiLAorCSAgICAgICBWeF93aW5kb3dfdG9wX2xlZnRfY29ybmVyX3NoYXBlLAorICBk b2M6IC8qIFBvaW50ZXIgc2hhcGUgaW5kaWNhdGluZyBhIHRvcCBsZWZ0IHgtd2luZG93IGNv cm5lciBjYW4gYmUgZHJhZ2dlZC4KK1RoaXMgdmFyaWFibGUgdGFrZXMgZWZmZWN0IHdoZW4g eW91IGNyZWF0ZSBhIG5ldyBmcmFtZQorb3Igd2hlbiB5b3Ugc2V0IHRoZSBtb3VzZSBjb2xv ci4gICovKTsKKyAgVnhfd2luZG93X3RvcF9sZWZ0X2Nvcm5lcl9zaGFwZSA9IFFuaWw7CisK KyAgREVGVkFSX0xJU1AgKCJ4LXdpbmRvdy10b3AtZWRnZS1jdXJzb3IiLAorCSAgICAgICBW eF93aW5kb3dfdG9wX2VkZ2Vfc2hhcGUsCisgIGRvYzogLyogUG9pbnRlciBzaGFwZSBpbmRp Y2F0aW5nIGEgdG9wIHgtd2luZG93IGVkZ2UgY2FuIGJlIGRyYWdnZWQuCitUaGlzIHZhcmlh YmxlIHRha2VzIGVmZmVjdCB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgZnJhbWUKK29yIHdoZW4g eW91IHNldCB0aGUgbW91c2UgY29sb3IuICAqLyk7CisgIFZ4X3dpbmRvd190b3BfZWRnZV9z aGFwZSA9IFFuaWw7CisKKyAgREVGVkFSX0xJU1AgKCJ4LXdpbmRvdy10b3AtcmlnaHQtY29y bmVyLWN1cnNvciIsCisJICAgICAgIFZ4X3dpbmRvd190b3BfcmlnaHRfY29ybmVyX3NoYXBl LAorICBkb2M6IC8qIFBvaW50ZXIgc2hhcGUgaW5kaWNhdGluZyBhIHRvcCByaWdodCB4LXdp bmRvdyBjb3JuZXIgY2FuIGJlIGRyYWdnZWQuCitUaGlzIHZhcmlhYmxlIHRha2VzIGVmZmVj dCB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgZnJhbWUKK29yIHdoZW4geW91IHNldCB0aGUgbW91 c2UgY29sb3IuICAqLyk7CisgIFZ4X3dpbmRvd190b3BfcmlnaHRfY29ybmVyX3NoYXBlID0g UW5pbDsKKworICBERUZWQVJfTElTUCAoIngtd2luZG93LXJpZ2h0LWVkZ2UtY3Vyc29yIiwK KwkgICAgICAgVnhfd2luZG93X3JpZ2h0X2VkZ2Vfc2hhcGUsCisgIGRvYzogLyogUG9pbnRl ciBzaGFwZSBpbmRpY2F0aW5nIGEgcmlnaHQgeC13aW5kb3cgZWRnZSBjYW4gYmUgZHJhZ2dl ZC4KK1RoaXMgdmFyaWFibGUgdGFrZXMgZWZmZWN0IHdoZW4geW91IGNyZWF0ZSBhIG5ldyBm cmFtZQorb3Igd2hlbiB5b3Ugc2V0IHRoZSBtb3VzZSBjb2xvci4gICovKTsKKyAgVnhfd2lu ZG93X3JpZ2h0X2VkZ2Vfc2hhcGUgPSBRbmlsOworCisgIERFRlZBUl9MSVNQICgieC13aW5k b3ctYm90dG9tLXJpZ2h0LWNvcm5lci1jdXJzb3IiLAorCSAgICAgICBWeF93aW5kb3dfYm90 dG9tX3JpZ2h0X2Nvcm5lcl9zaGFwZSwKKyAgZG9jOiAvKiBQb2ludGVyIHNoYXBlIGluZGlj YXRpbmcgYSBib3R0b20gcmlnaHQgeC13aW5kb3cgY29ybmVyIGNhbiBiZSBkcmFnZ2VkLgor VGhpcyB2YXJpYWJsZSB0YWtlcyBlZmZlY3Qgd2hlbiB5b3UgY3JlYXRlIGEgbmV3IGZyYW1l CitvciB3aGVuIHlvdSBzZXQgdGhlIG1vdXNlIGNvbG9yLiAgKi8pOworICBWeF93aW5kb3df Ym90dG9tX3JpZ2h0X2Nvcm5lcl9zaGFwZSA9IFFuaWw7CisKKyAgREVGVkFSX0xJU1AgKCJ4 LXdpbmRvdy1ib3R0b20tZWRnZS1jdXJzb3IiLAorCSAgICAgICBWeF93aW5kb3dfYm90dG9t X2VkZ2Vfc2hhcGUsCisgIGRvYzogLyogUG9pbnRlciBzaGFwZSBpbmRpY2F0aW5nIGEgYm90 dG9tIHgtd2luZG93IGVkZ2UgY2FuIGJlIGRyYWdnZWQuCitUaGlzIHZhcmlhYmxlIHRha2Vz IGVmZmVjdCB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgZnJhbWUKK29yIHdoZW4geW91IHNldCB0 aGUgbW91c2UgY29sb3IuICAqLyk7CisgIFZ4X3dpbmRvd19ib3R0b21fZWRnZV9zaGFwZSA9 IFFuaWw7CisKKyAgREVGVkFSX0xJU1AgKCJ4LXdpbmRvdy1ib3R0b20tbGVmdC1jb3JuZXIt Y3Vyc29yIiwKKwkgICAgICAgVnhfd2luZG93X2JvdHRvbV9sZWZ0X2Nvcm5lcl9zaGFwZSwK KyAgZG9jOiAvKiBQb2ludGVyIHNoYXBlIGluZGljYXRpbmcgYSBib3R0b20gbGVmdCB4LXdp bmRvdyBjb3JuZXIgY2FuIGJlIGRyYWdnZWQuCitUaGlzIHZhcmlhYmxlIHRha2VzIGVmZmVj dCB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgZnJhbWUKK29yIHdoZW4geW91IHNldCB0aGUgbW91 c2UgY29sb3IuICAqLyk7CisgIFZ4X3dpbmRvd19ib3R0b21fbGVmdF9jb3JuZXJfc2hhcGUg PSBRbmlsOworCiAgIERFRlZBUl9MSVNQICgieC1jdXJzb3ItZm9yZS1waXhlbCIsIFZ4X2N1 cnNvcl9mb3JlX3BpeGVsLAogICAgIGRvYzogLyogQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUg Zm9yZWdyb3VuZCBjb2xvciBvZiB0aGUgY3Vyc29yIGJveC4gICovKTsKICAgVnhfY3Vyc29y X2ZvcmVfcGl4ZWwgPSBRbmlsOwpkaWZmIC0tZ2l0IGEvc3JjL3h0ZXJtLmMgYi9zcmMveHRl cm0uYwppbmRleCBjODgzNmI3Li5hMjE0Y2Q4IDEwMDY0NAotLS0gYS9zcmMveHRlcm0uYwor KysgYi9zcmMveHRlcm0uYwpAQCAtMTE3NTcsNiArMTE3NTcsMjIgQEAgc3RydWN0IHhfZXJy b3JfbWVzc2FnZV9zdGFjayB7CiAJWEZyZWVDdXJzb3IgKEZSQU1FX1hfRElTUExBWSAoZiks IGYtPm91dHB1dF9kYXRhLngtPmhvcml6b250YWxfZHJhZ19jdXJzb3IpOwogICAgICAgaWYg KGYtPm91dHB1dF9kYXRhLngtPnZlcnRpY2FsX2RyYWdfY3Vyc29yICE9IDApCiAJWEZyZWVD dXJzb3IgKEZSQU1FX1hfRElTUExBWSAoZiksIGYtPm91dHB1dF9kYXRhLngtPnZlcnRpY2Fs X2RyYWdfY3Vyc29yKTsKKyAgICAgIGlmIChmLT5vdXRwdXRfZGF0YS54LT5sZWZ0X2VkZ2Vf Y3Vyc29yICE9IDApCisJWEZyZWVDdXJzb3IgKEZSQU1FX1hfRElTUExBWSAoZiksIGYtPm91 dHB1dF9kYXRhLngtPmxlZnRfZWRnZV9jdXJzb3IpOworICAgICAgaWYgKGYtPm91dHB1dF9k YXRhLngtPnRvcF9sZWZ0X2Nvcm5lcl9jdXJzb3IgIT0gMCkKKwlYRnJlZUN1cnNvciAoRlJB TUVfWF9ESVNQTEFZIChmKSwgZi0+b3V0cHV0X2RhdGEueC0+dG9wX2xlZnRfY29ybmVyX2N1 cnNvcik7CisgICAgICBpZiAoZi0+b3V0cHV0X2RhdGEueC0+dG9wX2VkZ2VfY3Vyc29yICE9 IDApCisJWEZyZWVDdXJzb3IgKEZSQU1FX1hfRElTUExBWSAoZiksIGYtPm91dHB1dF9kYXRh LngtPnRvcF9lZGdlX2N1cnNvcik7CisgICAgICBpZiAoZi0+b3V0cHV0X2RhdGEueC0+dG9w X3JpZ2h0X2Nvcm5lcl9jdXJzb3IgIT0gMCkKKwlYRnJlZUN1cnNvciAoRlJBTUVfWF9ESVNQ TEFZIChmKSwgZi0+b3V0cHV0X2RhdGEueC0+dG9wX3JpZ2h0X2Nvcm5lcl9jdXJzb3IpOwor ICAgICAgaWYgKGYtPm91dHB1dF9kYXRhLngtPnJpZ2h0X2VkZ2VfY3Vyc29yICE9IDApCisJ WEZyZWVDdXJzb3IgKEZSQU1FX1hfRElTUExBWSAoZiksIGYtPm91dHB1dF9kYXRhLngtPnJp Z2h0X2VkZ2VfY3Vyc29yKTsKKyAgICAgIGlmIChmLT5vdXRwdXRfZGF0YS54LT5ib3R0b21f cmlnaHRfY29ybmVyX2N1cnNvciAhPSAwKQorCVhGcmVlQ3Vyc29yIChGUkFNRV9YX0RJU1BM QVkgKGYpLCBmLT5vdXRwdXRfZGF0YS54LT5ib3R0b21fcmlnaHRfY29ybmVyX2N1cnNvcik7 CisgICAgICBpZiAoZi0+b3V0cHV0X2RhdGEueC0+Ym90dG9tX2VkZ2VfY3Vyc29yICE9IDAp CisJWEZyZWVDdXJzb3IgKEZSQU1FX1hfRElTUExBWSAoZiksIGYtPm91dHB1dF9kYXRhLngt PmJvdHRvbV9lZGdlX2N1cnNvcik7CisgICAgICBpZiAoZi0+b3V0cHV0X2RhdGEueC0+Ym90 dG9tX2xlZnRfY29ybmVyX2N1cnNvciAhPSAwKQorCVhGcmVlQ3Vyc29yIChGUkFNRV9YX0RJ U1BMQVkgKGYpLCBmLT5vdXRwdXRfZGF0YS54LT5ib3R0b21fbGVmdF9jb3JuZXJfY3Vyc29y KTsKCiAgICAgICBYRmx1c2ggKEZSQU1FX1hfRElTUExBWSAoZikpOwogICAgIH0KZGlmZiAt LWdpdCBhL3NyYy94dGVybS5oIGIvc3JjL3h0ZXJtLmgKaW5kZXggYTc1MjU3MC4uODAzZmVk YSAxMDA2NDQKLS0tIGEvc3JjL3h0ZXJtLmgKKysrIGIvc3JjL3h0ZXJtLmgKQEAgLTYzNyw2 ICs2MzcsMTQgQEAgc3RydWN0IHhfb3V0cHV0CiAgIEN1cnNvciBob3Jpem9udGFsX2RyYWdf Y3Vyc29yOwogICBDdXJzb3IgdmVydGljYWxfZHJhZ19jdXJzb3I7CiAgIEN1cnNvciBjdXJy ZW50X2N1cnNvcjsKKyAgQ3Vyc29yIGxlZnRfZWRnZV9jdXJzb3I7CisgIEN1cnNvciB0b3Bf bGVmdF9jb3JuZXJfY3Vyc29yOworICBDdXJzb3IgdG9wX2VkZ2VfY3Vyc29yOworICBDdXJz b3IgdG9wX3JpZ2h0X2Nvcm5lcl9jdXJzb3I7CisgIEN1cnNvciByaWdodF9lZGdlX2N1cnNv cjsKKyAgQ3Vyc29yIGJvdHRvbV9yaWdodF9jb3JuZXJfY3Vyc29yOworICBDdXJzb3IgYm90 dG9tX2VkZ2VfY3Vyc29yOworICBDdXJzb3IgYm90dG9tX2xlZnRfY29ybmVyX2N1cnNvcjsK CiAgIC8qIFdpbmRvdyB3aG9zZSBjdXJzb3IgaXMgaG91cmdsYXNzX2N1cnNvci4gIFRoaXMg d2luZG93IGlzIHRlbXBvcmFyaWx5CiAgICAgIG1hcHBlZCB0byBkaXNwbGF5IGFuIGhvdXJn bGFzcyBjdXJzb3IuICAqLwo= --------------000202090607030307050103 Content-Type: text/plain; charset=windows-1252; name="ChangeLog" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ChangeLog" UHJvdmlkZSBtb3VzZSBkcmFnZ2luZyBhbmQgcmVzaXppbmcgb2YgZnJhbWVzLiAgQWxsb3cg cmVzaXppbmcKZnJhbWVzIHByb3BvcnRpb25hbGx5LiAgUHJvdmlkZSBhZGRpdGlvbmFsIGZ1 bmN0aW9uYWxpdHkgZm9yCmNoaWxkIGZyYW1lcy4KCiogbGlzcC9mcmFtZS5lbCAoZnJhbWUt Ym9yZGVyLXdpZHRoLCBmcmFtZS1waXhlbC13aWR0aCkKKGZyYW1lLXBpeGVsLWhlaWdodCk6 IEFsaWFzIHRvIGBmcmFtZS1pbnRlcm5hbC1ib3JkZXItd2lkdGgnLApgZnJhbWUtbmF0aXZl LXdpZHRoJyBhbmQgYGZyYW1lLW5hdGl2ZS1oZWlnaHQnLgooZnJhbWUtaW5uZXItd2lkdGgs IGZyYW1lLWlubmVyLWhlaWdodCwgZnJhbWUtb3V0ZXItd2lkdGgpCihmcmFtZS1vdXRlci1o ZWlnaHQpOiBOZXcgZnVuY3Rpb25zLgoqIGxpc3AvbWluaWJ1ZmZlci5lbCAoY29tcGxldGlv bi1hdXRvLWhlbHApOiBGaXggdHlwby4KKiBsaXNwL21vdXNlLmVsIChtb3VzZS1kcmFnLWxp bmUsIG1vdXNlLWRyYWctbW9kZS1saW5lKQoobW91c2UtZHJhZy1oZWFkZXItbGluZSk6IEFs bG93IG1vdmluZyBhIGZyYW1lIGJ5IGRyYWdnaW5nIHRoZQptb2RlIGxpbmUgb2YgaXRzIGJv dHRvbW1vc3Qgd2luZG93IChvbiBhIG1pbmlidWZmZXItbGVzcyBmcmFtZSkKb3IgdGhlIGhl YWRlciBsaW5lIG9mIGl0cyB0b3Btb3N0IHdpbmRvdy4KKG1vdXNlLWRyYWctdmVydGljYWwt bGluZSk6IE1lbnRpb24gYXJndW1lbnQgaW4gZG9jLXN0cmluZy4KKG1vdXNlLXJlc2l6ZS1m cmFtZSwgbW91c2UtZHJhZy1mcmFtZSwgbW91c2UtZHJhZy1sZWZ0LWVkZ2UpCihtb3VzZS1k cmFnLXRvcC1sZWZ0LWNvcm5lciwgbW91c2UtZHJhZy10b3AtZWRnZSkKKG1vdXNlLWRyYWct dG9wLXJpZ2h0LWNvcm5lciwgbW91c2UtZHJhZy1yaWdodC1lZGdlKQoobW91c2UtZHJhZy1i b3R0b20tcmlnaHQtY29ybmVyLCBtb3VzZS1kcmFnLWJvdHRvbS1lZGdlKQoobW91c2UtZHJh Zy1ib3R0b20tbGVmdC1jb3JuZXIpOiBOZXcgZnVuY3Rpb25zIGZvciByZXNpemluZyBhCmZy YW1lIGJ5IGRyYWdnaW5nIGl0cyBpbnRlcm5hbCBib3JkZXIgdG9nZXRoZXIgd2l0aApjb3Jy ZXNwb25kaW5nIGtleSBiaW5kaW5ncy4KKiBsaXNwL3Rvb2x0aXAuZWwgKHRvb2x0aXAtZnJh bWUtcGFyYW1ldGVycyk6IEFkZAonbm8tc3BlY2lhbC1nbHlwaHMnIHRvIGRlZmF1bHQgcGFy YW1ldGVycyBhbmQgdXBkYXRlIHZlcnNpb24KdGFnLgoqIGxpc3Avd2luZG93LmVsIChmcmFt ZS1hdXRvLWhpZGUtZnVuY3Rpb24pOiBBZGQgY2hvaWNlIHRvIG1ha2UKZnJhbWUgaW52aXNp YmxlIGFuZCB1cGRhdGUgdmVyc2lvbiB0YWcuCih3aW5kb3ctLWRlbGV0ZSk6IEhhbmRsZSAn YXV0by1oaWRlLWZ1bmN0aW9uJyBmcmFtZSBwYXJhbWV0ZXIuCih3aW5kb3ctLW1heWJlLXJh aXNlLWZyYW1lKTogUmVzcGVjdCAnbm8tZm9jdXMtb24tbWFwJyBhbmQKJ25vLWFjY2VwdC1m b2N1cycgZnJhbWUgcGFyYW1ldGVycy4KKGRpc3BsYXktYnVmZmVyLS1hY3Rpb24tZnVuY3Rp b24tY3VzdG9tLXR5cGUpOiBBZGQKYGRpc3BsYXktYnVmZmVyLWluLWNoaWxkLWZyYW1lJy4K KGRpc3BsYXktYnVmZmVyKTogTWVudGlvbiBgZGlzcGxheS1idWZmZXItaW4tY2hpbGQtZnJh bWUnIGluCmRvYy1zdHJpbmcuCihkaXNwbGF5LWJ1ZmZlci1pbi1jaGlsZC1mcmFtZSk6IE5l dyBhY3Rpb24gZnVuY3Rpb24gZm9yCmBkaXNwbGF5LWJ1ZmZlcicuCih3aW5kb3ctLXNhbml0 aXplLW1hcmdpbik6IFJldHVybiB6ZXJvIHdoZW4gTUFSR0lOIGNhbm5vdCBiZQpzYW5pdGl6 ZWQuCihmaXQtZnJhbWUtdG8tYnVmZmVyKTogTWFqb3IgcmV3cml0ZSB0byBoYW5kbGUgY2hp bGQgZnJhbWVzIGFuZAonZml0LWZyYW1lLXRvLWJ1ZmZlci1zaXplcycgYW5kICdmaXQtZnJh bWUtdG8tYnVmZmVyLW1hcmdpbnMnCmZyYW1lIHBhcmFtZXRlcnMuCih3aW5kb3ctbGFyZ2Vz dC1lbXB0eS1yZWN0YW5nbGUtLW1heGltdW1zLTEpCih3aW5kb3ctbGFyZ2VzdC1lbXB0eS1y ZWN0YW5nbGUtLW1heGltdW1zKQood2luZG93LWxhcmdlc3QtZW1wdHktcmVjdGFuZ2xlLS1k aXNqb2ludC1tYXhpbXVtcykKKHdpbmRvdy1sYXJnZXN0LWVtcHR5LXJlY3RhbmdsZSk6IE5l dyBmdW5jdGlvbnMuCgoqIHNyYy9kaXNwZXh0ZXJuLmggKFdJTkRPV19XQU5UU19NT0RFTElO RV9QKQooV0lORE9XX1dBTlRTX0hFQURFUl9MSU5FX1ApOiBSZW1vdmUuICBGdW5jdGlvbmFs aXR5IGlzIG5vdwpwcm92aWRlZCBieSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9ucyB3aW5kb3df d2FudHNfbW9kZWxpbmUgYW5kCndpbmRvd193YW50c19oZWFkZXJfbGluZSBpbiB3aW5kb3cu Yy4gIEFkanVzdCB1c2Vycy4KKiBzcmMvZGlzcG5ldy5jIChhZGp1c3RfZ2x5cGhfbWF0cml4 KQooYnVmZmVyX3Bvc25fZnJvbV9jb29yZHMpOiBVc2Ugd2luZG93X3dhbnRzX21vZGVsaW5l IGFuZAp3aW5kb3dfd2FudHNfaGVhZGVyX2xpbmUgaW5zdGVhZCBvZiBXSU5ET1dfV0FOVFNf TU9ERUxJTkVfUCBhbmQKV0lORE9XX1dBTlRTX0hFQURFUl9MSU5FX1AuCiogc3JjL2ZyYW1l LmMgKGtlZXBfcmF0aW8pOiBOZXcgZnVuY3Rpb24uCihhZGp1c3RfZnJhbWVfc2l6ZSk6IENh bGwga2VlcF9yYXRpbyBmb3IgZWFjaCBvZiBGJ3MgY2hpbGQKZnJhbWVzLgoobWFrZV9mcmFt ZSk6IEluaXRpYWxpemUgbm9fc3BlY2lhbF9nbHlwaHMgc2xvdC4KKGZyYW1lX2ludGVybmFs X2JvcmRlcl9wYXJ0KTogTmV3IGZ1bmN0aW9uLgooRmZyYW1lX3BpeGVsX3dpZHRoLCBGZnJh bWVfcGl4ZWxfaGVpZ2h0LCBGYm9yZGVyX3dpZHRoKTogUmVuYW1lCnRvIEZmcmFtZV9uYXRp dmVfd2lkdGgsIEZmcmFtZV9uYXRpdmVfaGVpZ2h0IG1hbmQKRmZyYW1lX2ludGVybmFsX2Jv cmRlcl93aWR0aC4KKGZyYW1lX3Bhcm1fdGFibGUpOiBBZGQgUW5vX3NwZWNpYWxfZ2x5cGhz IGVudHJ5LgooZnJhbWVfZmxvYXRfdHlwZSk6IE5ldyBlbnVtZXJhdGlvbiB0eXBlLgooZnJh bWVfZmxvYXQpOiBOZXcgZnVuY3Rpb24gdG8gaGFuZGxlIGZyYW1lIHNpemUgYW5kIHBvc2l0 aW9uCnJhdGlvcy4KKHhfc2V0X2ZyYW1lX3BhcmFtZXRlcnMpOiBIYW5kbGUgc2l6ZSBhbmQg cG9zaXRpb24gcmF0aW9zLgooeF9zZXRfbm9fc3BlY2lhbF9nbHlwaHMpOiBOZXcgZnVuY3Rp b24KKHhfZmlndXJlX3dpbmRvd19zaXplKTogSGFuZGxlIHNpemUgYW5kIHBvc2l0aW9uIHJh dGlvcy4KKHN5bXNfb2ZfZnJhbWUpOiBBZGQgUWRpc3BsYXlfbW9uaXRvcl9hdHRyaWJ1dGVz X2xpc3QsClFub19zcGVjaWFsX2dseXBocywgUWZyYW1lX2VkZ2VzLCBRa2VlcF9yYXRpbywg UXdpZHRoX29ubHksClFoZWlnaHRfb25seSwgUWxlZnRfb25seSBhbmQgUXRvcF9vbmx5Lgoq IHNyYy9mcmFtZS5oIChpbnRlcm5hbF9ib3JkZXJfcGFydCk6IE5ldyBlbnVtZXJhdGlvbiB0 eXBlLgooc3RydWN0IGZyYW1lKTogTmV3IHNsb3Qgbm9fc3BlY2lhbF9nbHlwaHMuCihGUkFN RV9OT19TUEVDSUFMX0dMWVBIUyk6IE5ldyBtYWNyby4KKiBzcmMva2V5Ym9hcmQuYyAoaW50 ZXJuYWxfYm9yZGVyX3BhcnRzKTogTmV3IGFycmF5IGNvbnN0YW50LgoobWFrZV9saXNweV9w b3NpdGlvbik6IEZvciBmcmFtZXMgd2l0aCBib3JkZXIgZHJhZ2dpbmcgZW5hYmxlZApyZXR1 cm4gaW50ZXJuYWwgYm9yZGVyIHBhcnQuCihzeW1zX29mX2tleWJvYXJkKTogTmV3IHN5bWJv bHMgUWRyYWdfaW50ZXJuYWxfYm9yZGVyLApRbGVmdF9lZGdlLCBRdG9wX2xlZnRfY29ybmVy LCBRdG9wX2VkZ2UsIFF0b3BfcmlnaHRfY29ybmVyLApRcmlnaHRfZWRnZSwgUWJvdHRvbV9y aWdodF9jb3JuZXIsIFFib3R0b21fZWRnZSBhbmQKUWJvdHRvbV9sZWZ0X2Nvcm5lci4KKiBz cmMvbWluaWJ1Zi5jIChyZWFkX21pbmlidWZfdW53aW5kKTogV2hlbiBleGl0aW5nIHRoZQpt aW5pYnVmZmVyIGRlYWwgd2l0aCBmcmFtZXMgdGhhdCBoYXZlIHRoZSAnbWluaWJ1ZmZlci1l eGl0JwpwYXJhbWV0ZXIgc2V0Lgooc3ltc19vZl9taW5pYnVmKTogTmV3IHN5bWJvbCBRbWlu aWJ1ZmZlcl9leGl0LgoqIHNyYy9uc2Zucy5tIChmcmFtZV9wYXJtX2hhbmRsZXIpOiBBZGQg ZW50cnkgZm9yCnhfc2V0X25vX3NwZWNpYWxfZ2x5cGhzLgooRnhfY3JlYXRlX2ZyYW1lKTog SGFuZGxlICduby1zcGVjaWFsLWdseXBocycgcGFyYW1ldGVyLgpJbnRpdGlhbGl6ZSBuZXcg Y3Vyc29yIHR5cGVzIGZvciBkcmFnZ2luZyBmcmFtZSBib3JkZXJzLgoqIHNyYy9uc3Rlcm0u aCAoc3RydWN0IG5zX291dHB1dCk6IEFkZCBuZXcgY3Vyc29yIHR5cGVzIGZvcgpkcmFnZ2lu ZyBmcmFtZSBib3JkZXJzLgoqIHNyYy93MzJmbnMuYyAodzMyX2ZyYW1lX3Bhcm1faGFuZGxl cnMpOiBBZGQgZW50cnkgZm9yCnhfc2V0X25vX3NwZWNpYWxfZ2x5cGhzLgooRnhfY3JlYXRl X2ZyYW1lKTogSGFuZGxlICduby1zcGVjaWFsLWdseXBocycgcGFyYW1ldGVyLgpJbnRpdGlh bGl6ZSBuZXcgY3Vyc29yIHR5cGVzIGZvciBkcmFnZ2luZyBmcmFtZSBib3JkZXJzLgoqIHNy Yy93MzJ0ZXJtLmggKHN0cnVjdCB3MzJfb3V0cHV0KTogQWRkIG5ldyBjdXJzb3IgdHlwZXMg Zm9yCmRyYWdnaW5nIGZyYW1lIGJvcmRlcnMuCiogc3JjL3dpbmRvdy5jIChjb29yZGluYXRl c19pbl93aW5kb3cpCihGd2luZG93X2xpbmVfaGVpZ2h0LCB3aW5kb3dfaW50ZXJuYWxfaGVp Z2h0KTogVXNlCndpbmRvd193YW50c19tb2RlbGluZSBhbmQgd2luZG93X3dhbnRzX2hlYWRl cl9saW5lIGluc3RlYWQgb2YKV0lORE9XX1dBTlRTX01PREVMSU5FX1AgYW5kIFdJTkRPV19X QU5UU19IRUFERVJfTElORV9QLgooRndpbmRvd19saW5lc19waXhlbF9kaW1lbnNpb25zKTog TmV3IGZ1bmN0aW9uLgood2luZG93X3BhcmFtZXRlcik6IE5ldyBmdW5jdGlvbi4KKEZ3aW5k b3dfcGFyYW1ldGVyKTogQ2FsbCB3aW5kb3dfcGFyYW1ldGVyLgood2luZG93X3dhbnRzX21v ZGVfbGluZSwgd2luZG93X3dhbnRzX2hlYWRlcl9saW5lKTogTmV3CmZ1bmN0aW9ucyByZXBs YWNpbmcgdGhlIG1hY3JvcyBXSU5ET1dfV0FOVFNfTU9ERUxJTkVfUCBhbmQKV0lORE9XX1dB TlRTX0hFQURFUl9MSU5FX1AgZnJvbSBkaXNwZXh0ZXJuLmguCihzeW1zX29mX3dpbmRvdyk6 IE5ldyBzeW1ib2xzIFFtb2RlX2xpbmVfZm9ybWF0IGFuZApRaGVhZGVyX2xpbmVfZm9ybWF0 LgoqIHNyYy93aW5kb3cuaDogUmVvcmdhbml6ZSBhbmQgcmUtY29tbWVudCBtYWNyb3MuICBV c2UKd2luZG93X3dhbnRzX21vZGVsaW5lIGFuZCB3aW5kb3dfd2FudHNfaGVhZGVyX2xpbmUg aW5zdGVhZCBvZgpXSU5ET1dfV0FOVFNfTU9ERUxJTkVfUCBhbmQgV0lORE9XX1dBTlRTX0hF QURFUl9MSU5FX1AuCihNSU5JX05PTl9PTkxZX1dJTkRPV19QLCBNSU5JX09OTFlfV0lORE9X X1ApOiBNaW5vciByZXdyaXRlLgooV0lORE9XX0JVRkZFUik6IE5ldyBtYWNyby4KKFdJTkRP V19CT1hfTEVGVF9FREdFX0NPTCwgV0lORE9XX0JPWF9SSUdIVF9FREdFX0NPTCk6IFJlbW92 ZS4KKiBzcmMveGRpc3AuYyAod2luZG93X3RleHRfYm90dG9tX3ksIHdpbmRvd19ib3hfaGVp Z2h0KQood2luZG93X2JveCwgc3RhcnRfZGlzcGxheSkKKGNvbXB1dGVfd2luZG93X3N0YXJ0 X29uX2NvbnRpbnVhdGlvbl9saW5lKQoodHJ5X2N1cnNvcl9tb3ZlbWVudCwgcmVkaXNwbGF5 X3dpbmRvdykKKHRyeV93aW5kb3dfcmV1c2luZ19jdXJyZW50X21hdHJpeCwgdHJ5X3dpbmRv d19pZCkKKGRpc3BsYXlfbGluZSwgZXhwb3NlX3dpbmRvdyk6IFVzZSB3aW5kb3dfd2FudHNf bW9kZWxpbmUgYW5kCndpbmRvd193YW50c19oZWFkZXJfbGluZSBpbnN0ZWFkIG9mIFdJTkRP V19XQU5UU19NT0RFTElORV9QIGFuZApXSU5ET1dfV0FOVFNfSEVBREVSX0xJTkVfUC4KKHBv c192aXNpYmxlX3AsIGRpc3BsYXlfbW9kZV9saW5lcyk6IFJlc3BlY3QgVydzCidtb2RlLWxp bmUtZm9ybWF0JyBhbmQgJ2hlYWRlci1saW5lLWZvcm1hdCcgd2luZG93IHBhcmFtZXRlcnMu Cihpbml0X2l0ZXJhdG9yKTogVXNlIHdpbmRvd193YW50c19tb2RlbGluZSBhbmQKd2luZG93 X3dhbnRzX2hlYWRlcl9saW5lIGluc3RlYWQgb2YgV0lORE9XX1dBTlRTX01PREVMSU5FX1Ag YW5kCldJTkRPV19XQU5UU19IRUFERVJfTElORV9QLiAgRm9yIHRpcCBmcmFtZXMgcmVzcGVj dApub19zcGVjaWFsX2dseXBocyB2YWx1ZS4KKG5vdGVfbW91c2VfaGlnaGxpZ2h0KTogU2V0 IGZyYW1lIGJvcmRlciBjdXJzb3JzIHdoZW4gb24KaW50ZXJuYWwgYm9yZGVyLgooeF9kcmF3 X3JpZ2h0X2RpdmlkZXIsIHhfZHJhd19ib3R0b21fZGl2aWRlcik6IFRyeSB0byBpbXByb3Zl CmRyYXdpbmcgb2Ygd2luZG93IGRpdmlkZXJzLgoqIHNyYy94Zm5zLmMgKG1vdXNlX2N1cnNv cik6IEFkZCBlbnRyaWVzIGZvciBib3JkZXIgcGFydHMuCihtb3VzZV9jdXJzb3JfdHlwZXMp OiBBZGQgZW50cmllcyBmb3IgY3Vyc29yIHR5cGVzIHRvIGRyYWcKZnJhbWUgYm9yZGVycy4K KElOU1RBTExfQ1VSU09SKTogQWRkIGVudHJpZXMgZm9yIG5ldyBjdXJzb3IgdHlwZXMgdG8g ZHJhZwpmcmFtZSBib3JkZXJzLgooRnhfY3JlYXRlX2ZyYW1lKTogSGFuZGxlICduby1zcGVj aWFsLWdseXBocycgcGFyYW1ldGVyLgooeF9mcmFtZV9wYXJtX2hhbmRsZXJzKTogQWRkIGVu dHJ5IGZvcgp4X3NldF9ub19zcGVjaWFsX2dseXBocy4KKFZ4X3dpbmRvd19sZWZ0X2VkZ2Vf c2hhcGUsIFZ4X3dpbmRvd190b3BfbGVmdF9jb3JuZXJfc2hhcGUpCihWeF93aW5kb3dfdG9w X2VkZ2Vfc2hhcGUsIFZ4X3dpbmRvd190b3BfcmlnaHRfY29ybmVyX3NoYXBlKQooVnhfd2lu ZG93X3JpZ2h0X2VkZ2Vfc2hhcGUpCihWeF93aW5kb3dfYm90dG9tX3JpZ2h0X2Nvcm5lcl9z aGFwZSkKKFZ4X3dpbmRvd19ib3R0b21fZWRnZV9zaGFwZSkKKFZ4X3dpbmRvd19ib3R0b21f bGVmdF9jb3JuZXJfc2hhcGUpOiBOZXcgdmFyaWFibGVzLgoqIHNyYy94dGVybS5jICh4X2Zy ZWVfZnJhbWVfcmVzb3VyY2VzKTogUmVtb3ZlIG5ldyBjdXJzb3JzIGZvcgpkcmFnZ2luZyBm cmFtZSBib3JkZXJzLgoqIHNyYy94dGVybS5oIChzdHJ1Y3QgeF9vdXRwdXQpOiBBZGQgbmV3 IGN1cnNvciB0eXBlcyBmb3IKZHJhZ2dpbmcgZnJhbWUgYm9yZGVycy4KCiogZG9jL2xpc3By ZWYvZGlzcGxheS50ZXhpIChTaXplIG9mIERpc3BsYXllZCBUZXh0KTogRG9jdW1lbnQKYHdp bmRvdy1saW5lcy1waXhlbC1kaW1lbnNpb25zJy4KKiBkb2MvbGlzcHJlZi9lbGlzcC50ZXhp IChUb3ApOiBBZGQgZW50cnkgZm9yICJNb3VzZSBEcmFnZ2luZwpQYXJhbWV0ZXJzIi4KKiBk b2MvbGlzcHJlZi9mcmFtZXMudGV4aSAoRnJhbWUgU2l6ZSk6IFJlcGxhY2UKZnJhbWUtcGl4 ZWwtd2lkdGgvLWhlaWdodCBieSBmcmFtZS1uYXRpdmUtd2lkdGgvLWhlaWdodC4gIEFkZApm cmFtZS1pbm5lci13aWR0aC8taGVpZ2h0IGFuZCBmcmFtZS1vdXRlci13aWR0aC8taGVpZ2h0 IGRvY3MuCihQb3NpdGlvbiBQYXJhbWV0ZXJzKTogRGVzY3JpYmUgc3BlY2lmeWluZyBwb3Np dGlvbiBhcyByYXRpb3MuCkNsYXJpZnkgcmVtYXJrIGFib3V0IHBvc2l0aW9ucyByZWxhdGl2 ZSB0byBib3R0b20vcmlkZ2UgZGlzcGxheQplZGdlLgooU2l6ZSBQYXJhbWV0ZXJzKTogRGVz Y3JpYmUgc3BlY2lmeWluZyBzaXplcyBhcyByYXRpb3MuCkRlc2NyaWJlICdmaXQtZnJhbWUt dG8tYnVmZmVyLW1hcmdpbnMnIGFuZAonZml0LWZyYW1lLXRvLWJ1ZmZlci1zaXplcycgcGFy YW1ldGVycy4KKExheW91dCBQYXJhbWV0ZXJzKTogRGVzY3JpYmUgJ25vLXNwZWNpYWwtZ2x5 cGhzJyBwYXJhbWV0ZXIuCihGcmFtZSBJbnRlcmFjdGlvbiBQYXJhbWV0ZXJzKTogRGVzY3Jp YmUgJ2F1dG8taGlkZS1mdW5jdGlvbicsCidtaW5pYnVmZmVyLWV4aXQnIGFuZCAna2VlcC1y YXRpbycgcGFyYW1ldGVycy4KKE1vdXNlIERyYWdnaW5nIFBhcmFtZXRlcnMpOiBOZXcgc2Vj dGlvbiBkZXNjcmliaW5nCidkcmFnLWludGVybmFsLWJvcmRlcicsICdkcmFnLXdpdGgtaGVh ZGVyLWxpbmUnLAonZHJhZy13aXRoLW1vZGUtbGluZScsICdzbmFwLXdpZHRoJywgJ3RvcC12 aXNpYmxlJyBhbmQKJ2JvdHRvbS12aXNpYmxlJyBwYXJhbWV0ZXJzLgooTWFuYWdlbWVudCBQ YXJhbWV0ZXJzKTogTWVudGlvbiB0aGF0IGBvdmVycmlkZS1yZWRpcmVjdCcgaGFzCm5vIGVm ZmVjdCBvbiBNUyBXaW5kb3dzLgooRm9udCBhbmQgQ29sb3IgUGFyYW1ldGVycyk6IE1lbnRp b24gY2hpbGQgZnJhbWVzIGZvciBgYWxwaGEnCnBhcmFtZXRlci4KKENoaWxkIEZyYW1lcyk6 IFJld3JpdGUgc2VjdGlvbiB3aXRoIGRlc2NyaXB0aW9uIGFuZCBjcm9zcwpyZWZlcmVuY2Vz IHRvIG5ldyBmcmFtZSBwYXJhbWV0ZXJzIGFkZGVkLgoqIGRvYy9saXNwcmVmL21vZGVzLnRl eGkgKE1vZGUgTGluZSBCYXNpY3MpOiBNZW50aW9uCidtb2RlLWxpbmUtZm9ybWF0JyBhbmQg J2hlYWRlci1saW5lLWZvcm1hdCcgd2luZG93IHBhcmFtZXRlcnMuCiogZG9jL2xpc3ByZWYv d2luZG93cy50ZXhpIChSZXNpemluZyBXaW5kb3dzKTogTWVudGlvbiBlZmZlY3QKb2YgYGZp dC1mcmFtZS10by1idWZmZXItbWFyZ2lucycgZm9yIGNoaWxkIGZyYW1lcy4KKERpc3BsYXkg QWN0aW9uIEZ1bmN0aW9ucyk6IE5ldyBhY3Rpb24gZnVuY3Rpb24KYGRpc3BsYXktYnVmZmVy LWluLWNoaWxkLWZyYW1lJy4KKFF1aXR0aW5nIFdpbmRvd3MpOiBNZW50aW9uIGBtYWtlLWZy YW1lLWludmlzaWJsZScgYXMgb3B0aW9uYWwKdmFsdWUgb2YgYGZyYW1lLWF1dG8taGlkZS1m dW5jdGlvbicgYW5kIGBhdXRvLWhpZGUtZnVuY3Rpb24nCmZyYW1lIHBhYW1ldGVyLgooQ29v cmRpbmF0ZXMgYW5kIFdpbmRvd3MpOiBEZXNjcmliZSBuZXcgZnVuY3Rpb24KYHdpbmRvdy1s YXJnZXN0LWVtcHR5LXJlY3RhbmdsZScuCihXaW5kb3cgUGFyYW1ldGVycyk6IERlc2NyaWJl IG5ldyBwYXJhbWV0ZXJzICdtb2RlLWxpbmUtZm9ybWF0JwphbmQgJ2hlYWRlci1saW5lLWZv cm1hdCcuICBJbmRleCBhbGwgd2luZG93IHBhcmFtZXRlcnMgZGVzY3JpYmVkCmluIHRoaXMg c2VjdGlvbi4K --------------000202090607030307050103 Content-Type: application/emacs-lisp; name="my-child-frame.el" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="my-child-frame.el" KGRlZnZhciBteS1jaGlsZC1mcmFtZSBuaWwpCihkZWZ2YXIgbXktY2hpbGQtYnVmZmVyIG5p bCkKKGRlZnZhciBteS1jaGlsZC13aW5kb3cgbmlsKQoKKGRlZnVuIG15LW1ha2UtY2hpbGQt ZnJhbWUgKCkKICAoaW50ZXJhY3RpdmUpCiAgKHNldHEgbXktY2hpbGQtZnJhbWUKCShtYWtl LWZyYW1lCgkgYCgocGFyZW50LWZyYW1lIC4gLChzZWxlY3RlZC1mcmFtZSkpCgkgICAobm8t Zm9jdXMtb24tbWFwIC4gdCkKCSAgICh1bmRlY29yYXRlZCAuIHQpCgkgICAobGVmdCAuIDEu MCkKCSAgICh0b3AgLiAwLjUpCgkgICAod2lkdGggLiAwLjMpCgkgICAoaGVpZ2h0IC4gMC44 KQoJICAgKGJvcmRlci13aWR0aCAuIDApCgkgICAoaW50ZXJuYWwtYm9yZGVyLXdpZHRoIC4g MykKCSAgIChiYWNrZ3JvdW5kLWNvbG9yIC4gInllbGxvdyIpCgkgICAodG9vbC1iYXItbGlu ZXMgLiAwKQoJICAgKG1lbnUtYmFyLWxpbmVzIC4gMCkKCSAgIChtaW5pYnVmZmVyIC4gbmls KQoJICAgKHZlcnRpY2FsLXNjcm9sbC1iYXJzIC4gbmlsKQoJICAgKGhvcml6b250YWwtc2Ny b2xsLWJhcnMgLiBuaWwpCgkgICAobGVmdC1mcmluZ2UgLiAwKQoJICAgKHJpZ2h0LWZyaW5n ZSAuIDApCgkgICAoZHJhZy1pbnRlcm5hbC1ib3JkZXIgLiB0KQoJICAgKGRyYWctd2l0aC1t b2RlLWxpbmUgLiB0KQoJICAgKGRyYWctd2l0aC1oZWFkZXItbGluZSAuIHQpCgkgICAobWlu LWhlaWdodCAuIDEpCgkgICAobWluLXdpZHRoIC4gMSkKCSAgIChrZWVwLXJhdGlvIC4gdCkK CSAgIChzbmFwLXdpZHRoIC4gMjUpCgkgICAodG9wLXZpc2libGUgLiA0KQo7OyAJICAgKGJv dHRvbS12aXNpYmxlIC4gOCkKCSAgIChuby1zcGVjaWFsLWdseXBocyAuIHQpCgkgICAodW5z cGxpdHRhYmxlIC4gdCkKCSAgICkpKQogIChzZXRxIG15LWNoaWxkLXdpbmRvdyAoZnJhbWUt cm9vdC13aW5kb3cgbXktY2hpbGQtZnJhbWUpKQogIChzZXQtd2luZG93LWJ1ZmZlciBteS1j aGlsZC13aW5kb3cgKGdldC1idWZmZXItY3JlYXRlICIqbXktbm90ZXMqIikpCiAgKHNldC13 aW5kb3ctcGFyYW1ldGVyIG15LWNoaWxkLXdpbmRvdyAnbW9kZS1saW5lLWZvcm1hdCAnbm9u ZSkKICAoc2V0LXdpbmRvdy1wYXJhbWV0ZXIKICAgbXktY2hpbGQtd2luZG93ICdoZWFkZXIt bGluZS1mb3JtYXQgJygiICIgKDpldmFsIChidWZmZXItbmFtZSkpKSkKOzsgICAoc2V0LXdp bmRvdy1wYXJhbWV0ZXIKOzsgICAgbXktY2hpbGQtd2luZG93ICdtb2RlLWxpbmUtZm9ybWF0 ICcoIiAiICg6ZXZhbCAoYnVmZmVyLW5hbWUpKSkpCiAgKHNldC1mYWNlLWJhY2tncm91bmQg J2ludGVybmFsLWJvcmRlciAiYmx1ZSIgbXktY2hpbGQtZnJhbWUpKQoKKGRlZnVuIG15LXRv Z2dsZS1jaGlsZC1mcmFtZSAoKQogIChpbnRlcmFjdGl2ZSkKICAoaWYgKGZyYW1lLWxpdmUt cCBteS1jaGlsZC1mcmFtZSkKICAgICAgKGlmIChmcmFtZS12aXNpYmxlLXAgbXktY2hpbGQt ZnJhbWUpCgkgIChtYWtlLWZyYW1lLWludmlzaWJsZSBteS1jaGlsZC1mcmFtZSkKCShtYWtl LWZyYW1lLXZpc2libGUgbXktY2hpbGQtZnJhbWUpKQogICAgKG15LW1ha2UtY2hpbGQtZnJh bWUpKSkKCihkZWZ1biBteS1zd2l0Y2gtdG8tY2hpbGQtZnJhbWUgKCkKICAoaW50ZXJhY3Rp dmUpCiAgKGlmIChmcmFtZS1saXZlLXAgbXktY2hpbGQtZnJhbWUpCiAgICAgIChpZiAoZnJh bWUtdmlzaWJsZS1wIG15LWNoaWxkLWZyYW1lKQoJICAoaWYgKGVxIG15LWNoaWxkLWZyYW1l IChzZWxlY3RlZC1mcmFtZSkpCgkgICAgICAoeC1mb2N1cy1mcmFtZSAoZnJhbWUtcGFyZW50 IG15LWNoaWxkLWZyYW1lKSkKCSAgICAoeC1mb2N1cy1mcmFtZSBteS1jaGlsZC1mcmFtZSkp CgkobWFrZS1mcmFtZS12aXNpYmxlIG15LWNoaWxkLWZyYW1lKQoJKHgtZm9jdXMtZnJhbWUg bXktY2hpbGQtZnJhbWUpKQogICAgKG15LW1ha2UtY2hpbGQtZnJhbWUpCiAgICAoeC1mb2N1 cy1mcmFtZSBteS1jaGlsZC1mcmFtZSkpKQoKKGRlZnVuIG15LWluc2VydC1zdHJpbmctaW4t Y2hpbGQtYnVmZmVyICgpCiAgKGludGVyYWN0aXZlKQogIChpZiBtYXJrLWFjdGl2ZQogICAg ICAobGV0ICgobXktc3RyaW5nIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKCQkJ KG9yIChyZWdpb24tYmVnaW5uaW5nKSAocG9pbnQtbWluKSkKCQkJKG9yIChyZWdpb24tZW5k KSAocG9pbnQtbWF4KSkpKSkKCShteS1zd2l0Y2gtdG8tY2hpbGQtZnJhbWUpCgkod2l0aC1j dXJyZW50LWJ1ZmZlciBteS1jaGlsZC1idWZmZXIKCSAgKGRlbGV0ZS1yZWdpb24gKHBvaW50 LW1pbikgKHBvaW50LW1heCkpCgkgIChpbnNlcnQgbXktc3RyaW5nKQoJICAoZ290by1jaGFy IChwb2ludC1taW4pKSkpCiAgICAobXktc3dpdGNoLXRvLWNoaWxkLWZyYW1lKQogICAgKHdp dGgtY3VycmVudC1idWZmZXIgbXktY2hpbGQtYnVmZmVyCiAgICAgIChkZWxldGUtcmVnaW9u IChwb2ludC1taW4pIChwb2ludC1tYXgpKQogICAgICAoeWFuaykKICAgICAgKGdvdG8tY2hh ciAocG9pbnQtbWluKSkpKSkKCihkZWZ1biBteS1maXQtY2hpbGQtZnJhbWUtdG8tYnVmZmVy ICgpCiAgKGludGVyYWN0aXZlKQogICh3aGVuIChmcmFtZS1saXZlLXAgbXktY2hpbGQtZnJh bWUpCiAgICAoZml0LWZyYW1lLXRvLWJ1ZmZlciBteS1jaGlsZC1mcmFtZSkpKQoKKGRlZnVu IG15LWRlbGV0ZS1jaGlsZC1mcmFtZSAoKQogIChpbnRlcmFjdGl2ZSkKICAod2hlbiAoZnJh bWUtbGl2ZS1wIG15LWNoaWxkLWZyYW1lKQogICAgKGRlbGV0ZS1mcmFtZSBteS1jaGlsZC1m cmFtZSkpKQoKKGdsb2JhbC1zZXQta2V5IFsoY29udHJvbCBoeXBlciBjKV0gJ215LXRvZ2ds ZS1jaGlsZC1mcmFtZSkKKGdsb2JhbC1zZXQta2V5IFsobWV0YSBoeXBlciBjKV0gJ215LXN3 aXRjaC10by1jaGlsZC1mcmFtZSkKKGdsb2JhbC1zZXQta2V5IFsoY29udHJvbCBtZXRhIGh5 cGVyIGMpXSAnbXktaW5zZXJ0LXN0cmluZy1pbi1jaGlsZC1idWZmZXIpCihnbG9iYWwtc2V0 LWtleSBbKHNoaWZ0IGh5cGVyIGMpXSAnbXktZml0LWNoaWxkLWZyYW1lLXRvLWJ1ZmZlcikK KGdsb2JhbC1zZXQta2V5IFsoc2hpZnQgY29udHJvbCBtZXRhIGh5cGVyIGMpXSAnbXktZGVs ZXRlLWNoaWxkLWZyYW1lKQo= --------------000202090607030307050103-- From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 25 07:02:21 2017 Received: (at 25408-done) by debbugs.gnu.org; 25 Jun 2017 11:02:21 +0000 Received: from localhost ([127.0.0.1]:36342 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dP5J7-0000Lx-BL for submit@debbugs.gnu.org; Sun, 25 Jun 2017 07:02:21 -0400 Received: from mout.gmx.net ([212.227.15.18]:56244) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dP5J4-0000Lj-VA for 25408-done@debbugs.gnu.org; Sun, 25 Jun 2017 07:02:19 -0400 Received: from [192.168.1.100] ([213.162.68.95]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0LvE2c-1dotwf2WEE-010I9E; Sun, 25 Jun 2017 13:02:11 +0200 Message-ID: <594F982F.8090207@gmx.at> Date: Sun, 25 Jun 2017 13:02:07 +0200 From: martin rudalics MIME-Version: 1.0 To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LUNsYXVkZWw=?= , Arthur Miller Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> In-Reply-To: <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:utT8NiyXK40om5vRIW+Pd2ByOp3K+mc7qC9VTEh9+ESBsd18OZQ jHHp/K93cVtWyGyDrT1raCDoEwBrzE5Cr5YgSxROeqUNLxwZRAxyAm2aLve59sSvsTpVagd 2y3vycWFx5ex9hPlfcYh8uf/di+xX7x6XiwtTBhlgKeMFQPfAHm8vadiewcEMQOEiH1D1Li iKRk/rzG9X5NR4nJTpEUg== X-UI-Out-Filterresults: notjunk:1;V01:K0:nD7/sK1WwrQ=:mQWlI63Tw5h0H8kpVfG3ax yyemuaVYEdKIKlkHRCKXelBgm3KsQL6c0kfFnQfeJWhy/pRcPBHnk15yXg9kUWcg5y2+ZMVVy 7tOlsOKMXSXXhBWymaegDzhJGsqfBJZ7TkaiHnYl4liA4HLivhiG8MsNerGJ/4SROx5P5XsbR gyFkEjaWoDwAS5Yo+SdcHDVg9YzjIi0NKCEHGTCMQTDYkjbOYp9Sj5e5BjxIA9XneOTazmumS YZjOx3kWSvISjdis71oYP5+ql+51OYifYRCIFQTq0A53aMgZcDxButAQKOf4UUnXR/R6Jr53G 3+XtYzmqjZB12oP3iYwygr4+aBMxy1fO++6VZyOcnRrCV71CVHKCTTlyvR+66Lrpbe+q1MHSc aKcrHdX9StyO9xLYNNYH2Q0ox7k8R5QweqiiXPU1BHsPCaedF3E8S6uFA1bT5jAi6FuBcrBQa ldwViiWYMpDYRdX4E/gna2D91DRJ7NXZhI1KYumEZfljpPPrW1BnL4IqcYD20nDHl+9AX9Svd ag4PCtZr9dEBhNSmNEEra2EVrE53jjcaUMJG4TZ66Z9MULhrQ1erKOt9DFwvbJAIG+Xne7iNi zbwkqTEVoNFwEYdYmItZ2jksFGThdfFTpazUG4RcTiHCeMRdYYXctyEWjPTgBj9lAxC+fc1Q5 KICag0wjMQ4/y12t6WVqqNLCZyoe8KKLXH0KLLZYQK/hnbWjlHLFQxVZJDdxTsQdSuKsDn6wx 8wkD6vdmBM22+vm5nWbbPgJeG8YLwR50g6J8asDBNfFlK7V0rGYCYiwimCVz8dYZJyEzomYMw NPGKVxQUEj6qbM0GUu/eyLGd51eMw== X-Spam-Score: -2.8 (--) X-Debbugs-Envelope-To: 25408-done Cc: 25408-done@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: -2.8 (--) > I've run into another small issue: there doesn't seem to be a way to > turn off truncation marks in tooltip frames. Is that correct? This bit > of xdisp.c seems to take care of that for Emacs' default tip frame; is > there a way to emulate this for Lisp-created frames? Truncation glyphs can be now turned off via the 'no-special-glyphs' frame parameter. Closing this bug. Thanks, martin From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 25 10:22:56 2017 Received: (at 25408) by debbugs.gnu.org; 25 Jun 2017 14:22:56 +0000 Received: from localhost ([127.0.0.1]:37397 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dP8RE-00073h-KM for submit@debbugs.gnu.org; Sun, 25 Jun 2017 10:22:56 -0400 Received: from mail-wr0-f178.google.com ([209.85.128.178]:34387) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dP8RC-00073R-Ho for 25408@debbugs.gnu.org; Sun, 25 Jun 2017 10:22:54 -0400 Received: by mail-wr0-f178.google.com with SMTP id 77so121283802wrb.1 for <25408@debbugs.gnu.org>; Sun, 25 Jun 2017 07:22:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=vcuVnI8jkuhbIhgCY8EjqZHo+UwCqumOCCScTHruHjE=; b=T+Yxn777htfn/dYv3cuqs8epJO20pJetE76FJdSPS0XQb/qaN3PnKT84ay7xHRCQxY UhYoGOL9wKszU4/VUuuMlyQ0K9a7ppGALaHBd9NA/ppmRor7xEtr1/77oWaTfcCcVBPs b13G8SlZRJ/QctgvAOW634vQp2Gkz8q1iG7Ufy+HNoe3tcl6AKfc6SpHTPGx32TVALNV JvsZOQB/hzHHBo1L9qkHyAh8L3EoLQxVVjd2PVSta5YRuFJA+xe81thsypbZOL1pnmJO FaQNBcBLJM3cClEl3L+UDql/6mSkUpyZK4jjMHVMiWv65r8kr7YaeSqF+U317NmHAAH8 ntJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=vcuVnI8jkuhbIhgCY8EjqZHo+UwCqumOCCScTHruHjE=; b=He++4O5cO4wPMNfPCF3mhr+XfrjVJHD6nzral04D5nRgjvhNUQaPbJPnS1Bb7Jt9wL iDj2jxoeHIK/jRlYzy+g89JgpRtmj4St5WdZl7k9Zvual/pUXmmX91RS1adMSVxMnvK4 fsLuYlkJl23HGwcMErWvdrQfIHJwI2gMJrN3vEcRhvgUXN3666IbC4gzaF9KFBhgDG5L ojM+/rTIjyr5NorfScxNte8adHEIuIbNUD5komiPKW1pheGVBcGzdwi+pkz2jDENjz6O wuC4EapOgXyITrM0iV5h1NuIaHzE6ZfiHzhB8HIMaQYnqM5K91wiCW/tYJBPwHHJrCYD i1oA== X-Gm-Message-State: AKS2vOxYq6eKdbnfdpODej+uAD7/Q+2tFWbOe1Pi9/wGHtfDhY+Cul25 GK591VdQc34PVQ== X-Received: by 10.28.228.84 with SMTP id b81mr10399879wmh.78.1498400568734; Sun, 25 Jun 2017 07:22:48 -0700 (PDT) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-6884-69a9-d86a-b80b.holly.idiocy.org. [2001:8b0:3f8:8129:6884:69a9:d86a:b80b]) by smtp.gmail.com with ESMTPSA id m73sm10437530wmi.25.2017.06.25.07.22.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 25 Jun 2017 07:22:47 -0700 (PDT) Date: Sun, 25 Jun 2017 15:22:45 +0100 From: Alan Third To: martin rudalics Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) Message-ID: <20170625142245.GA31548@breton.holly.idiocy.org> References: <20170419143316.GB10595@breton.holly.idiocy.org> <58F789F0.9000608@gmx.at> <20170419170420.GA12166@breton.holly.idiocy.org> <58F7A749.6070906@gmx.at> <20170610153853.GA95401@breton.holly.idiocy.org> <593CFB04.8000600@gmx.at> <20170611163544.GA70844@breton.holly.idiocy.org> <593E2FFF.2090806@gmx.at> <20170612175926.GA74044@breton.holly.idiocy.org> <594B899E.6050105@gmx.at> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <594B899E.6050105@gmx.at> User-Agent: Mutt/1.7.2 (2016-11-26) X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?iso-8859-1?Q?Cl=E9ment?= Pit--Claudel , Anders Lindgren X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.6 (--) On Thu, Jun 22, 2017 at 11:10:54AM +0200, martin rudalics wrote: > > Anything else you’d like me to look at here? > > Attached find the changes I intend to push in the next few days plus a > ChangeLog. You will find this particular change there: > > + f->output_data.ns->left_edge_cursor = [NSCursor resizeLeftRightCursor]; > + f->output_data.ns->top_left_corner_cursor = [NSCursor arrowCursor]; > + f->output_data.ns->top_edge_cursor = [NSCursor resizeUpDownCursor]; > + f->output_data.ns->top_right_corner_cursor = [NSCursor arrowCursor]; > + f->output_data.ns->right_edge_cursor = [NSCursor resizeLeftRightCursor]; > + f->output_data.ns->bottom_right_corner_cursor = [NSCursor arrowCursor]; > + f->output_data.ns->bottom_edge_cursor = [NSCursor resizeUpDownCursor]; > + f->output_data.ns->bottom_left_corner_cursor = [NSCursor arrowCursor]; > > It would be nice to have something better on NS for the > top_left_corner_cursor, top_right_corner_cursor, > bottom_right_corner_cursor and bottom_left_corner_cursor cases. Maybe we could add a couple of custom cursors, it looks like there’s a way to do that. Do we have a standard set of cursor images to use? > If you want to play around with child frames, try the attached file > my-child-frame.el. Any feedback welcome. I’ve just been playing about with your child frame script and I think I’ve found a few bugs in the NS port: It appears that making the child frame invisible ‘disconnects’ it from the parent frame, so the next time it’s made visible it no longer moves with the parent. I guess I’ll have to make sure that when a frame is made visible it’s reconnected with it’s parent. Or find a way to prevent it disconnecting. It seems a really odd thing for it to do. Resizing the child frame with the mouse doesn’t work, is it supposed to? (set-face-background 'internal-border "blue" my-child-frame) makes me think the child frame should have a blue border, but it doesn’t. Is that a bug? Thanks! -- Alan Third From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 25 11:59:18 2017 Received: (at 25408) by debbugs.gnu.org; 25 Jun 2017 15:59:19 +0000 Received: from localhost ([127.0.0.1]:37472 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dP9wU-0000pu-N6 for submit@debbugs.gnu.org; Sun, 25 Jun 2017 11:59:18 -0400 Received: from mout.gmx.net ([212.227.15.18]:52248) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dP9wS-0000pV-Ix for 25408@debbugs.gnu.org; Sun, 25 Jun 2017 11:59:16 -0400 Received: from [192.168.1.100] ([213.162.68.95]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0Md3li-1d6waz18LK-00ID61; Sun, 25 Jun 2017 17:58:55 +0200 Message-ID: <594FDDB9.9010602@gmx.at> Date: Sun, 25 Jun 2017 17:58:49 +0200 From: martin rudalics MIME-Version: 1.0 To: Alan Third Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) References: <20170419143316.GB10595@breton.holly.idiocy.org> <58F789F0.9000608@gmx.at> <20170419170420.GA12166@breton.holly.idiocy.org> <58F7A749.6070906@gmx.at> <20170610153853.GA95401@breton.holly.idiocy.org> <593CFB04.8000600@gmx.at> <20170611163544.GA70844@breton.holly.idiocy.org> <593E2FFF.2090806@gmx.at> <20170612175926.GA74044@breton.holly.idiocy.org> <594B899E.6050105@gmx.at> <20170625142245.GA31548@breton.holly.idiocy.org> In-Reply-To: <20170625142245.GA31548@breton.holly.idiocy.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:JsPL8AZgVdH1dVC7zihCdJ6x8lx27HLi2z3XDsc08rU+2q4d5OP NKdZZRvCdE+/cyuY75QTBZWYcXIptKbpPc9k7F9W7RSv2XXVVobocvmDzTOep05rLY5zToZ wxhjjIzniqRw0NlSzf6WSuhSDCCBdyZpNwWl/JYSnMP1kOArWDz6BRERflFwBlj0pgTJXmb 0DFuQyewkcvmAh3UrwDFg== X-UI-Out-Filterresults: notjunk:1;V01:K0:McTvN5oFCT4=:GMQ4q57MyCjwfxiaiBZi5I EHIpSAV3m5neaCvdTp/Fca5/gL1fpYvXXhJv0PFAgpu0cQkKdoqF064iTh8bj4DsvCu3/Sk6Z JAAoVdICQyzl7/Ic4GIXqv8lRRO9B1EwfPWRa2lSucy4kN3y4ZlU19dOlGZ97clB+1+14lOFb TcsHgvgjFluw0fwM+Ezrkp+o8ZrZuyBwi54pVtYml6MR3oD9KxPldBMCsRfVPsKMEahJqAXoD DbaSS6SUvrzJGGRB9R3chfW7C5MyyO2kgAfTSjFfX3ALqb1nNuCI9wCTbCUlmNBY0U7cMyhiZ 84wSYzXzc/z0S3vEgvGSmIoPExrfV4k2c9Np0nFvxxCSG94huVRDIewI43NUbpV0VYbb6tjCX 0HcuDk2OlC4VeD8KSFAyHi/8ZjfAV8rzLvSi13f/vpvWMiGxI/1aFcB8ob7VguQvtWijSg6MP oy3GsyTlNOy083x5u+mFHy0QucUR/QfVt279VW/wdZUKFEUwAgiErAxIH77O3kZvqi9tdL9ma lGbqw7rbffg1IFyAnrwMu4nFm528AxJGTaeEN6I+I/838YRbvo9nQ22UhxUSMNiQke5GKF3iW vAPdIZLLniG8gKqzSV+KEikINAdP0G64fq7/pFo4EmzpMbxEV6+SdOTwnXPzK/oCS4nrgKZd4 4khHg4r3nSLDoYunZrrLPjsJDH0a8s/RI+0qbqmP9CCGWDbZWYPyqtwCslx12A+vJlGlytHqR 8oCffVyzPKA12N3QrS6k4EyPExy26FQYEPIXqek9GRRJdEaa/CoQWHBWWCz7b6/9XQXlDKG4H VxnvYv7x6EwYSu+COXUUvlp+g823Q== X-Spam-Score: -2.8 (--) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= , Anders Lindgren X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.8 (--) > Maybe we could add a couple of custom cursors, it looks like there=E2=80= =99s a > way to do that. Do we have a standard set of cursor images to use? No idea. IIUC there's no consensus on what is available on the various OS. > It appears that making the child frame invisible =E2=80=98disconnects=E2= =80=99 it from > the parent frame, so the next time it=E2=80=99s made visible it no lon= ger > moves with the parent. I guess I=E2=80=99ll have to make sure that whe= n a > frame is made visible it=E2=80=99s reconnected with it=E2=80=99s paren= t. Or find a way > to prevent it disconnecting. It seems a really odd thing for it to do.= Annoying. A similar thing happens with the z-group property on X where I reinstall it from its stored value whenever the frame becomes visible (see lines 8108--8111 in xterm.c). I suppose we should do something similar on NS. And maybe that's not the only property that gets reset here or there ... > Resizing the child frame with the mouse doesn=E2=80=99t work, is it su= pposed > to? Definitely. Do you see an internal border? Do you see a changing cursor at that border when the mouse is over it? And can you move the frame by dragging its mode or header line? > (set-face-background 'internal-border "blue" my-child-frame) > > makes me think the child frame should have a blue border, but it > doesn=E2=80=99t. Is that a bug? It doesn't get the border on Windows right away either. IMHO the face remapping code is not up to this everywhere, it might even work with GTK only. Try to set the 'internal-border' face via defcustom and tell me whether it works. Thanks, martin From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 25 12:23:34 2017 Received: (at 25408-done) by debbugs.gnu.org; 25 Jun 2017 16:23:34 +0000 Received: from localhost ([127.0.0.1]:37488 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dPAJy-0001Ph-Av for submit@debbugs.gnu.org; Sun, 25 Jun 2017 12:23:34 -0400 Received: from mail-qt0-f194.google.com ([209.85.216.194]:36255) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dPAJw-0001PU-Tq for 25408-done@debbugs.gnu.org; Sun, 25 Jun 2017 12:23:33 -0400 Received: by mail-qt0-f194.google.com with SMTP id v31so7029004qtb.3 for <25408-done@debbugs.gnu.org>; Sun, 25 Jun 2017 09:23:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=ttyU23EWUE4WWm6FsvwOXQV69h7J7wDmm6HDp/sujNk=; b=LIHlaBR6spweqDDDcnnu+p26zRRJxdyi2KJDHzV77qaEMYH8KWmjhFDKZSAAnMKnan sfkUpt/KZV75ZvIsHPw7xd7vyD5dottkkx9gvcGdmNDyjXYcxl1B3ouYdV5s2hOKNPpj RSowshJ9+A4wyuTxhpQvI/wPo1tOG5NJ2Ynsj6bbKUppkhOQ2T9eVqqeIca5L9GSdPl3 KhE23/xJtQVBnYLtG8RRhEdivGJH3hs6tU5KEZLRhE6avXzNr5ToF0Xq6ZrH2Ny69GuF yETUbTs0CtdD+EvGXRXmw4MLuec9Coefl099grQwWDKNsS3DNG1swKZBFYt8fpFYOEeL fxWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=ttyU23EWUE4WWm6FsvwOXQV69h7J7wDmm6HDp/sujNk=; b=f9Pw2PwIwKQMWScrCy2SHPgjg0vLU8HqvdaAZEuBpZwusff/0gwhBttaReZhcVWoNz vTNM7p9fz0ZDrTLJQOKI9Uo1W7RksZI0GBk2axGXo56l6rNhvQbEDcPNgLQHDExU9sjt 5CsK85VI04hDAnSGdIfWjJGfigiGLwcXyhCkDUUom7t4Xp7v9esObju9/R5QWek56F2u HDR7OsoI968RJkWimhJbwC30pXUWJORo/uHfHCBtxt9v/I8xscdSUGPqEDWn3fUzZO3n UvNZIBlQtkg8dlwgypbHpAp/VmFM15/LILQtAXtrYsCS+Td7l+sumYupXSYLbmw0Lehz ejWg== X-Gm-Message-State: AKS2vOz1rD4i9hXYrFGwQ8NFFjORxdTmT/MM3i2SDcwBSLFpXr02kTco ReiHJrDHpczEBnIbIhE= X-Received: by 10.237.32.45 with SMTP id 42mr18843602qta.170.1498407807396; Sun, 25 Jun 2017 09:23:27 -0700 (PDT) Received: from [18.111.28.55] (dhcp-18-111-28-55.dyn.mit.edu. [18.111.28.55]) by smtp.gmail.com with ESMTPSA id n2sm3071660qkc.59.2017.06.25.09.23.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 25 Jun 2017 09:23:27 -0700 (PDT) Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) To: martin rudalics , Arthur Miller References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> <5875EF34.20507@gmx.at> <9efbe1e3-e8aa-f056-bc5c-5a41f10b6d42@gmail.com> <58996EED.6030601@gmx.at> <3d34793f-4b7c-d4ea-74ec-49ce84214cc8@gmail.com> <589F1F58.1050807@gmx.at> <301ed349-64c7-12c6-d843-e73eb1e20e83@gmail.com> <58A0434D.6030206@gmx.at> <58EDF316.5000205@gmx.at> <939323bf-1d49-e5f0-b6da-7e985c817eb2@gmail.com> <594F982F.8090207@gmx.at> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: <53a6fb18-1c52-2577-8a67-f4580ae2e076@gmail.com> Date: Sun, 25 Jun 2017 12:23:26 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 In-Reply-To: <594F982F.8090207@gmx.at> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 7bit X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 25408-done Cc: 25408-done@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: 0.5 (/) On 2017-06-25 07:02, martin rudalics wrote: >> I've run into another small issue: there doesn't seem to be a way to >> turn off truncation marks in tooltip frames. Is that correct? This bit >> of xdisp.c seems to take care of that for Emacs' default tip frame; is >> there a way to emulate this for Lisp-created frames? > > Truncation glyphs can be now turned off via the 'no-special-glyphs' > frame parameter. Closing this bug. Thanks for all the hard work! From debbugs-submit-bounces@debbugs.gnu.org Sat Jul 15 17:27:14 2017 Received: (at 25408) by debbugs.gnu.org; 15 Jul 2017 21:27:14 +0000 Received: from localhost ([127.0.0.1]:40718 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dWUan-0000JG-Qg for submit@debbugs.gnu.org; Sat, 15 Jul 2017 17:27:13 -0400 Received: from mail-wm0-f42.google.com ([74.125.82.42]:37830) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dWUal-0000J2-I7 for 25408@debbugs.gnu.org; Sat, 15 Jul 2017 17:27:11 -0400 Received: by mail-wm0-f42.google.com with SMTP id b134so15197033wma.0 for <25408@debbugs.gnu.org>; Sat, 15 Jul 2017 14:27:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=WZm1vyR1o18gqX85KuvQ1cjZExl7HOU4LA6HkA+fJ/4=; b=uk0Jb2qjiuKnQkXyliOdPCZArXXjWR2GjeFo4j6cjtlb4HRblAirgMRKtmaR98nV6Y Zhsjx1ie9Z1tI8jlIBhvDP/v1EwngcnjNphIOOySSKf2dyArsPwge8mJnQTeiLx9L80C qQfCyWFW1v5jAFe5PZdE46DlwsT5/iX5IMtHoGQBSk+Z/h/n+6UIQH/4cHfcjoKobqrP rggSxL2uxocmq+BGKhdtbivt65E1o0HV8vP2il3J03iPamd/D9zqwHZRYXiihtNMPt82 68mH3o22ir7Kbv/lfPKAQG2FQxibOML4QFbZKotqFkpkJGAqWStWY+QvvugHX5BRrNnK k90Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=WZm1vyR1o18gqX85KuvQ1cjZExl7HOU4LA6HkA+fJ/4=; b=KOgD2TA+wtQv8xvqkRjRPYitCCrwudMu9QqnLfSTLZRanKBneLJ/3luQRtARyVGLCx pf/Dy50aO73tHWJyBCm30n9koP0Bi4oI3aoTRsz0dbItoCCrFXjWRtF5Dxo/xKuocPtH gQVh8o4FfZg1ADeOaSFs7/s+rExo7p+QGJ2wbUo3zZ6wedYqROpM74CoVf0rUWSJ9zrt RnH6xhnd28NkX/UqV6awlZc0D94wjJ0T1XmlrP3lrjB//QDPHEad3Y5SUAXYr13NKi9d 8hPOI/S9NcbTzG6CalYPTyzv9dgOrZh6PULwCHOfz12JMprd1xVdfO+LXqRg/j6qKiFi AMPQ== X-Gm-Message-State: AIVw113s2sZC+I9mj2LiZYGa7jqo8wiL7qbF9cmWZSvxzSq9o0oIfbmK 8QtoJYrgrurs3Q== X-Received: by 10.28.20.76 with SMTP id 73mr253049wmu.66.1500154025602; Sat, 15 Jul 2017 14:27:05 -0700 (PDT) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-e9a1-3503-5c3f-d7d9.holly.idiocy.org. [2001:8b0:3f8:8129:e9a1:3503:5c3f:d7d9]) by smtp.gmail.com with ESMTPSA id r200sm6552161wmd.20.2017.07.15.14.27.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 15 Jul 2017 14:27:03 -0700 (PDT) Date: Sat, 15 Jul 2017 22:27:02 +0100 From: Alan Third To: martin rudalics Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) Message-ID: <20170715212702.GA51913@breton.holly.idiocy.org> References: <20170419170420.GA12166@breton.holly.idiocy.org> <58F7A749.6070906@gmx.at> <20170610153853.GA95401@breton.holly.idiocy.org> <593CFB04.8000600@gmx.at> <20170611163544.GA70844@breton.holly.idiocy.org> <593E2FFF.2090806@gmx.at> <20170612175926.GA74044@breton.holly.idiocy.org> <594B899E.6050105@gmx.at> <20170625142245.GA31548@breton.holly.idiocy.org> <594FDDB9.9010602@gmx.at> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <594FDDB9.9010602@gmx.at> User-Agent: Mutt/1.7.2 (2016-11-26) X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?iso-8859-1?Q?Cl=E9ment?= Pit--Claudel , Anders Lindgren 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: 0.2 (/) On Sun, Jun 25, 2017 at 05:58:49PM +0200, martin rudalics wrote: > > It appears that making the child frame invisible ‘disconnects’ it from > > the parent frame, so the next time it’s made visible it no longer > > moves with the parent. I guess I’ll have to make sure that when a > > frame is made visible it’s reconnected with it’s parent. Or find a way > > to prevent it disconnecting. It seems a really odd thing for it to do. I’ve pushed a fix for this now. > > Resizing the child frame with the mouse doesn’t work, is it supposed > > to? > > Definitely. Do you see an internal border? Do you see a changing > cursor at that border when the mouse is over it? And can you move the > frame by dragging its mode or header line? It turned out that there was no NS version of mouse-absolute-pixel-position, so I’ve created one and suddenly all of the above things work. :) I’m slightly worried that there may be issues if the frame is resized across a screen edge, as it treats each screen as it’s own ‘space’, starting at (0, 0) at the top left. This is how the existing set-mouse-absolute-pixel-position works so it makes sense to me to keep them the same. It might make more sense to treat multiple screens as one ‘space’, though. I’m not sure. -- Alan Third From debbugs-submit-bounces@debbugs.gnu.org Sun Jul 16 04:28:44 2017 Received: (at 25408) by debbugs.gnu.org; 16 Jul 2017 08:28:44 +0000 Received: from localhost ([127.0.0.1]:40951 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dWeuy-0003ru-HA for submit@debbugs.gnu.org; Sun, 16 Jul 2017 04:28:44 -0400 Received: from mout.gmx.net ([212.227.15.18]:49690) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dWeux-0003rW-1w for 25408@debbugs.gnu.org; Sun, 16 Jul 2017 04:28:43 -0400 Received: from [192.168.1.100] ([46.125.250.105]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0LkgEO-1e767w3AA8-00aSmY; Sun, 16 Jul 2017 10:28:24 +0200 Message-ID: <596B23A3.5060402@gmx.at> Date: Sun, 16 Jul 2017 10:28:19 +0200 From: martin rudalics MIME-Version: 1.0 To: Alan Third Subject: Re: bug#25408: Remove Decorations Around Emacs Frame (NS port) References: <20170419170420.GA12166@breton.holly.idiocy.org> <58F7A749.6070906@gmx.at> <20170610153853.GA95401@breton.holly.idiocy.org> <593CFB04.8000600@gmx.at> <20170611163544.GA70844@breton.holly.idiocy.org> <593E2FFF.2090806@gmx.at> <20170612175926.GA74044@breton.holly.idiocy.org> <594B899E.6050105@gmx.at> <20170625142245.GA31548@breton.holly.idiocy.org> <594FDDB9.9010602@gmx.at> <20170715212702.GA51913@breton.holly.idiocy.org> In-Reply-To: <20170715212702.GA51913@breton.holly.idiocy.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K0:+A3O2dT1UUfg56kpHt0mhCBQZG5biFAsdWU8cw/qfyTNDkob2W+ epOEX59wnQhBm0GsGHOHq29Mn/7GdCz+Luzce89I9vsp1Pd9xFJ90li/o7tZldGDXY/dpze I18vd5m0gN3SoDrt1RjM/AXsWn6GegvwgKC5KZhF5Dd6iOOxiTbSJejpXeuQm4o7g6Z2W3i Dg92pLqjtmi7FS1sG68pA== X-UI-Out-Filterresults: notjunk:1;V01:K0:HGrMGiYNGfw=:44KZd1sDaeXGmLdVSz1n4P dXlgU+qmF4jHHrn+ucY7bH4Vb1Z0PAbPW0ID7YGrFfV79IIXk591CHAlBWzuNTiUWlhjd2EJ7 l1Vk4/bfM5rgk8yZmHtpChqvKVkUcVtyfpVTS6zdwjTAY5KlXhCwqBNQj52+NP1IwZaNX4x3m pdYNv35QXJyqj5dPULVp7zwlh80P1M9wD2NOjHJeKx78DCCnuNpDJs1yUJ+7UuWvtfmnUIcK4 UcGmBv97KrkHtbpnf1G+IncBx3h5pHV5jBjKnsQgZfpVcmpzTx/cElLUfhwBMfPGsLJ6fhMnw TwTdUPTLM12W6ulhJB0Hx8/iruOo8ClYHnuoHKa8cP3eFVxtR4MUBoACd9cdFPLPSw3KI6BxM xxAcdML5pErFJsRQhj0pJpWxFwhwtsbD296zscIae1AOFoTQ7HbjK3CAD5hHcvgi4RuhAVNxn QZPuTFPFOnsl/s6JymmlHxZHbGQygiUA1XMDCOTVywDWGzR/qpefgPYk8DaXrX6K2qlQSO4ym /dvOK4TYZnJk2mkTNRhga6pGNB0cltT4bj5jyU8OR7TnJUEKg6nuWQ6A9KJkX0TEQXeF4+SLA ftRR9ppEmWtPEtm4X30rzUbwB5WEcYpCNlqh1FcX+G30OeVaI9h9Q7gr6K6AAIjsM23klr13I 1FwRB7uWMjJUkLMgblmGFLK31eJ8vRRWqDq/G69g7TFVM0ysDmj4R+2UzW16tmDxMPL0BQnxe kYyFaexVDCJ6nQ8ulqy8vt5CIbgaUIkmNCUF/qJX/3fckWR/GqaXBf5BqzL145RgPY5qmV4L3 2FD+0eymyhSQ8JJAKs9bd1cbLLVyGzHvWr4wcl6nnNNWTQXejijU8JX3w59MSRb15BsOtNM X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 25408 Cc: Arthur Miller , 25408@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= , Anders Lindgren 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.5 (---) >>> It appears that making the child frame invisible =E2=80=98disconnect= s=E2=80=99 it from >>> the parent frame, so the next time it=E2=80=99s made visible it no l= onger >>> moves with the parent. I guess I=E2=80=99ll have to make sure that w= hen a >>> frame is made visible it=E2=80=99s reconnected with it=E2=80=99s par= ent. Or find a way >>> to prevent it disconnecting. It seems a really odd thing for it to d= o. > > I=E2=80=99ve pushed a fix for this now. Thanks. One of the largely untested behaviors with frames is what a frame looks like when it was invisible/iconified for a while, in that period operations (resizing, moving, reparenting) have been applied to it and the frame is made normally visible again. I've been struggling a while with the similar problem how to set a frame's size when it was fullscreen for a while and in that period a resize request was posted for it. > It turned out that there was no NS version of > mouse-absolute-pixel-position, so I=E2=80=99ve created one and suddenl= y all of > the above things work. :) Fine. Please add a (declare-function ns-mouse-absolute-pixel-position "nsfns.c") to frame.el. > I=E2=80=99m slightly worried that there may be issues if the frame is = resized > across a screen edge, as it treats each screen as it=E2=80=99s own =E2= =80=98space=E2=80=99, > starting at (0, 0) at the top left. This is how the existing > set-mouse-absolute-pixel-position works so it makes sense to me to > keep them the same. > > It might make more sense to treat multiple screens as one =E2=80=98spa= ce=E2=80=99, > though. I=E2=80=99m not sure. Can you give me an example? I never use multiple screens so my ability to imagine how a mouse behaves there is very limited. There's also the problem that some systems (Windows, IIRC) consider (0, 0) the top-left corner of some sort of "primary" screen and allow negative coordinates while others consider (0, 0) an abstract location at the top-left corner of all screens. Thanks, martin From unknown Sun Jun 22 03:49:13 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sun, 13 Aug 2017 11:24:04 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator