From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Luke Lee Newsgroups: gmane.emacs.bugs Subject: bug#17854: The patch #3 of 3 for hideif.el, a lot of bug fixes and enhancements Date: Fri, 27 Jun 2014 17:26:12 +0800 Message-ID: References: <4h38er4nkr.fsf@fencepost.gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=047d7b10cfe1eded3404fccde862 X-Trace: ger.gmane.org 1403861308 8827 80.91.229.3 (27 Jun 2014 09:28:28 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 27 Jun 2014 09:28:28 +0000 (UTC) To: 17854@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Jun 27 11:28:21 2014 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1X0SSC-0002To-6z for geb-bug-gnu-emacs@m.gmane.org; Fri, 27 Jun 2014 11:28:20 +0200 Original-Received: from localhost ([::1]:48857 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X0SSB-0004Hd-Ok for geb-bug-gnu-emacs@m.gmane.org; Fri, 27 Jun 2014 05:28:19 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:43612) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X0SS0-00047d-RQ for bug-gnu-emacs@gnu.org; Fri, 27 Jun 2014 05:28:14 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X0SRu-0002BR-VC for bug-gnu-emacs@gnu.org; Fri, 27 Jun 2014 05:28:08 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:43166) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X0SRu-0002BN-Ib for bug-gnu-emacs@gnu.org; Fri, 27 Jun 2014 05:28:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1X0SRu-0005DU-24 for bug-gnu-emacs@gnu.org; Fri, 27 Jun 2014 05:28:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Luke Lee Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 27 Jun 2014 09:28:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17854 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 17854-submit@debbugs.gnu.org id=B17854.140386122419932 (code B ref 17854); Fri, 27 Jun 2014 09:28:01 +0000 Original-Received: (at 17854) by debbugs.gnu.org; 27 Jun 2014 09:27:04 +0000 Original-Received: from localhost ([127.0.0.1]:34316 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0SQw-0005BP-JF for submit@debbugs.gnu.org; Fri, 27 Jun 2014 05:27:03 -0400 Original-Received: from mail-pb0-f43.google.com ([209.85.160.43]:60073) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0SQt-0005Ao-Di for 17854@debbugs.gnu.org; Fri, 27 Jun 2014 05:27:00 -0400 Original-Received: by mail-pb0-f43.google.com with SMTP id um1so4356444pbc.16 for <17854@debbugs.gnu.org>; Fri, 27 Jun 2014 02:26:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=vSfUYAgeZDDC+Ukumt2pTrjtNaUvWJq2dmAFcRTTwzs=; b=UG5vU6jAS/AxmB2+jrcCKznc0KZmOlNz31GDhagp2jdMU90ZDRVnYJRq1XBX+NHGJW /7wP3Fvbn3OeRuozSmsp7RyeFLC2PBaB58r9tKkkfsX4ciksUNmRua/dWFSCDllqrwfZ wriTVQxmebFAuioH7yA41FkQGk07qfHPbqjfnys30mUAfo1H0MoyQiO6ctIOQZkAucah 0mYDAW6jLO2BzWdGa/hVApCT9copuLBDvD8YntsHrXWWkhcVN2P/s3iLrpYOmXUbrNn1 uDBFDbT+7w6wP6kVaT4bYCvF/AUg3hvB2xRxNG0E5zIBEVhxvVtbC8jZftrmMmHRFj5J 0s5Q== X-Received: by 10.68.129.164 with SMTP id nx4mr29842334pbb.16.1403861213048; Fri, 27 Jun 2014 02:26:53 -0700 (PDT) Original-Received: by 10.70.89.165 with HTTP; Fri, 27 Jun 2014 02:26:12 -0700 (PDT) In-Reply-To: <4h38er4nkr.fsf@fencepost.gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:90886 Archived-At: --047d7b10cfe1eded3404fccde862 Content-Type: multipart/alternative; boundary=047d7b10cfe1eded2f04fccde860 --047d7b10cfe1eded2f04fccde860 Content-Type: text/plain; charset=UTF-8 Resubmit my fixed patch #3 for stylistic changes with white space changes removed (git diff -w) as attached. [PATCH] Other hideif enhancements and bug fixes: * Add macro evaluation function and key binding. * Merge continuous "..." into one on hiding. * Fix original hideif bug that sometimes fail to hide the correct portion in a long ifdefs containing #elif and #else. * Support hide/show commands in a marked region. * Expand top level #ifdefs for C/C++ header files to prevent header files always got hidden. * Others. 2014-06-27 0:56 GMT+08:00 Glenn Morris : > > Some stylistic comments only: > > It needs a ChangeLog entry, and probably a NEWS entry. > > > -;; Daniel LaLiberte > > +;; Daniel LaLiberte > > Please don't change existing whitespace in areas that you are not > otherwise touching. > > > -;; (unless hide-ifdef-define-alist > > -;; (setq hide-ifdef-define-alist > > -;; '((list1 ONE TWO) > > -;; (list2 TWO THREE)))) > > -;; (hide-ifdef-use-define-alist 'list2))) ; use list2 by default > > +;; (unless hide-ifdef-define-alist > > +;; (setq hide-ifdef-define-alist > > +;; '((list1 ONE TWO) > > +;; (list2 TWO THREE)))) > > +;; (hide-ifdef-use-define-alist 'list2))) ; use list2 by default > > Again, this is just whitespace. > > > @@ -129,16 +129,44 @@ > > "Non-nil means shadow text instead of hiding it." > > :type 'boolean > > :group 'hide-ifdef > > - :version "23.1") > > + :version "24.5") > > > > (defface hide-ifdef-shadow '((t (:inherit shadow))) > > "Face for shadowing ifdef blocks." > > :group 'hide-ifdef > > - :version "23.1") > > + :version "24.5") > > Why is the :version changing, when the defaults are unchanged? > > > (defcustom hide-ifdef-exclude-define-regexp nil > > "Ignore #define names if those names match this exclusion pattern." > > :type 'string) > > +(defcustom hide-ifdef-expand-reinclusion-protection t > > + "When hiding header files, enabling this flag allows hideif always > try to > > +expand the re-inclusion protected ifdefs. Disabling this flag those > headers > > +are usually hidden to a top level #ifdef...#endif due to those defined > symbols > > The first line of a doc-string should be a complete sentence that fits > in < 80 columns. All the doc should fit within the standard fill-column. > > > + :type 'boolean > > + :group 'hide-ifdef) > > + > > +(defcustom hide-ifdef-header-regexp-pattern > > + "^.*\\.[hH]\\([hH]\\|[xX][xX]\\|[pP][pP]\\)?" > > + "C/C++ header file name patterns. Effective only if > > +`hide-ifdef-expand-reinclusion-protection' is t." > > + :type 'string > > + :group 'hide-ifdef) > > Again, the first line of the doc should be a complete sentence. > New defcustoms need :version tags (and probably NEWS entries). > > > +(defvar hide-ifdef-env-backup nil > > + "A backup variable to prevent `hide-ifdef-env' accidentally cleared by > > +`hif-clear-all-ifdef-defined'.") > > First line of doc too long. Also, this is ungrammatical. > > > `hide-ifdef-env' > > - An association list of defined and undefined symbols for the > > - current buffer. Initially, the global value of `hide-ifdef-env' > > - is used. > > + An association list of defined and undefined symbols for the > > + current project. Initially, the global value of > `hide-ifdef-env' > > + is used. This variable was a buffer-local variable but is now a > > + global variable since we've extend hideif to support > project-based > > s/extend/extended. > "project-based across all-buffers" doesn't make sense. > I'm not sure that describing how things used to work is helpful. > > > + across all-buffers. To simulate the original buffer local > behavior > > + we need to clear this variable (C-c @ C) then hide current > buffer. > > > `hide-ifdef-define-alist' > > - An association list of defined symbol lists. > > + An association list of defined symbol lists. > > whitespace. > > > - Set to non-nil to not show #if, #ifdef, #ifndef, #else, and > > - #endif lines when hiding. > > + Set to non-nil to not show #if, #ifdef, #ifndef, #else, and > > + #endif lines when hiding. > > whitespace. > > > At this point, I'll give up, and ask you to send a version that does not > have pointless whitespace changes. :) > -- Best regards, Luke Lee --047d7b10cfe1eded2f04fccde860 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Resubmit my fixed patch #3 for stylistic changes with whit= e space changes
removed (git diff -w) as attached.

[PATCH] Other= hideif enhancements and bug fixes:
* Add macro evaluation function and = key binding.
* Merge continuous "..." into one on hiding.
* Fix original hi= deif bug that sometimes fail to hide the correct portion in a
=C2=A0 lon= g ifdefs containing #elif and #else.
* Support hide/show commands in a m= arked region.
* Expand top level #ifdefs for C/C++ header files to prevent header files=C2=A0 always got hidden.
* Others.



2014-06-27 0:56 GMT+08:00 Glenn Mo= rris <rgm@gnu.org>:

Some stylistic comments only:

It needs a ChangeLog entry, and probably a NEWS entry.

> -;; =C2=A0 Daniel LaLiberte <liberte@holonexus.org>
> +;; =C2=A0 =C2=A0 =C2=A0Daniel LaLiberte <liberte@holonexus.org>

Please don't change existing whitespace in areas that you are not
otherwise touching.

> -;; =C2=A0 =C2=A0(unless hide-ifdef-define-alist
> -;; =C2=A0 =C2=A0 =C2=A0(setq hide-ifdef-define-alist
> -;; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 '((list1 ONE TWO)
> -;; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (list2 TWO THREE))))
> -;; =C2=A0 =C2=A0(hide-ifdef-use-define-alist 'list2))) ; use list= 2 by default
> +;; =C2=A0 =C2=A0 =C2=A0 (unless hide-ifdef-define-alist
> +;; =C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq hide-ifdef-define-alist
> +;; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'((list1 ONE T= WO)
> +;; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(list2 TWO = THREE))))
> +;; =C2=A0 =C2=A0 =C2=A0 (hide-ifdef-use-define-alist 'list2))) ; = use list2 by default

Again, this is just whitespace.

> @@ -129,16 +129,44 @@
> =C2=A0 =C2=A0"Non-nil means shadow text instead of hiding it.&quo= t;
> =C2=A0 =C2=A0:type 'boolean
> =C2=A0 =C2=A0:group 'hide-ifdef
> - =C2=A0:version "23.1")
> + =C2=A0:version "24.5")
>
> =C2=A0(defface hide-ifdef-shadow '((t (:inherit shadow)))
> =C2=A0 =C2=A0"Face for shadowing ifdef blocks."
> =C2=A0 =C2=A0:group 'hide-ifdef
> - =C2=A0:version "23.1")
> + =C2=A0:version "24.5")

Why is the :version changing, when the defaults are unchanged?

> =C2=A0 (defcustom hide-ifdef-exclude-define-regexp nil
> =C2=A0 =C2=A0"Ignore #define names if those names match this excl= usion pattern."
> =C2=A0 =C2=A0:type 'string)
> +(defcustom hide-ifdef-expand-reinclusion-protection t
> + =C2=A0"When hiding header files, enabling this flag allows hide= if always try to
> +expand the re-inclusion protected ifdefs. =C2=A0Disabling this flag t= hose headers
> +are usually hidden to a top level #ifdef...#endif due to those define= d symbols

The first line of a doc-string should be a complete sentence that fits
in < 80 columns. All the doc should fit within the standard fill-column.=

=C2=A0> + =C2=A0:type 'boolean
> + =C2=A0:group 'hide-ifdef)
> +
> +(defcustom hide-ifdef-header-regexp-pattern
> + =C2=A0"^.*\\.[hH]\\([hH]\\|[xX][xX]\\|[pP][pP]\\)?"
> + =C2=A0"C/C++ header file name patterns. Effective only if
> +`hide-ifdef-expand-reinclusion-protection' is t."
> + =C2=A0:type 'string
> + =C2=A0:group 'hide-ifdef)

Again, the first line of the doc should be a complete sentence.
New defcustoms need :version tags (and probably NEWS entries).

> +(defvar hide-ifdef-env-backup nil
> + =C2=A0"A backup variable to prevent `hide-ifdef-env' accide= ntally cleared by
> +`hif-clear-all-ifdef-defined'.")

First line of doc too long. Also, this is ungrammatical.

> =C2=A0`hide-ifdef-env'
> - =C2=A0 =C2=A0 An association list of defined and undefined symbols f= or the
> - =C2=A0 =C2=A0 current buffer. =C2=A0Initially, the global value of `= hide-ifdef-env'
> - =C2=A0 =C2=A0 is used.
> + =C2=A0 =C2=A0 =C2=A0 =C2=A0An association list of defined and undefi= ned symbols for the
> + =C2=A0 =C2=A0 =C2=A0 =C2=A0current project. =C2=A0Initially, the glo= bal value of `hide-ifdef-env'
> + =C2=A0 =C2=A0 =C2=A0 =C2=A0is used. =C2=A0This variable was a buffer= -local variable but is now a
> + =C2=A0 =C2=A0 =C2=A0 =C2=A0global variable since we've extend hi= deif to support project-based

s/extend/extended.
"project-based across all-buffers" doesn't make sense.
I'm not sure that describing how things used to work is helpful.

> + =C2=A0 =C2=A0 =C2=A0 =C2=A0across all-buffers. =C2=A0To simulate the= original buffer local behavior
> + =C2=A0 =C2=A0 =C2=A0 =C2=A0we need to clear this variable (C-c @ C) = then hide current buffer.

> =C2=A0`hide-ifdef-define-alist'
> - =C2=A0 =C2=A0 An association list of defined symbol lists.
> + =C2=A0 =C2=A0 =C2=A0 =C2=A0An association list of defined symbol lis= ts.

whitespace.

> - =C2=A0 =C2=A0 Set to non-nil to not show #if, #ifdef, #ifndef, #else= , and
> - =C2=A0 =C2=A0 #endif lines when hiding.
> + =C2=A0 =C2=A0 =C2=A0 =C2=A0Set to non-nil to not show #if, #ifdef, #= ifndef, #else, and
> + =C2=A0 =C2=A0 =C2=A0 =C2=A0#endif lines when hiding.

whitespace.


At this point, I'll give up, and ask you to send a version that does no= t
have pointless whitespace changes. :)



--
Best regards,
Luke = Lee

--047d7b10cfe1eded2f04fccde860-- --047d7b10cfe1eded3404fccde862 Content-Type: application/octet-stream; name="0003-Other-hideif-enhancements-and-bug-fixes.patch" Content-Disposition: attachment; filename="0003-Other-hideif-enhancements-and-bug-fixes.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hwxaljdc0 ZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21vZGVzL2hpZGVpZi5lbCBiL2xpc3AvcHJvZ21vZGVzL2hp ZGVpZi5lbAppbmRleCA0Yjc4YzA4Li41MDYzNzEwIDEwMDY0NAotLS0gYS9saXNwL3Byb2dtb2Rl cy9oaWRlaWYuZWwKKysrIGIvbGlzcC9wcm9nbW9kZXMvaGlkZWlmLmVsCkBAIC0xMzgsNyArMTM4 LDQ1IEBACiAKIChkZWZjdXN0b20gaGlkZS1pZmRlZi1leGNsdWRlLWRlZmluZS1yZWdleHAgbmls CiAgICJJZ25vcmUgI2RlZmluZSBuYW1lcyBpZiB0aG9zZSBuYW1lcyBtYXRjaCB0aGlzIGV4Y2x1 c2lvbiBwYXR0ZXJuLiIKLSAgOnR5cGUgJ3N0cmluZykKKyAgOnR5cGUgJ3N0cmluZworICA6dmVy c2lvbiAiMjQuNCIpCisKKyhkZWZjdXN0b20gaGlkZS1pZmRlZi1leHBhbmQtcmVpbmNsdXNpb24t cHJvdGVjdGlvbiB0CisgICJQcmV2ZW50IGhpZGluZyB0aGUgd2hvbGUgQy9DKysgaGVhZGVyIGZp bGUgcHJvdGVjdGVkIGJ5IGEgYmlnICNpZmRlZi4uI2VuZGlmLgorTW9zdCBDL0MrKyBoZWFkZXJz IGFyZSB1c3VhbGx5IHdyYXBwZWQgd2l0aCBpZmRlZnMgdG8gcHJldmVudCByZS1pbmNsdXNpb246 CisKKyAgLS0tLS0gYmVnaW5uaW5nIG9mIGZpbGUgLS0tLS0KKyAgI2lmZGVmIF9YWFhfSEVBREVS X0ZJTEVfSU5DTFVERURfCisgICNkZWZpbmUgX1hYWF9IRUFERVJfRklMRV9JTkNMVURFRF8KKyAg ICAgeHh4CisgICAgIHh4eAorICAgICB4eHguLi4KKyAgI2VuZGlmCisgIC0tLS0tIGVuZCBvZiBm aWxlIC0tLS0tCisKK0lmIHdlIHRyeSB0byBoaWRlIHRoaXMgaGVhZGVyIGZpbGUsIGZvciB0aGUg Zmlyc3QgdGltZSBoaWRlaWYgd2lsbCBmaW5kCitfWFhYX0hFQURFUl9GSUxFX0lOQ0xVREVEXyBh bmQgaGF2ZSBpdCBkZWZpbmVkLiAgRXZlcnl0aGluZyBiZXR3ZWVuICNpZmRlZgordG8gI2VuZGlm IGFyZSBub3QgaGlkZGVuLiAgRm9yIHRoZSBzZWNvbmQgdGltZSBzaW5jZSBfWFhYX0hFQURFUl9G SUxFX0lOQ0xVREVEXworaXMgZGVmaW5lZCBldmVyeXRoaW5nIGJldHdlZW4gdGhlIG91dGVybW9z dCAjaWZkZWYuLiNlbmRpZiB3aWxsIGJlIGhpZGRlbjoKKworICAtLS0tLSBiZWdpbm5pbmcgb2Yg ZmlsZSAtLS0tLQorICAjaWZkZWYgX1hYWF9IRUFERVJfRklMRV9JTkNMVURFRF8KKyAgICAgLi4u CisgICNlbmRpZgorICAtLS0tLSBlbmQgb2YgZmlsZSAtLS0tLQorCitUaGlzIGlzIG5vdCB0aGUg YmVoYXZpb3Igd2UgZXhwZWN0ZWQsIHdlIHN0aWxsIHdvdWxkIGxpa2UgdG8gc2VlIHRoZSBjb250 ZW50CitvZiB0aGlzIGhlYWRlciBmaWxlLiAgV2l0aCB0aGlzIGZsYWcgZW5hYmxlZCB3ZSBjYW4g aGF2ZSB0aGUgb3V0ZXJtb3N0ICNpZgorYWx3YXlzIG5vdCBoaWRkZW4uIgorICA6dHlwZSAnYm9v bGVhbgorICA6dmVyc2lvbiAiMjQuNCIpCisKKyhkZWZjdXN0b20gaGlkZS1pZmRlZi1oZWFkZXIt cmVnZXhwCisgICJeLipcXC5baEhdXFwoW2hIXVxcfFt4WF1beFhdXFx8W3BQXVtwUF1cXCk/Igor ICAiQy9DKysgaGVhZGVyIGZpbGUgbmFtZSBwYXR0ZXJucyB0byBkZXRlcm1pbmUgaWYgY3VycmVu dCBidWZmZXIgaXMgYSBoZWFkZXIuCitFZmZlY3RpdmUgb25seSBpZiBgaGlkZS1pZmRlZi1leHBh bmQtcmVpbmNsdXNpb24tcHJvdGVjdGlvbicgaXMgdC4iCisgIDp0eXBlICdzdHJpbmcKKyAgOmdy b3VwICdoaWRlLWlmZGVmKQogCiAoZGVmdmFyIGhpZGUtaWZkZWYtbW9kZS1zdWJtYXAKICAgOzsg U2V0IHVwIHRoZSBzdWJtYXAgdGhhdCBnb2VzIGFmdGVyIHRoZSBwcmVmaXgga2V5LgpAQCAtMTUy LDYgKzE5MCw4IEBACiAgICAgKGRlZmluZS1rZXkgbWFwICJzIiAnc2hvdy1pZmRlZnMpCiAgICAg KGRlZmluZS1rZXkgbWFwICJcQy1kIiAnaGlkZS1pZmRlZi1ibG9jaykKICAgICAoZGVmaW5lLWtl eSBtYXAgIlxDLXMiICdzaG93LWlmZGVmLWJsb2NrKQorICAgIChkZWZpbmUta2V5IG1hcCAiZSIg J2hpZi1ldmFsdWF0ZS1tYWNybykKKyAgICAoZGVmaW5lLWtleSBtYXAgIkMiICdoaWYtY2xlYXIt YWxsLWlmZGVmLWRlZmluZWQpCiAKICAgICAoZGVmaW5lLWtleSBtYXAgIlxDLXEiICdoaWRlLWlm ZGVmLXRvZ2dsZS1yZWFkLW9ubHkpCiAgICAgKGRlZmluZS1rZXkgbWFwICJcQy13IiAnaGlkZS1p ZmRlZi10b2dnbGUtc2hhZG93aW5nKQpAQCAtMjE2LDYgKzI1NiwxMSBAQAogKGRlZnZhciBoaWRl LWlmZGVmLWVudiBuaWwKICAgIkFuIGFsaXN0IG9mIGRlZmluZWQgc3ltYm9scyBhbmQgdGhlaXIg dmFsdWVzLiIpCiAKKyhkZWZ2YXIgaGlkZS1pZmRlZi1lbnYtYmFja3VwIG5pbAorICAiVGhpcyB2 YXJpYWJsZSBpcyBhIGJhY2t1cCBvZiB0aGUgcHJldmlvdXNseSBjbGVhcmVkIGBoaWRlLWlmZGVm LWVudicuCitUaGlzIGJhY2t1cCBwcmV2ZW50cyBhbnkgYWNjaWRlbnRhbCBjbGVhcmFuY2Ugb2Yg YGhpZGUtZmlkZWYtZW52JyBieQorYGhpZi1jbGVhci1hbGwtaWZkZWYtZGVmaW5lZCcuIikKKwog KGRlZnZhciBoaWYtb3V0c2lkZS1yZWFkLW9ubHkgbmlsCiAgICJJbnRlcm5hbCB2YXJpYWJsZS4g IFNhdmVzIHRoZSB2YWx1ZSBvZiBgYnVmZmVyLXJlYWQtb25seScgd2hpbGUgaGlkaW5nLiIpCiAK QEAgLTIzMyw4ICsyNzgsMTYgQEAgU2V2ZXJhbCB2YXJpYWJsZXMgYWZmZWN0IGhvdyB0aGUgaGlk aW5nIGlzIGRvbmU6CiAKIGBoaWRlLWlmZGVmLWVudicKICAgICAgICAgQW4gYXNzb2NpYXRpb24g bGlzdCBvZiBkZWZpbmVkIGFuZCB1bmRlZmluZWQgc3ltYm9scyBmb3IgdGhlCi0JY3VycmVudCBi dWZmZXIuICBJbml0aWFsbHksIHRoZSBnbG9iYWwgdmFsdWUgb2YgYGhpZGUtaWZkZWYtZW52Jwot CWlzIHVzZWQuCisgICAgICAgIGN1cnJlbnQgcHJvamVjdC4gIEluaXRpYWxseSwgdGhlIGdsb2Jh bCB2YWx1ZSBvZiBgaGlkZS1pZmRlZi1lbnYnCisgICAgICAgIGlzIHVzZWQuICBUaGlzIHZhcmlh YmxlIHdhcyBhIGJ1ZmZlci1sb2NhbCB2YXJpYWJsZSB3aGljaCBsaW1pdHMKKyAgICAgICAgaGlk ZWlmIHRvIHBhcnNlIG9ubHkgb25lIEMvQysrIGZpbGUgYXQgYSB0aW1lLiAgV2UndmUgZXh0ZW5k ZWQKKyAgICAgICAgaGlkZWlmIHRvIHN1cHBvcnQgcGFyc2luZyBhIEMvQysrIHByb2plY3QgY29u dGFpbmluZyBtdWx0aXBsZSBDL0MrKworICAgICAgICBzb3VyY2UgZmlsZXMgb3BlbmVkIHNpbXVs dGFuZW91c2x5IGluIGRpZmZlcmVudCBidWZmZXJzLiAgVGhlcmVmb3JlCisgICAgICAgIGBoaWRl LWlmZGVmLWVudicgY2FuIG5vIGxvbmdlciBiZSBidWZmZXIgbG9jYWwgYnV0IG11c3QgYmUgZ2xv YmFsLgorCisgICAgICAgIFdlIGNhbiBzdGlsbCBzaW11bGF0ZSB0aGUgYmVoYXZpb3Igb2YgZWxk ZXIgaGlkZWlmIHZlcnNpb25zIChpLmUuCisgICAgICAgIGBoaWRlLWlmZGVmLWVudicgYmVpbmcg YnVmZmVyIGxvY2FsKSBieSBjbGVhcmluZyB0aGlzIHZhcmlhYmxlCisgICAgICAgIChDLWMgQCBD KSBldmVyeXRpbWUgYmVmb3JlIGhpZGluZyBjdXJyZW50IGJ1ZmZlci4KIAogYGhpZGUtaWZkZWYt ZGVmaW5lLWFsaXN0JwogICAgICAgICBBbiBhc3NvY2lhdGlvbiBsaXN0IG9mIGRlZmluZWQgc3lt Ym9sIGxpc3RzLgpAQCAtMjU5LDggKzMxMiw5IEBAIFNldmVyYWwgdmFyaWFibGVzIGFmZmVjdCBo b3cgdGhlIGhpZGluZyBpcyBkb25lOgogICAoaWYgaGlkZS1pZmRlZi1tb2RlCiAgICAgICAocHJv Z24KICAgICAgICAgOzsgaW5oZXJpdCBnbG9iYWwgdmFsdWVzCi0JKHNldCAobWFrZS1sb2NhbC12 YXJpYWJsZSAnaGlkZS1pZmRlZi1lbnYpCi0JICAgICAoZGVmYXVsdC12YWx1ZSAnaGlkZS1pZmRl Zi1lbnYpKQorOzsgICAgICAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxlICdoaWRlLWlmZGVmLWVu dikKKzs7ICAgICAgICAgICAoZGVmYXVsdC12YWx1ZSAnaGlkZS1pZmRlZi1lbnYpKQorICAgICAg ICAoc2V0ICdoaWRlLWlmZGVmLWVudiAoZGVmYXVsdC12YWx1ZSAnaGlkZS1pZmRlZi1lbnYpKQog ICAgICAgICAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxlICdoaWRlLWlmZGVmLWhpZGluZykKICAg ICAgICAgICAgICAoZGVmYXVsdC12YWx1ZSAnaGlkZS1pZmRlZi1oaWRpbmcpKQogICAgICAgICAo c2V0IChtYWtlLWxvY2FsLXZhcmlhYmxlICdoaWYtb3V0c2lkZS1yZWFkLW9ubHkpIGJ1ZmZlci1y ZWFkLW9ubHkpCkBAIC0yNzksNiArMzMzLDE0IEBAIFNldmVyYWwgdmFyaWFibGVzIGFmZmVjdCBo b3cgdGhlIGhpZGluZyBpcyBkb25lOgogICAgICh3aGVuIGhpZGUtaWZkZWYtaGlkaW5nCiAgICAg ICAoc2hvdy1pZmRlZnMpKSkpCiAKKyhkZWZ1biBoaWYtY2xlYXItYWxsLWlmZGVmLWRlZmluZWQg KCkKKyAgIkNsZWFycyBhbGwgc3ltYm9scyBkZWZpbmVkIGluIGBoaWRlLWlmZGVmLWVudicuCitJ dCB3aWxsIGJhY2t1cCB0aGlzIHZhcmlhYmxlIHRvIGBoaWRlLWlmZGVmLWVudi1iYWNrdXAnIGJl Zm9yZSBjbGVhcmluZyB0bworcHJldmVudCBhY2NpZGVudGFsIGNsZWFyYW5jZS4iCisgIChpbnRl cmFjdGl2ZSkKKyAgKHdoZW4gKHktb3Itbi1wICJDbGVhciBhbGwgI2RlZmluZWQgc3ltYm9scz8i KQorICAgIChzZXRxIGhpZGUtaWZkZWYtZW52LWJhY2t1cCBoaWRlLWlmZGVmLWVudikKKyAgICAo c2V0cSBoaWRlLWlmZGVmLWVudiBuaWwpKSkKIAogKGRlZnVuIGhpZi1zaG93LWFsbCAoKQogICAi U2hvdyBhbGwgb2YgdGhlIHRleHQgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLiIKQEAgLTI5OCwxNiAr MzYwLDYzIEBAIFNldmVyYWwgdmFyaWFibGVzIGFmZmVjdCBob3cgdGhlIGhpZGluZyBpcyBkb25l OgogICAod2hpbGUgKD0gKGxvZ2FuZCAxIChza2lwLWNoYXJzLWJhY2t3YXJkICJcXFxcIikpIDEp CiAgICAgKGVuZC1vZi1saW5lIDIpKSkKIAorKGRlZnVuIGhpZi1tZXJnZS1pZmRlZi1yZWdpb24g KHN0YXJ0IGVuZCkKKyAgIlRoaXMgZnVuY3Rpb24gbWVyZ2VzIG5lYXJieSBpZmRlZiByZWdpb25z IHRvIGZvcm0gYSBiaWdnZXIgb3ZlcmxheS4KK1RoZSByZWdpb24gaXMgZGVmaW5lZCBieSBTVEFS VCBhbmQgRU5ELiAgVGhpcyB3aWxsIGRlY3JlYXNlIHRoZSBudW1iZXIgb2YKK292ZXJsYXlzIGNy ZWF0ZWQuIgorICA7OyBHZW5lcm5hbGx5IHRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbCBpdHNlbGYg cmVjdXJzaXZlbHkgc2luY2UgdGhlcmUgc2hvdWxkCisgIDs7IG9yaWdpbmFsbHkgZXhpc3RzIG5v IHVuLW1lcmdlZCByZWdpb25zOyBob3dldmVyLCBpZiBhIHBhcnQgb2YgdGhlIGZpbGUgaXMKKyAg OzsgaGlkZGVuIHdpdGggYGhpZGUtaWZkZWYtbGluZXMnIGVxdWFscyB0byBuaWwgd2hpbGUgYW5v dGhlciBwYXJ0IHdpdGggJ3QsCisgIDs7IHRoaXMgY2FzZSBoYXBwZW5zLgorICA7OyBUT0RPOiBT aG91bGQgd2UgbWVyZ2U/IG9yIGp1c3QgY3JlYXRlIGEgY29udGFpbmVyIG92ZXJsYXk/IC0tIHRo aXMgY2FuCisgIDs7IHByZXZlbnQgYGhpZGVpZi1zaG93LWlmZGVmJyBleHBhbmRpbmcgdG9vIG1h bnkgaGlkZGVuIGNvbnRlbnRzIHNpbmNlIHRoZXJlCisgIDs7IGlzIG9ubHkgYSBiaWcgb3Zlcmxh eSBleGlzdHMgdGhlcmUgd2l0aG91dCBhbnkgc21hbGxlciBvdmVybGF5cy4KKyAgKHNhdmUtcmVz dHJpY3Rpb24KKyAgICAod2lkZW4pIDsgT3RoZXJ3aXNlIGBwb2ludC1taW4nIGFuZCBgcG9pbnQt bWF4JyB3aWxsIGJlIHJlc3RyaWN0ZWQgYW5kIHRodXMKKyAgICAgICAgICAgIDsgZmFpbCB0byBm aW5kIG5laWdoYm9yIG92ZXJsYXlzCisgICAgKGxldCAoKGJlZ292cnMgKG92ZXJsYXlzLWluCisg ICAgICAgICAgICAgICAgICAgIChtYXggKC0gc3RhcnQgMikgKHBvaW50LW1pbikpCisgICAgICAg ICAgICAgICAgICAgIChtYXggKC0gc3RhcnQgMSkgKHBvaW50LW1pbikpKSkKKyAgICAgICAgICAo ZW5kb3ZycyAob3ZlcmxheXMtaW4KKyAgICAgICAgICAgICAgICAgICAgKG1pbiAoKyBlbmQgMSkg KHBvaW50LW1heCkpCisgICAgICAgICAgICAgICAgICAgIChtaW4gKCsgZW5kIDIpIChwb2ludC1t YXgpKSkpCisgICAgICAgICAgKG9iIG5pbCkKKyAgICAgICAgICAob2UgbmlsKQorICAgICAgICAg IGIgZSkKKyAgICAgIDs7IE1lcmdlIG92ZXJsYXlzIGJlZm9yZSBTVEFSVAorICAgICAgKGRvbGlz dCAobyBiZWdvdnJzKQorICAgICAgICAod2hlbiAob3ZlcmxheS1nZXQgbyAnaGlkZS1pZmRlZikK KyAgICAgICAgICAoc2V0cSBiIChtaW4gc3RhcnQgKG92ZXJsYXktc3RhcnQgbykpCisgICAgICAg ICAgICAgICAgZSAobWF4IGVuZCAob3ZlcmxheS1lbmQgbykpKQorICAgICAgICAgIChtb3ZlLW92 ZXJsYXkgbyBiIGUpCisgICAgICAgICAgKGhpZi1tZXJnZS1pZmRlZi1yZWdpb24gYiBlKQorICAg ICAgICAgIChzZXRxIG9iIG8pKSkKKyAgICAgIDs7IE1lcmdlIG92ZXJsYXlzIGFmdGVyIEVORAor ICAgICAgKGRvbGlzdCAobyBlbmRvdnJzKQorICAgICAgICAod2hlbiAob3ZlcmxheS1nZXQgbyAn aGlkZS1pZmRlZikKKyAgICAgICAgICAoc2V0cSBiIChtaW4gc3RhcnQgKG92ZXJsYXktc3RhcnQg bykpCisgICAgICAgICAgICAgICAgZSAobWF4IGVuZCAob3ZlcmxheS1lbmQgbykpKQorICAgICAg ICAgIChtb3ZlLW92ZXJsYXkgbyBiIGUpCisgICAgICAgICAgKGhpZi1tZXJnZS1pZmRlZi1yZWdp b24gYiBlKQorICAgICAgICAgIChzZXRmIG9lIG8pKSkKKyAgICAgIDs7IElmIGJvdGggU1RBUlQg YW5kIEVORCBtZXJnaW5nIGhhcHBlbnMsIG1lcmdlIGludG8gYmlnZ2VyIG9uZQorICAgICAgKHdo ZW4gKGFuZCBvYiBvZSkKKyAgICAgICAgKGxldCAoKGIgKG1pbiAob3ZlcmxheS1zdGFydCBvYikg KG92ZXJsYXktc3RhcnQgb2UpKSkKKyAgICAgICAgICAgICAgKGUgKG1heCAob3ZlcmxheS1lbmQg b2IpIChvdmVybGF5LWVuZCBvZSkpKSkKKyAgICAgICAgICAoZGVsZXRlLW92ZXJsYXkgb2UpCisg ICAgICAgICAgKG1vdmUtb3ZlcmxheSBvYiBiIGUpCisgICAgICAgICAgKGhpZi1tZXJnZS1pZmRl Zi1yZWdpb24gYiBlKSkpCisgICAgICAob3Igb2Igb2UpKSkpCiAoZGVmdW4gaGlkZS1pZmRlZi1y ZWdpb24taW50ZXJuYWwgKHN0YXJ0IGVuZCkKLSAgKHJlbW92ZS1vdmVybGF5cyBzdGFydCBlbmQg J2hpZGUtaWZkZWYgdCkKKyAgKHVubGVzcyAoaGlmLW1lcmdlLWlmZGVmLXJlZ2lvbiBzdGFydCBl bmQpCiAgIChsZXQgKChvIChtYWtlLW92ZXJsYXkgc3RhcnQgZW5kKSkpCiAgICAgKG92ZXJsYXkt cHV0IG8gJ2hpZGUtaWZkZWYgdCkKICAgICAoaWYgaGlkZS1pZmRlZi1zaGFkb3cKICAgICAgICAg KG92ZXJsYXktcHV0IG8gJ2ZhY2UgJ2hpZGUtaWZkZWYtc2hhZG93KQotICAgICAgKG92ZXJsYXkt cHV0IG8gJ2ludmlzaWJsZSAnaGlkZS1pZmRlZikpKSkKKyAgICAgICAgKG92ZXJsYXktcHV0IG8g J2ludmlzaWJsZSAnaGlkZS1pZmRlZikpKSkpCiAKIChkZWZ1biBoaWRlLWlmZGVmLXJlZ2lvbiAo c3RhcnQgZW5kKQotICAiU1RBUlQgaXMgdGhlIHN0YXJ0IG9mIGEgI2lmIG9yICNlbHNlIGZvcm0u ICBFTkQgaXMgdGhlIGVuZGluZyBwYXJ0LgorICAiU1RBUlQgaXMgdGhlIHN0YXJ0IG9mIGEgI2lm LCAjZWxpZiwgb3IgI2Vsc2UgZm9ybS4gIEVORCBpcyB0aGUgZW5kaW5nIHBhcnQuCiBFdmVyeXRo aW5nIGluY2x1ZGluZyB0aGVzZSBsaW5lcyBpcyBtYWRlIGludmlzaWJsZS4iCiAgIChzYXZlLWV4 Y3Vyc2lvbgogICAgIChnb3RvLWNoYXIgc3RhcnQpIChoaWYtZW5kLW9mLWxpbmUpIChzZXRxIHN0 YXJ0IChwb2ludCkpCkBAIC0zMTYsNyArNDI1LDkgQEAgRXZlcnl0aGluZyBpbmNsdWRpbmcgdGhl c2UgbGluZXMgaXMgbWFkZSBpbnZpc2libGUuIgogCiAoZGVmdW4gaGlmLXNob3ctaWZkZWYtcmVn aW9uIChzdGFydCBlbmQpCiAgICJFdmVyeXRoaW5nIGJldHdlZW4gU1RBUlQgYW5kIEVORCBpcyBt YWRlIHZpc2libGUuIgotICAocmVtb3ZlLW92ZXJsYXlzIHN0YXJ0IGVuZCAnaGlkZS1pZmRlZiB0 KSkKKyAgKGxldCAoKG9udW0gKGxlbmd0aCAob3ZlcmxheXMtaW4gc3RhcnQgZW5kKSkpKQorICAg IChyZW1vdmUtb3ZlcmxheXMgc3RhcnQgZW5kICdoaWRlLWlmZGVmIHQpCisgICAgKC89IG9udW0g KGxlbmd0aCAob3ZlcmxheXMtaW4gc3RhcnQgZW5kKSkpKSkKIAogCiA7Oz09PSUlU0YlJSBldmFs dWF0aW9uIChTdGFydCkgID09PQpAQCAtMzc1LDEwICs0ODYsOCBAQCB0aGF0IGZvcm0gc2hvdWxk IGJlIGRpc3BsYXllZC4iKQogICAoY29uY2F0IGhpZi1jcHAtcHJlZml4ICJcXChpZlxcKG4/ZGVm XFwpP1xcfGVsaWZcXHxkZWZpbmVcXClbIFx0XSsiKSkKIAogKGRlZmNvbnN0IGhpZi13aGl0ZS1y ZWdleHAgICAgICAgICAiWyBcdF0qIikKLShkZWZjb25zdCBoaWYtZGVmaW5lLXJlZ2V4cAotICAo Y29uY2F0IGhpZi1jcHAtcHJlZml4ICJcXChkZWZpbmVcXHx1bmRlZlxcKSIpKQotKGRlZmNvbnN0 IGhpZi1pZC1yZWdleHAKLSAgKGNvbmNhdCAiW1s6YWxwaGE6XV9dW1s6YWxudW06XV9dKiIpKQor KGRlZmNvbnN0IGhpZi1kZWZpbmUtcmVnZXhwICAgKGNvbmNhdCBoaWYtY3BwLXByZWZpeCAiXFwo ZGVmaW5lXFx8dW5kZWZcXCkiKSkKKyhkZWZjb25zdCBoaWYtaWQtcmVnZXhwICAgICAgIChjb25j YXQgIltbOmFscGhhOl1fXVtbOmFsbnVtOl1fXSoiKSkKIChkZWZjb25zdCBoaWYtbWFjcm9yZWYt cmVnZXhwCiAgIChjb25jYXQgaGlmLXdoaXRlLXJlZ2V4cCAiXFwoIiBoaWYtaWQtcmVnZXhwICJc XCkiIGhpZi13aGl0ZS1yZWdleHAKICAgICAgICAgICAiXFwoIgpAQCAtNDk5LDYgKzYwOCw4IEBA IHRoYXQgZm9ybSBzaG91bGQgYmUgZGlzcGxheWVkLiIpCiAgICAgICAgICAgICAgICAgICAgICAo c2V0cSBoaWYtc2ltcGxlLXRva2VuLW9ubHkgbmlsKSkpCiAgICAgICAgICAgICAgICB0b2tlbi1s aXN0KSkpCiAKKyAgICAgICAgICAgKChsb29raW5nLWF0ICJcciIpIDsgU29tZXRpbWVzIE1TLVdp bmRvd3MgdXNlciB3aWxsIGxlYXZlIENSIGluCisgICAgICAgICAgICAoZm9yd2FyZC1jaGFyIDEp KSA7ICB0aGUgc291cmNlIGNvZGUuIExldCdzIGRvbid0IHN0dWNrIGhlcmUuCiAgICAgICAgICAg ICh0IChlcnJvciAiQmFkICNpZiBleHByZXNzaW9uOiAlcyIgKGJ1ZmZlci1zdHJpbmcpKSkpKSkp CiAKICAgICAobnJldmVyc2UgdG9rZW4tbGlzdCkpKQpAQCAtMTE3NSwxMyArMTI4NiwxNiBAQCBE byB0aGlzIHdoZW4gY3Vyc29yIGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYHJlZ2V4cCcgKGkuZS4g I2lmWCkuIgogICAgIChpZiAoPSBzdGFydCAocG9pbnQpKQogICAgICAgICAoZXJyb3IgIk1pc21h dGNoZWQgI2lmZGVmICNlbmRpZiBwYWlyIikpKQogICAoY29uZCAoKGhpZi1sb29raW5nLWF0LWVu ZGlmKQotCSAoaGlmLWVuZGlmLXRvLWlmZGVmKSA7IGZpbmQgYmVnaW5uaW5nIG9mIG5lc3RlZCBp ZgotCSAoaGlmLWVuZGlmLXRvLWlmZGVmKSkgOyBmaW5kIGJlZ2lubmluZyBvZiBvdXRlciBpZiBv ciBlbHNlCisgICAgICAgICAoaGlmLWVuZGlmLXRvLWlmZGVmKSA7IEZpbmQgYmVnaW5uaW5nIG9m IG5lc3RlZCBpZgorICAgICAgICAgKGhpZi1lbmRpZi10by1pZmRlZikpIDsgRmluZCBiZWdpbm5p bmcgb2Ygb3V0ZXIgaWYgb3IgZWxzZQorICAgICAgICAoKGhpZi1sb29raW5nLWF0LWVsaWYpCisg ICAgICAgICAoaGlmLWVuZGlmLXRvLWlmZGVmKSkKICAgICAgICAgKChoaWYtbG9va2luZy1hdC1l bHNlKQogICAgICAgICAgKGhpZi1lbmRpZi10by1pZmRlZikpCiAgICAgICAgICgoaGlmLWxvb2tp bmctYXQtaWZYKQogICAgICAgICAgJ2RvbmUpCi0JKHQpKSkJCQk7IG5ldmVyIGdldHMgaGVyZQor ICAgICAgICAodAorICAgICAgICAgKGVycm9yICJNaXNtYXRjaGVkICNlbmRpZiIpKSkpICAgICAg ICAgICAgICAgICA7IG5ldmVyIGdldHMgaGVyZQogCiAKIChkZWZ1biBmb3J3YXJkLWlmZGVmICgm b3B0aW9uYWwgYXJnKQpAQCAtMTI3NSwyNiArMTM4OSwyNiBAQCBXaXRoIGFyZ3VtZW50LCBkbyB0 aGlzIHRoYXQgbWFueSB0aW1lcy4iCiA7Oz09PSUlU0YlJSBoaWRlLWlmZGVmLWhpZGluZyAoU3Rh cnQpICA9PT0KIAogCi07OzsgQSByYW5nZSBpcyBhIHN0cnVjdHVyZSB3aXRoIGZvdXIgY29tcG9u ZW50czoKLTs7OyBFTFNFLVAJVHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZWxzZSBjbGF1c2UgZm9yIHRo ZSBpZmRlZi4KLTs7OyBTVEFSVAlUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLiAoYmVnaW5uaW5nIG9m IGxpbmUpCi07OzsgRUxTRQlUaGUgZWxzZSBtYXJrZXIgKGJlZ2lubmluZyBvZiBsaW5lKQotOzs7 CQkJT25seSB2YWxpZCBpZiBFTFNFLVAgaXMgdHJ1ZS4KLTs7OyBFTkQJCVRoZSBlbmQgb2YgdGhl IHJhbmdlLiAgKGJlZ2lubmluZyBvZiBsaW5lKQorOzsgQSByYW5nZSBpcyBhIHN0cnVjdHVyZSB3 aXRoIGZvdXIgY29tcG9uZW50czoKKzs7IFNUQVJUICAgICAgIFRoZSBzdGFydCBvZiB0aGUgcmFu Z2UuIChiZWdpbm5pbmcgb2YgbGluZSkKKzs7IEVMU0UgICAgICAgIFRoZSBlbHNlIG1hcmtlciAo YmVnaW5uaW5nIG9mIGxpbmUpCis7OyBFTkQgICAgICAgICBUaGUgZW5kIG9mIHRoZSByYW5nZS4g IChiZWdpbm5pbmcgb2YgbGluZSkKKzs7IEVMSUYgICAgICAgIEEgc2VxdWVuY2Ugb2YgI2VsaWYg bWFya2VycyAoYmVnaW5uaW5nIG9mIGxpbmUpCiAKLShkZWZzdWJzdCBoaWYtbWFrZS1yYW5nZSAo c3RhcnQgZW5kICZvcHRpb25hbCBlbHNlKQotICAobGlzdCBzdGFydCBlbHNlIGVuZCkpCisoZGVm c3Vic3QgaGlmLW1ha2UtcmFuZ2UgKHN0YXJ0IGVuZCAmb3B0aW9uYWwgZWxzZSBlbGlmKQorICAo bGlzdCBzdGFydCBlbHNlIGVuZCBlbGlmKSkKIAogKGRlZnN1YnN0IGhpZi1yYW5nZS1zdGFydCAo cmFuZ2UpIChlbHQgcmFuZ2UgMCkpCiAoZGVmc3Vic3QgaGlmLXJhbmdlLWVsc2UgKHJhbmdlKSAo ZWx0IHJhbmdlIDEpKQogKGRlZnN1YnN0IGhpZi1yYW5nZS1lbmQgKHJhbmdlKSAoZWx0IHJhbmdl IDIpKQorKGRlZnN1YnN0IGhpZi1yYW5nZS1lbGlmIChyYW5nZSkgKGVsdCByYW5nZSAzKSkKIAog CiAKLTs7OyBGaW5kLVJhbmdlCi07OzsgVGhlIHdvcmtob3JzZSwgaXQgZGVsaW1pdHMgdGhlICNp ZiByZWdpb24uICBSZWFzb25hYmx5IHNpbXBsZToKLTs7OyBTa2lwIHVudGlsIGFuICNlbHNlIG9y ICNlbmRpZiBpcyBmb3VuZCwgcmVtZW1iZXJpbmcgcG9zaXRpb25zLiAgSWYKLTs7OyBhbiAjZWxz ZSB3YXMgZm91bmQsIHNraXAgc29tZSBtb3JlLCBsb29raW5nIGZvciB0aGUgdHJ1ZSAjZW5kaWYu Cis7OyBGaW5kLVJhbmdlCis7OyBUaGUgd29ya2hvcnNlLCBpdCBkZWxpbWl0cyB0aGUgI2lmIHJl Z2lvbi4gIFJlYXNvbmFibHkgc2ltcGxlOgorOzsgU2tpcCB1bnRpbCBhbiAjZWxzZSBvciAjZW5k aWYgaXMgZm91bmQsIHJlbWVtYmVyaW5nIHBvc2l0aW9ucy4gIElmCis7OyBhbiAjZWxzZSB3YXMg Zm91bmQsIHNraXAgc29tZSBtb3JlLCBsb29raW5nIGZvciB0aGUgdHJ1ZSAjZW5kaWYuCiAKIChk ZWZ1biBoaWYtZmluZC1yYW5nZSAoKQogICAiUmV0dXJuIGEgUmFuZ2Ugc3RydWN0dXJlIGRlc2Ny aWJpbmcgdGhlIGN1cnJlbnQgI2lmIHJlZ2lvbi4KQEAgLTEzMDMsMTkgKzE0MTcsMjMgQEAgUG9p bnQgaXMgbGVmdCB1bmNoYW5nZWQuIgogICAoc2F2ZS1leGN1cnNpb24KICAgICAoYmVnaW5uaW5n LW9mLWxpbmUpCiAgICAgKGxldCAoKHN0YXJ0IChwb2ludCkpCisgICAgICAgICAgKGVsaWYgbmls KQogICAgICAgICAgIChlbHNlIG5pbCkKICAgICAgICAgICAoZW5kIG5pbCkpCi0gICAgICA7OyBQ YXJ0IG9uZS4gIExvb2sgZm9yIGVpdGhlciAjZW5kaWYgb3IgI2Vsc2UuCisgICAgICA7OyBQYXJ0 IG9uZS4gIExvb2sgZm9yIGVpdGhlciAjZWxpZiwgI2Vsc2Ugb3IgI2VuZGlmLgogICAgICAgOzsg VGhpcyBsb29wLWFuZC1hLWhhbGYgZGVkaWNhdGVkIHRvIEUuIERpamtzdHJhLgorICAgICAgKHdo aWxlIChhbmQgKG5vdCBlbHNlKSAobm90IGVuZCkpCiAgICAgICAod2hpbGUgKHByb2duCiAgICAg ICAgICAgICAgICAoaGlmLWZpbmQtbmV4dC1yZWxldmFudCkKICAgICAgICAgICAgICAgIChoaWYt bG9va2luZy1hdC1pZlgpKSAgICAgICAgICAgIDsgU2tpcCBuZXN0ZWQgaWZkZWYKICAgICAgICAg KGhpZi1pZmRlZi10by1lbmRpZikpCi0gICAgICA7OyBGb3VuZCBlaXRoZXIgYSAjZWxzZSBvciBh biAjZW5kaWYuCi0gICAgICAoY29uZCAoKGhpZi1sb29raW5nLWF0LWVsc2UpCisgICAgICAgIDs7 IEZvdW5kIGVpdGhlciBhICNlbHNlLCAjZWxpZiwgb3IgYW4gI2VuZGlmLgorICAgICAgICAoY29u ZCAoKGhpZi1sb29raW5nLWF0LWVsaWYpCisgICAgICAgICAgICAgICAoc2V0cSBlbGlmIChuY29u YyBlbGlmIChsaXN0IChwb2ludCkpKSkpCisgICAgICAgICAgICAgICgoaGlmLWxvb2tpbmctYXQt ZWxzZSkKICAgICAgICAgICAgICAoc2V0cSBlbHNlIChwb2ludCkpKQogICAgICAgICAgICAgKHQK LQkgICAgIChzZXRxIGVuZCAocG9pbnQpKSkpIDsgKGxpbmUtZW5kLXBvc2l0aW9uKQorICAgICAg ICAgICAgICAgKHNldHEgZW5kIChwb2ludCkpKSkpCiAgICAgICA7OyBJZiBmb3VuZCAjZWxzZSwg bG9vayBmb3IgI2VuZGlmLgogICAgICAgKHdoZW4gZWxzZQogICAgICAgICAod2hpbGUgKHByb2du CkBAIC0xMzI1LDcgKzE0NDMsNyBAQCBQb2ludCBpcyBsZWZ0IHVuY2hhbmdlZC4iCiAgICAgICAg IChpZiAoaGlmLWxvb2tpbmctYXQtZWxzZSkKICAgICAgICAgICAgIChlcnJvciAiRm91bmQgdHdv IGVsc2VzIGluIGEgcm93PyAgQnJva2VuISIpKQogICAgICAgICAoc2V0cSBlbmQgKHBvaW50KSkp ICAgICAgICAgICAgOyAobGluZS1lbmQtcG9zaXRpb24pCi0gICAgICAoaGlmLW1ha2UtcmFuZ2Ug c3RhcnQgZW5kIGVsc2UpKSkpCisgICAgICAoaGlmLW1ha2UtcmFuZ2Ugc3RhcnQgZW5kIGVsc2Ug ZWxpZikpKSkKIAogCiA7OyBBIGJpdCBzbGlteS4KQEAgLTEzNDAsNjkgKzE0NTgsMTc2IEBAIERv ZXMgbm90aGluZyBpZiBgaGlkZS1pZmRlZi1saW5lcycgaXMgbmlsLiIKICAgICAgICAobGluZS1i ZWdpbm5pbmctcG9zaXRpb24pIChwcm9nbiAoaGlmLWVuZC1vZi1saW5lKSAocG9pbnQpKSkpKSkK IAogCi07OzsgIEhpZi1Qb3NzaWJseS1IaWRlCi07OzsgIFRoZXJlIGFyZSBmb3VyIGNhc2VzLiAg VGhlICNpZlggZXhwcmVzc2lvbiBpcyAidGFrZW4iIGlmIGl0Ci07OzsgIHRoZSBoaWRlLWlmZGVm LWV2YWx1YXRvciByZXR1cm5zIFQuICBQcmVzdW1hYmx5LCB0aGlzIG1lYW5zIHRoZSBjb2RlCi07 OzsgIGluc2lkZSB0aGUgI2lmZGVmIHdvdWxkIGJlIGluY2x1ZGVkIHdoZW4gdGhlIHByb2dyYW0g d2FzCi07OzsgIGNvbXBpbGVkLgotOzs7Ci07OzsgIENhc2UgMTogICNpZlggdGFrZW4sIGFuZCB0 aGVyZSdzIGFuICNlbHNlLgotOzs7CVRoZSAjZWxzZSBwYXJ0IG11c3QgYmUgaGlkZGVuLiAgVGhl ICNpZiAodGhlbikgcGFydCBtdXN0IGJlCi07OzsJcHJvY2Vzc2VkIGZvciBuZXN0ZWQgI2lmWCdz LgotOzs7ICBDYXNlIDI6ICAjaWZYIHRha2VuLCBhbmQgdGhlcmUncyBubyAjZWxzZS4KLTs7OwlU aGUgI2lmIHBhcnQgbXVzdCBiZSBwcm9jZXNzZWQgZm9yIG5lc3RlZCAjaWZYJ3MuCi07OzsgIENh c2UgMzogICNpZlggbm90IHRha2VuLCBhbmQgdGhlcmUncyBhbiAjZWxzZS4KLTs7OwlUaGUgI2lm IHBhcnQgbXVzdCBiZSBoaWRkZW4uICBUaGUgI2Vsc2UgcGFydCBtdXN0IGJlIHByb2Nlc3NlZAot Ozs7CWZvciBuZXN0ZWQgI2lmcy4KLTs7OyAgQ2FzZSA0OiAgI2lmWCBub3QgdGFrZW4sIGFuZCB0 aGVyZSdzIG5vICNlbHNlLgotOzs7CVRoZSAjaWZYIHBhcnQgbXVzdCBiZSBoaWRkZW4uCi07OzsK LTs7OyAgRnVydGhlciBwcm9jZXNzaW5nIGlzIGRvbmUgYnkgbmFycm93aW5nIHRvIHRoZSByZWxl dmFudCByZWdpb24KLTs7OyAgYW5kIGp1c3QgcmVjdXJzaXZlbHkgY2FsbGluZyBoaWRlLWlmZGVm LWd1dHMuCi07OzsKLTs7OyAgV2hlbiBoaWYtcG9zc2libHktaGlkZSByZXR1cm5zLCBwb2ludCBp cyBhdCB0aGUgZW5kIG9mIHRoZQotOzs7ICBwb3NzaWJseS1oaWRkZW4gcmFuZ2UuCi0KLShkZWZ1 biBoaWYtcmVjdXJzZS1vbiAoc3RhcnQgZW5kKQorOzsgIEhpZi1Qb3NzaWJseS1IaWRlCis7OyAg VGhlcmUgYXJlIGZvdXIgY2FzZXMuICBUaGUgI2lmWCBleHByZXNzaW9uIGlzICJ0YWtlbiIgaWYg aXQKKzs7ICB0aGUgaGlkZS1pZmRlZi1ldmFsdWF0b3IgcmV0dXJucyBULiAgUHJlc3VtYWJseSwg dGhpcyBtZWFucyB0aGUgY29kZQorOzsgIGluc2lkZSB0aGUgI2lmZGVmIHdvdWxkIGJlIGluY2x1 ZGVkIHdoZW4gdGhlIHByb2dyYW0gd2FzCis7OyAgY29tcGlsZWQuCis7OworOzsgIENhc2UgMTog ICNpZlggdGFrZW4sIGFuZCB0aGVyZSdzIGFuICNlbHNlLgorOzsgICAgIFRoZSAjZWxzZSBwYXJ0 IG11c3QgYmUgaGlkZGVuLiAgVGhlICNpZiAodGhlbikgcGFydCBtdXN0IGJlCis7OyAgICAgcHJv Y2Vzc2VkIGZvciBuZXN0ZWQgI2lmWCdzLgorOzsgIENhc2UgMjogICNpZlggdGFrZW4sIGFuZCB0 aGVyZSdzIG5vICNlbHNlLgorOzsgICAgIFRoZSAjaWYgcGFydCBtdXN0IGJlIHByb2Nlc3NlZCBm b3IgbmVzdGVkICNpZlgncy4KKzs7ICBDYXNlIDM6ICAjaWZYIG5vdCB0YWtlbiwgYW5kIHRoZXJl J3MgYW4gI2VsaWYKKzs7ICAgICBUaGUgI2lmIHBhcnQgbXVzdCBiZSBoaWRkZW4sIGFuZCB0aGVu IGV2YWx1YXRlCis7OyAgICAgdGhlICNlbGlmIGNvbmRpdGlvbiBsaWtlIGEgbmV3ICNpZlguCis7 OyAgQ2FzZSA0OiAgI2lmWCBub3QgdGFrZW4sIGFuZCB0aGVyZSdzIGp1c3QgYW4gI2Vsc2UuCis7 OyAgICAgVGhlICNpZiBwYXJ0IG11c3QgYmUgaGlkZGVuLiAgVGhlICNlbHNlIHBhcnQgbXVzdCBi ZSBwcm9jZXNzZWQKKzs7ICAgICBmb3IgbmVzdGVkICNpZnMuCis7OyAgQ2FzZSA1OiAgI2lmWCBu b3QgdGFrZW4sIGFuZCB0aGVyZSdzIG5vICNlbHNlLgorOzsgICAgIFRoZSAjaWZYIHBhcnQgbXVz dCBiZSBoaWRkZW4uCis7OworOzsgIEZ1cnRoZXIgcHJvY2Vzc2luZyBpcyBkb25lIGJ5IG5hcnJv d2luZyB0byB0aGUgcmVsZXZhbnQgcmVnaW9uCis7OyAgYW5kIGp1c3QgcmVjdXJzaXZlbHkgY2Fs bGluZyBoaWRlLWlmZGVmLWd1dHMuCis7OworOzsgIFdoZW4gaGlmLXBvc3NpYmx5LWhpZGUgcmV0 dXJucywgcG9pbnQgaXMgYXQgdGhlIGVuZCBvZiB0aGUKKzs7ICBwb3NzaWJseS1oaWRkZW4gcmFu Z2UuCisKKyhkZWZ2YXIgaGlmLXJlY3Vyc2UtbGV2ZWwgMCkKKworKGRlZnVuIGhpZi1yZWN1cnNl LW9uIChzdGFydCBlbmQgJm9wdGlvbmFsIGRvbnQtZ28tZW9sKQogICAiQ2FsbCBgaGlkZS1pZmRl Zi1ndXRzJyBhZnRlciBuYXJyb3dpbmcgdG8gZW5kIG9mIFNUQVJUIGxpbmUgYW5kIEVORCBsaW5l LiIKICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgKHNhdmUtcmVzdHJpY3Rpb24KICAgICAgIChnb3Rv LWNoYXIgc3RhcnQpCi0gICAgICAoZW5kLW9mLWxpbmUpCisgICAgICAodW5sZXNzIGRvbnQtZ28t ZW9sCisgICAgICAgIChlbmQtb2YtbGluZSkpCiAgICAgICAobmFycm93LXRvLXJlZ2lvbiAocG9p bnQpIGVuZCkKLSAgICAgIChoaWRlLWlmZGVmLWd1dHMpKSkpCisgICAgICAobGV0ICgoaGlmLXJl Y3Vyc2UtbGV2ZWwgKDErIGhpZi1yZWN1cnNlLWxldmVsKSkpCisgICAgICAgIChoaWRlLWlmZGVm LWd1dHMpKSkpKQogCi0oZGVmdW4gaGlmLXBvc3NpYmx5LWhpZGUgKCkKKyhkZWZ1biBoaWYtcG9z c2libHktaGlkZSAoZXhwYW5kLXJlaW5jbHVzaW9uKQogICAiQ2FsbGVkIGF0ICNpZlggZXhwcmVz c2lvbiwgdGhpcyBoaWRlcyB0aG9zZSBwYXJ0cyB0aGF0IHNob3VsZCBiZSBoaWRkZW4uCiBJdCB1 c2VzIHRoZSBqdWRnbWVudCBvZiBgaGlkZS1pZmRlZi1ldmFsdWF0b3InLiIKICAgOzsgKG1lc3Nh Z2UgImhpZi1wb3NzaWJseS1oaWRlIikgKHNpdC1mb3IgMSkKLSAgKGxldCAoKHRlc3QgKGhpZi1j YW5vbmljYWxpemUgaGlmLWlmeC1yZWdleHApKQotCShyYW5nZSAoaGlmLWZpbmQtcmFuZ2UpKSkK KyAgKGxldCogKChjYXNlLWZvbGQtc2VhcmNoIG5pbCkKKyAgICAgICAgICh0ZXN0IChoaWYtY2Fu b25pY2FsaXplIGhpZi1pZngtcmVnZXhwKSkKKyAgICAgICAgIChyYW5nZSAoaGlmLWZpbmQtcmFu Z2UpKQorICAgICAgICAgKGVsaWZzIChoaWYtcmFuZ2UtZWxpZiByYW5nZSkpCisgICAgICAgICAo aWYtcGFydCB0KSA7OyBldmVyeXRpbWUgd2Ugc3RhcnQgZnJvbSBpZi1wYXJ0CisgICAgICAgICAo Y29tcGxldGUgbmlsKSkKICAgICA7OyAobWVzc2FnZSAidGVzdCA9ICVzIiB0ZXN0KSAoc2l0LWZv ciAxKQogCiAgICAgKGhpZi1oaWRlLWxpbmUgKGhpZi1yYW5nZS1lbmQgcmFuZ2UpKQotICAgIChp ZiAobm90IChoaWYtbm90IChmdW5jYWxsIGhpZGUtaWZkZWYtZXZhbHVhdG9yIHRlc3QpKSkKLQko Y29uZCAoKGhpZi1yYW5nZS1lbHNlIHJhbmdlKQk7IGNhc2UgMQorICAgICh3aGlsZSAobm90IGNv bXBsZXRlKQorICAgICAgKGlmIChhbmQgKG5vdCAoYW5kIGV4cGFuZC1yZWluY2x1c2lvbiBpZi1w YXJ0KSkKKyAgICAgICAgICAgICAgIChoaWYtbm90IChmdW5jYWxsIGhpZGUtaWZkZWYtZXZhbHVh dG9yIHRlc3QpKSkKKyAgICAgICAgICA7OyBpZlgvZWxpZiBpcyBGQUxTRQorICAgICAgICAgIChp ZiBlbGlmcworICAgICAgICAgICAgICA7OyBDYXNlIDMgLSBIaWRlIHRoZSAjaWZYIGFuZCBldmFs ICNlbGlmCisgICAgICAgICAgICAgIChsZXQgKChuZXdzdGFydCAoY2FyIGVsaWZzKSkpCisgICAg ICAgICAgICAgICAgKGhpZi1oaWRlLWxpbmUgKGhpZi1yYW5nZS1zdGFydCByYW5nZSkpCisgICAg ICAgICAgICAgICAgKGhpZGUtaWZkZWYtcmVnaW9uIChoaWYtcmFuZ2Utc3RhcnQgcmFuZ2UpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxLSBuZXdzdGFydCkpCisgICAgICAg ICAgICAgICAgKHNldGNhciByYW5nZSBuZXdzdGFydCkKKyAgICAgICAgICAgICAgICAoZ290by1j aGFyIG5ld3N0YXJ0KQorICAgICAgICAgICAgICAgIChzZXRxIGVsaWZzIChjZHIgZWxpZnMpKQor ICAgICAgICAgICAgICAgIChzZXRxIHRlc3QgKGhpZi1jYW5vbmljYWxpemUgaGlmLWVsaWYtcmVn ZXhwKSkpCisKKyAgICAgICAgICAgIDs7IENoZWNrIGZvciAjZWxzZQorICAgICAgICAgICAgKGNv bmQgKChoaWYtcmFuZ2UtZWxzZSByYW5nZSkKKyAgICAgICAgICAgICAgICAgICA7OyBDYXNlIDQg LSAjZWxzZSBibG9jayB2aXNpYmxlCisgICAgICAgICAgICAgICAgICAgKGhpZi1oaWRlLWxpbmUg KGhpZi1yYW5nZS1lbHNlIHJhbmdlKSkKKyAgICAgICAgICAgICAgICAgICAoaGlkZS1pZmRlZi1y ZWdpb24gKGhpZi1yYW5nZS1zdGFydCByYW5nZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKDEtIChoaWYtcmFuZ2UtZWxzZSByYW5nZSkpKQorICAgICAgICAgICAgICAg ICAgIChoaWYtcmVjdXJzZS1vbiAoaGlmLXJhbmdlLWVsc2UgcmFuZ2UpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChoaWYtcmFuZ2UtZW5kIHJhbmdlKSkpCisgICAgICAgICAg ICAgICAgICAodAorICAgICAgICAgICAgICAgICAgIDs7IENhc2UgNSAtIE5vICNlbHNlIGJsb2Nr LCBoaWRlICNpZlgKKyAgICAgICAgICAgICAgICAgICAoaGlkZS1pZmRlZi1yZWdpb24gKHBvaW50 KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS0gKGhpZi1yYW5nZS1l bmQgcmFuZ2UpKSkpKQorICAgICAgICAgICAgKHNldHEgY29tcGxldGUgdCkpCisKKyAgICAgICAg OzsgaWZYL2VsaWYgaXMgVFJVRQorICAgICAgICAoY29uZCAoZWxpZnMKKyAgICAgICAgICAgICAg IDs7IEx1a2UgZml4OiBkaXN0aW5ndWlzaCBmcm9tICNlbGlmLi4jZWxpZiB0byAjZWxpZi4uI2Vs c2UKKyAgICAgICAgICAgICAgIChsZXQgKChlbGlmIChjYXIgZWxpZnMpKSkKKyAgICAgICAgICAg ICAgICAgOzsgaGlkZSBhbGwgZWxpZnMKKyAgICAgICAgICAgICAgICAgKGhpZi1oaWRlLWxpbmUg ZWxpZikKKyAgICAgICAgICAgICAgICAgKGhpZGUtaWZkZWYtcmVnaW9uIGVsaWYgKDEtIChoaWYt cmFuZ2UtZW5kIHJhbmdlKSkpCisgICAgICAgICAgICAgICAgIChoaWYtcmVjdXJzZS1vbiAoaGlm LXJhbmdlLXN0YXJ0IHJhbmdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxp ZikpKQorICAgICAgICAgICAgICAoKGhpZi1yYW5nZS1lbHNlIHJhbmdlKQorICAgICAgICAgICAg ICAgOzsgQ2FzZSAxIC0gSGlkZSAjZWxpZiBhbmQgI2Vsc2UgYmxvY2tzLCByZWN1cnNlICNpZlgK ICAgICAgICAgICAgICAgIChoaWYtaGlkZS1saW5lIChoaWYtcmFuZ2UtZWxzZSByYW5nZSkpCiAg ICAgICAgICAgICAgICAoaGlkZS1pZmRlZi1yZWdpb24gKGhpZi1yYW5nZS1lbHNlIHJhbmdlKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxLSAoaGlmLXJhbmdlLWVuZCByYW5n ZSkpKQogICAgICAgICAgICAgICAgKGhpZi1yZWN1cnNlLW9uIChoaWYtcmFuZ2Utc3RhcnQgcmFu Z2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZi1yYW5nZS1lbHNlIHJhbmdl KSkpCi0JICAgICAgKHQJCQk7IGNhc2UgMgorICAgICAgICAgICAgICAodAorICAgICAgICAgICAg ICAgOzsgQ2FzZSAyIC0gTm8gI2Vsc2UsIGp1c3QgcmVjdXJzZSAjaWZYCiAgICAgICAgICAgICAg ICAoaGlmLXJlY3Vyc2Utb24gKGhpZi1yYW5nZS1zdGFydCByYW5nZSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoaGlmLXJhbmdlLWVuZCByYW5nZSkpKSkKLSAgICAgIChjb25kICgo aGlmLXJhbmdlLWVsc2UgcmFuZ2UpCTsgY2FzZSAzCi0JICAgICAoaGlmLWhpZGUtbGluZSAoaGlm LXJhbmdlLWVsc2UgcmFuZ2UpKQotCSAgICAgKGhpZGUtaWZkZWYtcmVnaW9uIChoaWYtcmFuZ2Ut c3RhcnQgcmFuZ2UpCi0JCQkJKDEtIChoaWYtcmFuZ2UtZWxzZSByYW5nZSkpKQotCSAgICAgKGhp Zi1yZWN1cnNlLW9uIChoaWYtcmFuZ2UtZWxzZSByYW5nZSkKLQkJCSAgICAgKGhpZi1yYW5nZS1l bmQgcmFuZ2UpKSkKLQkgICAgKHQJCQkJOyBjYXNlIDQKLQkgICAgIChoaWRlLWlmZGVmLXJlZ2lv biAocG9pbnQpCi0JCQkJKDEtIChoaWYtcmFuZ2UtZW5kIHJhbmdlKSkpKSkpCisgICAgICAgIChz ZXRxIGNvbXBsZXRlIHQpKQorICAgICAgKHNldHEgaWYtcGFydCBuaWwpKQorCisgICAgOzsgY29t cGxldGUgPSB0CiAgICAgKGhpZi1oaWRlLWxpbmUgKGhpZi1yYW5nZS1zdGFydCByYW5nZSkpIDsg QWx3YXlzIGhpZGUgc3RhcnQuCiAgICAgKGdvdG8tY2hhciAoaGlmLXJhbmdlLWVuZCByYW5nZSkp CiAgICAgKGVuZC1vZi1saW5lKSkpCisoZGVmdW4gaGlmLWV2YWx1YXRlLXJlZ2lvbiAoc3RhcnQg ZW5kKQorICAobGV0KiAoKHRva2VucyAoaWdub3JlLWVycm9ycyA7IFByZXZlbnQgQyBzdGF0ZW1l bnQgdGhpbmdzIGxpa2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyAnZG8geyAu Li4gfSB3aGlsZSAoMCknCisgICAgICAgICAgICAgICAgICAgKGhpZi10b2tlbml6ZSBzdGFydCBl bmQpKSkKKyAgICAgICAgIChleHByIChhbmQgdG9rZW5zCisgICAgICAgICAgICAgICAgICAgIChj b25kaXRpb24tY2FzZSBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgIChoaWYtcGFyc2UtZXhw IHRva2VucykKKyAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IKKyAgICAgICAgICAgICAgICAg ICAgICAgdG9rZW5zKSkpKQorICAgICAgICAgKHJlc3VsdCAoZnVuY2FsbCBoaWRlLWlmZGVmLWV2 YWx1YXRvciBleHByKSkpCisgICAgcmVzdWx0KSkKKworKGRlZnVuIGhpZi1ldmFsdWF0ZS1tYWNy byAocnN0YXJ0IHJlbmQpCisgICJFdmFsdWF0ZSB0aGUgbWFjcm8gZXhwYW5zaW9uIHJlc3VsdCBm b3IgYSByZWdpb24uCitJZiBubyByZWdpb24gYWN0aXZlLCBmaW5kIHRoZSBjdXJyZW50ICNpZmRl ZnMgYW5kIGV2YWx1YXRlIHRoZSByZXN1bHQuIEN1cnJlbnRseQoraXQgc3VwcG9ydCBvbmx5IG1h dGggY2FsY3VsYXRpb25zLCBzdHJpbmdzIG9yIGFyZ3VtZW50ZWQgbWFjcm9zIGNhbiBub3QgYmUK K2V4cGFuZGVkLiIKKyAgKGludGVyYWN0aXZlICJyIikKKyAgKGxldCAoKGNhc2UtZm9sZC1zZWFy Y2ggbmlsKSkKKyAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICh1bmxlc3MgbWFyay1hY3RpdmUK KyAgICAgICAgKHNldHEgcnN0YXJ0IG5pbCByZW5kIG5pbCkKKyAgICAgICAgKGJlZ2lubmluZy1v Zi1saW5lKQorICAgICAgICAod2hlbiAoYW5kIChyZS1zZWFyY2gtZm9yd2FyZCBoaWYtbWFjcm8t ZXhwci1wcmVmaXgtcmVnZXhwIG5pbCB0KQorICAgICAgICAgICAgICAgICAgIChzdHJpbmc9ICJk ZWZpbmUiIChtYXRjaC1zdHJpbmcgMikpKQorICAgICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCBo aWYtbWFjcm9yZWYtcmVnZXhwIG5pbCB0KSkpCisgICAgICAobGV0KiAoKHN0YXJ0IChvciByc3Rh cnQgKHBvaW50KSkpCisgICAgICAgICAgICAgKGVuZCAgIChvciByZW5kIChwcm9nbiAoaGlmLWVu ZC1vZi1saW5lKSAocG9pbnQpKSkpCisgICAgICAgICAgICAgKGRlZmluZWQgbmlsKQorICAgICAg ICAgICAgIChzaW1wbGUgJ3QpCisgICAgICAgICAgICAgKHRva2VucyAoaWdub3JlLWVycm9ycyA7 IFByZXZlbnQgQyBzdGF0ZW1lbnQgdGhpbmdzIGxpa2UKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDsgJ2RvIHsgLi4uIH0gd2hpbGUgKDApJworICAgICAgICAgICAgICAgICAg ICAgICAoaGlmLXRva2VuaXplIHN0YXJ0IGVuZCkpKQorICAgICAgICAgICAgIChleHByIChvciAo YW5kICg8PSAobGVuZ3RoIHRva2VucykgMSkgOyBTaW1wbGUgdG9rZW4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoc2V0cSBkZWZpbmVkIChhc3NvYyAoY2FyIHRva2VucykgaGlkZS1pZmRl Zi1lbnYpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHNpbXBsZSAoYXRvbSAo aGlmLWxvb2t1cCAoY2FyIHRva2VucykpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo aGlmLWxvb2t1cCAoY2FyIHRva2VucykpKQorICAgICAgICAgICAgICAgICAgICAgICAoYW5kIHRv a2VucworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25kaXRpb24tY2FzZSBuaWwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZi1wYXJzZS1leHAgdG9rZW5zKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmlsKSkpKSkKKyAgICAgICAgICAgICAocmVzdWx0IChmdW5jYWxsIGhpZGUtaWZk ZWYtZXZhbHVhdG9yIGV4cHIpKQorICAgICAgICAgICAgIChleHByc3RyaW5nIChyZXBsYWNlLXJl Z2V4cC1pbi1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgVHJpbSBvZmYgbGVh ZGluZy90cmFpbGluZyB3aGl0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIl5bIFx0XSpc XChbXiBcdF0rXFwpWyBcdF0qIiAiXFwxIgorICAgICAgICAgICAgICAgICAgICAgICAgICAocmVw bGFjZS1yZWdleHAtaW4tc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFwoLy8u KlxcKSIgIiIgOyBUcmltIG9mZiBlbmQtb2YtbGluZSBjb21tZW50cworICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBzdGFydCBlbmQpKSkp KQorICAgICAgICAoY29uZAorICAgICAgICAgKChhbmQgKDw9IChsZW5ndGggdG9rZW5zKSAxKSBz aW1wbGUpIDsgU2ltcGxlIHRva2VuCisgICAgICAgICAgKGlmIGRlZmluZWQKKyAgICAgICAgICAg ICAgKG1lc3NhZ2UgIiVTIDw9IGAlcyciIHJlc3VsdCBleHByc3RyaW5nKQorICAgICAgICAgICAg KG1lc3NhZ2UgImAlcycgaXMgbm90IGRlZmluZWQiIGV4cHJzdHJpbmcpKSkKKyAgICAgICAgICgo aW50ZWdlcnAgcmVzdWx0KQorICAgICAgICAgIChpZiAob3IgKD0gMCByZXN1bHQpICg9IDEgcmVz dWx0KSkKKyAgICAgICAgICAgICAgKG1lc3NhZ2UgIiVTIDw9IGAlcyciIHJlc3VsdCBleHByc3Ry aW5nKQorICAgICAgICAgICAgKG1lc3NhZ2UgIiVTICgweCV4KSA8PSBgJXMnIiByZXN1bHQgcmVz dWx0IGV4cHJzdHJpbmcpKSkKKyAgICAgICAgICgobnVsbCByZXN1bHQpIChtZXNzYWdlICIlUyA8 PSBgJXMnIiAnZmFsc2UgZXhwcnN0cmluZykpCisgICAgICAgICAoKGVxIHQgcmVzdWx0KSAobWVz c2FnZSAiJVMgPD0gYCVzJyIgJ3RydWUgZXhwcnN0cmluZykpCisgICAgICAgICAodCAobWVzc2Fn ZSAiJVMgPD0gYCVzJyIgcmVzdWx0IGV4cHJzdHJpbmcpKSkKKyAgICAgICAgcmVzdWx0KSkpKQog CiAoZGVmdW4gaGlmLXBhcnNlLW1hY3JvLWFyZ2xpc3QgKHN0cikKICAgIlBhcnNlIGFyZ3VtZW50 IGxpc3QgZm9ybWF0dGVkIGFzICcoIGFyZzEgWyAsIGFyZ25dIFsuLi5dICknLgpAQCAtMTUzMyw2 ICsxNzU4LDEwIEBAIEl0IGRvZXMgbm90IGRvIHRoZSB3b3JrIHRoYXQncyBwb2ludGxlc3MgdG8g cmVkbyBvbiBhIHJlY3Vyc2l2ZSBlbnRyeS4iCiAgIDs7IChtZXNzYWdlICJoaWRlLWlmZGVmLWd1 dHMiKQogICAoc2F2ZS1leGN1cnNpb24KICAgICAobGV0ICgoY2FzZS1mb2xkLXNlYXJjaCBuaWwp CisgICAgICAgICAgKGV4cGFuZC1oZWFkZXIgKGFuZCBoaWRlLWlmZGVmLWV4cGFuZC1yZWluY2x1 c2lvbi1wcm90ZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLW1h dGNoIGhpZGUtaWZkZWYtaGVhZGVyLXJlZ2V4cAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoYnVmZmVyLW5hbWUgKGN1cnJlbnQtYnVmZmVyKSkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoemVyb3AgaGlmLXJlY3Vyc2UtbGV2ZWwpKSkKICAgICAg ICAgICBtaW4gbWF4KQogICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgICAoc2V0ZiBt aW4gKHBvaW50KSkKQEAgLTE1NDAsNyArMTc2OSw3IEBAIEl0IGRvZXMgbm90IGRvIHRoZSB3b3Jr IHRoYXQncyBwb2ludGxlc3MgdG8gcmVkbyBvbiBhIHJlY3Vyc2l2ZSBlbnRyeS4iCiAgICAgICAg ICAgICAoc2V0ZiBtYXggKGhpZi1maW5kLWFueS1pZlgpKQogICAgICAgICAgICAgKGhpZi1hZGQt bmV3LWRlZmluZXMgbWluIG1heCkKICAgICAgICAgICAgIChpZiBtYXgKLSAgICAgICAgICAgICAg ICAoaGlmLXBvc3NpYmx5LWhpZGUpKQorICAgICAgICAgICAgICAgIChoaWYtcG9zc2libHktaGlk ZSBleHBhbmQtaGVhZGVyKSkKICAgICAgICAgICAgIChzZXRmIG1pbiAocG9pbnQpKQogICAgICAg ICAgICAgd2hpbGUgbWF4KSkpKQogCkBAIC0xNTg3LDE3ICsxODE2LDMwIEBAIEl0IGRvZXMgbm90 IGRvIHRoZSB3b3JrIHRoYXQncyBwb2ludGxlc3MgdG8gcmVkbyBvbiBhIHJlY3Vyc2l2ZSBlbnRy eS4iCiAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2ZhY2UgbmlsKQogICAgICAgICAg IChvdmVybGF5LXB1dCBvdmVybGF5ICdpbnZpc2libGUgJ2hpZGUtaWZkZWYpKSkpKSkKIAotKGRl ZnVuIGhpZGUtaWZkZWYtZGVmaW5lICh2YXIpCi0gICJEZWZpbmUgYSBWQVIgc28gdGhhdCAjaWZk ZWYgVkFSIHdvdWxkIGJlIGluY2x1ZGVkLiIKLSAgKGludGVyYWN0aXZlICJTRGVmaW5lIHdoYXQ/ ICIpCi0gIChoaWYtc2V0LXZhciB2YXIgMSkKKyhkZWZ1biBoaWRlLWlmZGVmLWRlZmluZSAodmFy IHZhbCkKKyAgIkRlZmluZSBhIFZBUiBvcHRpb25hbGx5IHRvIGEgc3BlY2lmaWMgdmFsdWUgVkFM IGludG8gYGhpZGUtaWZkZWYtZW52Jy4KK1RoaXMgYWxsb3dzICNpZmRlZiBWQVIgZnJvbSBiZWlu ZyBoaWRkZW4uIgorICAoaW50ZXJhY3RpdmUKKyAgIChsZXQqICgoZGVmYXVsdCAoc2F2ZS1leGN1 cnNpb24KKyAgICAgICAgICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAgICAg ICAgICAgICAgICAgIChjb25kICgobG9va2luZy1hdCBoaWYtaWZ4LWVsc2UtZW5kaWYtcmVnZXhw KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3J3YXJkLXdvcmQgMikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY3VycmVudC13b3JkICdzdHJpY3QpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwpKSkpCisg ICAgICAgICAodmFyIChyZWFkLW1pbmlidWZmZXIgIkRlZmluZSB3aGF0PyAiIGRlZmF1bHQpKQor ICAgICAgICAgKHZhbCAocmVhZC1mcm9tLW1pbmlidWZmZXIgKGZvcm1hdCAiU2V0ICVzIHRvPyAo ZGVmYXVsdCAxKTogIiB2YXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu aWwgbmlsIHQgbmlsICIxIikpKQorICAgICAobGlzdCB2YXIgdmFsKSkpCisgICAoaGlmLXNldC12 YXIgdmFyIChvciB2YWwgMSkpCisgICAobWVzc2FnZSAiJXMgc2V0IHRvICVzIiB2YXIgKG9yIHZh bCAxKSkKKyAgIChzbGVlcC1mb3IgMSkKICAgKGlmIGhpZGUtaWZkZWYtaGlkaW5nIChoaWRlLWlm ZGVmcykpKQogCiAoZGVmdW4gaGlmLXVuZGVmaW5lLXN5bWJvbCAodmFyKQogICAoc2V0cSBoaWRl LWlmZGVmLWVudgogICAgICAgICAoZGVsZXRlIChhc3NvYyB2YXIgaGlkZS1pZmRlZi1lbnYpIGhp ZGUtaWZkZWYtZW52KSkpCiAKLQogKGRlZnVuIGhpZGUtaWZkZWYtdW5kZWYgKHN0YXJ0IGVuZCkK ICAgIlVuZGVmaW5lIGEgVkFSIHNvIHRoYXQgI2lmZGVmIFZBUiB3b3VsZCBub3QgYmUgaW5jbHVk ZWQuIgogICAoaW50ZXJhY3RpdmUgInIiKQpAQCAtMTYxOCwxMSArMTg2MCwxNCBAQCBJdCBkb2Vz IG5vdCBkbyB0aGUgd29yayB0aGF0J3MgcG9pbnRsZXNzIHRvIHJlZG8gb24gYSByZWN1cnNpdmUg ZW50cnkuIgogQXNzdW1lIHRoYXQgZGVmaW5lZCBzeW1ib2xzIGhhdmUgYmVlbiBhZGRlZCB0byBg aGlkZS1pZmRlZi1lbnYnLgogVGhlIHRleHQgaGlkZGVuIGlzIHRoZSB0ZXh0IHRoYXQgd291bGQg bm90IGJlIGluY2x1ZGVkIGJ5IHRoZSBDCiBwcmVwcm9jZXNzb3IgaWYgaXQgd2VyZSBnaXZlbiB0 aGUgZmlsZSB3aXRoIHRob3NlIHN5bWJvbHMgZGVmaW5lZC4KK0lmIHRoaXMgY29tbWFuZCBpcyBw cmVmaXhlZCwgaGlkZSBhbHNvIHRoZSAjaWZkZWZzIHRoZW1zZWx2ZXMuCiAKIFR1cm4gb2ZmIGhp ZGluZyBieSBjYWxsaW5nIGBzaG93LWlmZGVmcycuIgogCiAgIChpbnRlcmFjdGl2ZSkKLSAgKG1l c3NhZ2UgIkhpZGluZy4uLiIpCisgIChsZXQgKChoaWRlLWlmZGVmLWxpbmVzIGN1cnJlbnQtcHJl Zml4LWFyZykpCisgICAgKG9yIG5vbXNnCisgICAgICAgIChtZXNzYWdlICJIaWRpbmcuLi4iKSkK ICAgKHNldHEgaGlmLW91dHNpZGUtcmVhZC1vbmx5IGJ1ZmZlci1yZWFkLW9ubHkpCiAgICh1bmxl c3MgaGlkZS1pZmRlZi1tb2RlIChoaWRlLWlmZGVmLW1vZGUgMSkpIDsgdHVybiBvbiBoaWRlLWlm ZGVmLW1vZGUKICAgKGlmIGhpZGUtaWZkZWYtaGlkaW5nCkBAIC0xNjMxLDcgKzE4NzYsNyBAQCBU dXJuIG9mZiBoaWRpbmcgYnkgY2FsbGluZyBgc2hvdy1pZmRlZnMnLiIKICAgKGhpZGUtaWZkZWYt Z3V0cykKICAgKHNldHEgYnVmZmVyLXJlYWQtb25seSAob3IgaGlkZS1pZmRlZi1yZWFkLW9ubHkg aGlmLW91dHNpZGUtcmVhZC1vbmx5KSkKICAgKG9yIG5vbXNnCi0gICAgICAobWVzc2FnZSAiSGlk aW5nIGRvbmUiKSkpCisgICAgICAgIChtZXNzYWdlICJIaWRpbmcgZG9uZSIpKSkpCiAKIAogKGRl ZnVuIHNob3ctaWZkZWZzICgpCkBAIC0xNjYzLDkgKzE5MDgsMTUgQEAgUmV0dXJuIGFzIChUT1Ag LiBCT1RUT00pIHRoZSBleHRlbnQgb2YgaWZkZWYgYmxvY2suIgogICAgICAgICAgICAgICAobWlu IG1heC1ib3R0b20gKDEtIChwb2ludCkpKSkpKSkKIAogCi0oZGVmdW4gaGlkZS1pZmRlZi1ibG9j ayAoKQotICAiSGlkZSB0aGUgaWZkZWYgYmxvY2sgKHRydWUgb3IgZmFsc2UgcGFydCkgZW5jbG9z aW5nIG9yIGJlZm9yZSB0aGUgY3Vyc29yLiIKLSAgKGludGVyYWN0aXZlKQorKGRlZnVuIGhpZGUt aWZkZWYtYmxvY2sgKCZvcHRpb25hbCBzdGFydCBlbmQpCisgICJIaWRlIHRoZSBpZmRlZiBibG9j ayAodHJ1ZSBvciBmYWxzZSBwYXJ0KSBlbmNsb3Npbmcgb3IgYmVmb3JlIHRoZSBjdXJzb3IuCitJ ZiBwcmVmaXhlZCwgaXQgd2lsbCBhbHNvIGhpZGUgI2lmZGVmcyB0aGVtc2VsdmVzLiIKKyAgKGlu dGVyYWN0aXZlICJyIikKKyAgKGxldCAoKGhpZGUtaWZkZWYtbGluZXMgY3VycmVudC1wcmVmaXgt YXJnKSkKKyAgICAoaWYgbWFyay1hY3RpdmUKKyAgICAgICAgKGxldCAoKGhpZi1yZWN1cnNlLWxl dmVsICgxKyBoaWYtcmVjdXJzZS1sZXZlbCkpKQorICAgICAgICAgIChoaWYtcmVjdXJzZS1vbiBz dGFydCBlbmQgdCkKKyAgICAgICAgICAoc2V0cSBtYXJrLWFjdGl2ZSBuaWwpKQogICAgICAgKHVu bGVzcyBoaWRlLWlmZGVmLW1vZGUgKGhpZGUtaWZkZWYtbW9kZSAxKSkKICAgICAgIChsZXQgKCh0 b3AtYm90dG9tIChoaWYtZmluZC1pZmRlZi1ibG9jaykpKQogICAgICAgICAoaGlkZS1pZmRlZi1y ZWdpb24gKGNhciB0b3AtYm90dG9tKSAoY2RyIHRvcC1ib3R0b20pKQpAQCAtMTY3MywxMiArMTky NCwyNiBAQCBSZXR1cm4gYXMgKFRPUCAuIEJPVFRPTSkgdGhlIGV4dGVudCBvZiBpZmRlZiBibG9j ay4iCiAgICAgICAgICAgKGhpZi1oaWRlLWxpbmUgKGNhciB0b3AtYm90dG9tKSkKICAgICAgICAg ICAoaGlmLWhpZGUtbGluZSAoMSsgKGNkciB0b3AtYm90dG9tKSkpKQogICAgICAgICAoc2V0cSBo aWRlLWlmZGVmLWhpZGluZyB0KSkKLSAgKHNldHEgYnVmZmVyLXJlYWQtb25seSAob3IgaGlkZS1p ZmRlZi1yZWFkLW9ubHkgaGlmLW91dHNpZGUtcmVhZC1vbmx5KSkpCisgICAgICAoc2V0cSBidWZm ZXItcmVhZC1vbmx5CisgICAgICAgICAgICAob3IgaGlkZS1pZmRlZi1yZWFkLW9ubHkgaGlmLW91 dHNpZGUtcmVhZC1vbmx5KSkpKSkKIAotKGRlZnVuIHNob3ctaWZkZWYtYmxvY2sgKCkKKyhkZWZ1 biBzaG93LWlmZGVmLWJsb2NrICgmb3B0aW9uYWwgc3RhcnQgZW5kKQogICAiU2hvdyB0aGUgaWZk ZWYgYmxvY2sgKHRydWUgb3IgZmFsc2UgcGFydCkgZW5jbG9zaW5nIG9yIGJlZm9yZSB0aGUgY3Vy c29yLiIKLSAgKGludGVyYWN0aXZlKQotICAobGV0ICgodG9wLWJvdHRvbSAoaGlmLWZpbmQtaWZk ZWYtYmxvY2spKSkKKyAgKGludGVyYWN0aXZlICJyIikKKyAgKGlmIG1hcmstYWN0aXZlCisgICAg ICAocHJvZ24KKyAgICAgICAgKGRvbGlzdCAobyAob3ZlcmxheXMtaW4gc3RhcnQgZW5kKSkKKyAg ICAgICAgICAoaWYgKG92ZXJsYXktZ2V0IG8gJ2hpZGUtaWZkZWYpCisgICAgICAgICAgICAgIChk ZWxldGUtb3ZlcmxheSBvKSkpCisgICAgICAgIChzZXRxIG1hcmstYWN0aXZlIG5pbCkpCisgICAg KGxldCAoKHRvcC1ib3R0b20gKGNvbmRpdGlvbi1jYXNlIG5pbAorICAgICAgICAgICAgICAgICAg ICAgICAgICAoaGlmLWZpbmQtaWZkZWYtYmxvY2spCisgICAgICAgICAgICAgICAgICAgICAgICAo ZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICBuaWwpKSkKKyAgICAgICAgICAob3ZycyAo b3ZlcmxheXMtaW4gKG1heCAocG9pbnQtbWluKSAoMS0gKHBvaW50KSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChtaW4gKHBvaW50LW1heCkgKDErIChwb2ludCkpKSkpCisgICAgICAg ICAgKGRlbCBuaWwpKQorICAgICAgKGlmIHRvcC1ib3R0b20KICAgICAoaWYgaGlkZS1pZmRlZi1s aW5lcwogICAgICAgICAoaGlmLXNob3ctaWZkZWYtcmVnaW9uCiAgICAgICAgICAoc2F2ZS1leGN1 cnNpb24KQEAgLTE2ODYsNyArMTk1MSwxNSBAQCBSZXR1cm4gYXMgKFRPUCAuIEJPVFRPTSkgdGhl IGV4dGVudCBvZiBpZmRlZiBibG9jay4iCiAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAg ICAgICAgKGdvdG8tY2hhciAoMSsgKGNkciB0b3AtYm90dG9tKSkpCiAgICAgICAgICAgIChoaWYt ZW5kLW9mLWxpbmUpIChwb2ludCkpKQotICAgICAgKGhpZi1zaG93LWlmZGVmLXJlZ2lvbiAoMS0g KGNhciB0b3AtYm90dG9tKSkgKGNkciB0b3AtYm90dG9tKSkpKSkKKyAgICAgIChzZXRmIGRlbCAo aGlmLXNob3ctaWZkZWYtcmVnaW9uCisgICAgICAgICAgICAgICAgICgxLSAoY2FyIHRvcC1ib3R0 b20pKSAoY2RyIHRvcC1ib3R0b20pKSkpKQorICAgICAgKGlmIChub3QgKGFuZCB0b3AtYm90dG9t CisgICAgICAgICAgICAgICAgICAgIGRlbCkpCisgICAgICAgICAgKGRvbGlzdCAobyBvdnJzKQor ICAgICAgICAgICAgOzsoZG9saXN0IChvIChvdmVybGF5cy1pbiAoMS0gKHBvaW50KSkgKDErIChw b2ludCkpKSkKKyAgICAgICAgICAgIDs7ICAgKGlmIChvdmVybGF5LWdldCBvICdoaWRlLWlmZGVm KSAobWVzc2FnZSAiJVMiIG8pKSkKKyAgICAgICAgICAgIChpZiAob3ZlcmxheS1nZXQgbyAnaGlk ZS1pZmRlZikKKyAgICAgICAgICAgICAgICAoZGVsZXRlLW92ZXJsYXkgbykpKSkpKSkKIAogCiA7 OzsgIGRlZmluaXRpb24gYWxpc3Qgc3VwcG9ydAo= --047d7b10cfe1eded3404fccde862--