From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vladimir Nikishkin Subject: Re: Bug: org-babel-expand-noweb-references is very slow [9.1.9 (release_9.1.9-65-g5e4542 @ /usr/share/emacs/26.3/lisp/org/)] Date: Wed, 8 Jan 2020 10:18:51 +0800 Message-ID: References: <87v9sr7qpn.fsf@delllaptop.lockywolf.net> <87o8yjbc9g.fsf@nicolasgoaziou.fr> <87v9sp9ejl.fsf@nicolasgoaziou.fr> <87y2ujr198.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000325547059b9784a9" Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:53741) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ip0w9-0000Rx-Bi for emacs-orgmode@gnu.org; Tue, 07 Jan 2020 21:19:12 -0500 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]:35979) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ip0w6-0001MK-7b for emacs-orgmode@gnu.org; Tue, 07 Jan 2020 21:19:09 -0500 Received: by mail-ed1-x52a.google.com with SMTP id j17so1313578edp.3 for ; Tue, 07 Jan 2020 18:19:05 -0800 (PST) In-Reply-To: <87y2ujr198.fsf@nicolasgoaziou.fr> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Nicolas Goaziou , emacs-orgmode@gnu.org --000000000000325547059b9784a9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hm... I am attaching the file in which tangling is still slow. The file is quite big, but that alone doesn't seem to be the reason for slowliness (I tried adding 1M-long words in the random places of the previous mwe). You can see the result by C-c C-v C-v'ing the code block at the "Ramanujan numbers" heading. Below is the profiler report for C-c C-v C-v'ing.with the heaviest blocks expanded: - command-execute 52967 87% - call-interactively 52967 87% - funcall-interactively 52655 87% - org-babel-expand-src-block 52505 86% - org-babel-expand-noweb-references 52424 86% - org-babel-get-src-block-info 35019 57% - org-babel-params-from-properties 28142 46% - org-entry-get 27753 45% - org-entry-get-with-inheritance 27683 45% - org-up-heading-safe 26176 43% + org-back-to-heading 148 0% org-outline-level 73 0% + org--property-local-values 1318 2% + org-back-to-heading 19 0% org--property-global-value 6 0% member-ignore-case 22 0% + org-babel-parse-header-arguments 359 0% # 5 0% + org-src-coderef-format 2533 4% + org-element-context 2521 4% + org-babel--normalize-body 1082 1% + mapcar 473 0% + apply 212 0% org-element-property 5 0% - org-in-commented-heading-p 13928 23% - org-in-commented-heading-p 10418 17% - org-up-heading-safe 9136 15% org-outline-level 22 0% + org-back-to-heading 7 0% + org-in-commented-heading-p 1073 1% + org-heading-components 63 0% + org-before-first-heading-p 45 0% + org-up-heading-safe 3147 5% + org-heading-components 142 0% + org-before-first-heading-p 95 0% + org-babel-active-location-p 2594 4% + org-babel-ref-goto-headline-id 139 0% + # 1 0% + # 1 0% + org-edit-src-code 50 0% + org-babel-get-src-block-info 21 0% + execute-extended-command 138 0% + org-edit-src-exit 5 0% scroll-down-command 4 0% mouse-select-window 2 0% scroll-up-command 1 0% + byte-code 312 0% + ... 7409 12% + timer-event-handler 54 0% + mouse-fixup-help-message 35 0% + flyspell-post-command-hook 22 0% + redisplay_internal (C function) 16 0% + tooltip-show-help 4 0% undefined 2 0% =D0=B2=D1=82, 7 =D1=8F=D0=BD=D0=B2. 2020 =D0=B3. =D0=B2 18:48, Nicolas Goaz= iou : > > Hello, > > Vladimir Nikishkin writes: > > > Well, now I'm using org from org's own melpa (9.3.8), and it's still ve= ry > > slow. > > > > Is there something I'm missing? > > Possibly. With your initial ECM, pasted below for reference, and Org > 9.3.1, the last block expands in around one second here. > > --8<---------------cut here---------------start------------->8--- > * Noweb expansion > :PROPERTIES: > :header-args: :noweb yes > :END: > > Hello, everyone. > > The mwe would be like: > > #+begin_src scheme :exports both :results output :noweb-ref bug1 > #+end_src > > #+begin_src scheme :exports both :results output :noweb-ref bug2 > #+end_src > > #+begin_src scheme :exports both :results output :noweb-ref bug3 > #+end_src > > #+begin_src scheme :exports both :results output :noweb-ref bug4 > #+end_src > > #+begin_src scheme :exports both :results output :noweb-ref bug5 > #+end_src > > #+begin_src scheme :exports both :results output :noweb-ref bug6 > #+end_src > > #+begin_src scheme :exports both :results output :noweb-ref bug7 > #+end_src > > #+begin_src scheme :exports both :results output :noweb-ref bug8 > #+end_src > > #+begin_src scheme :exports both :results output > <> > <> > <> > <> > <> > <> > <> > <> > #+end_src > --8<---------------cut here---------------end--------------->8--- > > Regards, > > -- > Nicolas Goaziou --=20 Yours sincerely, Vladimir Nikishkin --000000000000325547059b9784a9 Content-Type: application/octet-stream; name="index.org" Content-Disposition: attachment; filename="index.org" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k54nztzu0 IyAtKi0gbW9kZTogb3JnOyBnZWlzZXItc2NoZW1lLWltcGxlbWVudGF0aW9uOiBjaGliaTsgIC0q LQojIFRpbWUtc3RhbXA6IDwyMDIwLTAxLTA3IDE4OjI0OjU0IGxvY2t5d29sZj4KIyBDcmVhdGVk ICAgOiBbMjAxOS0wOC0xOCBTdW4gMjA6MTFdCiMgQXV0aG9yICAgIDogbG9ja3l3b2xmIGdtYWls LmNvbQoKIytTVEFSVFVQOiBpbmxpbmVpbWFnZXMKIytTVEFSVFVQOiBsYXRleHByZXZpZXcKIytI VE1MX01BVEhKQVg6IGFsaWduOiBsZWZ0IGluZGVudDogNWVtIHRhZ3NpZGU6IGxlZnQgZm9udDog TmVvLUV1bGVyCiMrSFRNTF9NQVRISkFYOiBjYW5jZWwuanMgbm9FcnJvcnMuanMKIytPUFRJT05T OiB0ZXg6aW1hZ2VtYWdpY2sKCgoqIG5vd2ViICsgY29tbW9uCioqIFNvbWUgY29tbW9uIGNvZGUg YmxvY2tzCgoqKiBTZXR0aW5nIGNoaWJpIGFyZ3VtZW50cy4gREFOR0VST1VTICAgICAgICAgICAg ICAgICAgICAgICA6ZGFuZ2Vyb3VzOmVsaXNwOgoKIytiZWdpbl9zcmMgZWxpc3AgOmV4cG9ydCBi b3RoIDpyZXN1bHRzIHZhbHVlCiAgKHNldHEgZ2Vpc2VyLWNoaWJpLWV4dHJhLWNvbW1hbmQtbGlu ZS1wYXJhbWV0ZXJzCiAgICAgJygiLW0iICJjaGliaSIgCiAgICAgICAiLW0iICJzcmZpIDE1OSIg CiAgICAgICAiLW0iICJjaGliaSBhc3QiIAogICAgICAgIi1tIiAiY2hpYmkgdGltZSIgCiAgICAg ICAiLW0iICJzcmZpIDI3IiAKICAgICAgICItbSIgImNoaWJpIHByb2Nlc3MiIAogICAgICAgIi1t IiAic3JmaSA0MiIgCiAgICAgICAiLW0iICJzcmZpIDc4IiAKICAgICAgICItbSIgInNjaGVtZSBs aXN0IgogICAgICAgIi1tIiAic3JmaSAxOCIpKQogIChzZXRxIGdlaXNlci1jb25uZWN0aW9uLXRp bWVvdXQgKCogMiBnZWlzZXItY29ubmVjdGlvbi10aW1lb3V0KSkKIytlbmRfc3JjCgojK1JFU1VM VFM6CnwgLW0gfCBjaGliaSB8IC1tIHwgc3JmaSAxNTkgfCAtbSB8IGNoaWJpIGFzdCB8IC1tIHwg Y2hpYmkgdGltZSB8IC1tIHwgc3JmaSAyNyB8IC1tIHwgY2hpYmkgcHJvY2VzcyB8IC1tIHwgc3Jm aSA0MiB8IC1tIHwgc3JmaSA3OCB8IC1tIHwgc2NoZW1lIGxpc3QgfAoKIytuYW1lOiBjb21tb24K IytiZWdpbl9zcmMgc2NoZW1lIDpyZXN1bHRzIG91dHB1dCA6ZXhwb3J0c3Mgbm9uZQogIChpbXBv cnQgKGNoaWJpIGFzdCkpCiAgKGltcG9ydCAoY2hpYmkgc2hvdykpCiAgIChkZWZpbmUgKGRpc3Ag c2V4cCkKICAgICAoZGlzcGxheSBzZXhwKQogICAgIChuZXdsaW5lKSkKIytlbmRfc3JjCgojK1JF U1VMVFM6IGNvbW1vbgoKKiBTSUNQIFs1OSVdCjpQUk9QRVJUSUVTOgo6aGVhZGVyLWFyZ3M6IDpu b3dlYiB5ZXMKOkVORDoKCioqIFRPRE8gQ2hhcHRlciAxOiBCdWlsZGluZyBhYnN0cmFjdGlvbnMg d2l0aCBwcm9jZWR1cmVzIFs1Ny82MV0KKioqIFNuaXBwZXQKICMrQkVHSU5fU1JDIHNjaGVtZSA6 ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpzZXNzaW9uCiAgICgqICgrIDIgKCogNCA2KSkK ICAgICAgKCsgMyA1IDcpKQogIytFTkRfU1JDCgogIytSRVNVTFRTOgogOiAzOTAKCioqKiBUaG91 Z2h0CiBUcmVlIGFjY3VtdWxhdGlvbiBpcyB0aGUgcHJvY2VzcyBvZiBjb21wdXRpbmcgYSB0aGlu ZyBieSB0cmF2ZXJzaW5nIGEgdHJlZS4KCioqKiBET05FIEZpZ3VyZSAxLjEgVHJlZSByZXByZXNl bnRhdGlvbiwgc2hvd2luZyB0aGUgdmFsdWUgb2YgZWFjaCBzdWJjb21iaW5hdGlvbiA6Z3JhcGh2 aXo6cGxhbnR1bWw6CiAgICBDTE9TRUQ6IFsyMDE5LTA4LTIwIFR1ZSAxNDozNV0KIEZvciB0aGUg c2FrZSBvZiBwZWRhZ29naWNhbCBjbGFyaXR5LCBJIGhhdmUgZm9ybWF0dGVkIGl0IGFzIGEgcGlj dHVyZS4KICMrQkVHSU5fU1JDIHBsYW50dW1sIDpleHBvcnRzIGJvdGggOmZpbGUgZmlndXJlLTEt MS1tbS5wbmcKIEBzdGFydG1pbmRtYXAKIHNraW5wYXJhbSBtb25vY2hyb21lIHRydWUKICtfIDM5 MAogKytfICoKICsrXyAyNgogKysrXyArCiArKytfIDIKICsrK18gMjQKICsrKytfICoKICsrKytf IDQKICsrKytfIDYKICsrXyAxNQogKysrXyArCiArKytfIDMKICsrK18gNQogKysrXyA3CiBAZW5k bWluZG1hcAogIytFTkRfU1JDCgogIytSRVNVTFRTOgogW1tmaWxlOmZpZ3VyZS0xLTEtbW0ucG5n XV0KCiAjIFRoZW4gbmV4dCBsaW5lIGlzIHRoZSBzYW1lIGRpYWdyYW0gdmVyYm9zZSwgdXNpbmcg RE9ULgogIytiZWdpbl9zcmMgcGxhbnR1bWwgOmV4cG9ydHMgYm90aCA6ZmlsZSBmaWd1cmUtMS0x LWRvdC5wbmcKIEBzdGFydGRvdAogZ3JhcGggZyB7Cgkgbm9kZSBbc2hhcGU9cGxhaW50ZXh0XTsK CSBBMSBbbGFiZWw9IjM5MCJdOwoKCSBCMSBbbGFiZWw9IioiXTsKCSBCMiBbbGFiZWw9IjI2Il07 CgkgQjMgW2xhYmVsPSIxNSJdOwoKCSBDMSBbbGFiZWw9IisiXTsKCSBDMiBbbGFiZWw9IjIiXTsK CSBDMyBbbGFiZWw9IjI0Il07CgoJIEQxIFtsYWJlbD0iKiJdOwoJIEQyIFtsYWJlbD0iNCJdOwoJ IEQzIFtsYWJlbD0iNiJdOwoKCSBFMSBbbGFiZWw9IisiXTsKCSBFMiBbbGFiZWw9IjMiXTsKCSBF MyBbbGFiZWw9IjUiXTsKCSBFNCBbbGFiZWw9IjciXTsKCiAvLyBlZGdlcwoJIEExIC0tIEIxOwoJ IEExIC0tIEIyOwoJIEExIC0tIEIzOwoJCgkgQjIgLS0gQzE7CgkgQjIgLS0gQzI7CgkgQjIgLS0g QzM7CgoJIEMzIC0tIEQxOwoJIEMzIC0tIEQyOwoJIEMzIC0tIEQzOwoKCSBCMyAtLSBFMTsKCSBC MyAtLSBFMjsKCSBCMyAtLSBFMzsKCSBCMyAtLSBFNDsKCiAvLwlCMSAtPiBCMyBbbGFiZWw9Iihn IG8gZiknIiB0YWlscG9ydD1zIGhlYWRwb3J0PXNdOwoKCSB7IHJhbms9c2FtZTsgQTEgfQoJIHsg cmFuaz1zYW1lOyBCMSBCMiBCMyB9IAoJIHsgcmFuaz1zYW1lOyBDMSBDMiBDMyB9CgkgeyByYW5r PXNhbWU7IEQxIEQyIEQzIH0KCSB7IHJhbms9c2FtZTsgRTEgRTIgRTMgRTQgfQogfSAKIEBlbmRk b3QKICMrZW5kX3NyYyAKCiAjK1JFU1VMVFM6CiBbW2ZpbGU6ZmlndXJlLTEtMS1kb3QucG5nXV0K CioqKiBTbmlwcGV0CiMrbmFtZSBzcXVhcmUKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJv dGggOnJlc3VsdHMgdmFsdWUgOnNlc3Npb24KICAoZGVmaW5lIChzcXVhcmUgeCkgKCogeCB4KSkK ICAoZGVmaW5lIChzdW0tb2Ytc3F1YXJlcyB4IHkpCiAgICAoKyAoc3F1YXJlIHgpIChzcXVhcmUg eSkpKQogIChzdW0tb2Ytc3F1YXJlcyAzIDQpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IDI1Cgoq KiogRE9ORSBFeGVyY2lzZSAxLjEgSW50ZXJwcmV0ZXIgcmVzdWx0CiAgICBDTE9TRUQ6IFsyMDE5 LTA4LTIwIFR1ZSAxNDoyM10KICMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1 bHRzIG91dHB1dCA6c2Vzc2lvbgogICAoZGVmaW5lIChkaXNwIHNleHApCiAgICAgKGRpc3BsYXkg c2V4cCkKICAgICAobmV3bGluZSkpCiAgIChkaXNwIDEwKQogICAoZGlzcCAoKyAyIDMgNCkpCiAg IChkaXNwICgtIDkgMSkpCiAgIChkaXNwICgvIDYgMikpCiAgIChkaXNwICgrICgqIDIgNCkgKC0g NCA2KSkpCiAgIChkZWZpbmUgYSAzKQogICAoZGVmaW5lIGIgKCsgYSAxKSkKICAgKGRpc3AgKCsg YSBiICgqIGEgYikpKQogICAoZGlzcCAoPSBhIGIpKQogICAoZGlzcAogICAgKGlmIChhbmQgKD4g YiBhKSAoPCBiICgqIGEgYiApKSkKCWIKCWEpKQogICAoZGlzcCAoY29uZCAoKD0gYSA0KSA2KQoJ KCg9IGIgNCkgKCsgNiA3IGEpKQoJKGVsc2UgMjUpKSkKICAgKGRpc3AgKCsgMiAoaWYgKDwgYiBh KSBiIGEpKSkKICAgKGRpc3AgKCogKGNvbmQgKCg+IGEgYikgYSkKICAgICAgICAgICAgICAgKCg8 IGEgYikgYikKICAgICAgICAgICAgICAgKGVsc2UgLTEpKSAKICAgICAgICAgICAgKCsgYSAxKSkp CiAjK2VuZF9zcmMKCiAjK1JFU1VMVFM6CiAjK2JlZ2luX2V4YW1wbGUKIDEwCiA5CiA4CiAzCiA2 CiAxOQogI2YKIDQKIDE2CiA1CiAxNgogIytlbmRfZXhhbXBsZQoKKioqIERPTkUgRXhlcmNpc2Ug MS4yIFByZWZpeCBmb3JtCiAgICBDTE9TRUQ6IFsyMDE5LTA4LTIwIFR1ZSAxNDoyNV0KICMrYmVn aW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpzZXNzaW9uCiAoLyAo KyA1IDQgKC0gMiAoLSAzICgrIDYgKC8gNCA1KSkpKSkgKCogMyAoLSA2IDIpICgtIDIgNykpKQog IytlbmRfc3JjCgogIytSRVNVTFRTOgogOiAtMzcvMTUwCgoqKiogRE9ORSBFeGVyY2lzZSAxLjMg U3VtIG9mIHNxdWFyZXMKICAgIENMT1NFRDogWzIwMTktMDgtMjAgVHVlIDE0OjM1XQogIytiZWdp bl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOnNlc3Npb24KIChkZWZp bmUgKHN1bS1vZi1zcXVhcmVzIHggeSkKICAgKCsgKHNxdWFyZSB4KSAoc3F1YXJlIHkpKSkKIChp bXBvcnQgKHNyZmkgOTUpKQogKGRlZmluZSAoc3VtLW9mLXR3by1tYXggYSBiIGMpCiAgIChsZXQg KChudW1fbGlzdCAoc29ydCAobGlzdCBhIGIgYykgKGxhbWJkYSAoYSBiKSAoaWYgKD4gYSBiKSBh IGIpKSkpKQogICAgKHN1bS1vZi1zcXVhcmVzIChjYXIgbnVtX2xpc3QpIChjYWRyIG51bV9saXN0 KSkpKQogKHN1bS1vZi10d28tbWF4IDEgMiAzKQogIytlbmRfc3JjCgogIytSRVNVTFRTOgogOiAi UmVzdWx0IChleGNlcHRpb24pOiB7RXhjZXB0aW9uICMxOSB1c2VyIFwidW5kZWZpbmVkIHZhcmlh YmxlXCIgKHNvcnQpICM8cHJvY2VkdXJlIHN1bS1vZi10d28tbWF4PiAoI2YgLiA0MSl9XG5TdGFj ayB0cmFjZTpcbiAgY2FsbGVkIGZyb20gPGFub255bW91cz4gb24gbGluZSA4MTMgb2YgZmlsZSAv dXNyL2xpYjY0L2NoaWJpL2luaXQtNy5zY21cbiAgY2FsbGVkIGZyb20gPGFub255bW91cz4gb24g bGluZSAyODAgb2YgZmlsZSAvdXNyL2xpYjY0L2NoaWJpL2luaXQtNy5zY21cbiAgY2FsbGVkIGZy b20gPGFub255bW91cz4gb24gbGluZSAxMjAyIG9mIGZpbGUgL3Vzci9saWI2NC9jaGliaS9pbml0 LTcuc2NtXG4gIGNhbGxlZCBmcm9tIDxhbm9ueW1vdXM+IG9uIGxpbmUgODEzIG9mIGZpbGUgL3Vz ci9saWI2NC9jaGliaS9pbml0LTcuc2NtXG4gIGNhbGxlZCBmcm9tIHN1bS1vZi10d28tbWF4IG9u IGxpbmUgNDFcbiAgY2FsbGVkIGZyb20gPGFub255bW91cz4gb24gbGluZSA4MTMgb2YgZmlsZSAv dXNyL2xpYjY0L2NoaWJpL2luaXQtNy5zY21cbiAgY2FsbGVkIGZyb20gY2FsbC13aXRoLWN1cnJl bnQtY29udGludWF0aW9uIG9uIGxpbmUgODQwIG9mIGZpbGUgL3Vzci9saWI2NC9jaGliaS9pbml0 LTcuc2NtXG4gIGNhbGxlZCBmcm9tIDxhbm9ueW1vdXM+IG9uIGxpbmUgODEzIG9mIGZpbGUgL3Vz ci9saWI2NC9jaGliaS9pbml0LTcuc2NtXG4gIGNhbGxlZCBmcm9tIDxhbm9ueW1vdXM+IG9uIGxp bmUgMjgwIG9mIGZpbGUgL3Vzci9saWI2NC9jaGliaS9pbml0LTcuc2NtXG4gIGNhbGxlZCBmcm9t IDxhbm9ueW1vdXM+IG9uIGxpbmUgMjgwIG9mIGZpbGUgL3Vzci9saWI2NC9jaGliaS9pbml0LTcu c2NtXG4gIGNhbGxlZCBmcm9tIDxhbm9ueW1vdXM+IG9uIGxpbmUgODEzIG9mIGZpbGUgL3Vzci9s aWI2NC9jaGliaS9pbml0LTcuc2NtXG4gIGNhbGxlZCBmcm9tIGNhbGwtd2l0aC1jdXJyZW50LWNv bnRpbnVhdGlvbiBvbiBsaW5lIDg0MCBvZiBmaWxlIC91c3IvbGliNjQvY2hpYmkvaW5pdC03LnNj bVxuICBjYWxsZWQgZnJvbSBnZWlzZXI6ZXZhbCBvbiBsaW5lIDI1IG9mIGZpbGUgL3Vzci9saWI2 NC9jaGliaS9zY2hlbWUvbWlzYy1tYWNyb3Muc2NtXG4iCgoqKiogRE9ORSBFeGVyY2lzZSAxLjQg Q29tcG91bmQgZXhwcmVzc2lvbnMKICAgIENMT1NFRDogWzIwMTktMDgtMjAgVHVlIDE0OjM5XQog IytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpzZXNzaW9u CiAoZGVmaW5lIChhLXBsdXMtYWJzLWIgYSBiKQogICAoKGlmICg+IGIgMCkgKyAtKSBhIGIpKQog KGRpc3AgKGEtcGx1cy1hYnMtYiAgMyA0KSkKIChkaXNwIChhLXBsdXMtYWJzLWIgIDMgLTQpKQog IytlbmRfc3JjCgogIytSRVNVTFRTOgogOiA3CiA6IDcKCioqKiBET05FIEV4ZXJjaXNlIDEuNSBC ZW4ncyB0ZXN0CiAgICBDTE9TRUQ6IFsyMDE5LTA4LTIwIFR1ZSAxNDo1MF0KICMrYmVnaW5fc3Jj IHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCiAoZGVmaW5lIChwKSAocCkpCiAo ZGVmaW5lICh0ZXN0IHggeSkKICAgKGlmICg9IHggMCkgMCB5KSkKICh0ZXN0IDAgKHApKQogIytl bmRfc3JjCgogT24gbXkgaW50ZXJwcmV0ZXIgdGhpcyBjb2RlIGdvZXMgaW50byBhbiBpbmZpbml0 ZSByZWN1cnNpb24sIHdoaWNoCiBtYWtlcyBzZW5zZSwgSSBndWVzcywgc2luY2UgdGhlIHNlY29u ZCBhcmd1bWVudCB0byAodGVzdCkgaXMgZXZhbHVhdGVkCiBiZWZvcmUgZXhlY3V0aW5nICh0ZXN0 KS4gSG93ZXZlciwgaWYgd2Ugb25seSBzdWJzdGl0dXRlIC9wLyBpbnRvIHRoZQogYXBwbGljYXRp b24gb2YgdGVzdCBhbmQgdHJ5IHRvIHRyYXZlcnNlIHRoZSB0cmVlIGRlcHRoLWZpcnN0LCB0aGlz CiBjb2RlIHNob3VsZCBiZSBhYmxlIHRvIHRlcm1pbmF0ZSBzdWNjZXNzZnVsbHk/CgoqKiogRE9O RSBFeGVyY2lzZSAxLjYgSWYgaXMgYSBzcGVjaWFsIGZvcm0KICAgIENMT1NFRDogWzIwMTktMDgt MjEgV2VkIDE0OjA1XQpUaGUgcHJvYmxlbSB3aXRoIHRoaXMgQWx5c3NhJ3MgKG5ldy1pZikgaXMg dGhhdCBib3RoIGFyZ3VtZW50cyB3b3VsZApiZSBjb21wdXRlZCwgc28gdGhpcyAobmV3LWlmKSB3 b3VsZCBiZSBlaXRoZXIgdmVyeSBpbmVmZmljaWVudCBvciBldmVuCm5vdCB3b3JraW5nIGF0IGFs bCBpbiB0aGUgY2FzZSB3aGVuIG9uZSBvZiB0aGUgYXJndW1lbnRzIGlzCmluZmVhc2libGUuCkNv bnNpZGVyOgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0 IDpzZXNzaW9uCjw8Y29tbW9uPj4KKGRlZmluZSAobmV3LWlmIHByZWRpY2F0ZSB0aGVuLWNsYXVz ZSBlbHNlLWNsYXVzZSkKICAoY29uZCAocHJlZGljYXRlIHRoZW4tY2xhdXNlKQogICAgICAgIChl bHNlIGVsc2UtY2xhdXNlKSkpCihkZWZpbmUgYSAxKQooZGVmaW5lIGIgMCkKKGRpc3AgKGlmIChu b3QgKD0gYiAwKSkgKC8gYSBiKSBhKSkKKG5ldy1pZiAobm90ICg9IGIgMCkpICgvIGEgYikgYSkK IytlbmRfc3JjCgojK1JFU1VMVFM6CjogMQo6IHtFeGNlcHRpb24gIzE5IHVzZXIgImRpdmlkZSBi eSB6ZXJvIiAoKSAjPHByb2NlZHVyZSAjZj4gKCNmIC4gMTI3KX0KCkhvd2V2ZXIsIHRoaXMgaXNz dWUgY2FuIGJlIHNvbHZlZCB1c2luZyBzY2hlbWUgbWFjcm9zLgoKIytiZWdpbl9zcmMgc2NoZW1l IDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpzZXNzaW9uCiAgPDxjb21tb24+PgogIChk ZWZpbmUtc3ludGF4IG5ldy1pZgogICAgKHN5bnRheC1ydWxlcyAoKQogICAgICAoIChuZXctaWYg cHJlZGljYXRlIHRoZW4tY2xhdXNlIGVsc2UtY2xhdXNlKQoJKGNvbmQgKHByZWRpY2F0ZSB0aGVu LWNsYXVzZSkKCSAgICAgIChlbHNlIGVsc2UtY2xhdXNlKSkKICAgICAgKQogICAgKQogICkKICAo ZGVmaW5lIGEgMSkKICAoZGVmaW5lIGIgMCkKICAoZGlzcCAoaWYgKG5vdCAoPSBiIDApKSAoLyBh IGIpIGEpKQogIChkaXNwIChuZXctaWYgKG5vdCAoPSBiIDApKSAoLyBhIGIpIGEpKQoKIytlbmRf c3JjCgojK1JFU1VMVFM6CjogMQo6IDEKClRoZSBjb2RlIGFib3ZlIHdvcmtzIGFzIGV4cGVjdGVk LCBiZWNhdXNlIHRoZSBtYWNybyBkb2VzIG5vdCBldmFsdWF0ZQppdHMgYXJndW1lbnRzLCBhbmQg KGNvbmQpIGlzIGEgc3BlY2lhbCBmb3JtLgoKKioqIERPTkUgRXhlcmNpc2UgMS43IEdvb2QgZW5v dWdoPwogICAgQ0xPU0VEOiBbMjAxOS0wOC0yMiBUaHUgMTI6NTJdClRoaXMgZXhlcmNpc2UgaXMg YSB2ZXJ5IG1pc2xlYWRpbmcgb25lLiBPbiB0aGUgZmlyc3QgZ2xhbmNlIGlzIHNlZW1zCnRoYXQg dGhpcyBpcyBqdXN0IGFib3V0IGZvcm11bGF0aW5nIGEgZ29vZCBjcml0ZXJpb24uIE1ha2Ugbm8g bWlzdGFrZSwKcHJhY3RpY2FsbHkgc29sdmluZyB0aGlzIHRhc2sgbWVhbnMgcmVhbGx5IHdyaXRp bmcgYWxsIHRoaXMgY29kZQpjYXJlZnVsbHkuCgpUaGUgZnVuY3Rpb24gd2UgYXJlIGludGVyZXN0 ZWQgaW4gaXM6ClxiZWdpbntlcXVhdGlvbn0KXGxhYmVse2VxOjV9CmYoeCkgPSBcc3FydHt4fQpc ZW5ke2VxdWF0aW9ufQoKVGhlIGNvZGUgZ2l2ZW4gaW4gdGhlIGNoYXB0ZXIgYmVmb3JlIGlzIGVx dWl2YWxlbnQgdG8gdGhlIGZvbGxvd2luZwpOZXd0b24ncyBtZXRob2QgZm9ybXVsYSwgd2hlcmUg JGZfaSQgZGVub3RlcyB0aGUgbmV4dCBndWVzczoKXGJlZ2lue2VxdWF0aW9ufQpcbGFiZWx7ZXE6 MX0gCmZfe2krMX1fe30gPSBcZnJhY3tmX2kgKyBcZnJhY3t4fXtmX2l9fXsyfQpcZW5ke2VxdWF0 aW9ufQoKSG93IG9uIEVhcnRoIGRvZXMgdGhpcyBmb3JtdWxhIGV2ZW4gYXBwZWFyPyBMZXQncyBy ZW1lbWJlciBzb21lCm1hdGhlbWF0aWNzLCBuYW1lbHksIHRoZSBUYXlsb3Igc2VyaWVzICh2YXJp YWJsZXMgdW5ib3VuZCk6ClxiZWdpbntlcXVhdGlvbn0KXGxhYmVse2VxOjJ9CiBmKHgpID0gZih4 X3swfV97fSkgKyBmJyh4X3swfSkoeC14X3swfSkgKyBvKHgpClxlbmR7ZXF1YXRpb259CgpMZXQg dXMgY2FsbCBgdHJ1ZScgdmFsdWUgb2YgJFxzcXJ0e3h9PWYkLiBMZXQgdXMgY2FsbCBvdXIgZmly c3QgZ3Vlc3MKJGZfezB9JC4gV2hhdCBpcyB0aGUgdmFsdWUgb2YgdGhlIGRpZmZlcmVuY2UgKGVy cm9yKSBiZXR3ZWVuIHRoZW0/CkNsZWFybHksICRmLWZfMCQuIFdlbGwsIHRoZSBwcm9ibGVtIGlz IOKAlCB3ZSBkb24ndCBrbm93ICRmJC4gQnV0IHdlIGRvCmtub3cgJGZeMiQuIFRoZXJlZm9yZSAk Zl4yLWZeMl8wJCBpcyBhIG51bWJlciB3ZSBrbm93LiBXaGF0IHdpbGwgYmUgdGhlCmVycm9yIG9u IHRoZSBuZXh0IHN0ZXAgb2YgdGhlIGFsZ29yaXRobT8gTGV0J3MgZmluZCAkZl8xJCBhcwokZl8x PWZfMCtcZGVsdGEkLiBJZiAkXGRlbHRhJCBpcyBub3QgdG9vIGJpZywgd2UgY2FuIHVzZSB0aGUg VGF5bG9yCmV4cGFuc2lvbiBmcm9tIHJlZjplcToxICRcZGVsdGEkLgpcYmVnaW57ZXF1YXRpb259 ClxsYWJlbHtlcTo4fQpFID0gZl4yIC0gZl8wXjIgPSBmXjIgLSAoZl8wICsgXGRlbHRhKV4yIFxh cHByb3ggZl4yIC0gZl8wXjIgLSAyZl8wXGRlbHRhClxlbmR7ZXF1YXRpb259CgoKQmUgY2FyZWZ1 bC4gV2hhdCBJIGV4cGFuZGVkIGhlcmUgaXMgbm90IHRoZSBmdW5jdGlvbiB2YWx1ZS4gSXQgaXMg dGhlCl9lcnJvcl8gdmFsdWUuIE5vdywgY2xlYXJseSB3ZSB3YW50IG91ciBlcnJvciB0byBiZSBh cyBzbWFsbCBhcwpwb3NzaWJsZSwgZGVzaXJhYmx5IGFzIGxpdHRsZSBhcyBtYWNoaW5lIHByZWNp c2lvbiB3b3VsZCBhbGxvdy4gU28KYXNzdW1pbmcgJEU9MCQsIHdlIGdldCBhbiBlcXVhdGlvbiB0 byBzb2x2ZToKXGJlZ2lue2FsaWdufQpcbGFiZWx7ZXE6OX0KRT0wIFxsZWZ0cmlnaHRhcnJvdyYg Zl4yLWZfMF4yLTJmXzBcZGVsdGE9MCBcXApcZGVsdGEgPSYgXGZyYWN7Zl8wXjIgLWZeMiB9ezJm XzB9ClxlbmR7YWxpZ259CgpSZW1lbWJlciB0aG91Z2ggdGhhdCB3ZSBkb24ndCBuZWVkIGp1c3Qg JFxkZWx0YSQgaGVyZS4gV2UgYWN0dWFsbHkgbmVlZAokZl8xJC4gQnV0ICRmXzEkIGlzIGp1c3Qg JGZfMCtcZGVsdGEkLgpcYmVnaW57YWxpZ259ClxsYWJlbHtlcToxMH0KZl8xID0gXGZyYWN7Zl4y IC0gZl8wXjJ9ezJmXzB9ICsgZl8wClxlbmR7YWxpZ259Ck5vdyBpZiB5b3UgcmVhcnJhbmdlIHRo aXMgZm9ybXVsYSwgeW91IHdpbGwgZ2V0IGV4YWN0bHkgdGhlIGZvcm11bGEKcmVmOmVxOjEuCgpU aGUgY29kZSBiZWxvdyBpcyBjb3BpZWQgZnJvbSBTSUNQIHZlcmJhdGltIGFuZCBpbXBsZW1lbnRz IHRoZQphbGdvcml0aG0gYWJvdmUuCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6 cmVzdWx0cyB2YWx1ZSA6c2Vzc2lvbiA6bm93ZWItcmVmIHNpbXBsZS1zcXJ0LWl0ZXIKICAoZGVm aW5lIChzcXJ0LWl0ZXIgZ3Vlc3MgeCkKICAgIChpZiAoZ29vZC1lbm91Z2g/IGd1ZXNzIHgpCgln dWVzcwoJKHNxcnQtaXRlciAoaW1wcm92ZSBndWVzcyB4KSB4KSkpCiMrZW5kX3NyYwoKIytSRVNV TFRTOgo6ICM8dW5kZWY+CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0 cyB2YWx1ZSA6bm93ZWItcmVmIHNxdWFyZS1pbXByb3ZlCiAgKGRlZmluZSAoaW1wcm92ZSBndWVz cyB4KQogICAgKGF2ZXJhZ2UgZ3Vlc3MgKC8geCBndWVzcykpKQojK2VuZF9zcmMKCiMrYmVnaW5f c3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpzZXNzaW9uIDpub3dlYi1y ZWYgc2ltcGxlLW5ld3Rvbi1yZWN1cnNpb24KICAoZGVmaW5lIChnb29kLWVub3VnaD8gZ3Vlc3Mg eCkKICAgICg8IChhYnMgKC0gKHNxdWFyZSBndWVzcykgeCkpIDAuMDAxKSkKICA8PHNxdWFyZS1p bXByb3ZlPj4KICAoZGVmaW5lIChhdmVyYWdlIHggeSkKICAgICgvICgrIHggeSkgMikpCiAgKGRl ZmluZSAoc3FydCB4KQogICAgKHNxcnQtaXRlciAxLjAgeCkpCgojK2VuZF9zcmMKCiMrbmFtZSBz aW1wbGUtbmV3dG9uCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZh bHVlIDpzZXNzaW9uCiAgPDxjb21tb24+PgogIDw8c3F1YXJlPj4KICA8PHNpbXBsZS1zcXJ0LWl0 ZXI+PgogIDw8c2ltcGxlLW5ld3Rvbi1yZWN1cnNpb24+PgogIChzcXJ0IDkpCiMrZW5kX3NyYwoK IytSRVNVTFRTOgo6IDMuMDAwMDkxNTU0MTMxMzgKCkFuIGV4YW1wbGUgb2YgaG93IHRoaXMgZmFp bHMgb24gc21hbGwgbnVtYmVyczoKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpy ZXN1bHRzIHZhbHVlCjw8c2ltcGxlLW5ld3Rvbj4+CihzcXVhcmUgKHNxcnQgMC4wMDA0KSkKIytl bmRfc3JjCgojK1JFU1VMVFM6CjogMC4wMDEyNTMyMjI0ODU3MzMxNzY2CgpBbiBleGFtcGxlIG9m IHdoeSB0aGlzIGZhaWxzIG9uIGJpZyBudW1iZXJzIEkgZGlkbid0IG1hbmFnZSB0bwpjcmFmdC4g UGVyaGFwcyBjaGliaS1zY2hlbWUgaGFzIHNvbWUgY2xldmVyIHdheSB0byBkZWFsIHdpdGggcm91 bmRpbmc/CkFueXdheSDigJQgaGVyZSBpcyB0aGUgY29kZToKIytiZWdpbl9zcmMgc2NoZW1lIDpl eHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUKICA8PHNpbXBsZS1uZXd0b24+PgogIChzcXVhcmUg KHNxcnQgOTk5OTk5OTk5OS4wKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogOTk5OTk5OTk5OS4w CgpXaHkgZXhhY3RseSB0aGlzIGlzIG5vdCB2ZXJ5IGdvb2QgYWxnb3JpdGhtcyBpcyBhIGdvb2Qg cXVlc3Rpb24uIFRoZQpkZXJpdmF0aXZlIG9mIHRoZSBzcXVhcmUgaXMgd2VsbC1kZWZpbmVkIG5l YXIgdGhlIDAsIGFsdGhvdWdoIHRoZQpkZXJpdmF0aXZlIG9mIHRoZSBzcXVhcmUgcm9vdCBpcyBu b3QuIFRoZXJlZm9yZSwgdGhlIGVxdWF0aW9uIHJlZjplcTo4CmJlY29tZSB2ZXJ5IGltcHJlY2lz ZS4gQXMgd2Ugc2VlLCBiaWcgbnVtYmVyIHNlZW0gdG8gYmUgd29ya2luZyBmaW5lCmluIG15IHNj aGVtZSBpbXBsZW1lbnRhdGlvbi4KCkxldCB1cyB3cml0ZSBhIGJldHRlciBzcXJ0LWl0ZXI/LgoK IytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJl ZiBiZXR0ZXItc3FydC1pdGVyCiAgKGRlZmluZSAoc3FydC1pdGVyIGd1ZXNzIHgpCiAgIChsZXQg KChiZXR0ZXItZ3Vlc3MgKGltcHJvdmUgZ3Vlc3MgeCkpKQogICAgKGlmIChnb29kLWVub3VnaD8g Z3Vlc3MgKHNxdWFyZSBiZXR0ZXItZ3Vlc3MpKQoJYmV0dGVyLWd1ZXNzCgkoc3FydC1pdGVyIGJl dHRlci1ndWVzcyB4KSkpKQojK2VuZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBi b3RoIDpyZXN1bHRzIHZhbHVlIDpub3dlYi1yZWYgYmV0dGVyLW5ld3Rvbgo8PGNvbW1vbj4+Cjw8 c3F1YXJlPj4KPDxiZXR0ZXItc3FydC1pdGVyPj4KPDxzaW1wbGUtbmV3dG9uLXJlY3Vyc2lvbj4+ CiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICM8dW5kZWY+CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4 cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZQo8PGJldHRlci1uZXd0b24+Pgooc3F1YXJlIChzcXJ0 IDAuMDAwNCkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IDAuMDAwNTQ1MjIzMzM3OTI0NDcxNQoK V29ya3MgZmFzdGVyIGFuZCBnaXZlcyBhIGJldHRlciByZXN1bHQuIFNlZW1pbmdseS4gUUVEW2Zu OjFdLgoKKioqIERPTkUgRXhlcmNpc2UgMS44IE5ld3RvbidzIG1ldGhvZAogICAgQ0xPU0VEOiBb MjAxOS0wOC0yMiBUaHUgMTc6MzZdCgpUaGlzIGV4ZXJjaXNlIGlzIG5vdCB2ZXJ5IGhhcmQuIFRo ZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUKYGltcHJvdmUnIGZ1bmN0aW9uIGlzIG5vdCBk ZXJpdmVkIGZyb20gYSBkZXJpdmF0aXZlIG9mIGEgc3F1YXJlIGJ1dApyYXRoZXIgZnJvbSBhIGRl cml2YXRpdmUgb2YgYSBjdWJlLgoKCiMrbmFtZTogY3ViZS1pbXByb3ZlCiMrYmVnaW5fc3JjIHNj aGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCihkZWZpbmUgKGN1YmUtaW1wcm92ZSBn dWVzcyB4KQogICAgKC8gKCsgKC8geCAoKiBndWVzcyBndWVzcykpICgqIDIgZ3Vlc3MpKSAzKSkK IytlbmRfc3JjCgojK1JFU1VMVFM6IGN1YmUtaW1wcm92ZQo6ICM8dW5kZWY+CgojK25hbWU6IGN1 YmUtZ29vZC1lbm91Z2gKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMg dmFsdWUKKGRlZmluZSAoY3ViZS1nb29kLWVub3VnaD8gZ3Vlc3MgeCkKICAoPCAoYWJzICgtIChj dWJlIGd1ZXNzKSB4KSkgMC4wMDEpKQojK2VuZF9zcmMKCiMrUkVTVUxUUzogY3ViZS1nb29kLWVu b3VnaAo6ICM8dW5kZWY+CgojK25hbWU6IGN1YmUtcm9vdC1pdGVyCiMrYmVnaW5fc3JjIHNjaGVt ZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCiAgKGRlZmluZSAoY3ViZS1yb290LWl0ZXIg Z3Vlc3MgeCkKICAgIChsZXQgKChiZXR0ZXItZ3Vlc3MgKGN1YmUtaW1wcm92ZSBndWVzcyB4KSkp CiAgICAgIChkaXNwIGJldHRlci1ndWVzcykKICAgICAgKGlmIChjdWJlLWdvb2QtZW5vdWdoPyBi ZXR0ZXItZ3Vlc3MgKGN1YmUgZ3Vlc3MpKQoJICBiZXR0ZXItZ3Vlc3MKCSAgKGN1YmUtcm9vdC1p dGVyIGJldHRlci1ndWVzcyB4KSkpKQojK2VuZF9zcmMKCiMrUkVTVUxUUzogY3ViZS1yb290LWl0 ZXIKOiAjPHVuZGVmPgoKIytuYW1lOiBjdWJlLXNpbXBsZQojK2JlZ2luX3NyYyBzY2hlbWUgOmV4 cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKPDxjb21tb24+Pgo8PGN1YmU+Pgo8PGN1YmUtaW1w cm92ZT4+Cjw8Y3ViZS1nb29kLWVub3VnaD4+Cjw8Y3ViZS1yb290LWl0ZXI+PgooY3ViZS1yb290 LWl0ZXIgMS4wIDI3LjApCiMrZW5kX3NyYwoKIytSRVNVTFRTOiBjdWJlLXNpbXBsZQo6IDkuNjY2 NjY2NjY2NjY2NjY2CjogNi41NDA3NTgzNTY0NTM5NTYKOiA0LjU3MDg3Njc3ODU3ODcwNwo6IDMu NDc4MDE5MjMzMzg2Nzk2Mwo6IDMuMDYyNjg5MTA4NjI3NTM2NQo6IDMuMDAxMjc0NDA2NTA2MTc1 CjogMy4wMDAwMDA1NDEwNjQxNzY2CjogMy4wMDAwMDAwMDAwMDAwOTc3CgoqKiogVE9ETyBGaWd1 cmUgMS4yIFByb2NlZHVyYWwgZGVjb21wb3NpdGlvbiBvZiB0aGUgc3FydCBwcm9ncmFtClRPRE8K KioqIFRPRE8gRmlndXJlIDEuMyBBIGxpbmVhciByZWN1cnNpdmUgcHJvY2VzcyBmb3IgY29tcHV0 aW5nIFwoNiFcKS4KVE9ETwoqKiogVE9ETyBGaWd1cmUgMS40IEEgbGluZWFyIGl0ZXJhdGl2ZSBw cm9jZXNzIGZvciBjb21wdXRpbmcgXCg2IVwpLgpUT0RPCioqKiBET05FIEV4ZXJjaXNlIDEuOSBJ dGVyYXRpdmUgb3IgcmVjdXJzaXZlPyA6bWFjcm86ZXJfbWFjcm9fdHJhbnNmb3JtZXI6Y2hpY2tl bjoKICAgIENMT1NFRDogWzIwMTktMDgtMjkgVGh1IDE1OjE0XQoKSSBkaWRuJ3QgZmluZCAoaW5j KSBhbmQgKGRlYykgaW4gbXkgc2NoZW1lLCBzbyBJIGRlZmluZSB0aGVtIG15c2VsZi4KCkkgc3Rp bGwgZG9uJ3Qgd2FudCB0byBvdmVybG9hZCB0aGUgIisiIGFuZCAiLSIgc3ltYm9scywgc28gSSB3 aWxsIGNhbGwKdGhlbSBgcGx1cycgYW5kIGBtaW51cycuCgojK25hbWU6IGV4YW1wbGUtc3Vic3Rp dHV0aW9uLWZpcnN0CiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZh bHVlCiAgKGRlZmluZSAoaW5jIHgpCiAgICAoKyAxIHgpKQogIChkZWZpbmUgKGRlYyB4KQogICAg KC0geCAxKSkKICAoZGVmaW5lLXN5bnRheCBwbHVzRgogICAgKGVyLW1hY3JvLXRyYW5zZm9ybWVy CiAgICAgKGxhbWJkYSAoZm9ybSByZW5hbWUgY29tcGFyZT8pCiAgICAgICAobGV0ICgoYSAoY2Fk ciBmb3JtKSkKCSAgICAgKGIgKGNhZGRyIGZvcm0pKSkKbgkgKGlmICg9IGEgMCkgYiBgKGluYyAo cGx1c0YgLChkZWMgYSkgLGIpKSkpKSkpCiAgKG1hY3JvZXhwYW5kICcocGx1c0YgNCA1KSkKIytl bmRfc3JjCgojK1JFU1VMVFM6IGV4YW1wbGUtc3Vic3RpdHV0aW9uLWZpcnN0CnwgaW5jIHwgKGlu YyAoaW5jIChpbmMgNSkpKSB8CgpXZSBjYW4gc2VlIHRoYXQgdGhlIG1hY3JvIGV4cGFuZGVyIGhh cyBleHBhbmRlZCB0aGUgY29tcHV0YXRpb24gaW4gdG8KYSB0cmVlIG9mIGxlbmd0aCA0LiBUaGlz IGhhcHBlbnMgYmVjYXVzZSB0aGUgYWxnb3JpdGhtIGlzIGdlbnVpbmVseQpyZWN1cnNpdmUsIHRo ZSByZXR1cm4gdmFsdWUgaXMgbm90IHByb2R1Y2VkIGJ5IGEgY2FsbCB0byBpdHNlbGYsIGFuZAp0 aGVyZWZvcmUgcmVjdXJzaW9uIGNhbm5vdCBiZSB0YWlsLW9wdGltaXplZC4gCgojK25hbWU6IGV4 YW1wbGUtc3Vic3RpdHV0aW9uLXNlY29uZAojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90 aCA6cmVzdWx0cyB2YWx1ZQogIChkZWZpbmUgKGluYyB4KQogICAgKCsgMSB4KSkKICAoZGVmaW5l IChkZWMgeCkKICAgICgtIHggMSkpCiAgKGRlZmluZS1zeW50YXggcGx1c1MKICAgIChlci1tYWNy by10cmFuc2Zvcm1lcgogICAgIChsYW1iZGEgKGZvcm0gcmVuYW1lIGNvbXBhcmU/KQogICAgICAg KGxldCAoKGEgKGNhZHIgZm9ybSkpCgkgICAgIChiIChjYWRkciBmb3JtKSkpCgkgKGlmICg9IGEg MCkgYiBgKHBsdXNTICwoZGVjIGEpICwoaW5jIGIpKSkpKSkpCiAgKG1hY3JvZXhwYW5kICcocGx1 c1MgNCA1KSkKIytlbmRfc3JjCgojK1JFU1VMVFM6IGV4YW1wbGUtc3Vic3RpdHV0aW9uLXNlY29u ZAo6IDkKCgpXZSBjYW4gY2xlYXJseSBzZWUgdGhlIGRpZmZlcmVuY2UuIFRoZSBmaXJzdCBtYWNy byBpcyBnZW51aW5lbHkKcmVjdXJzaXZlLCBpdCBleHBhbmRzIHRvIGEgc2VyaWVzIG9mIGNhbGxz LCBhbmQgbmVlZHMgdG8ga2VlcCB0aGUKaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBjYWxscyBvbiB0 aGUgc3RhY2suIFRoZSBzZWNvbmQgb25lIGlzIGFjdHVhbGx5Cml0ZXJhdGl2ZS4gVGhlIG1hY3Jv IGNhbGwgb25seSBoYXBwZW5zIGFzIHRoZSBsYXN0IHN0ZXAsIGFuZCBubwppbmZvcm1hdGlvbiBp cyBrZXB0LCBhcyB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUganVzdCB0aGUgbGFzdCByZXN1bHQs CnNvIHRoaXMgbWFjcm8gaXMgZXhwYW5kZWQgdW50aWwgaXQncyBqdXN0IGEgbnVtYmVyLgoKKioq IERPTkUgRXhlcmNpc2UgMS4xMCBBY2tlcm1hbm4ncyBmdW5jdGlvbgogICAgQ0xPU0VEOiBbMjAx OS0wOC0yNSBTdW4gMTg6MzFdCkxldCdzIHJ1biB0aGUgZGVtb3MgZmlyc3Q6CiMrbmFtZTogYWNr ZXJtYW4KIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpz ZXNzaW9uCiAgPDxjb21tb24+PgogIChkZWZpbmUgKEEgeCB5KQogICAgKGNvbmQgKCg9IHkgMC4w KSAwLjApCgkgICgoPSB4IDAuMCkgKCogMi4wIHkpKQoJICAoKD0geSAxLjApIDIuMCkKCSAgKGVs c2UgKEEgKC0geCAxLjApIChBIHggKC0geSAxLjApKSkpKSkKICAoZGlzcCAoQSAxIDEwKSkKICAo ZGlzcCAoQSAyIDQpKQogIChkaXNwIChBIDMgMykpCiMrZW5kX3NyYwoKIytSRVNVTFRTOiBhY2tl cm1hbm4KOiAxMDI0LjAKOiA2NTUzNi4wCjogNjU1MzYuMAoKVGhlIHZhbHVlcyBvZiB0aGVzZSBl eHByZXNzaW9ucyBhcmUgbGlzdGVkIGFib3ZlLgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRz IGJvdGggOnJlc3VsdHMgdmFsdWUgOnNlc3Npb24KICAoZGVmaW5lIChmIG4pIChBIDAgbikpCiAg KGRlZmluZSAoZyBuKSAoQSAxIG4pKQogIChkZWZpbmUgKGggbikgKEEgMiBuKSkKICAoZGVmaW5l IChrIG4pICgqIDUgbiBuKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogIzx1bmRlZj4KClRoZSBt YXRoZW1hdGljYWwgZXhwcmVzc2lvbnMgZm9yIHRoZXNlIGZvcm11bGFlIGFyZToKXGJlZ2lue2Vx bmFycmF5fQpcbGFiZWx7ZXE6M30KZihuKSAmID0gJiAyeVxcCmcobikgJiA9ICYgMl55IFxcCmgo bikgJiA9ICYgMl57Ml5ufVxcCmsobikgJiA9ICYgNW5eMlxcClxlbmR7ZXFuYXJyYXl9CgpBY3R1 YWxseSB0aGlzIGlzIG5vdCB0aGUgQWNrZXJtYW5uJ3MgZnVuY3Rpb24gYXMgaXQgaXMgbW9zdCBv ZnRlbgpkZWZpbmVkLCBmb3IgZXhhbXBsZSwgc2VlCltbaHR0cDovL21hdGh3b3JsZC53b2xmcmFt LmNvbS9BY2tlcm1hbm5GdW5jdGlvbi5odG1sXV0uIEJ1dCB0aGUKcmVjdXJyZW50IHJlbGF0aW9u IGlzIHRoZSBzYW1lLiBUaGlzIHZlcnNpb24gb2YgdGhlIEFja2VybWFubidzCmZ1bmN0aW9uIHNl ZW1zIHRvIGJlIGVxdWl2YWxlbnQgdG8gdGhlIHBvd2VycyB0b3dlci4KCkkgbWF5IGhhdmUgbGll ZCB3aXRoIHRoZSBjb2VmZmljaWVudHMsIGJ1dCBlc3NlbnRpYWxseSwgdGhlCkFja2VybWFubidz IGZ1bmN0aW9uIHdpdGggcGFyYW1ldGVycyAkbiQgYW5kICRtJCB3b3JrcyBieSBhcHBseWluZyB0 aGUKbi10aGUgaHlwZXJvcGVyYXRvciBtIHRpbWVzIHRvIDIuIEEgaHlwZXJvcGVyYXRvciBpcyBh IGdlbmVyYWxpemF0aW9uCm9mIHRoZSBzdGFuZGFyZCBtYXRlbWF0aWNhbCBvcGVyYXRvciBzZXF1 ZW5jZSBgKycsIGAqJywgYF4nLCBzZWUKW1todHRwczovL2dvb2dvbG9neS53aWtpYS5vcmcvd2lr aS9IeXBlcl9vcGVyYXRvcl1dCgoqKiogVE9ETyBGaWd1cmUgMS41IFRoZSB0cmVlLXJlY3Vyc2l2 ZSBwcm9jZXNzIGdlbmVyYXRlZCBpbiBjb21wdXRpbmcgKGZpYiA1KQoqKiogRE9ORSBFeGVyY2lz ZSAxLjExIFJlY3Vyc2l2ZSB2cyBpdGVyYXRpdmUKICAgIENMT1NFRDogWzIwMTktMDgtMjUgU3Vu IDE5OjI1XQoKXGJlZ2lue2VxdWF0aW9ufQpcbGFiZWx7ZXE6NH0KZihuKT1cbGVmdFx7ClxiZWdp bnthcnJheX17bEB7XHF1YWQ6XHF1YWR9bH0KbiAmIG48M1xcCmYobi0xKSArIDJmKG4tMikgKyAz ZihuLTMpICYgXGdlIDMKXGVuZHthcnJheX1ccmlnaHQuClxlbmR7ZXF1YXRpb259CgojK2JlZ2lu X3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6c2Vzc2lvbgogICAgKGRl ZmluZSAoZi1yZWN1cnNpdmUgbikKICAgICAgKGNvbmQgKCg8IG4gMykgbikKCSAgICAoZWxzZQoJ ICAgICAoKwoJICAgICAgKGYtcmVjdXJzaXZlICgtIG4gMSkpCgkgICAgICAoKiAyIChmLXJlY3Vy c2l2ZSAoLSBuIDIpKSkKCSAgICAgICgqIDMgKGYtcmVjdXJzaXZlICgtIG4gMykpKSkpKSkKICAg IChmLXJlY3Vyc2l2ZSA3KQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAxNDIKCiMrYmVnaW5fc3Jj IHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpzZXNzaW9uCiAgKGRlZmluZSAo Zi1pdGVyIG0gbiBmbi0xIGZuLTIgZm4tMykKICAgIChsZXQgKChmbiAoKyBmbi0xICgqIDIgZm4t MikgKCogMyBmbi0zKSkpKQogICAgICAoY29uZCAoKD0gbSBuKSBmbikKCSAgICAgKGVsc2UgKGYt aXRlciBtICgrIG4gMSkgZm4gZm4tMSBmbi0yKSkpKSkKCiAgKGRlZmluZSAoZi1pdGVyYXRpdmUg bikKICAgIChjb25kICgoPCBuIDMpIG4pCgkgIChlbHNlIChmLWl0ZXIgbiAzIDIgMSAwKSkpKQoK ICAoZi1pdGVyYXRpdmUgNykKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogMTQyCgoqKiogRE9ORSBF eGVyY2lzZSAxLjEyIFJlY3Vyc2l2ZSBQYXNjYWwncyB0cmlhbmdsZQogICAgQ0xPU0VEOiBbMjAx OS0wOC0yNSBTdW4gMTk6NDJdCgpcYmVnaW57dGFidWxhcn17cmNjY2NjY2NjY2N9CiAmICAgICYg ICAgJiAgICAmICAgICYgIDFcXFxub2FsaWdue1xzbWFsbHNraXBcc21hbGxza2lwfQogJiAgICAm ICAgICYgICAgJiAgMSAmICAgICYgIDFcXFxub2FsaWdue1xzbWFsbHNraXBcc21hbGxza2lwfQog JiAgICAmICAgICYgIDEgJiAgICAmICAyICYgICAgJiAgMVxcXG5vYWxpZ257XHNtYWxsc2tpcFxz bWFsbHNraXB9CiAmICAgICYgIDEgJiAgICAmICAzICYgICAgJiAgMyAmICAgICYgIDFcXFxub2Fs aWdue1xzbWFsbHNraXBcc21hbGxza2lwfQogJiAgMSAmICAgICYgIDQgJiAgICAmICA2ICYgICAg JiAgNCAmICAgICYgIDFcXFxub2FsaWdue1xzbWFsbHNraXBcc21hbGxza2lwfQogJiAgICAmICAg ICYgICAgJiAgLiAmICAuICYgIC4gJiAgICAmICAgICYgICAmICAgXFxcbm9hbGlnbntcc21hbGxz a2lwXHNtYWxsc2tpcH0KXGVuZHt0YWJ1bGFyfQoKIytCRUdJTl9TUkMgc2NoZW1lCiAgICAoZGVm aW5lIChwYXNjYWwtbnVtYmVyIGxpbmUtbnVtYmVyIGNvbHVtbi1udW1iZXIpCiAgICAgIChjb25k ICgoPSBsaW5lLW51bWJlciAxKSAxKQoJICAgICgoPSBsaW5lLW51bWJlciAyKSAxKQoJICAgICgo PSBjb2x1bW4tbnVtYmVyIDEpIDEpCgkgICAgKCg9IGNvbHVtbi1udW1iZXIgbGluZS1udW1iZXIp IDEpCgkgICAgKGVsc2UgKCsKCQkgICAocGFzY2FsLW51bWJlciAoLSBsaW5lLW51bWJlciAxKSAo LSBjb2x1bW4tbnVtYmVyIDEpKQoJCSAgIChwYXNjYWwtbnVtYmVyICgtIGxpbmUtbnVtYmVyIDEp IGNvbHVtbi1udW1iZXIpKSkpKQogICAgKHBhc2NhbC1udW1iZXIgNSAzKQojK0VORF9TUkMKCiMr UkVTVUxUUzoKOiA2CgoqKiogRE9ORSBFeGVyY2lzZSAxLjEzIEZpYm9uYWNjaQogICAgQ0xPU0VE OiBbMjAxOS0wOC0yNSBTdW4gMjM6MDRdCgpcYmVnaW57ZXF1YXRpb259ClxsYWJlbHtlcTo2fQpc bWJveHtGaWJ9KG4pPVxsZWZ0XHsgClxiZWdpbnthcnJheX17bEB7XHF1YWQ6XHF1YWR9bH0KMCAm IG49MFxcCjEgJiBuPTFcXApcbWJveHtGaWJ9KG4tMSkgKyBcbWJveHtGaWJ9KG4tMikgJiBcbWJv eHtvdGhlcndpc2V9fQpcZW5ke2FycmF5fVxyaWdodC4KXGVuZHtlcXVhdGlvbn0KCkFiZWxzb24g YW5kIFN1c3NtYW4gZGVmaW5lIFwoXHZhcnBoaT0oMStcc3FydHs1fSkvMlwpIGFuZCBcKFxwc2k9 KDEtXHNxcnR7NX0pLzJcKS4KCktub3dpbmcgdGhhdCBcKCBcbWJveHtGaWJ9KG4pID0gKFx2YXJw aGlee259IC0gXHBzaV5uKS9cc3FydHs1fVwpIGlzIGFsbW9zdCBhbGwgdGhlCnByb2JsZW0gZG9u ZSwgYmVjYXVzZSBcKFxwc2lcKSBpcyBjbGVhcmx5IGxlc3MgdGhhbiBcKDFcKSwgc28gZm9yIGxh cmdlClwoblwpIGl0IHdpbGwgYmUgZXhwb25lbnRpYWxseSBjbG9zZSB0byBcKDBcKSwgYW5kIHRo aXMgaXMgd2hlcmUgdGhlCmBgY2xvc2VzdCBpbnRlZ2VyJycgY29tZXMgZnJvbS4KCkxldCB1cyBw cm92ZSB0aGUgcmVzdCBieSBpbmR1Y3Rpb24uClxiZWdpbntlcW5hcnJheX0KXGxhYmVse2VxOjEz fQpcZnJhY3tcdmFycGhpXntuLTF9IC0gXHBzaV57bi0xfSArIFx2YXJwaGlee24tMn0gLSBccHNp XntuLTJ9fXtcc3FydHs1fX0gJj0mIFxmcmFje1x2YXJwaGlee259IC0gXHBzaV57bn19e1xzcXJ0 ezV9fVxcClx2YXJwaGlee24tMX0gLSBccHNpXntuLTF9ICsgXHZhcnBoaV57bi0yfSAtIFxwc2le e24tMn0gJj0mIFx2YXJwaGlee259IC0gXHBzaV57bn0gXFwKKFx2YXJwaGkgKyAxKVx2YXJwaGle e24tMn0gLSAoXHBzaSArIDEpXHBzaV57bi0yfSAmPSYgIFx2YXJwaGlee259IC0gXHBzaV57bn1c XAooXHZhcnBoaSArIDEgLSBcdmFycGhpXjIpXHZhcnBoaV57bi0yfSAmPSYgIChccHNpICsgMSAt IFxwc2leMilccHNpXntuLTJ9XFwKKFxmcmFjezErXHNxcnR7NX19ezJ9ICsgMSAtIChcZnJhY3sx K1xzcXJ0ezV9fXsyfSleMilcdmFycGhpXntuLTJ9ICY9JgooXGZyYWN7MS1cc3FydHs1fX17Mn0g KyAxIC0gKFxmcmFjezEtXHNxcnR7NX19ezJ9KSlccHNpXntuLTJ9IFxcCihcZnJhY3syKzJcc3Fy dHs1fX17NH0gKyBcZnJhY3s0fXs0fSAtIFxmcmFjezErMlxzcXJ0ezV9KzV9ezR9KVx2YXJwaGle e24tMn0gJj0mCihcZnJhY3syLTJcc3FydHs1fX17NH0gKyBcZnJhY3s0fXs0fSAtIFxmcmFjezEt MlxzcXJ0ezV9KzV9ezR9KVxwc2lee24tMn1cXAowJj0mMApcZW5ke2VxbmFycmF5fQoKVGhpcyBw cm92ZXMgdGhhdCB0aGUgcmVjdXJyZW50IHJlbGF0aW9uIGZvciBcKFxmcmFje1x2YXJwaGlebi1c cHNpXm59e1xzcXJ0ezV9fVwpIGlzIHRoZQpzYW1lIGFzIGZvciB0aGUgRmlib25hY2NpIHNlcXVl bmNlLiBUaGVuIGlmIHdlIHByb3ZlIHRoYXQgdGhlcmUgZXhpc3QKc3VjaCBcKG5cKSBhbmQgXChu LTFcKSBzbyB0aGF0IFwoXG1ib3h7RmlifShuKSA9ClxmcmFje1x2YXJwaGlebi1ccHNpXm59e1xz cXJ0ezV9fVwpLCB0aGVuIHdlJ3JlIGRvbmUuCgpJbmRlZWQsIGxldCdzIGhhdmUgYSBsb29rIGF0 IFwobj0xXCk6IFwoXGZyYWN7MStcc3FydHs1fX17Mgpcc3FydHs1fX0gLSBcZnJhY3sxLVxzcXJ0 ezV9fXsyIFxzcXJ0ezV9fSA9IDFcKTsgYW5kIFwobj0wXCk6IFwoClxmcmFjezEtMX17XHNxcnR7 NX19ID0gMFwpLgoKKioqIERPTkUgRXhlcmNpc2UgMS4xNCBjb3VudC1jaGFuZ2UgICAgICAgICAg ICAgIDptYWNybzplcl9tYWNyb190cmFuc2Zvcm1lcjoKICAgIENMT1NFRDogWzIwMTktMDgtMzAg RnJpIDE2OjA5XQoKTGV0IHVzIHVzZSB0aGUgbm9uLXN0YW5kYXJkIGJ1dCBjb21tb24gZXItbWFj cm8tdHJhbnNmb3JtZXIgdG8gcGxvdAp0aGUgZXhlY3V0aW9uIHRyZWUuCgojK2JlZ2luX3NyYyBz Y2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKICAoZGVmaW5lLXN5bnRheCBjYwog ICAgKGVyLW1hY3JvLXRyYW5zZm9ybWVyCiAgICAgKGxhbWJkYSAoZm9ybSByZW5hbWUgY29tcGFy ZT8pCiAgICAgICAobGV0ICgoYW1vdW50IChjYWRyIGZvcm0pKQoJICAgICAoa2luZHMtb2YtY29p bnMgKGNhZGRyIGZvcm0pKSkKCSAoY29uZCAoKD0gYW1vdW50IDApIDEpCgkgICAgICAgKChvciAo PCBhbW91bnQgMCkgKD0ga2luZHMtb2YtY29pbnMgMCkpIDApCgkgICAgICAgKGAoKyAoY2MgLGFt b3VudAoJCQksKC0ga2luZHMtb2YtY29pbnMgMSkpCgkJICAgIChjYyAsKC0gYW1vdW50CgkJCSAg ICAoZmlyc3QtZGVub21pbmF0aW9uCgkJCSAgICAga2luZHMtb2YtY29pbnMpKQoJCQksa2luZHMt b2YtY29pbnMpKSkpKSkpKQogIChkZWZpbmUgKGZpcnN0LWRlbm9taW5hdGlvbiBraW5kcy1vZi1j b2lucykKICAgIChjb25kICgoPSBraW5kcy1vZi1jb2lucyAxKSAxKQoJICAoKD0ga2luZHMtb2Yt Y29pbnMgMikgNSkKCSAgKCg9IGtpbmRzLW9mLWNvaW5zIDMpIDEwKQoJICAoKD0ga2luZHMtb2Yt Y29pbnMgNCkgMjUpCgkgICgoPSBraW5kcy1vZi1jb2lucyA1KSA1MCkpKQooc2hvdyAjdCAiICIo cHJldHR5IChtYWNyb2V4cGFuZCAnKGNjIDExIDUpKSkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6 ICAoKwo6ICAgKCsKOiAgICAoKwo6ICAgICAoKyAoKyAwICgrIDAgKCsgMCAoKyAwICgrIDAgKCsg MCAoKyAwICgrIDAgKCsgMCAoKyAwICgrIDAgMSkpKSkpKSkpKSkpCjogICAgICAgICgrICgrIDAg KCsgMCAoKyAwICgrIDAgKCsgMCAoKyAwIDEpKSkpKSkgKCsgKCsgMCAxKSAwKSkpCjogICAgICgr ICgrICgrIDAgMSkgMCkgMCkpCjogICAgMCkKOiAgIDApCgpJbml0aWFsbHkgSSB3cm90ZSB0aGUg c2FtZSBjb2RlIGluIEVtYWNzIExpc3AsIEkgYW0gbGVhdmluZyBpdCBoZXJlCmZvciBmdXR1cmUg cmVmZXJlbmNlLgoKIytiZWdpbl9zcmMgZWxpc3AgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRw dXQKICAgIChkZWZtYWNybyBjYyAoYW1vdW50IGtpbmRzLW9mLWNvaW5zKQogICAgICAoY29uZCAo KD0gYW1vdW50IDApIDEpCgkgICAgKChvciAoPCBhbW91bnQgMCkgKD0ga2luZHMtb2YtY29pbnMg MCkpIDApCgkgICAgKGAoKyAoY2MgLGFtb3VudAoJCSAgICAsKC0ga2luZHMtb2YtY29pbnMgMSkp CgkJKGNjICwoLSBhbW91bnQKCQkgICAgICAgKGZpcnN0LWRlbm9taW5hdGlvbgoJCQlraW5kcy1v Zi1jb2lucykpCgkJICAgICxraW5kcy1vZi1jb2lucykpKSkpCiAgKGRlZnVuIGZpcnN0LWRlbm9t aW5hdGlvbiAoa2luZHMtb2YtY29pbnMpCiAgICAoY29uZCAoKD0ga2luZHMtb2YtY29pbnMgMSkg MSkKCSAgKCg9IGtpbmRzLW9mLWNvaW5zIDIpIDUpCgkgICgoPSBraW5kcy1vZi1jb2lucyAzKSAx MCkKCSAgKCg9IGtpbmRzLW9mLWNvaW5zIDQpIDI1KQoJICAoKD0ga2luZHMtb2YtY29pbnMgNSkg NTApKSkKICAocHAgKG1hY3JvZXhwYW5kLWFsbCAnKGNjIDExIDUpKSkKCiMrZW5kX3NyYwoKIytS RVNVTFRTOiA/CiMrYmVnaW5fZXhhbXBsZQooKwogKCsKICAoKwogICAoKwogICAgKCsgMAogICAg ICAgKCsgMAoJICAoKyAwCgkgICAgICgrIDAKCQkoKyAwCgkJICAgKCsgMAoJCSAgICAgICgrIDAK CQkJICgrIDAKCQkJICAgICgrIDAKCQkJICAgICAgICgrIDAKCQkJCSAgKCsgMCAxKSkpKSkpKSkp KSkKICAgICgrCiAgICAgKCsgMAoJKCsgMAoJICAgKCsgMAoJICAgICAgKCsgMAoJCSAoKyAwCgkJ ICAgICgrIDAgMSkpKSkpKQogICAgICgrCiAgICAgICgrIDAgMSkKICAgICAgMCkpKQogICAoKwog ICAgKCsKICAgICAoKyAwIDEpCiAgICAgMCkKICAgIDApKQogIDApCiAwKQojK2VuZF9leGFtcGxl CgpUaGUgc3BhY2UgY29tcGxleGl0eSBvZiB0aGUgYWxnb3JpdGhtIHdpbGwgYmUgZG9taW5hdGVk IGJ5IHRoZSBkZXB0aApvZiB0aGUgdHJlZSDigJQgdGhhdCBpcyB0aGUgdmFsdWUgdG8gYmUgY2hh bmdlZCwgYXMgdGhlcmUgaXMgbm8gbmVlZCB0bwprZWVwIGFueSBhZGRpdGlvbmFsIGluZm9ybWF0 aW9uLgoKVGhlIHRpbWUgY29tcGxleGl0eSBjYW4gYmUgZXN0aW1hdGVkIGFzIGZvbGxvd3M6IGZv ciBldmVyeSBhZGRpdGlvbmFsCnZhbHVlIHRoZSBhbGdvcml0aG0gd2lsbCBoYXZlIHRvIGdvIHRo cm91Z2ggYWxsIHBhc3NlcyBvZiB0aGUKYWxnb3JpdGhtIHdpdGhvdXQgYW4gYWRkaXRpb25hbCBk ZW5vbWluYXRpb24sIHRpbWVzIHRoZSBhbW91bnQgZGl2aWRlZApieSB0aGUgdmFsdWUgb2YgYW4g YWRkaXRpb25hbCBkZW5vbWluYXRpb24uIFdlIGNhbiBjb25zaWRlciB0aGUKYWRkaXRpb25hbCBk ZW5vbWluYXRpb24gdmFsdWUgYXMgYSBjb25zdGFudCwgYW5kIHRoZSBhbW91bnQgb2Ygc3RlcHMK Zm9yIHRoZSBzaW1wbGVzdCBjYXNlIG9mIG9ubHkgb25lIGRlbm9taW5hdGlvbiBpcyB0aGUKYW1v dW50LiBUaGVyZWZvcmUsIHRoZSBhbGdvcml0aG0gaXMgbGluZWFyIGluIGFtb3VudCBhbmQgZXhw b25lbnRpYWwKaW4gdGhlIG51bWJlciBvZiBkZW5vbWluYXRpb25zLgoKXGJlZ2lue2VxdWF0aW9u fQpcbGFiZWx7ZXE6MTR9CkMgPSBcVGhldGEobl5hKQpcZW5ke2VxdWF0aW9ufQoKKioqIEkgZm91 bmQgYSBidWcgaW4gb2Itc2NoZW1lIHdoaWxlIGRvaW5nIHRoaXMgRXhlcmNpc2UuCiBfSW4gcHJv Y2VzcyBJIGhhdmUgZm91bmQgYSBidWcgaW4gb3JnLWJhYmVsIV8KIytiZWdpbl9zcmMgc2NoZW1l IDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CihkaXNwbGF5ICIoKyAwKSAiKQojK2VuZF9z cmMKCiMrUkVTVUxUUzoKOiAwCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVz dWx0cyBvdXRwdXQKKGRpc3BsYXkgIigrIDApIikKIytlbmRfc3JjCgojK1JFU1VMVFM6CnwgKyB8 IDAgfAoKKG9yZy1iYWJlbC1zY3JpcHQtZXNjYXBlICIoKyAwKSIpIChvcmctYmFiZWwtc2NyaXB0 LWVzY2FwZSAiKCsgMCkgIikKCioqKiBET05FIEV4ZXJjaXNlIDEuMTUgc2luZSAgICAgICAgICAg ICAgICAgICAgICA6bWFjcm86ZXJfbWFjcm9fdHJhbnNmb3JtZXI6CiAgICBDTE9TRUQ6IFsyMDE5 LTA4LTMwIEZyaSAyMjozNF0KCkZpcnN0IGxldCB1cyBjb2RlIHRoaXMgdGhpbmc6CgpMb29wIHZl cnNpb246CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQK ICAoZGVmaW5lIG5pdGVyIDApCiAgKGRlZmluZSAoY3ViZSB4KSAoKiB4IHggeCkpCiAgKGRlZmlu ZSAocCB4KQogICAgKHNldCEgbml0ZXIgKCsgbml0ZXIgMSkpCiAgICAoLSAoKiAzIHgpICgqIDQg KGN1YmUgeCkpKSkKICAoZGVmaW5lIChzaW5lIGFuZ2xlKQogICAgKGlmIChub3QgKD4gKGFicyBh bmdsZSkgMC4xKSkKCWFuZ2xlCgkocCAoc2luZSAoLyBhbmdsZSAzLjApKSkpKQogIChkaXNwbGF5 ICJzaW5lPSIgKQogIChkaXNwbGF5IChzaW5lIDEyLjE1KSkKICAoZGlzcGxheSAiIG5pdGVyPSIp CiAgKGRpc3BsYXkgbml0ZXIpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IHNpbmU9LTAuMzk5ODAz NDU3NDEzMzQgbml0ZXI9NQoKTGV0J3MgaGF2ZSB0aGUgbWFjcm8gc3lzdGVtIGV4cGFuZCB0aGlz IGZvciB1cy4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1 dAogIChkZWZpbmUgKGN1YmUgeCkKICAgICgqIHggeCB4KSkKICAoZGVmaW5lIChwIHgpCiAgICAo LSAoKiAzICB4KQogICAgICAgKCogNCAoY3ViZSB4KSkpKQogIChkZWZpbmUtc3ludGF4IHNpbmUK ICAgIChlci1tYWNyby10cmFuc2Zvcm1lcgogICAgIChsYW1iZGEgKGZvcm0gcmVuYW1lIGNvbXBh cmU/KQogICAgICAgKGxldCAoKGEgKGNhZHIgZm9ybSkpKQoJIChpZiAoPCAoYWJzIGEpIDAuMSkK CSAgICAgYQoJICAgICBgKHAgKHNpbmUgLCgvIGEgMykpKSkpKSkpCiAgKHNob3cgI3QgIiAiIChw cmV0dHkgKG1hY3JvZXhwYW5kICcoc2luZSAxMi4xNSkpKSkKCiMrZW5kX3NyYwoKIytSRVNVTFRT Ogo6ICAocCAocCAocCAocCAocCAwLjA1KSkpKSkKClRoZW9yZXRpY2FsbHksIHdlIGNhbiBleHBh bmQgZXZlcnl0aGluZyBhdCBvbmNlLiAKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3Ro IDpyZXN1bHRzIG91dHB1dAogIChkZWZpbmUtc3ludGF4IGN1YmUKICAgIChlci1tYWNyby10cmFu c2Zvcm1lcgogICAgIChsYW1iZGEgKGZvcm0gcmVuYW1lIGNvbXBhcmU/KQogICAgICAgKGxldCAo KHggKGNhZHIgZm9ybSkpKQoJIGAoKiAseCAseCAseCkpKSkpCiAgKGRlZmluZS1zeW50YXggcAog ICAgKGVyLW1hY3JvLXRyYW5zZm9ybWVyCiAgICAgKGxhbWJkYSAoZm9ybSByZW5hbWUgY29tcGFy ZT8pCiAgICAgICAobGV0ICgoeCAoY2FkciBmb3JtKSkpCgkgYCgtICgqIDMgLHgpCgkgICAgICgq IDQgKGN1YmUgLHgpKSkpKSkpCiAgKGRlZmluZS1zeW50YXggc2luZQogICAgKGVyLW1hY3JvLXRy YW5zZm9ybWVyCiAgICAgKGxhbWJkYSAoZm9ybSByZW5hbWUgY29tcGFyZT8pCiAgICAgICAobGV0 ICgoYSAoY2FkciBmb3JtKSkpCgkgKGlmICg8IChhYnMgYSkgMC4xKQoJICAgICBhCgkgICAgIGAo cCAoc2luZSAsKC8gYSAzKSkpKSkpKSkKICAoc2hvdyAjdCAiICIgKHByZXR0eSAobWFjcm9leHBh bmQgJyhzaW5lIDEyLjE1KSkpKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKIytiZWdpbl9leGFtcGxl CiAoLQogICgqIDMKICAgICAoLQogICAgICAoKiAzCiAgICAgICAgICgtCiAgICAgICAgICAoKiAz CiAgICAgICAgICAgICAoLSAoKiAzICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4w NSkpKSkKICAgICAgICAgICAgICAgICgqIDQKICAgICAgICAgICAgICAgICAgICgqICgtICgqIDMg MC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgKC0g KCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAgICAgICAg ICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpKSkpCiAgICAgICAgICAo KiA0CiAgICAgICAgICAgICAoKgogICAgICAgICAgICAgICgtICgqIDMgKC0gKCogMyAwLjA1KSAo KiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAgICAgICAgICgqIDQKICAgICAgICAg ICAgICAgICAgICAoKiAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAg ICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUp KSkKICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1 IDAuMDUpKSkpKSkKICAgICAgICAgICAgICAoLSAoKiAzICgtICgqIDMgMC4wNSkgKCogNCAoKiAw LjA1IDAuMDUgMC4wNSkpKSkKICAgICAgICAgICAgICAgICAoKiA0CiAgICAgICAgICAgICAgICAg ICAgKCogKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAg ICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAg ICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkp KSkpCiAgICAgICAgICAgICAgKC0gKCogMyAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1 IDAuMDUpKSkpCiAgICAgICAgICAgICAgICAgKCogNAogICAgICAgICAgICAgICAgICAgICgqICgt ICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAg ICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAg ICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkpKSkpKSkK ICAgICAgKCogNAogICAgICAgICAoKgogICAgICAgICAgKC0KICAgICAgICAgICAoKiAzCiAgICAg ICAgICAgICAgKC0gKCogMyAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkp CiAgICAgICAgICAgICAgICAgKCogNAogICAgICAgICAgICAgICAgICAgICgqICgtICgqIDMgMC4w NSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICgtICgq IDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAg ICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkpKSkKICAgICAgICAgICAo KiA0CiAgICAgICAgICAgICAgKCoKICAgICAgICAgICAgICAgKC0gKCogMyAoLSAoKiAzIDAuMDUp ICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpCiAgICAgICAgICAgICAgICAgICgqIDQKICAgICAg ICAgICAgICAgICAgICAgKCogKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkp CiAgICAgICAgICAgICAgICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUg MC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4w NSAwLjA1IDAuMDUpKSkpKSkKICAgICAgICAgICAgICAgKC0gKCogMyAoLSAoKiAzIDAuMDUpICgq IDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpCiAgICAgICAgICAgICAgICAgICgqIDQKICAgICAgICAg ICAgICAgICAgICAgKCogKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4w NSkpKQogICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAw LjA1IDAuMDUpKSkpKSkKICAgICAgICAgICAgICAgKC0gKCogMyAoLSAoKiAzIDAuMDUpICgqIDQg KCogMC4wNSAwLjA1IDAuMDUpKSkpCiAgICAgICAgICAgICAgICAgICgqIDQKICAgICAgICAgICAg ICAgICAgICAgKCogKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAg ICAgICAgICAgICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkp KQogICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1 IDAuMDUpKSkpKSkpKSkKICAgICAgICAgICgtCiAgICAgICAgICAgKCogMwogICAgICAgICAgICAg ICgtICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAg ICAgICAgICAgICgqIDQKICAgICAgICAgICAgICAgICAgICAoKiAoLSAoKiAzIDAuMDUpICgqIDQg KCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUp ICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAz IDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpKSkpCiAgICAgICAgICAgKCogNAogICAg ICAgICAgICAgICgqCiAgICAgICAgICAgICAgICgtICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgq IDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAgICAgICAgICAoKiA0CiAgICAgICAgICAgICAg ICAgICAgICgqICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAg ICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkK ICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAw LjA1KSkpKSkpCiAgICAgICAgICAgICAgICgtICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAu MDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAgICAgICAgICAoKiA0CiAgICAgICAgICAgICAgICAg ICAgICgqICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAg ICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAg ICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1 KSkpKSkpCiAgICAgICAgICAgICAgICgtICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUg MC4wNSAwLjA1KSkpKQogICAgICAgICAgICAgICAgICAoKiA0CiAgICAgICAgICAgICAgICAgICAg ICgqICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAg ICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkp KSkpKSkpCiAgICAgICAgICAoLQogICAgICAgICAgICgqIDMKICAgICAgICAgICAgICAoLSAoKiAz ICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkKICAgICAgICAgICAgICAg ICAoKiA0CiAgICAgICAgICAgICAgICAgICAgKCogKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUg MC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgq IDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAo KiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKSkpKQogICAgICAgICAgICgqIDQKICAgICAgICAgICAg ICAoKgogICAgICAgICAgICAgICAoLSAoKiAzICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAu MDUgMC4wNSkpKSkKICAgICAgICAgICAgICAgICAgKCogNAogICAgICAgICAgICAgICAgICAgICAo KiAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAg ICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAg ICAgICAgICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkp KQogICAgICAgICAgICAgICAoLSAoKiAzICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUg MC4wNSkpKSkKICAgICAgICAgICAgICAgICAgKCogNAogICAgICAgICAgICAgICAgICAgICAoKiAo LSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAg ICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkpKQog ICAgICAgICAgICAgICAoLSAoKiAzICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4w NSkpKSkKICAgICAgICAgICAgICAgICAgKCogNAogICAgICAgICAgICAgICAgICAgICAoKiAoLSAo KiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAg ICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkpKSkpKSkp KSkKICAoKiA0CiAgICAgKCoKICAgICAgKC0KICAgICAgICgqIDMKICAgICAgICAgICgtCiAgICAg ICAgICAgKCogMwogICAgICAgICAgICAgICgtICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAu MDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAgICAgICAgICgqIDQKICAgICAgICAgICAgICAgICAg ICAoKiAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAg ICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAg ICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkp KSkpCiAgICAgICAgICAgKCogNAogICAgICAgICAgICAgICgqCiAgICAgICAgICAgICAgICgtICgq IDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAgICAg ICAgICAoKiA0CiAgICAgICAgICAgICAgICAgICAgICgqICgtICgqIDMgMC4wNSkgKCogNCAoKiAw LjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgq IDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAw LjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKSkpCiAgICAgICAgICAgICAgICgtICgqIDMg KC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAgICAgICAg ICAoKiA0CiAgICAgICAgICAgICAgICAgICAgICgqICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1 IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQg KCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1 KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKSkpCiAgICAgICAgICAgICAgICgtICgqIDMgKC0g KCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAgICAgICAgICAo KiA0CiAgICAgICAgICAgICAgICAgICAgICgqICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAu MDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCog MC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAo KiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKSkpKSkpKQogICAgICAgKCogNAogICAgICAgICAgKCoK ICAgICAgICAgICAoLQogICAgICAgICAgICAoKiAzCiAgICAgICAgICAgICAgICgtICgqIDMgKC0g KCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAgICAgICAgICAo KiA0CiAgICAgICAgICAgICAgICAgICAgICgqICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAu MDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCog MC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAo KiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKSkpKQogICAgICAgICAgICAoKiA0CiAgICAgICAgICAg ICAgICgqCiAgICAgICAgICAgICAgICAoLSAoKiAzICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1 IDAuMDUgMC4wNSkpKSkKICAgICAgICAgICAgICAgICAgICgqIDQKICAgICAgICAgICAgICAgICAg ICAgICgqICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAg ICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAu MDUpKSkpKSkKICAgICAgICAgICAgICAgICgtICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAu MDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAgICAgICAgICAgKCogNAogICAgICAgICAgICAgICAg ICAgICAgKCogKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAg ICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkK ICAgICAgICAgICAgICAgICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUg MC4wNSkpKSkpKQogICAgICAgICAgICAgICAgKC0gKCogMyAoLSAoKiAzIDAuMDUpICgqIDQgKCog MC4wNSAwLjA1IDAuMDUpKSkpCiAgICAgICAgICAgICAgICAgICAoKiA0CiAgICAgICAgICAgICAg ICAgICAgICAoKiAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkp KQogICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4w NSAwLjA1KSkpKSkpKSkpCiAgICAgICAgICAgKC0KICAgICAgICAgICAgKCogMwogICAgICAgICAg ICAgICAoLSAoKiAzICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkKICAg ICAgICAgICAgICAgICAgKCogNAogICAgICAgICAgICAgICAgICAgICAoKiAoLSAoKiAzIDAuMDUp ICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCog MyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAgICAgICAgICAg ICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkpKSkKICAgICAgICAgICAg KCogNAogICAgICAgICAgICAgICAoKgogICAgICAgICAgICAgICAgKC0gKCogMyAoLSAoKiAzIDAu MDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpCiAgICAgICAgICAgICAgICAgICAoKiA0CiAg ICAgICAgICAgICAgICAgICAgICAoKiAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAu MDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1 IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0 ICgqIDAuMDUgMC4wNSAwLjA1KSkpKSkpCiAgICAgICAgICAgICAgICAoLSAoKiAzICgtICgqIDMg MC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkKICAgICAgICAgICAgICAgICAgICgqIDQK ICAgICAgICAgICAgICAgICAgICAgICgqICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUg MC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAu MDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgq IDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpKSkKICAgICAgICAgICAgICAgICgtICgqIDMgKC0gKCog MyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAgICAgICAgICAgKCog NAogICAgICAgICAgICAgICAgICAgICAgKCogKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4w NSAwLjA1KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCog MC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICgtICgqIDMgMC4wNSkg KCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkpKSkpKQogICAgICAgICAgICgtCiAgICAgICAgICAg ICgqIDMKICAgICAgICAgICAgICAgKC0gKCogMyAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAw LjA1IDAuMDUpKSkpCiAgICAgICAgICAgICAgICAgICgqIDQKICAgICAgICAgICAgICAgICAgICAg KCogKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAg ICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkp KSkpCiAgICAgICAgICAgICgqIDQKICAgICAgICAgICAgICAgKCoKICAgICAgICAgICAgICAgICgt ICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAg ICAgICAgICAgKCogNAogICAgICAgICAgICAgICAgICAgICAgKCogKC0gKCogMyAwLjA1KSAoKiA0 ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAu MDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICgt ICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkpKQogICAgICAgICAgICAgICAg KC0gKCogMyAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpCiAgICAgICAg ICAgICAgICAgICAoKiA0CiAgICAgICAgICAgICAgICAgICAgICAoKiAoLSAoKiAzIDAuMDUpICgq IDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICgtICgqIDMg MC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAg KC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKSkpCiAgICAgICAgICAgICAg ICAoLSAoKiAzICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkKICAgICAg ICAgICAgICAgICAgICgqIDQKICAgICAgICAgICAgICAgICAgICAgICgqICgtICgqIDMgMC4wNSkg KCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCog MyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpKSkpKSkpKSkKICAgICAg KC0KICAgICAgICgqIDMKICAgICAgICAgICgtCiAgICAgICAgICAgKCogMwogICAgICAgICAgICAg ICgtICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAg ICAgICAgICAgICgqIDQKICAgICAgICAgICAgICAgICAgICAoKiAoLSAoKiAzIDAuMDUpICgqIDQg KCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUp ICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAz IDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpKSkpCiAgICAgICAgICAgKCogNAogICAg ICAgICAgICAgICgqCiAgICAgICAgICAgICAgICgtICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgq IDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAgICAgICAgICAoKiA0CiAgICAgICAgICAgICAg ICAgICAgICgqICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAg ICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkK ICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAw LjA1KSkpKSkpCiAgICAgICAgICAgICAgICgtICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAu MDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAgICAgICAgICAoKiA0CiAgICAgICAgICAgICAgICAg ICAgICgqICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAg ICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAg ICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1 KSkpKSkpCiAgICAgICAgICAgICAgICgtICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUg MC4wNSAwLjA1KSkpKQogICAgICAgICAgICAgICAgICAoKiA0CiAgICAgICAgICAgICAgICAgICAg ICgqICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAg ICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkp KSkpKSkpKQogICAgICAgKCogNAogICAgICAgICAgKCoKICAgICAgICAgICAoLQogICAgICAgICAg ICAoKiAzCiAgICAgICAgICAgICAgICgtICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUg MC4wNSAwLjA1KSkpKQogICAgICAgICAgICAgICAgICAoKiA0CiAgICAgICAgICAgICAgICAgICAg ICgqICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAg ICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkp KSkpKQogICAgICAgICAgICAoKiA0CiAgICAgICAgICAgICAgICgqCiAgICAgICAgICAgICAgICAo LSAoKiAzICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkKICAgICAgICAg ICAgICAgICAgICgqIDQKICAgICAgICAgICAgICAgICAgICAgICgqICgtICgqIDMgMC4wNSkgKCog NCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAw LjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAo LSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpKSkKICAgICAgICAgICAgICAg ICgtICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAg ICAgICAgICAgICAgKCogNAogICAgICAgICAgICAgICAgICAgICAgKCogKC0gKCogMyAwLjA1KSAo KiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAz IDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkpKQogICAgICAgICAgICAg ICAgKC0gKCogMyAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpCiAgICAg ICAgICAgICAgICAgICAoKiA0CiAgICAgICAgICAgICAgICAgICAgICAoKiAoLSAoKiAzIDAuMDUp ICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICgtICgq IDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAg ICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKSkpKSkpCiAgICAgICAg ICAgKC0KICAgICAgICAgICAgKCogMwogICAgICAgICAgICAgICAoLSAoKiAzICgtICgqIDMgMC4w NSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkKICAgICAgICAgICAgICAgICAgKCogNAogICAg ICAgICAgICAgICAgICAgICAoKiAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUp KSkKICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4w NSAwLjA1KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAw LjA1IDAuMDUgMC4wNSkpKSkpKSkKICAgICAgICAgICAgKCogNAogICAgICAgICAgICAgICAoKgog ICAgICAgICAgICAgICAgKC0gKCogMyAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAu MDUpKSkpCiAgICAgICAgICAgICAgICAgICAoKiA0CiAgICAgICAgICAgICAgICAgICAgICAoKiAo LSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAg ICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKSkp CiAgICAgICAgICAgICAgICAoLSAoKiAzICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUg MC4wNSkpKSkKICAgICAgICAgICAgICAgICAgICgqIDQKICAgICAgICAgICAgICAgICAgICAgICgq ICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAg ICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAg ICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkp KSkKICAgICAgICAgICAgICAgICgtICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4w NSAwLjA1KSkpKQogICAgICAgICAgICAgICAgICAgKCogNAogICAgICAgICAgICAgICAgICAgICAg KCogKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkp KSkpKSkpKQogICAgICAgICAgICgtCiAgICAgICAgICAgICgqIDMKICAgICAgICAgICAgICAgKC0g KCogMyAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpCiAgICAgICAgICAg ICAgICAgICgqIDQKICAgICAgICAgICAgICAgICAgICAgKCogKC0gKCogMyAwLjA1KSAoKiA0ICgq IDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICgtICgqIDMgMC4wNSkg KCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAz IDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpKSkpCiAgICAgICAgICAgICgqIDQKICAg ICAgICAgICAgICAgKCoKICAgICAgICAgICAgICAgICgtICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0 ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAgICAgICAgICAgKCogNAogICAgICAgICAg ICAgICAgICAgICAgKCogKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAu MDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1 IDAuMDUgMC4wNSkpKSkpKQogICAgICAgICAgICAgICAgKC0gKCogMyAoLSAoKiAzIDAuMDUpICgq IDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpCiAgICAgICAgICAgICAgICAgICAoKiA0CiAgICAgICAg ICAgICAgICAgICAgICAoKiAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkK ICAgICAgICAgICAgICAgICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUg MC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAu MDUgMC4wNSAwLjA1KSkpKSkpCiAgICAgICAgICAgICAgICAoLSAoKiAzICgtICgqIDMgMC4wNSkg KCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkKICAgICAgICAgICAgICAgICAgICgqIDQKICAgICAg ICAgICAgICAgICAgICAgICgqICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkp KQogICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4w NSAwLjA1KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCog MC4wNSAwLjA1IDAuMDUpKSkpKSkpKSkpKSkKICAgICAgKC0KICAgICAgICgqIDMKICAgICAgICAg ICgtCiAgICAgICAgICAgKCogMwogICAgICAgICAgICAgICgtICgqIDMgKC0gKCogMyAwLjA1KSAo KiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAgICAgICAgICgqIDQKICAgICAgICAg ICAgICAgICAgICAoKiAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAg ICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUp KSkKICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1 IDAuMDUpKSkpKSkpCiAgICAgICAgICAgKCogNAogICAgICAgICAgICAgICgqCiAgICAgICAgICAg ICAgICgtICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAg ICAgICAgICAgICAgICAoKiA0CiAgICAgICAgICAgICAgICAgICAgICgqICgtICgqIDMgMC4wNSkg KCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAz IDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAg KC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKSkpCiAgICAgICAgICAgICAg ICgtICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAg ICAgICAgICAgICAoKiA0CiAgICAgICAgICAgICAgICAgICAgICgqICgtICgqIDMgMC4wNSkgKCog NCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAu MDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgKC0g KCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKSkpCiAgICAgICAgICAgICAgICgt ICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAg ICAgICAgICAoKiA0CiAgICAgICAgICAgICAgICAgICAgICgqICgtICgqIDMgMC4wNSkgKCogNCAo KiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUp ICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCog MyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKSkpKSkpKQogICAgICAgKCogNAogICAg ICAgICAgKCoKICAgICAgICAgICAoLQogICAgICAgICAgICAoKiAzCiAgICAgICAgICAgICAgICgt ICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAg ICAgICAgICAoKiA0CiAgICAgICAgICAgICAgICAgICAgICgqICgtICgqIDMgMC4wNSkgKCogNCAo KiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUp ICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCog MyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKSkpKQogICAgICAgICAgICAoKiA0CiAg ICAgICAgICAgICAgICgqCiAgICAgICAgICAgICAgICAoLSAoKiAzICgtICgqIDMgMC4wNSkgKCog NCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkKICAgICAgICAgICAgICAgICAgICgqIDQKICAgICAgICAg ICAgICAgICAgICAgICgqICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQog ICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAw LjA1KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4w NSAwLjA1IDAuMDUpKSkpKSkKICAgICAgICAgICAgICAgICgtICgqIDMgKC0gKCogMyAwLjA1KSAo KiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAgICAgICAgICAgKCogNAogICAgICAg ICAgICAgICAgICAgICAgKCogKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkp CiAgICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1 IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAw LjA1IDAuMDUgMC4wNSkpKSkpKQogICAgICAgICAgICAgICAgKC0gKCogMyAoLSAoKiAzIDAuMDUp ICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpCiAgICAgICAgICAgICAgICAgICAoKiA0CiAgICAg ICAgICAgICAgICAgICAgICAoKiAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUp KSkKICAgICAgICAgICAgICAgICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAu MDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgq IDAuMDUgMC4wNSAwLjA1KSkpKSkpKSkpCiAgICAgICAgICAgKC0KICAgICAgICAgICAgKCogMwog ICAgICAgICAgICAgICAoLSAoKiAzICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4w NSkpKSkKICAgICAgICAgICAgICAgICAgKCogNAogICAgICAgICAgICAgICAgICAgICAoKiAoLSAo KiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAg ICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkpKSkKICAg ICAgICAgICAgKCogNAogICAgICAgICAgICAgICAoKgogICAgICAgICAgICAgICAgKC0gKCogMyAo LSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpCiAgICAgICAgICAgICAgICAg ICAoKiA0CiAgICAgICAgICAgICAgICAgICAgICAoKiAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4w NSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICgtICgqIDMgMC4wNSkgKCog NCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAw LjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKSkpCiAgICAgICAgICAgICAgICAoLSAoKiAz ICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkKICAgICAgICAgICAgICAg ICAgICgqIDQKICAgICAgICAgICAgICAgICAgICAgICgqICgtICgqIDMgMC4wNSkgKCogNCAoKiAw LjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgKC0gKCogMyAwLjA1KSAo KiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAz IDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpKSkKICAgICAgICAgICAgICAgICgtICgq IDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQogICAgICAgICAgICAg ICAgICAgKCogNAogICAgICAgICAgICAgICAgICAgICAgKCogKC0gKCogMyAwLjA1KSAoKiA0ICgq IDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUp ICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICgtICgq IDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkpKSkpKQogICAgICAgICAgICgtCiAg ICAgICAgICAgICgqIDMKICAgICAgICAgICAgICAgKC0gKCogMyAoLSAoKiAzIDAuMDUpICgqIDQg KCogMC4wNSAwLjA1IDAuMDUpKSkpCiAgICAgICAgICAgICAgICAgICgqIDQKICAgICAgICAgICAg ICAgICAgICAgKCogKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAg ICAgICAgICAgICAgICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkp KQogICAgICAgICAgICAgICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1 IDAuMDUpKSkpKSkpCiAgICAgICAgICAgICgqIDQKICAgICAgICAgICAgICAgKCoKICAgICAgICAg ICAgICAgICgtICgqIDMgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKQog ICAgICAgICAgICAgICAgICAgKCogNAogICAgICAgICAgICAgICAgICAgICAgKCogKC0gKCogMyAw LjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAo LSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKSkpKQogICAgICAg ICAgICAgICAgKC0gKCogMyAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkp CiAgICAgICAgICAgICAgICAgICAoKiA0CiAgICAgICAgICAgICAgICAgICAgICAoKiAoLSAoKiAz IDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAg ICAgICAgICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpKSkpCiAgICAg ICAgICAgICAgICAoLSAoKiAzICgtICgqIDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkp KSkKICAgICAgICAgICAgICAgICAgICgqIDQKICAgICAgICAgICAgICAgICAgICAgICgqICgtICgq IDMgMC4wNSkgKCogNCAoKiAwLjA1IDAuMDUgMC4wNSkpKQogICAgICAgICAgICAgICAgICAgICAg ICAgKC0gKCogMyAwLjA1KSAoKiA0ICgqIDAuMDUgMC4wNSAwLjA1KSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAoLSAoKiAzIDAuMDUpICgqIDQgKCogMC4wNSAwLjA1IDAuMDUpKSkpKSkpKSkp KSkpKSkKIytlbmRfZXhhbXBsZQoKQXMgc2VlbiBmcm9tIHRoZSBjb2RlIGFib3ZlLCB0aGUgYW1v dW50IG9mIHN0ZXBzIGlzIDUuIEl0IGlzIGVhc2lseQpzZWVuIGZyb20gdGhlIGZhY3QgdGhhdCB0 aGUgYXBwbGljYXRpb24gb2YgfnB+IHN0YXJ0cyB3aGVuICp4KiBpcwpzdWZmaWNpZW50bHkgc21h bGwsIGFuZCB0aGF0IHJlcXVpcmVzIFwoMC4xID4gMTIuMTVcY2RvdChcZnJhY3sxfXszfSlebiBc UmlnaHRhcnJvdyBuCj0gTyhcbG9nXzMgMTIxLjUpXCkgc3RlcHMuCgp+KHNpbmUgeCl+IGlzIGV4 cGFuZGFibGUgaW4gY29uc3RhbnQgc3BhY2UgYW5kIHRpbWUsIH4oY3ViZSB4KX4gaXMKZXhwYW5k YWJsZSBpbiBjb25zdGFudCBzcGFjZSBhbmQgdGltZSBpZiBtdWx0aXBsaWNhdGlvbiBpcyBhbgpl bGVtZW50YXJ5IG9wZXJhdGlvbi4gVGhlcmVmb3JlIHRoZSBvbmx5IG9wZXJhdGlvbiBsZWZ0IGlz Cn5wfi4gVGhlcmVmb3JlLCB0aW1lIGFuZCBzcGFjZSBhcmUgb2YgZXF1YWwgb3JkZXIgb2YgbWFn bml0dWRlLgoKIC0gXChcbGVmdFxsY2VpbCBcbG9nXzMgMTIxLjUgXHJpZ2h0XHJjZWlsID0gNVwp CiAtIFwoTyhcbG4oYVxjZG90IGIpKVwpIHdoZXJlIFwoYVwpIGlzIHRoZSBhbmdsZSBhbmQgXChi XCkgaXMgcHJlY2lzaW9uCgoqKiogRE9ORSBFeGVyY2lzZSAxLjE2IEl0ZXJhdGl2ZSBleHBvbmVu dGlhdGlvbgogICAgQ0xPU0VEOiBbMjAxOS0wOC0zMCBGcmkgMjM6MjBdCgpGb3IgdGhlIHN0YXJ0 LCBsZXQncyBpbnB1dCB0aGUgY29kZS4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3Ro IDpyZXN1bHRzIHZhbHVlCiAgKGRlZmluZSAoZXhwdCBiIG4pCiAgICAoaWYgKD0gbiAwKQoJMQoJ KCogYiAoZXhwdCBiICgtIG4gMSkpKSkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICM8dW5kZWY+ CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZQogIChkZWZp bmUgKGV4cHQgYiBuKQogICAgKGV4cHQtaXRlciBiIG4gMSkpCiAgKGRlZmluZSAoZXhwdC1pdGVy IGIgY291bnRlciBwcm9kdWN0KQogICAgKGlmICg9IGNvdW50ZXIgMCkKCXByb2R1Y3QKCShleHB0 LWl0ZXIgYgoJCSAgICgtIGNvdW50ZXIgMSkKCQkgICAoKiBiIGNvdW50ZXIgcHJvZHVjdCkpKSkK IytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1 ZQogIChkZWZpbmUgKGZhc3QtZXhwdCBiIG4pCiAgICAoY29uZCAoKD0gbiAwKSAxKQoJICAoKGV2 ZW4/IG4pIChzcXVhcmUgKGZhc3QtZXhwdCBiICgvIG4gMikpKSkKCSAgKGVsc2UgKCogYiAoZmFz dC1leHB0IGIgKC0gbiAxKSkpKSkpCiAgKGRlZmluZSAoZXZlbj8gbikKICAgICg9IChyZW1haW5k ZXIgbiAyKSAwKSkKICAoZmFzdC1leHB0IDIgMTApCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IDEw MjQKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCiAgICAo ZGVmaW5lIChmYXN0LWV4cHQgYiBuIGEpCiAgICAgIChjb25kICgoPSBuIDApIGEpCgkgICAgKChl dmVuPyBuKSAgKGZhc3QtZXhwdCAoc3F1YXJlIGIpICgvIG4gMikgYSkpCgkgICAgKGVsc2UgKGZh c3QtZXhwdCBiICgtIG4gMSkgKCogYSBiKSkpKSkKICAgIChkZWZpbmUgKGV2ZW4/IG4pCiAgICAg ICg9IChyZW1haW5kZXIgbiAyKSAwKSkKICAgIChkZWZpbmUgKGZhc3Rlci1leHB0IGIgbikKICAg ICAgKGZhc3QtZXhwdCBiIG4gMSkpCiAgICAoZmFzdGVyLWV4cHQgMiAxMCkKIytlbmRfc3JjCgoj K1JFU1VMVFM6CjogMTAyNAoKVGhlIGFuc3dlciBpcyB0aGUgY29kZSBibG9jayBhYm92ZS4gV2Ug anVzdCBjb2xsZWN0IHNvbWUgZGF0YSBhbmQgcHV0Cml0IGludG8gdGhlIHN0YXRlIHZhcmlhYmxl ICphKi4KCioqKiBET05FIEV4ZXJjaXNlIDEuMTcgRmFzdCBtdWx0aXBsaWNhdGlvbgogICAgQ0xP U0VEOiBbMjAxOS0wOC0zMCBGcmkgMjM6NDhdCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBi b3RoIDpyZXN1bHRzIHZhbHVlCiAgKGRlZmluZSAoZG91YmxlIGEpCiAgICAoKiAyIGEpKQogIChk ZWZpbmUgKGhhbHZlIGEpCiAgICAoaWYgKGV2ZW4/IGEpCgkoLyBhIDIpCgkocmFpc2UgIkVycm9y OiBhIG5vdCBldmVuLiIpKSkKICAoZGVmaW5lIChldmVuPyBuKQoJKD0gKHJlbWFpbmRlciBuIDIp IDApKQogIChkZWZpbmUgKCogYSBiKQogICAgKGNvbmQgCiAgICAgKCg9IGIgMCkgMCkKICAgICAo KGV2ZW4/IGIpIChkb3VibGUgKCogYSAoaGFsdmUgYikpKSkKICAgICAoZWxzZSAoKyBhICgqIGEg KC0gYiAxKSkpKSkpCiAgKCogMTM3IDE3KQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAyMzI5CgpU aGUgcHJvY2VkdXJlIGFib3ZlIHVzZXMgbG9nYXJpdGhtaWMgdGltZSBhbmQgc3BhY2UsIGJlY2F1 c2UgZm9yIGV2ZXJ5CnN1YnRyYWN0aW9uIHRoZXJlIGlzIGFsc28gYXQgbGVhc3Qgb25lIGRpdmlz aW9uLCBzbyB0aGUgdG90YWwKY29udmVyZ2VuY2Ugc3BlZWQgaXMgZXhwb25lbnRpYWwuIFRoaXMg Y291bGQgYmUgcmVmb3JtdWxhdGVkIGFzIGFuCml0ZXJhdGl2ZSBwcm9jZWR1cmUsIHdpdGggYW4g YWNjdW11bGF0b3IgdmFyaWFibGUsIGJ1dCBJIGFtIHRvbyBsYXp5LgoKKioqIERPTkUgRXhlcmNp c2UgMS4xOCBJdGVyYXRpdmUgbXVsdGlwbGljYXRpb24KICAgIENMT1NFRDogWzIwMTktMDgtMzEg U2F0IDExOjQzXQoKSW4gRXhlcmNpc2UgMS4xNyBJIHNhaWQgdGhhdCBJIHdhcyB0b28gbGF6eSB0 byBkZXNpZ24gYW4gaXRlcmF0aXZlCnByb2NlZHVyZS4gV2VsbCwgbm93IEkgZG8gaXQgaW4gdGhp cyBleGVyY2lzZS4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZh bHVlCiAgKGRlZmluZSAoZG91YmxlIGEpCiAgICAoKiAyIGEpKQogIChkZWZpbmUgKGhhbHZlIGEp CiAgICAoaWYgKGV2ZW4/IGEpCgkoLyBhIDIpCgkocmFpc2UgIkVycm9yOiBhIG5vdCBldmVuLiIp KSkKICAoZGVmaW5lIChldmVuPyBuKQoJKD0gKHJlbWFpbmRlciBuIDIpIDApKQogIChkZWZpbmUg KG11bCBhIGIgYWNjdW11bGF0b3IpCiAgICAoY29uZCAKICAgICAoKD0gYiAwKSBhY2N1bXVsYXRv cikKICAgICAoKGV2ZW4/IGIpIChtdWwgKGRvdWJsZSBhKSAoaGFsdmUgYikpKQogICAgIChlbHNl IChtdWwgYSAoLSBiIDEpICgrIGEgYWNjdW11bGF0b3IpKSkpKQogICgqIDEzNyAxNykKIytlbmRf c3JjCgojK1JFU1VMVFM6CjogMjMyOQoKVGhlIGlkZWEgaGVyZSBpcyBleGFjdGx5IHRoZSBzYW1l IGFzIGluIHRoZSBwcmV2aW91cyBFeGVyY2lzZSAxLjE4LgoKKioqIERPTkUgRXhlcmNpc2UgMS4x OSBMb2dhcml0aG1pYyBGaWJvbmFjY2kKICAgIENMT1NFRDogWzIwMTktMDktMDEgU3VuIDIwOjQy XQoKQXMgdXN1YWx5LCBsZXQncyBmaXJzdCBjb3B5IHRoZSBjb2RlIG9mIH5maWItaXRlcn4uCgoj K2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZQogIChkZWZpbmUg KGZpYiBuKQogICAgKGZpYi1pdGVyIDEgMCBuKSkKICAoZGVmaW5lIChmaWItaXRlciBhIGIgY291 bnQpCiAgICAoaWYgKD0gY291bnQgMCkKCWIKCShmaWItaXRlciAoKyBhIGIpIGEgKC0gY291bnQg MSkpKSkKICAoZmliIDEwKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiA1NQoKVGhlIGZvcm11bGEg Zm9yIFwoVFwpIGlzIHRoZSBmb2xsb3dpbmc6CgpcYmVnaW57ZXFuYXJyYXl9ClRfe3BxfSBcYmVn aW57cG1hdHJpeH0gYVxcIGIgXGVuZHtwbWF0cml4fSAmID0gJiBcYmVnaW57cG1hdHJpeH0gYXEr YnErYXAgXFwgYnAgKyBhcSBcZW5ke3BtYXRyaXh9ICZcXCAKVF97cHF9IFxsZWZ0KCBUX3twcX0g XGJlZ2lue3BtYXRyaXh9IGFcXCBiIFxlbmR7cG1hdHJpeH0gXHJpZ2h0KSAmID0gJiBcYmVnaW57 cG1hdHJpeH0gKGFxK2JxK2FwKXErKGJwICsgYXEpcSsoYXErYnErYXApcCBcXCAoYnAgKyBhcSlw ICsgKGFxK2JxK2FwKXEgXGVuZHtwbWF0cml4fSAmXFwKVF97cCdxJ31cYmVnaW57cG1hdHJpeH0g YVxcIGIgXGVuZHtwbWF0cml4fSAmID0gJiBcYmVnaW57cG1hdHJpeH1hKDJwcSArIHFxKSArIGEo cHArcXEpICsgYigycHEgKyBxcSlcXCBhKDJwcSArIHFxKSArIGIocHAgKyBxcSkgXGVuZHtwbWF0 cml4fSYgXFwKXGVuZHtlcW5hcnJheX0KRnJvbSBoZXJlIHdlIGNhbiBlYXNpbHkgc2VlIHRoZSB2 YWx1ZXMgZm9yIFwocFxwcmltZVwpIGFuZCBcKHEnXCk6CiMgXChhKDJwcSArIHFxKSArIGEocHAr cXEpICsgYigycHEgKyBxcSlcKQojIFwoYSgycHEgKyBxcSkgKyBiKHBwICsgcXEpXCkKClwocCc9 cHArcXFcKSwgXChxJyA9IDJwcStxcVwpCgpMZXQgdXMgc3Vic3RpdHV0ZSB0aGVtIGludG8gdGhl IGNvZGUgZ2l2ZW4gYnkgQWJlbHNvbiBhbmQgU3Vzc21hbi4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6 ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCiAgKGRlZmluZSAoZmliIG4pCiAgICAoZmliLWl0 ZXIgMSAwIDAgMSBuKSkKICAoZGVmaW5lIChmaWItaXRlciBhIGIgcCBxIGNvdW50KQogICAgKGNv bmQgKCg9IGNvdW50IDApIGIpCgkgICgoZXZlbj8gY291bnQpCgkgICAoZmliLWl0ZXIgYQoJCSAg ICAgYgoJCSAgICAgKCsgKCogcCBwKSAoKiBxIHEpKQoJCSAgICAgKCsgKCogMiBwIHEpICgqIHEg cSkpCgkJICAgICAoLyBjb3VudCAyKSkpCgkgIChlbHNlIChmaWItaXRlciAoKyAoKiBiIHEpICgq IGEgcSkgKCogYSBwKSkKCQkJICAoKyAoKiBiIHApICgqIGEgcSkpCgkJCSAgcAoJCQkgIHEKCQkJ ICAoLSBjb3VudCAxKSkpKSkKICAoZmliIDEwKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiA1NQoK V29ya3MuCgoqKiogKkludGVyamVjdGlvbiogaXItbWFjcm8tdHJhbnNmb3JtZXIuCgojK2JlZ2lu X3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZQogIChkZWZpbmUtc3ludGF4 IHN3YXAhCiAgICAoaXItbWFjcm8tdHJhbnNmb3JtZXIKICAgICAobGFtYmRhIChmb3JtIGluamVj dCBjb21wYXJlPykKICAgICAgIChsZXQgKChhIChjYWRyIGZvcm0pKQoJICAgICAoYiAoY2FkZHIg Zm9ybSkpCgkgICAgICh0bXAgKGNhZHIgZm9ybSkpKQoJICAgICAoc2V0ISBhIGIpCgkgICAgIChz ZXQhIGIgdG1wKSkpKSkKICAoZGVmaW5lIHggNCkKICAoZGVmaW5lIHkgNSkKICAoc3dhcCEgeCB5 KQogIChsaXN0IHggeSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogIntFeGNlcHRpb24gIzE5IHVz ZXIgXCJ1bmRlZmluZWQgdmFyaWFibGVcIiAoaXItbWFjcm8tdHJhbnNmb3JtZXIpICM8cHJvY2Vk dXJlICNmPiAoI2YgLiAzKX0iCgoqKiogRE9ORSBFeGVyY2lzZSAxLjIwIEdDRCBhcHBsaWNhdGl2 ZSB2cyBub3JtYWwgOmVyX21hY3JvX3RyYW5zZm9ybWVyOm1hY3JvOgogICAgQ0xPU0VEOiBbMjAx OS0wOS0wMSBTdW4gMjM6MDRdClRoZSBleGVyY2lzZSB1cmdlcyB1cyB0byByZWNhbGwgdGhlIGRp ZmZlcmVuY2UgYmV0d2VlbiB0aGUgbm9ybWFsCm9yZGVyIGFuZCB0aGUgYXBwbGljYXRpdmUgb3Jk ZXIgb2YgZXZhbHVhdGlvbi4KCiAqTm9ybWFsKjogZnVsbHkgZXhwYW5kIHRoZSBjb21wdXRhdGlv biB0cmVlIHVudGlsIG9idGFpbmVkIGFuCmV4cHJlc3Npb24gaW52b2x2aW5nIG9ubHkgcHJpbWl0 aXZlIG9wZXJhdG9ycy4KCiAqQXBwbGljYXRpdmUqOiBldmFsdWF0ZSB0aGUgYXJndW1lbnRzIGFu ZCB0aGVuIGFwcGx5LgoKRmlyc3QgbGV0IHVzIHByaW50IHRoZSBleGVjdXRpb24gdHJlZSBvZiB0 aGUgbm9ybWFsIG9yZGVyLgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0 cyBvdXRwdXQKICAgIChkZWZpbmUtc3ludGF4IGdjZC1ub3JtYWwKICAgICAgKGVyLW1hY3JvLXRy YW5zZm9ybWVyCiAgICAgICAobGFtYmRhIChmb3JtIHJlbmFtZSBjb21wYXJlPykKCSAobGV0ICgo YSAoY2FkciBmb3JtKSkKCSAgICAgICAoYiAoY2FkZHIgZm9ybSkpKQoJICAgKGlmICg9IGIgMCkK CQlgKGlmICg9ICxiIDApCiAgICAgICAgICAgICAgICAgICAgICxhCiAgICAgICAgICAgICAgICAg ICAgIChyZW1haW5kZXIgLGEgLGIpKQoJCWAoaWYgKD0gLGIgMCkKCQkgICAgICgsYSAocmVtYWlu ZGVyICxhICxiKSkKCQkgICAgIChnY2Qtbm9ybWFsICxiICwocmVtYWluZGVyIGEgYikpKSkpKSkp CiAgICAgIChkaXNwbGF5IChzaG93ICNmICIgIiAocHJldHR5IChtYWNyb2V4cGFuZCAnKGdjZC1u b3JtYWwgMjA2IDQwKSkpKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogIChpZiAoPSA0MCAwKQo6 ICAgICAgKDIwNiAocmVtYWluZGVyIDIwNiA0MCkpCjogICAgICAoaWYgKD0gNiAwKQo6ICAgICAg ICAgICg0MCAocmVtYWluZGVyIDQwIDYpKQo6ICAgICAgICAgIChpZiAoPSA0IDApCjogICAgICAg ICAgICAgICg2IChyZW1haW5kZXIgNiA0KSkKOiAgICAgICAgICAgICAgKGlmICg9IDIgMCkgKDQg KHJlbWFpbmRlciA0IDIpKSAoaWYgKD0gMCAwKSAyIChyZW1haW5kZXIgMiAwKSkpKSkpCgpOb3cg bGV0IHVzIHNob3cgdGhlIGFwcGxpY2F0aXZlIG9yZGVyLgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4 cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKICAgIChkZWZpbmUtc3ludGF4IGdjZC1ub3JtYWwK ICAgICAgKGVyLW1hY3JvLXRyYW5zZm9ybWVyCiAgICAgICAobGFtYmRhIChmb3JtIHJlbmFtZSBj b21wYXJlPykKCSAobGV0ICgoYSAoY2FkciBmb3JtKSkKCSAgICAgICAoYiAoY2FkZHIgZm9ybSkp KQoJICAgKGlmICg9IGIgMCkKCQlgKGlmICg9ICxiIDApCiAgICAgICAgICAgICAgICAgICAgICxh CiAgICAgICAgICAgICAgICAgICAgICdkaXZpc2lvbi1ieS16ZXJvKQoJCWAoaWYgKD0gLGIgMCkK CQkgICAgICgsYSAocmVtYWluZGVyICxhICxiKSkKCQkgICAgIChnY2Qtbm9ybWFsICxiICwocmVt YWluZGVyIGEgYikpKSkpKSkpCiAgICAgIChkaXNwbGF5IChzaG93ICNmICIgIiAocHJldHR5ICht YWNyb2V4cGFuZCAnKGdjZC1ub3JtYWwgMjA2IDQwKSkpKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6 CjogIChpZiAoPSA0MCAwKQo6ICAgICAgKDIwNiAocmVtYWluZGVyIDIwNiA0MCkpCjogICAgICAo aWYKOiAgICAgICAoPSA2IDApCjogICAgICAgKDQwIChyZW1haW5kZXIgNDAgNikpCjogICAgICAg KGlmICg9IDQgMCkKOiAgICAgICAgICAgKDYgKHJlbWFpbmRlciA2IDQpKQo6ICAgICAgICAgICAo aWYgKD0gMiAwKSAoNCAocmVtYWluZGVyIDQgMikpIChpZiAoPSAwIDApIDIgJ2RpdmlzaW9uLWJ5 LXplcm8pKSkpKQoKVGhlIHByb2JsZW0gaGVyZSB3b3VsZCBhcmlzZSwgaWYgdGhlIH4oaWYpfiBm b3JtIGhhZCBhIG5vcm1hbApldmFsdWF0aW9uIG9yZGVyLCBiZWNhdXNlIHRoZSBsYXN0IGRpdmlz aW9uLCB+KHJlbWFpbmRlciAyIDApfiBtYXkgYmUKYSBmb3JiaWRkZW4gb3BlcmF0aW9uLCBpbnZv bHZpbmcgYSBkaXZpc2lvbiBieSB6ZXJvLiBPbiB0aGUgb3RoZXIKaGFuZCwgdGhlIGV2YWx1YXRp b24gb2YgfihyZW1haW5kZXIgeCAwKX4gY291bGQgYmUgZGVmaW5lZCBhcyAqeCosIGFuZAp0aGVu IHRoZSBhbGdvcml0aG0gd291bGQgZXZhbHVhdGUgb25lIG1vcmUgKHVzZWxlc3MpIHJlbWFpbmRl ci4KCioqKiBET05FIEV4ZXJjaXNlIDEuMjEgc21hbGxlc3QtZGl2aXNvcgogICAgQ0xPU0VEOiBb MjAxOS0wOS0wMSBTdW4gMjM6NDNdCgpBcyB1c3VhbCwgbGV0IHVzIGZpcnN0IGNvcHkgdGhlIGNv ZGUgZm9yIHRoZSB+c21hbGxlc3QtZGl2aXNvcn4uCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9y dHMgYm90aCA6cmVzdWx0cyBvdXRwdXQgOm5vd2ViLXJlZiBwcmltZXRlc3QKICAoZGVmaW5lIChz bWFsbGVzdC1kaXZpc29yIG4pCiAgICAoZmluZC1kaXZpc29yIG4gMikpCiAgKGRlZmluZSAoZmlu ZC1kaXZpc29yIG4gdGVzdC1kaXZpc29yKQogICAgKGNvbmQgKCg+IChzcXVhcmUgdGVzdC1kaXZp c29yKSBuKSBuKQoJICAoKGRpdmlkZXM/IHRlc3QtZGl2aXNvciBuKSB0ZXN0LWRpdmlzb3IpCgkg IChlbHNlIChmaW5kLWRpdmlzb3IgbiAoKyB0ZXN0LWRpdmlzb3IgMSkpKSkpCiAgKGRlZmluZSAo ZGl2aWRlcz8gYSBiKSAoPSAocmVtYWluZGVyIGIgYSkgMCkpCgogIChkZWZpbmUgKHByaW1lPyBu KQogICAgKD0gbiAoc21hbGxlc3QtZGl2aXNvciBuKSkpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMg c2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CiAgPDxwcmltZXRlc3Q+PgogIChk aXNwbGF5IChzbWFsbGVzdC1kaXZpc29yIDE5OSkpCiAgKG5ld2xpbmUpCiAgKGRpc3BsYXkgKHNt YWxsZXN0LWRpdmlzb3IgMTk5OSkpCiAgKG5ld2xpbmUpCiAgKGRpc3BsYXkgKHNtYWxsZXN0LWRp dmlzb3IgMTk5OTkpKQogIChuZXdsaW5lKQogIChkaXNwbGF5ICgvIDE5OTk5IDcpKQogIChuZXds aW5lKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAxOTkKOiAxOTk5CjogNwo6IDI4NTcKCldlbGws IHRoaXMgcHJvYmxlbSBkb2Vzbid0IGxvb2sgdG9vIGNvbXBsaWNhdGVkIG9uIHRoZSBmaXJzdCBn bGFuY2UuCgoqKiogRE9ORSBFeGVyY2lzZSAxLjIyIHRpbWVkLXByaW1lLXRlc3QKICAgIENMT1NF RDogWzIwMTktMDktMDIgTW9uIDAwOjQ0XQoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJv dGggOnJlc3VsdHMgb3V0cHV0IDpub3dlYi1yZWYgdGltZWQtcHJpbWV0ZXN0CiAgKGRlZmluZSAo cnVudGltZSkgKCogMTAwMCAoY3VycmVudC1zZWNvbmQpKSkKCiAgKGRlZmluZSAodGltZWQtcHJp bWUtdGVzdCBuKQogICAgKG5ld2xpbmUpCiAgICAoZGlzcGxheSBuKQogICAgKHN0YXJ0LXByaW1l LXRlc3QgbiAocnVudGltZSkpKQoKICAoZGVmaW5lIChzdGFydC1wcmltZS10ZXN0IG4gc3RhcnQt dGltZSkKICAgIChpZiAocHJpbWU/IG4pCgkocmVwb3J0LXByaW1lICgtIChydW50aW1lKSBzdGFy dC10aW1lKSkpKQoKICAoZGVmaW5lIChyZXBvcnQtcHJpbWUgZWxhcHNlZC10aW1lKQogICAgKGRp c3BsYXkgIiAqKiogIikKICAgIChkaXNwbGF5IGVsYXBzZWQtdGltZSkpCiAgKGRlZmluZSAoc2Vh cmNoLWZvci1wcmltZXMgc3RhcnQgZmluaXNoKQogICAgKHRpbWVkLXByaW1lLXRlc3Qgc3RhcnQp CiAgICAoaWYgKDwgKCsgMSBzdGFydCkgZmluaXNoKQoJKGlmIChldmVuPyBzdGFydCkKCSAgICAo c2VhcmNoLWZvci1wcmltZXMgKCsgc3RhcnQgMSkgZmluaXNoKQoJICAgIChzZWFyY2gtZm9yLXBy aW1lcyAoKyBzdGFydCAyKSBmaW5pc2gpKSkpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1l IDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CiAgPDxwcmltZXRlc3Q+PgogIDw8dGltZWQt cHJpbWV0ZXN0Pj4KICAoc2VhcmNoLWZvci1wcmltZXMgMTAwMCAxMDIwKQogIChuZXdsaW5lKQog IChzZWFyY2gtZm9yLXByaW1lcyAxMDAwMCAxMDAzOCkKICAobmV3bGluZSkKICAoc2VhcmNoLWZv ci1wcmltZXMgMTAwMDAwIDEwMDA0NCkKICAobmV3bGluZSkKICAoc2VhcmNoLWZvci1wcmltZXMg MTAwMDAwMCAxMDAwMDM4KQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKIytiZWdpbl9leGFtcGxlCgox MDAwCjEwMDEKMTAwMwoxMDA1CjEwMDcKMTAwOSAqKiogMC4wMDYxMDM1MTU2MjUKMTAxMQoxMDEz ICoqKiAwLjAwNTg1OTM3NQoxMDE1CjEwMTcKMTAxOSAqKiogMC4wMDU4NTkzNzUKCjEwMDAwCjEw MDAxCjEwMDAzCjEwMDA1CjEwMDA3ICoqKiAwLjAxNjg0NTcwMzEyNQoxMDAwOSAqKiogMC4wMTY4 NDU3MDMxMjUKMTAwMTEKMTAwMTMKMTAwMTUKMTAwMTcKMTAwMTkKMTAwMjEKMTAwMjMKMTAwMjUK MTAwMjcKMTAwMjkKMTAwMzEKMTAwMzMKMTAwMzUKMTAwMzcgKioqIDAuMDE2ODQ1NzAzMTI1Cgox MDAwMDAKMTAwMDAxCjEwMDAwMyAqKiogMC4wNTI5Nzg1MTU2MjUKMTAwMDA1CjEwMDAwNwoxMDAw MDkKMTAwMDExCjEwMDAxMwoxMDAwMTUKMTAwMDE3CjEwMDAxOSAqKiogMC4wNTI5Nzg1MTU2MjUK MTAwMDIxCjEwMDAyMwoxMDAwMjUKMTAwMDI3CjEwMDAyOQoxMDAwMzEKMTAwMDMzCjEwMDAzNQox MDAwMzcKMTAwMDM5CjEwMDA0MQoxMDAwNDMgKioqIDAuMDUyMDAxOTUzMTI1CgoxMDAwMDAwCjEw MDAwMDEKMTAwMDAwMyAqKiogMC4xNjM4MTgzNTkzNzUKMTAwMDAwNQoxMDAwMDA3CjEwMDAwMDkK MTAwMDAxMQoxMDAwMDEzCjEwMDAwMTUKMTAwMDAxNwoxMDAwMDE5CjEwMDAwMjEKMTAwMDAyMwox MDAwMDI1CjEwMDAwMjcKMTAwMDAyOQoxMDAwMDMxCjEwMDAwMzMgKioqIDAuMTY1MDM5MDYyNQox MDAwMDM1CjEwMDAwMzcgKioqIDAuMTY0MDYyNQojK2VuZF9leGFtcGxlCgogLSBXcml0ZSB0aGUg cHJvY2VkdXJlOiBkb25lLgogLSBGaW5kIHRoZSBzbWFsbGVzdCB0aHJlZSBwcmltZXMgZ3JlYXRl ciB0aGFuIDEwMDAgICA6IGZvdW5kLgogLSBGaW5kIHRoZSBzbWFsbGVzdCB0aHJlZSBwcmltZXMg Z3JlYXRlciB0aGFuIDEwMDAwICA6IGZvdW5kLgogLSBGaW5kIHRoZSBzbWFsbGVzdCB0aHJlZSBw cmltZXMgZ3JlYXRlciB0aGFuIDEwMDAwMCA6IGZvdW5kLgogLSBGaW5kIHRoZSBzbWFsbGVzdCB0 aHJlZSBwcmltZXMgZ3JlYXRlciB0aGFuIDEwMDAwMDA6IGZvdW5kLgogLSBUaGUgdGltaW5nIGRh dGEgY29uZmlybXMgdGhlIHByZWRpY3Rpb24uIFwoXHNxcnR7MTB9XGFwcHJveDNcKSwgXCgwLjE2 IFxhcHByb3ggM1xjZG90MS4wNVwpLgogLSBUaGUgZXhlY3V0aW9uIHRpbWUgcGVyIHN0ZXAgZm9y IHRlc3RpbmcgMS4wMDAuMDAwIGlzIDEuNjNlLTA3LiBUaGUKICAgZXhlY3V0aW9uIHRpbWUgcGVy IHN0ZXAgZm9yIHRlc3RpbmcgMTAwLjAwMCA1LjMxOTllLTA3LiBBdCBsZWFzdCBvbgogICBteSBt YWNoaW5lIHRoZSBjbGFpbSBkb2Vzbid0IHNlZW0gdG8gaG9sZCB2ZXJ5IHdlbGwuCgoqKiogRE9O RSBFeGVyY2lzZSAxLjIzIChuZXh0IHRlc3QtZGl2aXNvcikKICAgIENMT1NFRDogWzIwMTktMDkt MDIgTW9uIDA5OjU2XQoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMg dmFsdWUgOm5vd2ViLXJlZiBpbXByb3ZlZC1wcmltZXRlc3QKICAoZGVmaW5lIChuZXh0IHgpCiAg ICAoaWYgKD0gMiB4KQoJMwoJKCsgeCAyKSkpCiAgKGRlZmluZSAoc21hbGxlc3QtZGl2aXNvciBu KQogICAgKGZpbmQtZGl2aXNvciBuIDIpKQogIChkZWZpbmUgKGZpbmQtZGl2aXNvciBuIHRlc3Qt ZGl2aXNvcikKICAgIChjb25kICgoPiAoc3F1YXJlIHRlc3QtZGl2aXNvcikgbikgbikKCSAgKChk aXZpZGVzPyB0ZXN0LWRpdmlzb3IgbikgdGVzdC1kaXZpc29yKQoJICAoZWxzZSAoZmluZC1kaXZp c29yIG4gKG5leHQgdGVzdC1kaXZpc29yKSkpKSkKICAoZGVmaW5lIChkaXZpZGVzPyBhIGIpICg9 IChyZW1haW5kZXIgYiBhKSAwKSkKCiAgKGRlZmluZSAocHJpbWU/IG4pCiAgICAoPSBuIChzbWFs bGVzdC1kaXZpc29yIG4pKSkKCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRz IGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8aW1wcm92ZWQtcHJpbWV0ZXN0Pj4KPDx0aW1lZC1wcmlt ZXRlc3Q+PgoodGltZWQtcHJpbWUtdGVzdCAxMDA5KQoodGltZWQtcHJpbWUtdGVzdCAxMDEzKQoo dGltZWQtcHJpbWUtdGVzdCAxMDE5KQoodGltZWQtcHJpbWUtdGVzdCAxMDAwNykKKHRpbWVkLXBy aW1lLXRlc3QgMTAwMDkpCih0aW1lZC1wcmltZS10ZXN0IDEwMDM3KQoodGltZWQtcHJpbWUtdGVz dCAxMDAwMDMpCih0aW1lZC1wcmltZS10ZXN0IDEwMDAxOSkKKHRpbWVkLXByaW1lLXRlc3QgMTAw MDQzKQoodGltZWQtcHJpbWUtdGVzdCAxMDAwMDAzKQoodGltZWQtcHJpbWUtdGVzdCAxMDAwMDMz KQoodGltZWQtcHJpbWUtdGVzdCAxMDAwMDM3KQoKIytlbmRfc3JjCgojK1JFU1VMVFM6CiMrYmVn aW5fZXhhbXBsZQoKMTAwOSAqKiogMC4wMTAwMDk3NjU2MjUKMTAxMyAqKiogMC4wMDM5MDYyNQox MDE5ICoqKiAwLjAwMzkwNjI1CjEwMDA3ICoqKiAwLjAxMDAwOTc2NTYyNQoxMDAwOSAqKiogMC4w MTAwMDk3NjU2MjUKMTAwMzcgKioqIDAuMDEwMDA5NzY1NjI1CjEwMDAwMyAqKiogMC4wMzEwMDU4 NTkzNzUKMTAwMDE5ICoqKiAwLjAzMDc2MTcxODc1CjEwMDA0MyAqKiogMC4wMzAwMjkyOTY4NzUK MTAwMDAwMyAqKiogMC4xMDIwNTA3ODEyNQoxMDAwMDMzICoqKiAwLjEwNDczNjMyODEyNQoxMDAw MDM3ICoqKiAwLjEwMjA1MDc4MTI1CiMrZW5kX2V4YW1wbGUKCldlIGNhbiBzZWUgdGhhdCB0aGUg dGVzdCBkb2VzIHNob3cgYSBzcGVlZCBpbXByb3ZlbWVudCwgYWx0aG91Z2ggbm90CmFzIGltcHJl c3NpdmUgYXMgMiB0aW1lcy4gV2UgY2FuIG9ic2VydmUgdGhhdCB0aGUgbnVtYmVyIG9mIHN0ZXBz IGlzCm5vdCByZWFsbHkgaGFsdmVkLCBzaW5jZSB+KCsgYSBiKX4gcmVxdWlyZXMgb25lIG9wZXJh dGlvbiwgYW5kIH4oaWYgKD0KMiB4KSAzIGVsc2UgKCsgMyAyKSl+IHJlcXVpcmVzIHRocmVlIG9w ZXJhdGlvbnMsIHNvIHRoZSBzcGVlZCBzaG91bGQKaW1wcm92ZSBieSAzLzIsIHdoaWNoIHdlIGNh biBvYnNlcnZlLgoKKioqIERPTkUgRXhlcmNpc2UgMS4yNCBGZXJtYXQgbWV0aG9kCiAgICBDTE9T RUQ6IFsyMDE5LTA5LTAyIE1vbiAxMTozMl0KCkZpcnN0bHkgd2UgbmVlZCB0aGUgfihmYXN0LXBy aW1lPyl+IHByb2NlZHVyZS4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1 bHRzIHZhbHVlIDpub3dlYi1yZWYgcmFuZG9tCihkZWZpbmUgKHJhbmRvbSB4KQogIChyYW5kb20t aW50ZWdlciB4KSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogMzAKCiMrYmVnaW5fc3JjIHNjaGVt ZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpub3dlYi1yZWYgZXhwbW9kCiAgKGRlZmlu ZSAoZXhwbW9kIGJhc2UgZXhwIG0pCiAgICAoY29uZCAoKD0gZXhwIDApIDEpCgkgICgoZXZlbj8g ZXhwKQoJICAgKHJlbWFpbmRlcgoJICAgIChzcXVhcmUgKGV4cG1vZCBiYXNlICgvIGV4cCAyKSBt KSkKCSAgICBtKSkKCSAgKGVsc2UKCSAgIChyZW1haW5kZXIKCSAgICAoKiBiYXNlIChleHBtb2Qg YmFzZSAoLSBleHAgMSkgbSkpCgkgICAgbSkpKSkKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hl bWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIGZlcm1hdC1wcmltZXRl c3QKPDxyYW5kb20+PgogIChkZWZpbmUgKGZlcm1hdC10ZXN0IG4pCiAgICAoZGVmaW5lICh0cnkt aXQgYSkKICAgICAgKD0gKGV4cG1vZCBhIG4gbikgYSkpCiAgICAodHJ5LWl0ICgrIDEgKHJhbmRv bSAoLSBuIDEpKSkpKQogIChkZWZpbmUgcHJpbWUtdGVzdCBmZXJtYXQtdGVzdCkKIytlbmRfc3Jj CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWIt cmVmIGZhc3QtcHJpbWUKICAoZGVmaW5lIChmYXN0LXByaW1lPyBuIHRpbWVzKQogICAgKGNvbmQg KCg9IHRpbWVzIDApIHRydWUpCgkgICgocHJpbWUtdGVzdCBuKSAoZmFzdC1wcmltZT8gbiAoLSB0 aW1lcyAxKSkpCgkgIChlbHNlIGZhbHNlKSkpCiAgKGRlZmluZSB0cnVlICN0KQogIChkZWZpbmUg ZmFsc2UgI2YpCiAgKGRlZmluZSAocHJpbWU/IHgpCiAgICAoZmFzdC1wcmltZT8geCAxMCkpCiMr ZW5kX3NyYwoKIytSRVNVTFRTOgo6ICM8dW5kZWY+CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9y dHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKPDxleHBtb2Q+Pgo8PGZlcm1hdC1wcmltZXRlc3Q+Pgo8 PGZhc3QtcHJpbWU+Pgo8PHRpbWVkLXByaW1ldGVzdD4+Cih0aW1lZC1wcmltZS10ZXN0IDEwMDkp Cih0aW1lZC1wcmltZS10ZXN0IDEwMTMpCih0aW1lZC1wcmltZS10ZXN0IDEwMTkpCih0aW1lZC1w cmltZS10ZXN0IDEwMDA3KQoodGltZWQtcHJpbWUtdGVzdCAxMDAwOSkKKHRpbWVkLXByaW1lLXRl c3QgMTAwMzcpCih0aW1lZC1wcmltZS10ZXN0IDEwMDAwMykKKHRpbWVkLXByaW1lLXRlc3QgMTAw MDE5KQoodGltZWQtcHJpbWUtdGVzdCAxMDAwNDMpCih0aW1lZC1wcmltZS10ZXN0IDEwMDAwMDMp Cih0aW1lZC1wcmltZS10ZXN0IDEwMDAwMzMpCih0aW1lZC1wcmltZS10ZXN0IDEwMDAwMzcpCih0 aW1lZC1wcmltZS10ZXN0IDEwMDApCih0aW1lZC1wcmltZS10ZXN0IDY2MDEpCiMrZW5kX3NyYwoK IytSRVNVTFRTOgojK2JlZ2luX2V4YW1wbGUKCjEwMDkgKioqIDAuMDgzMDA3ODEyNQoxMDEzICoq KiAwLjA1Nzg2MTMyODEyNQoxMDE5ICoqKiAwLjA2MDc5MTAxNTYyNQoxMDAwNyAqKiogMC4wNzI5 OTgwNDY4NzUKMTAwMDkgKioqIDAuMDcxMDQ0OTIxODc1CjEwMDM3ICoqKiAwLjA3Mjc1MzkwNjI1 CjEwMDAwMyAqKiogMC4wODMyNTE5NTMxMjUKMTAwMDE5ICoqKiAwLjA4NDk2MDkzNzUKMTAwMDQz ICoqKiAwLjA4NTY5MzM1OTM3NQoxMDAwMDAzICoqKiAwLjA5NTIxNDg0Mzc1CjEwMDAwMzMgKioq IDAuMDk2MTkxNDA2MjUKMTAwMDAzNyAqKiogMC4wOTgxNDQ1MzEyNQoxMDAwCjY2MDEgKioqIDAu MDQ3ODUxNTYyNQojK2VuZF9leGFtcGxlCgpGaXJzdGx5LCBvYnNlcnZlIHRoYXQgdGhlIGludGVy cHJldGVyIHNlZW1zIHRvIGJlIGRvaW5nIHNvbWUgYmxhY2sgbWFnaWMsIHNvCnRoYXQgdGhlIHRl c3QgZm9yIDEwMDkgdGFrZXMgbW9yZSB0aW1lIHRoYW4gdGhlIHRlc3QgZm9yIDEwMTMuCgpTZWNv bmRseSwgb2JzZXJ2ZSB0aGF0IGluZGVlZCwgdGhlIHNwZWVkIHNlZW1zIHRvIGhhdmUgcmVkdWNl ZCBpdHMgZGVwZW5kZW5jZQpvbiB0aGUgbGVuZ3RoIG9mIGEgbnVtYmVyLCBhbmQgaWYgd2Ugd2Fu dCB0byB0ZXN0IGV2ZW4gYmlnZ2VyIG51bWJlcnMsIHRoZQpkZXBlbmRlbmN5IHNob3VsZCBiZWNv bWUgZXZlbiBzbWFsbGVyLCBhcyBcKFxsb2cobilcKSBncm93cyB2ZXJ5IHNsb3dseS4gSW4KcGFy dGljdWxhciwgY29tcGFyaW5nIHRoZSByYW5nZSBhcm91bmQgMTAwMCBhbmQgMTAwMC4wMDAsIHRo ZSByYXRpbyBvZgpcKFxmcmFje1xsb2dfezEwfSgxMDAwMDAwKX17XGxvZ197MTB9KDEwMDApfSA9 IFxmcmFjezZ9ezN9ID0gMlwpLiBUaGlzIGRvZXNuJ3Qgc2VlbQp0byBiZSBjb21wbGV0ZWx5IHRo ZSBjYXNlLCBidXQgaGV5LCB0aGVyZSBtYXkgYmUgc29tZSBjb25zdGFudHMgaW52b2x2ZWQsIGFz CndlbGwgYXMgc29tZSBpbnRlcnByZXRlciBkYXJrIG1hZ2ljLgoKKioqIERPTkUgRXhlcmNpc2Ug MS4yNSBleHBtb2QKICAgIENMT1NFRDogWzIwMTktMDktMDIgTW9uIDEyOjQ2XQoKV2VsbCwgaW4g cHJpbmNpcGxlLCBBbHlzc2EncyBhbGdvcml0aG0gc2hvdWxkIHdvcmsuIFRoZSBwcm9ibGVtIGhl cmUgcmVhbGx5CmlzIHRoYXQgd2Ugd291bGQgaGF2ZSB0byBzdG9yZSB0aGUgbnVtYmVyIFwoYV5u XCksIHdoaWNoIGlzIGEgdmVyeSBiaWcgbnVtYmVyLAplc3BlY2lhbGx5IGJlY2F1c2Ugd2UgYXJl IGludGVyZXN0ZWQgaW4gdGVzdGluZyBwcmltYWxpdHkgb2YgdmVyeSBsYXJnZQpudW1iZXJzIChl LmcuLCA1MTItYml0IGxvbmcgY3J5cHRvZ3JhcGh5IGtleXMpLCBhbmQgXCgoMl57MjU2LTF9KV57 Ml57MjU2fX1cKQppcyBhIHZlcnkgbGFyZ2UgbnVtYmVyLgoKKioqIERPTkUgRXhlcmNpc2UgMS4y NiBzcXVhcmUgdnMgbXVsCiAgICBDTE9TRUQ6IFsyMDE5LTA5LTAyIE1vbiAxMjo1MF0KClRoZSBo aW50IGhlcmUgbGllcyBpbiB0aGUgbmFtZSBvZiB0aGUgcGVyc29uIGhlbHBpbmcgTG91aXMuIEV2 YSBMdSBBdG9yCnNvdW5kcyBzaW1pbGFyIHRvICJldmFsdWF0b3IiLCBhbmQgdGhlIHJlYXNvbiBm b3IgTG91aXMncyBwcm9ibGVtIHJlYWxseSBsaWVzCmluIHRoZSBvcHRpbWl6YXRpb24gY2FwYWJp bGl0aWVzIG9mIHRoZSBpbnRlcnByZXRlci4gVGhhdCBpcywgaWYgdGhlCmV2YWx1YXRpbmcgYWxn b3JpdGhtIHVzZXMgYXBwbGljYXRpdmUgb3JkZXIsIHRoZW4gdGhlIH5leHBtb2R+IGlzIGV2YWx1 YXRlZAp0d2ljZSBwZXIgc3RlcCwgd2hpY2ggbWFrZXMgfigvIGV4cCAyKX4gdXNlbGVzcy4gSWYs IGhvd2V2ZXIsIHRoZSBpbnRlcnByZXRlcgpjYW4gbWVtb2l6ZSB0aGUgcmVzdWx0cywgaGlzIGFs Z29yaXRobSB3b3VsZCBiZSBqdXN0IGFzIGdvb2QuCgoqKiogRE9ORSBFeGVyY2lzZSAxLjI3IENh cm1pY2hhZWwgbnVtYmVycwogICAgQ0xPU0VEOiBbMjAxOS0wOS0wMiBNb24gMjA6NTBdCgpGaXJz dCBsZXQgdXMgcmVjYWxsIHNvbWUgQ2FybWljaGFlbCBudW1iZXJzLgoKfCAjIHwgICAgICB8Cnwt LS0rLS0tLS0tfAp8IDEgfCAgNTYxIHwKfCAyIHwgMTEwNSB8CnwgMyB8IDE3MjkgfAp8IDQgfCAy NDY1IHwKfCA1IHwgMjgyMSB8CnwgNiB8IDY2MDEgfAoKV2UgYWxyZWFkeSBoYXZlIGEgcHJvY2Vk dXJlIHRoYXQgY29tcHV0ZXMgXChhXm5cbW9kIG5cKSwgYW5kIGEgcHJvY2VkdXJlIHRoYXQKY29t cHV0ZXMgXChhXG1vZCBuXCkgaXMgZXZlbiBhIHNjaGVtZSBwcmltaXRpdmUuIE1vcmVvdmVyLCB3 ZSBldmVuIGhhdmUgYWxsCnRoZSBjb2RlIHRoYXQgZG9lcyB0aGUgY29tcGFyaXNvbiwgd2l0aCB0 aGUgc2luZ2xlIGRpZmZlcmVuY2UgLSBvdXIgZXhpc3RpbmcKY29kZSB0YWtlcyBhbiBpbml0aWFs IGd1ZXNzIHVuaWZvcm1seSBhdCByYW5kb20sIHdoZXJlYXMgd2UgbmVlZCB0byBjaGVjayBhbGwK XCggYSA8IG5cKS4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91 dHB1dAo8PGV4cG1vZD4+CiAgKGRlZmluZSAoY29uZ3J1ZW50PyBhIG4pCiAgICAoPSAoZXhwbW9k IGEgbiBuKSBhKSkKICAoZGVmaW5lIChjYXJtaWNoYWVsLWl0ZXIgYSBuKQogICAgKGNvbmQgKCg9 IGEgbikgI3QpCgkgICgobm90IChjb25ncnVlbnQ/IGEgbikpICNmKQoJICAoZWxzZSAoY2FybWlj aGFlbC1pdGVyICgrIDEgYSkgbikpKSkKICAoZGVmaW5lIChjYXJtaWNoYWVsLW9yLXByaW1lPyBu KQogICAgKGNhcm1pY2hhZWwtaXRlciAxIG4pKQogIChkZWZpbmUgKHRlc3QtY2FybWljaGFlbCBu KQogICAgKGRpc3BsYXkgIlRlc3RpbmcgIikKICAgIChkaXNwbGF5IG4pCiAgICAoZGlzcGxheSAi OiAiKQogICAgKGlmIChjYXJtaWNoYWVsLW9yLXByaW1lPyBuKQogICAgICAoZGlzcGxheSAidHJ1 ZSIpCiAgICAgIChkaXNwbGF5ICJmYWxzZSIpKQogICAgKG5ld2xpbmUpKQogICh0ZXN0LWNhcm1p Y2hhZWwgNTYxKQogICh0ZXN0LWNhcm1pY2hhZWwgMTEwNSkKICAodGVzdC1jYXJtaWNoYWVsIDE3 MjkpCiAgKHRlc3QtY2FybWljaGFlbCAyNDY1KQogICh0ZXN0LWNhcm1pY2hhZWwgMjgyMSkKICAo dGVzdC1jYXJtaWNoYWVsIDY2MDEpCiAgKHRlc3QtY2FybWljaGFlbCAyMCkKICAodGVzdC1jYXJt aWNoYWVsIDcpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IFRlc3RpbmcgNTYxOiB0cnVlCjogVGVz dGluZyAxMTA1OiB0cnVlCjogVGVzdGluZyAxNzI5OiB0cnVlCjogVGVzdGluZyAyNDY1OiB0cnVl CjogVGVzdGluZyAyODIxOiB0cnVlCjogVGVzdGluZyA2NjAxOiB0cnVlCjogVGVzdGluZyAyMDog ZmFsc2UKOiBUZXN0aW5nIDc6IHRydWUKCioqKiBET05FIEV4ZXJjaXNlIDEuMjggTWlsbGVyLVJh YmluCiAgICBDTE9TRUQ6IFsyMDE5LTA5LTAyIE1vbiAyMzoyOF0KIytiZWdpbl9zcmMgc2NoZW1l IDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBleHBtb2QtbWlsbGVyLXJh YmluCiAgKGRlZmluZSAoZXhwbW9kIGJhc2UgZXhwIG0pCiAgICAoY29uZCAoKD0gZXhwIDApIDEp CgkgICgoZXZlbj8gZXhwKQoJICAgKGxldCogKChyb290IChleHBtb2QgYmFzZSAoLyBleHAgMikg bSkpCgkJICAoc3EgKHNxdWFyZSByb290KSkpCgkgICAgIChpZiAoYW5kICg9IChyZW1haW5kZXIg c3EgbSkgMSkgKG5vdCAob3IgKD0gcm9vdCAxKSAoPSByb290ICgtIG0gMSkpKSkpCgkgICAgICAw CgkgICAgICAocmVtYWluZGVyIHNxIG0pKSkpCgkgIChlbHNlCgkgICAocmVtYWluZGVyCgkgICAg KCogYmFzZSAoZXhwbW9kIGJhc2UgKC0gZXhwIDEpIG0pKQoJICAgIG0pKSkpCiMrZW5kX3NyYwoK IytSRVNVTFRTOgo6ICM8dW5kZWY+CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6 cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIG1pbGxlci1yYWJpbi1wcmltZXRlc3QKICAgIDw8cmFu ZG9tPj4KICAgICAgKGRlZmluZSAocmFiaW4tdGVzdCBuKQoJKGRlZmluZSAodHJ5LWl0IGEpCgkg IChsZXQgKChyZXN1bHQgKGV4cG1vZCBhICgtIG4gMSkgbikgKSkKCSAgICAoaWYgKG9yICg9IDEg cmVzdWx0KSAgKD0gbiAxKSAoPSBuIDApKQoJICAgICN0CgkgICAgI2YpKSkKCShpZiAobm90ICg9 IG4gMSkpICh0cnktaXQgKCsgMSAocmFuZG9tICgtIG4gMSkpKSkgI3QpKQogICAgICAoZGVmaW5l IHByaW1lLXRlc3QgcmFiaW4tdGVzdCkKCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICM8dW5kZWY+ CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQgOm5vd2Vi LXJlZiByYWJpbi1wcmltZQo8PGV4cG1vZC1taWxsZXItcmFiaW4+Pgo8PG1pbGxlci1yYWJpbi1w cmltZXRlc3Q+Pgo8PGZhc3QtcHJpbWU+Pgo8PHRpbWVkLXByaW1ldGVzdD4+CiMrZW5kX3NyYwoK IytSRVNVTFRTOgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0 cHV0Cjw8cmFiaW4tcHJpbWU+PgoodGltZWQtcHJpbWUtdGVzdCAxMDA5KQoodGltZWQtcHJpbWUt dGVzdCAxMDEzKQoodGltZWQtcHJpbWUtdGVzdCAxMDE5KQoodGltZWQtcHJpbWUtdGVzdCAxMDAw NykKKHRpbWVkLXByaW1lLXRlc3QgMTAwMDkpCih0aW1lZC1wcmltZS10ZXN0IDEwMDM3KQoodGlt ZWQtcHJpbWUtdGVzdCAxMDAwMDMpCih0aW1lZC1wcmltZS10ZXN0IDEwMDAxOSkKKHRpbWVkLXBy aW1lLXRlc3QgMTAwMDQzKQoodGltZWQtcHJpbWUtdGVzdCAxMDAwMDAzKQoodGltZWQtcHJpbWUt dGVzdCAxMDAwMDMzKQoodGltZWQtcHJpbWUtdGVzdCAxMDAwMDM3KQoodGltZWQtcHJpbWUtdGVz dCAxMDAwKQoodGltZWQtcHJpbWUtdGVzdCA2NjAxKQoKIytlbmRfc3JjCgojK1JFU1VMVFM6CiMr YmVnaW5fZXhhbXBsZQoKMTAwOSAqKiogMC4wOTcxNjc5Njg3NQoxMDEzICoqKiAwLjA4NjY2OTky MTg3NQoxMDE5ICoqKiAwLjA4NzE1ODIwMzEyNQoxMDAwNyAqKiogMC4xMjIwNzAzMTI1CjEwMDA5 ICoqKiAwLjExMzAzNzEwOTM3NQoxMDAzNyAqKiogMC4xMTMwMzcxMDkzNzUKMTAwMDAzICoqKiAw LjEzMDg1OTM3NQoxMDAwMTkgKioqIDAuMTMzMDU2NjQwNjI1CjEwMDA0MyAqKiogMC4xMzIwODAw NzgxMjUKMTAwMDAwMyAqKiogMC4xNTExMjMwNDY4NzUKMTAwMDAzMyAqKiogMC4xNzIxMTkxNDA2 MjUKMTAwMDAzNyAqKiogMC4xNTY5ODI0MjE4NzUKMTAwMAo2NjAxCiMrZW5kX2V4YW1wbGUKCkkg dXNlZCB0aGUgfihsZXQpfiBjb25zdHJ1Y3Rpb24gaW50cm9kdWNlZCBpbiB0aGUgbGF0ZXIgY2hh cHRlcnMsIGJlY2F1c2UgSQpmaW5kIGJpbmRpbmdzIHdpdGggbmVzdGVkIHByb2NlZHVyZXMgY29u ZnVzaW5nLgoKKioqIERPTkUgRXhlcmNpc2UgMS4yOSBTaW1wc29uJ3MgaW50ZWdyYWwKICAgIENM T1NFRDogWzIwMTktMDktMDMgVHVlIDEwOjM2XQoKU2luY2UgYXQgdGhlIGVuZCBvZiB0aGUgdGFz ayB3ZSBhcmUgdG9sZCB0byBjb21wYXJlIHRoZSByZXN1bHQgb2Ygb3VyCmFsZ29yaXRobSB3aXRo IHRoZSByZXN1bHRzIG9mIHRoZSB+aW50ZWdyYWx+IHByb2NlZHVyZSwgbGV0IHVzIGZpcnN0IGNv cHkgdGhlCmludGVncmFsIGNvZGUuCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6 cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIGludGVncmFsLWNvbW1vbgogIChkZWZpbmUgKHN1bSB0 ZXJtIGEgbmV4dCBiKQogICAgKGlmICg+IGEgYikKCTAKCSgrICh0ZXJtIGEpCgkgICAoc3VtIHRl cm0gKG5leHQgYSkgbmV4dCBiKSkpKQogIChkZWZpbmUgKGN1YmUgeCkKICAgICgqIHggeCB4KSkK ICAoZGVmaW5lIChuZXh0IHBvaW50KQogICAgKCsgcG9pbnQgMSkpCiMrZW5kX3NyYwoKIytiZWdp bl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgCjw8aW50ZWdyYWwtY29t bW9uPj4KICAoZGVmaW5lIChpbnRlZ3JhbCBmIGEgYiBkeCkKICAgIChkZWZpbmUgKGFkZC1keCB4 KQogICAgICAoKyB4IGR4KSkKICAgICgqIChzdW0gZiAoKyBhICgvIGR4IDIuMCkpIGFkZC1keCBi KQogICAgICAgZHgpKQogIChsaXN0IChpbnRlZ3JhbCBjdWJlIDAgMSAwLjAxKSAoaW50ZWdyYWwg Y3ViZSAwIDEgMC4wMDEpKQoKIytlbmRfc3JjCgojK1JFU1VMVFM6CnwgMC4yNDk5ODc1MDAwMDAw MDA1MyB8IDAuMjQ5OTk5ODc1MDAwMDAxMDYgfAoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRz IGJvdGggOnJlc3VsdHMgb3V0cHV0CiAgPDxpbnRlZ3JhbC1jb21tb24+PgogIChkZWZpbmUgKGlu dGVncmFsLXNpbXBzb24gZiBhIGIgbnBvaW50cykKICAgIChkZWZpbmUgaCAoLyAoLSBiIGEpIG5w b2ludHMpKQogICAgKGRlZmluZSBoLzMgKC8gaCAzKSkKICAgIChkZWZpbmUgKGZfayBrKQogICAg ICAoKiAoZiAoKyBhICgqIGsgaCkpKSAoY29uZCAoKD0gayAwKSAxKQoJCQkJICgoPSBrIG5wb2lu dHMpIDEpCgkJCQkgKChvZGQ/IGspIDQpCgkJCQkgKChldmVuPyBrKSAyKSkpKQogICAgKCogaC8z IChzdW0gZl9rIDAgbmV4dCBucG9pbnRzKSkpCiAgKGRpc3BsYXkgKGludGVncmFsLXNpbXBzb24g Y3ViZSAwIDEgMTAwKSkKICAobmV3bGluZSkKICAoZGlzcGxheSAoaW50ZWdyYWwtc2ltcHNvbiBj dWJlIDAgMSAxMDAwKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogMS80CjogMS80CgpBbiBpbXBy ZXNzaXZlIHJlc3VsdC4gSSBkb24ndCBrbm93IGF0IHdoaWNoIHBvaW50IG9mIHRoZSBjb21wdXRh dGlvbiB0aGUKaW50ZXJwcmV0ZXIgc3dpdGNoZXMgdG8gYW4gZXhhY3QgcmVwcmVzZW50YXRpb24s IGJ1dCBtZWgsIHRoaXMgcmVzdWx0IGlzIGdvb2QuCgoqKiogRE9ORSBFeGVyY2lzZSAxLjMwIEl0 ZXJhdGl2ZSBzdW0KICAgIENMT1NFRDogWzIwMTktMDktMDMgVHVlIDExOjE5XQoKIytiZWdpbl9z cmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CiAgKGRlZmluZSAoaW5jIHgp ICgrIHggMSkpCiAgKGRlZmluZSAoaWRlbnRpdHkgeCkgeCkKICAoZGVmaW5lIChzdW0gdGVybSBh IG5leHQgYikKICAgIChkZWZpbmUgKGl0ZXIgYSByZXN1bHQpCiAgICAgIChpZiAoPSBhIGIpCgkg ICgrIGEgcmVzdWx0KQoJICAoaXRlciAobmV4dCBhKSAoKyBhIHJlc3VsdCkpKSkKICAgIChpdGVy IGEgMCkpCgogIChzdW0gaWRlbnRpdHkgMSBpbmMgMTApCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoK OiA1NQoKKioqIERPTkUgRXhlcmNpc2UgMS4zMSBQcm9kdWN0CiAgICBDTE9TRUQ6IFsyMDE5LTA5 LTAzIFR1ZSAxMTo1OV0KKioqKiBET05FIGEuIERlZmluaW5nIHByb2R1Y3QKICAgICBDTE9TRUQ6 IFsyMDE5LTA5LTAzIFR1ZSAxMTo1Nl0KICMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3Ro IDpyZXN1bHRzIHZhbHVlCiAgIChkZWZpbmUgKGluYyB4KSAoKyB4IDEpKQogICAoZGVmaW5lIChp ZGVudGl0eSB4KSB4KQogICAoZGVmaW5lIChwcm9kdWN0IHRlcm0gYSBuZXh0IGIpCiAgICAgKGRl ZmluZSAoaXRlciBhIHJlc3VsdCkKICAgICAgIChpZiAoPSBhIGIpCgkgICAoKiAodGVybSBhKSBy ZXN1bHQpCgkgICAoaXRlciAobmV4dCBhKSAoKiAodGVybSBhKSByZXN1bHQpKSkpCiAgICAgKGl0 ZXIgYSAxLjApKQogICAoZGVmaW5lIChmYWN0b3JpYWwgeCkgKHByb2R1Y3QgaWRlbnRpdHkgMSBp bmMgNikpCiAgIChmYWN0b3JpYWwgNikKICAgKGRlZmluZSAocGkgcHJlY2lzaW9uKQogICAgIChk ZWZpbmUgKGVudW1lcmF0b3IgaW5kZXgpCiAgICAgICAoY29uZCAoKG9kZD8gIGluZGV4KSAoKyBp bmRleCAxLjApKQoJICAgICAoKGV2ZW4/IGluZGV4KSAoKyBpbmRleCAyLjApKQoJICAgICAoZWxz ZSAoZXJyb3IgIkVycm9yIikpKSkKICAgICAoZGVmaW5lIChkZW5vbWluYXRvciBpbmRleCkKICAg ICAgIChjb25kICgob2RkPyAgaW5kZXgpICgrIGluZGV4IDIuMCkpCgkgICAgICgoZXZlbj8gaW5k ZXgpICgrIGluZGV4IDEuMCkpCgkgICAgIChlbHNlIChlcnJvciAiRXJyb3IiKSkpKQogICAgIChk ZWZpbmUgKGZyYWN0aW9uIGluZGV4KQogICAgICAgKC8gKGVudW1lcmF0b3IgaW5kZXgpIChkZW5v bWluYXRvciBpbmRleCkpKQogICAgICgqIDQuMCAocHJvZHVjdCBmcmFjdGlvbiAxIGluYyBwcmVj aXNpb24pKSkKICAgICAocGkgMTI4MCkKICMrZW5kX3NyYwoKICMrUkVTVUxUUzoKIDogMy4xNDI4 MTgxNjI1Nzk0ODYKCkkgY2FuIHNheSB0aGF0IGl0IGNvbnZlcmdlcyB2ZXJ5LXZlcnkgc2xvd2x5 LgoqKioqIERPTkUgYi4gQSByZWN1cnNpdmUgdmVyc2lvbgogICAgIENMT1NFRDogWzIwMTktMDkt MDMgVHVlIDExOjU5XQoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMg dmFsdWUKICAgKGRlZmluZSAoaW5jIHgpICgrIHggMSkpCiAgIChkZWZpbmUgKGlkZW50aXR5IHgp IHgpCiAgIChkZWZpbmUgKHByb2R1Y3QgdGVybSBhIG5leHQgYikKICAgICAoZGVmaW5lIChpdGVy IGEgcmVzdWx0KQogICAgICAgKGlmICg9IGEgYikKCSAgICgqICh0ZXJtIGEpIHJlc3VsdCkKCSAg ICgqIChpdGVyIChuZXh0IGEpICh0ZXJtIGEpKSByZXN1bHQpKSkKICAgICAoaXRlciBhIDEuMCkp CiAgIChkZWZpbmUgKGZhY3RvcmlhbCB4KSAocHJvZHVjdCBpZGVudGl0eSAxIGluYyA2KSkKICAg KGZhY3RvcmlhbCA2KQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiA3MjAuMAoKRG9lc24ndCBtYWtl IHRvbyBtdWNoIHNlbnNlIHRvIG1lLCBidXQgaGVyZSB5b3UgYXJlLgoKKioqIERPTkUgRXhlcmNp c2UgMS4zMiBBY2N1bXVsYXRvcgogICAgQ0xPU0VEOiBbMjAxOS0wOS0wMyBUdWUgMTI6MjNdCkkg d2lsbCBjaGVhdCBhIGxpdHRsZSBiaXQgaW4gdGhpcyBleGVyY2lzZSwgSSB3aWxsIHJ1biB+c3Vt fiBhcyBhbiBpdGVyYXRpdmUKcHJvY2VkdXJlIGFuZCB+cHJvZHVjdH4gYXMgYSByZWN1cnNpdmUg cHJvY2VkdXJlLCBzbyBhdCB0aGUgZW5kIEkgd2lsbCBoYXZlCnR3byBpbXBsZW1lbnRhdGlvbnMs IG5vdCA0LCBidXQgdGhhdCBzaG91bGQgbm90IGJlIHRvbyBtdWNoIG9mIGEgZGlncmVzc2lvbi4K IytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJl ZiBhY2N1bXVsYXRvci1jb21tb24KICAgKGRlZmluZSAoaW5jIHgpICgrIHggMSkpCiAgIChkZWZp bmUgKGlkZW50aXR5IHgpIHgpCiMrZW5kX3NyYwoKKioqKiBET05FIEltcGxlbWVudCB+c3VtfiBp biB0ZXJtcyBvZiBhbiBpdGVyYXRpdmUgYWNjdW11bGF0b3IKICAgICBDTE9TRUQ6IFsyMDE5LTA5 LTAzIFR1ZSAxMjoyM10KIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMg dmFsdWUKPDxhY2N1bXVsYXRvci1jb21tb24+PgogIChkZWZpbmUgKGFjY3VtdWxhdGUgY29tYmlu ZXIgbnVsbC12YWx1ZSB0ZXJtIGEgbmV4dCBiKQogICAgICAgKGRlZmluZSAoaXRlciBhIHJlc3Vs dCkKCSAoaWYgKD49IGEgYikKCSAgICAgKGNvbWJpbmVyICh0ZXJtIGEpIHJlc3VsdCkKCSAgICAg KGNvbWJpbmVyIChpdGVyIChuZXh0IGEpICh0ZXJtIGEpKSByZXN1bHQpKSkKICAgICAgIChpdGVy IGEgbnVsbC12YWx1ZSkpCiAgKGRlZmluZSAoc3VtIHRlcm0gYSBuZXh0IGIpCiAgICAoYWNjdW11 bGF0ZSArIDAgdGVybSBhIG5leHQgYikpCiAgKHN1bSBpZGVudGl0eSAxIGluYyAxMCkKIytlbmRf c3JjCgojK1JFU1VMVFM6CjogNTUKCioqKiogRE9ORSBJbXBsZW1lbnQgfnByb2R1Y3R+IGluIHRl cm1zIG9mIGEgcmVjdXJzaXZlIHByb2Nlc3MKICAgICBDTE9TRUQ6IFsyMDE5LTA5LTAzIFR1ZSAx MjoyMl0KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCjw8 YWNjdW11bGF0b3ItY29tbW9uPj4KICAoZGVmaW5lIChhY2N1bXVsYXRlIGNvbWJpbmVyIG51bGwt dmFsdWUgdGVybSBhIG5leHQgYikKICAgICAgIChkZWZpbmUgKGl0ZXIgYSByZXN1bHQpCgkgKGlm ICg9IGEgYikKCSAgICAgKGNvbWJpbmVyICh0ZXJtIGEpIHJlc3VsdCkKCSAgICAgIChpdGVyIChu ZXh0IGEpIChjb21iaW5lciAodGVybSBhKSByZXN1bHQpICkpKQogICAgICAgKGl0ZXIgYSBudWxs LXZhbHVlKSkKICAoZGVmaW5lIChwcm9kdWN0IHRlcm0gYSBuZXh0IGIpCiAgICAoYWNjdW11bGF0 ZSAqIDEgdGVybSBhIG5leHQgYikpCiAgKHByb2R1Y3QgaWRlbnRpdHkgMSBpbmMgMTApCgojK2Vu ZF9zcmMKCiMrUkVTVUxUUzoKOiAzNjI4ODAwCgoqKiogRE9ORSBFeGVyY2lzZSAxLjMzIGZpbHRl cmVkLWFjY3VtdWxhdGUKICAgIENMT1NFRDogWzIwMTktMDktMDMgVHVlIDE0OjM2XQoqKioqIERP TkUgYS4gU3VtLW9mLXNxdWFyZXMtb2YtcHJpbWVzCiAgICBDTE9TRUQ6IFsyMDE5LTA5LTAzIFR1 ZSAxNDoyNF0KIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUg Om5vd2ViLXJlZiBmaWx0ZXJlZC1hY2N1bXVsYXRlCiAgPDxhY2N1bXVsYXRvci1jb21tb24+Pgog IDw8cmFiaW4tcHJpbWU+PgogICAgKGRlZmluZSAoZmlsdGVyZWQtYWNjdW11bGF0ZSBjb21iaW5l ciBmaWx0ZXIgbnVsbC12YWx1ZSB0ZXJtIGEgbmV4dCBiKQogICAgIChkZWZpbmUgKGl0ZXIgYSBy ZXN1bHQpCiAgICAgICAoaWYgKD0gYSBiKQoJICAgKGNvbWJpbmVyIChpZiAoZmlsdGVyIGEpICh0 ZXJtIGEpIG51bGwtdmFsdWUpIHJlc3VsdCkKCSAgIChpdGVyIChuZXh0IGEpIChjb21iaW5lciAo aWYgKGZpbHRlciBhKSAodGVybSBhKSBudWxsLXZhbHVlKSByZXN1bHQpKSkpCiAgICAgKGl0ZXIg YSBudWxsLXZhbHVlKSkKICAgICAjK2VuZF9zcmMKICAgICAKIytiZWdpbl9zcmMgc2NoZW1lIDpl eHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgCiAgICA8PGZpbHRlcmVkLWFjY3VtdWxhdGU+Pgog ICAgKGRlZmluZSAoc3VtLXNxdWFyZS1wcmltZSBhIG5leHQgYikKICAgICAgKGZpbHRlcmVkLWFj Y3VtdWxhdGUgKyBwcmltZT8gMCBzcXVhcmUgYSBuZXh0IGIpKQogICAgKHN1bS1zcXVhcmUtcHJp bWUgMSBpbmMgMTApCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IDg4CioqKiogRE9ORSBiLiBQcm9k dWN0IG9mIHBvc2l0aXZlIGludGVnZXJzIG11dHVhbGx5IHByaW1lIHdpdGggbgogICAgIENMT1NF RDogWzIwMTktMDktMDMgVHVlIDE0OjM2XQoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJv dGggOnJlc3VsdHMgb3V0cHV0CiAgPDxmaWx0ZXJlZC1hY2N1bXVsYXRlPj4KICAoZGVmaW5lIChw cm9kdWN0LW11dHVhbGx5LXByaW1lIG4pCiAgICAoZGVmaW5lIChmaWx0ZXItZ2NkIHgpCiAgICAg IChpZiAoPSAoZ2NkIG4geCkgMSkKCSAgI3QKCSAgI2YpKQogICAgKGZpbHRlcmVkLWFjY3VtdWxh dGUgKiBmaWx0ZXItZ2NkIDEgaWRlbnRpdHkgMSBpbmMgbikpCiAgKGRpc3BsYXkgKHByb2R1Y3Qt bXV0dWFsbHktcHJpbWUgMTApKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAxODkKCkhlcmUgSSB1 c2VkIHRoZSB+Z2NkfiBmdW5jdGlvbiBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LgoKKioqIERP TkUgRXhlcmNpc2UgMS4zNCBsYW1iZGEKICAgIENMT1NFRDogWzIwMTktMDktMDMgVHVlIDE0OjQ0 XQoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2Vi LXJlZiBleGFtcGxlLWxhbWJkYQooZGVmaW5lIChmIGcpIChnIDIpKQojK2VuZF9zcmMKCiMrYmVn aW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCjw8ZXhhbXBsZS1sYW1i ZGE+PgooZGVmaW5lIChzcXVhcmUgeCkgKCogeCB4KSkKKGYgc3F1YXJlKQojK2VuZF9zcmMKCiMr UkVTVUxUUzoKOiA0CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2 YWx1ZQo8PGV4YW1wbGUtbGFtYmRhPj4KKGYgKGxhbWJkYSAoeikgKCogeiAoKyB6IDEpKSkpCiMr ZW5kX3NyYwoKIytSRVNVTFRTOgo6IDYKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3Ro IDpyZXN1bHRzIHZhbHVlCjw8ZXhhbXBsZS1sYW1iZGE+PgooZiBmKQojK2VuZF9zcmMKCiMrUkVT VUxUUzoKOiAie0V4Y2VwdGlvbiAjMTkgdXNlciBcIm5vbiBwcm9jZWR1cmUgYXBwbGljYXRpb25c IiAoMikgIzxwcm9jZWR1cmUgI2Y+IChcIi91c3IvbGliNjQvY2hpYmkvaW5pdC03LnNjbVwiIC4g MjMwKX0iCgpXZWxsLCBubyB3b25kZXIuIFRoZSBmaW5hbCBjb21iaW5hdGlvbiByZWR1Y2VzIHRv IH4oMiAyKX4sIHdoaWNoICpJUyogYQpub24tcHJvY2VkdXJlIGFwcGxpY2F0aW9uLgoKKioqIERP TkUgRXhlcmNpc2UgMS4zNSBmaXhlZC1wb2ludAogICAgQ0xPU0VEOiBbMjAxOS0wOS0wMyBUdWUg MjE6MDVdCgoKClwoXHZhcnBoaSA9IFxmcmFjezErXHNxcnR7NX19ezJ9XCkKXCh4XG1hcHN0byAx K1xmcmFjezF9e3h9XCkKTGV0J3Mgc3Vic3RpdHV0ZToKXCggXGZyYWN7MStcc3FydHs1fX17Mn0g Jj0mIDErIFxmcmFjezJ9ezErXHNxcnR7NX19IFwpClwoICgxK1xzcXJ0ezV9KV4yID0gMigxK1xz cXJ0ezV9KSsgNFwpClwoIDEgKyAyIFxzcXJ0ezV9ICsgNSA9IDIgKyAyIFxzcXJ0ezV9ICsgNCBc KQpcKDYgPSA2XCkKCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2 YWx1ZSA6bm93ZWItcmVmIGZpeGVkLXBvaW50LXNpbGVudAogIChkZWZpbmUgdG9sZXJhbmNlIDAu MDAwMDEpCiAgKGRlZmluZSAoZml4ZWQtcG9pbnQgZiBmaXJzdC1ndWVzcykKICAgIChkZWZpbmUg KGNsb3NlLWVub3VnaD8gdjEgdjIpCiAgICAgICg8IChhYnMgKC0gdjEgdjIpKQoJIHRvbGVyYW5j ZSkpCiAgICAoZGVmaW5lICh0cnkgZ3Vlc3MpCiAgICAgIChsZXQgKChuZXh0IChmIGd1ZXNzKSkp CgkoaWYgKGNsb3NlLWVub3VnaD8gZ3Vlc3MgbmV4dCkKCSAgICBuZXh0CgkgICAgKHRyeSBuZXh0 KSkpKQogICh0cnkgZmlyc3QtZ3Vlc3MpKQojK2VuZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6 ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCjw8Zml4ZWQtcG9pbnQtc2lsZW50Pj4KKGZpeGVk LXBvaW50IGNvcyAxLjApCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IDAuNzM5MDgyMjk4NTIyNDAy NAoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUKICA8PGZp eGVkLXBvaW50LXNpbGVudD4+CiAgKGRlZmluZSAoZ29sZGVuLXRyYW5zZm9ybSB4KQogICAgKCsg MSAoLyAxIHgpKSkKICAoZml4ZWQtcG9pbnQgZ29sZGVuLXRyYW5zZm9ybSAxLjApCgojK2VuZF9z cmMKCiMrUkVTVUxUUzoKOiAxLjYxODAzMjc4Njg4NTI0NTgKCiMrYmVnaW5fc3JjIHNjaGVtZSA6 ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCigvICgrIDEgKHNxcnQgNSkpIDIpCiMrZW5kX3Ny YwoKIytSRVNVTFRTOgo6IDEuNjE4MDMzOTg4NzQ5ODk1CgpUaGUgZGlmZmVyZW5jZSBpcyBub3Qg dG9vIGJpZy4KCioqKiBET05FIEV4ZXJjaXNlIDEuMzYgZml4ZWQtcG9pbnQtd2l0aC1kYW1wZW5p bmcKICAgIENMT1NFRDogWzIwMTktMDktMDMgVHVlIDIxOjU1XQoKIytiZWdpbl9zcmMgc2NoZW1l IDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBmaXhlZC1wb2ludC12ZXJi b3NlCiAgKGRlZmluZSB0b2xlcmFuY2UgMC4wMDAwMSkKICAoZGVmaW5lIChmaXhlZC1wb2ludCBm IGZpcnN0LWd1ZXNzKQogICAgKGRlZmluZSAoY2xvc2UtZW5vdWdoPyB2MSB2MikKICAgICAgKGRp c3BsYXkgIkd1ZXNzZXM6ICIpCiAgICAgIChkaXNwbGF5IHYxKQogICAgICAoZGlzcGxheSAiICIp CiAgICAgIChkaXNwbGF5IHYyKQogICAgICAobmV3bGluZSkKICAgICAgKDwgKGFicyAoLSB2MSB2 MikpCgkgdG9sZXJhbmNlKSkKICAgIChkZWZpbmUgKHRyeSBndWVzcykKICAgICAgKGxldCAoKG5l eHQgKGYgZ3Vlc3MpKSkKCShpZiAoY2xvc2UtZW5vdWdoPyBndWVzcyBuZXh0KQoJICAgIG5leHQK CSAgICAodHJ5IG5leHQpKSkpCiAgKHRyeSBmaXJzdC1ndWVzcykpCiMrZW5kX3NyYwoKVG8gZmlu ZCBhIHNvbHV0aW9uIHRvIFwoeF54PTEwMDBcKSwgbGV0IHVzIHJlYXJyYW5nZTogXCggeCA9IFxs b2dfeDEwMDAgPQpcZnJhY3tcbG9nIDEwMDB9e1xsb2cgeH1cKS4KCiMrYmVnaW5fc3JjIHNjaGVt ZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpub3dlYi1yZWYgbG9nMTAwMAooZGVmaW5l IChsb2cxMDAwL2xvZ3ggeCkKICAoLyAobG9nIDEwMDApIChsb2cgeCkpKQojK2VuZF9zcmMKCiMr YmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PGZpeGVkLXBv aW50LXZlcmJvc2U+Pgo8PGxvZzEwMDA+PgooZGlzcGxheSAoZml4ZWQtcG9pbnQgbG9nMTAwMC9s b2d4IDUpKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKIytiZWdpbl9leGFtcGxlCkd1ZXNzZXM6IDUg NC4yOTIwMjk2NzQyMjAxOApHdWVzc2VzOiA0LjI5MjAyOTY3NDIyMDE4IDQuNzQxODYzMTE5OTA4 MjQyCkd1ZXNzZXM6IDQuNzQxODYzMTE5OTA4MjQyIDQuNDM4MjA0NTY5ODM3NjA5Ckd1ZXNzZXM6 IDQuNDM4MjA0NTY5ODM3NjA5IDQuNjM1Mjk5ODg3MTA3NjExCkd1ZXNzZXM6IDQuNjM1Mjk5ODg3 MTA3NjExIDQuNTAzOTc4MTE2MTM2NDMKR3Vlc3NlczogNC41MDM5NzgxMTYxMzY0MyA0LjU4OTk4 OTQ2MjcyMzcwNQpHdWVzc2VzOiA0LjU4OTk4OTQ2MjcyMzcwNSA0LjUzMzAxMTUwNzY3ODQ0Ckd1 ZXNzZXM6IDQuNTMzMDExNTA3Njc4NDQgNC41NzA0NzU2NzI4NTU0ODQKR3Vlc3NlczogNC41NzA0 NzU2NzI4NTU0ODQgNC41NDU3MjAzODk2NzA2NDIKR3Vlc3NlczogNC41NDU3MjAzODk2NzA2NDIg NC41NjIwMjQ5MzY1ODgxNzEKR3Vlc3NlczogNC41NjIwMjQ5MzY1ODgxNzEgNC41NTEyNjMyMzQw ODA1MzEKR3Vlc3NlczogNC41NTEyNjMyMzQwODA1MzEgNC41NTgzNTYzODc2ODU5OApHdWVzc2Vz OiA0LjU1ODM1NjM4NzY4NTk4IDQuNTUzNjc2ODUyMTgzMzQyCkd1ZXNzZXM6IDQuNTUzNjc2ODUy MTgzMzQyIDQuNTU2NzYyMTY0MzQ2MjgKR3Vlc3NlczogNC41NTY3NjIxNjQzNDYyOCA0LjU1NDcy NzEzMDY3MDk1NApHdWVzc2VzOiA0LjU1NDcyNzEzMDY3MDk1NCA0LjU1NjA2OTA1NDc3MDAwNgpH dWVzc2VzOiA0LjU1NjA2OTA1NDc3MDAwNiA0LjU1NTE4NDAxODg0MzYyNQpHdWVzc2VzOiA0LjU1 NTE4NDAxODg0MzYyNSA0LjU1NTc2NzY1NjU0MzgyMDUKR3Vlc3NlczogNC41NTU3Njc2NTY1NDM4 MjA1IDQuNTU1MzgyNzQ2NjM5MDgyCkd1ZXNzZXM6IDQuNTU1MzgyNzQ2NjM5MDgyIDQuNTU1NjM2 NTgyNDM1ODYKR3Vlc3NlczogNC41NTU2MzY1ODI0MzU4NiA0LjU1NTQ2OTE4MDI0NTMyNgpHdWVz c2VzOiA0LjU1NTQ2OTE4MDI0NTMyNiA0LjU1NTU3OTU3NzkwMQpHdWVzc2VzOiA0LjU1NTU3OTU3 NzkwMSA0LjU1NTUwNjc3MjI4NzM2ODYKR3Vlc3NlczogNC41NTU1MDY3NzIyODczNjg2IDQuNTU1 NTU0Nzg2MDQ4NDA4NQpHdWVzc2VzOiA0LjU1NTU1NDc4NjA0ODQwODUgNC41NTU1MjMxMjE3ODk1 NTYKR3Vlc3NlczogNC41NTU1MjMxMjE3ODk1NTYgNC41NTU1NDQwMDM3NDI4NjkKR3Vlc3Nlczog NC41NTU1NDQwMDM3NDI4NjkgNC41NTU1MzAyMzI0NjkzMDYKR3Vlc3NlczogNC41NTU1MzAyMzI0 NjkzMDYgNC41NTU1MzkzMTQzNjA3MTEKNC41NTU1MzkzMTQzNjA3MTEKIytlbmRfZXhhbXBsZQoK IytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJl ZiBmaXhlZC1wb2ludC12ZXJib3NlLXdpdGgtZGFtcGVuaW5nCiAgKGRlZmluZSB0b2xlcmFuY2Ug MC4wMDAwMSkKICAoZGVmaW5lIChmaXhlZC1wb2ludCBmIGZpcnN0LWd1ZXNzKQogICAgKGRlZmlu ZSAoY2xvc2UtZW5vdWdoPyB2MSB2MikKICAgICAgKGRpc3BsYXkgIkd1ZXNzZXM6ICIpCiAgICAg IChkaXNwbGF5IHYxKQogICAgICAoZGlzcGxheSAiICIpCiAgICAgIChkaXNwbGF5IHYyKQogICAg ICAobmV3bGluZSkKICAgICAgKDwgKGFicyAoLSB2MSB2MikpCgkgdG9sZXJhbmNlKSkKICAgIChk ZWZpbmUgKHRyeSBndWVzcykKICAgICAgKGxldCAoKG5leHQgKGYgZ3Vlc3MpKSkKCShpZiAoY2xv c2UtZW5vdWdoPyBndWVzcyBuZXh0KQoJICAgIG5leHQKCSAgICAodHJ5ICgvICgrIGd1ZXNzIG5l eHQpIDIpKSkpKQogICh0cnkgZmlyc3QtZ3Vlc3MpKQojK2VuZF9zcmMKCiMrYmVnaW5fc3JjIHNj aGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PGZpeGVkLXBvaW50LXZlcmJvc2Ut d2l0aC1kYW1wZW5pbmc+Pgo8PGxvZzEwMDA+PgooZGlzcGxheSAoZml4ZWQtcG9pbnQgbG9nMTAw MC9sb2d4IDUpKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiBHdWVzc2VzOiA1IDQuMjkyMDI5Njc0 MjIwMTgKOiBHdWVzc2VzOiA0LjY0NjAxNDgzNzExMDA5IDQuNDk3MjA3NzM1MDQxOTYKOiBHdWVz c2VzOiA0LjU3MTYxMTI4NjA3NjAyNSA0LjU0NDk3NzM0ODk5NjEwNwo6IEd1ZXNzZXM6IDQuNTU4 Mjk0MzE3NTM2MDY2IDQuNTUzNzE3NzI4MjI2MTY1CjogR3Vlc3NlczogNC41NTYwMDYwMjI4ODEx MTYgNC41NTUyMjU1NzY1ODE0NzgKOiBHdWVzc2VzOiA0LjU1NTYxNTc5OTczMTI5NyA0LjU1NTQ4 Mjg4NTQxOTg4OQo6IEd1ZXNzZXM6IDQuNTU1NTQ5MzQyNTc1NTkzIDQuNTU1NTI2NzExNjI4NDA2 CjogR3Vlc3NlczogNC41NTU1MzgwMjcxMDIgNC41NTU1MzQxNzM5NDE3NzkKOiA0LjU1NTUzNDE3 Mzk0MTc3OQoKV2VsbCwgdGhlIGFtb3VudCBvZiBzdGVwcyBpcyB2aXNpYmx5IHNtYWxsZXIuIFdv cmtzLgoKKioqIERPTkUgRXhlcmNpc2UgMS4zNyBjb250LWZyYWMKICAgIENMT1NFRDogWzIwMTkt MDktMDQgV2VkIDEwOjM0XQoqKioqIERPTkUgYS4gcmVjdXJzaXZlCiAgICAgQ0xPU0VEOiBbMjAx OS0wOS0wNCBXZWQgMTE6MzVdCiAgICAgIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGgg OnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBjb250LWZyYWMtcmVjdXJzaXZlCiAgKGRlZmluZSAo Y29udC1mcmFjIG4gZCBrKQogICAgKGRlZmluZSAobmV4dCBzdGVwKQogICAgICAoaWYgKDwgc3Rl cCBrKQoJICAoLyAobiBzdGVwKSAoKyAoZCBzdGVwKSAobmV4dCAoKyBzdGVwIDEpKSkgKQoJICAw KSkKICAgIChuZXh0IDEpKQogICAgICMrZW5kX3NyYwogICAgCiAgICAgIytiZWdpbl9zcmMgc2No ZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUKICAgICA8PGNvbnQtZnJhYy1yZWN1cnNp dmU+PgogICAgICAgICAoLyAxIChjb250LWZyYWMgKGxhbWJkYSAoaSkgMS4wKSAobGFtYmRhIChp KSAxLjApIDE0KSkKICAgICAjK2VuZF9zcmMKCiAgICAgIytSRVNVTFRTOgogICAgIDogMS42MTgw MjU3NTEwNzI5NjE0CgpBYmVsc29uIGFuZCBTdXNzbWFuIHRlbGwgdXMgdG8gZXN0aW1hdGUgXChr XCkgbmVlZGVkIHRvIGFwcHJveGltYXRlIHRoZSBcKFx2YXJwaGlcKSB0byBhIHJlcXVpcmVkCmRl Z3JlZSAoMC4wMDAxKS4gSSBkaWRuJ3QgbWFuYWdlIHRvIGRlcml2ZSB0aGUgZm9ybXVsYSBteXNl bGYsIGhvd2V2ZXIsIEkgY2FuCmdpdmUgYSBsaW5rIHRvIHRoZSBib29rIHdoZXJlIHRoaXMgcHJv b2YgaXMgZ2l2ZW46CgpLaGluY2hpbiwgQ29udGludWVkIEZyYWN0aW9ucyAoMTkzNSksIGNoYXB0 ZXIgMiwgc2VjdGlvbiA3LCBnaXZlcyBhbiB1cHBlcgpib3VuZCBvbiB0aGUgc3BlZWQgb2YgY29u dmVyZ2VuY2UgYXMgXChcZnJhY3sxfXtrXjJ9XCkuIFRoZXJlZm9yZSB3ZSBzaG91bGQKZXhwZWN0 IFwoayBcYXBwcm94IFxzcXJ0ezEwMDB9IFxhcHByb3ggMzNcKS4gVGhpcyBob2xkcyBmb3IgYW4g YXJiaXRyYXJ5IGNvbnZlcmdlbnQKY29udGludWVkIGZyYWN0aW9uLiBJbiBvdXIgY2FzZSwgaG93 ZXZlciwgd2hlbiBcKE5faz1EX2s9MVwpLCB0aGUgY29uc3RhbnQgaW4KdGhlIHJhdGUgaXMgYWxz byBrbm93biBhcyBcKFxzcXJ0ezV9XCksIHNvIHRoZSBlcXVhdGlvbiB3ZSBuZWVkIHRvIHNvbHZl IGlzCmluIGZhY3QgXChrXjIgXHNxcnR7NX0gPSAxMDAwXCksIGFuZCBpbiBwcmFjdGljZSB0aGF0 IGlzClwoXHNxcnR7XGZyYWN7MTAwMH17Mi4yM319ID0gMjFcKS4gSG93IGV4YWN0bHkgd2UgbWFu YWdlZCB0byBkbyBpdCBpbiAxNApzdGVwcywgSSBkb24ndCBrbm93LgoKKioqKiBET05FIGIuIGl0 ZXJhdGl2ZQogICAgIENMT1NFRDogWzIwMTktMDktMDQgV2VkIDExOjM1XQoKV2UganVzdCBzdGFy dCBjb21wdXRpbmcgZnJvbSB0aGUgZW5kLgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJv dGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBjb250LWZyYWMKICAoZGVmaW5lIChjb250LWZy YWMgbiBkIGspCiAgICAoZGVmaW5lIChuZXh0IHN0ZXAgYWNjdW11bGF0b3IpCiAgICAgIChpZiAo PiBzdGVwIDApCgkgIChuZXh0ICgtIHN0ZXAgMSkgKC8gKG4gc3RlcCkgKCsgKGQgc3RlcCkgYWNj dW11bGF0b3IpKSkKCSAgYWNjdW11bGF0b3IpKQogICAgKG5leHQgayAwKSkKIytlbmRfc3JjCgoj K1JFU1VMVFM6CjogIzx1bmRlZj4KICAKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGgg OnJlc3VsdHMgdmFsdWUKPDxjb250LWZyYWM+PgogICgvIDEgKGNvbnQtZnJhYyAobGFtYmRhIChp KSAxLjApIChsYW1iZGEgKGkpIDEuMCkgMTQpKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAxLjYx ODAzNzEzNTI3ODUxNDYKCgpSZW1hcms6IHRoaXMgZXhlcmNpc2UgdG9vayBtZSA3IGhvdXJzLgoK KioqIERPTkUgRXhlcmNpc2UgMS4zOCBldWxlciBjb25zdGFudAogICAgQ0xPU0VEOiBbMjAxOS0w OS0wNCBXZWQgMTE6MzVdCgpUaGUgb25seSBkaWZmaWN1bHR5IHdpdGggdGhpcyBleGVyY2lzZSBp cyB0byBkZXJpdmUgdGhlIGZvcm11bGEgZm9yIHRoZQpzZWNvbmQgbGFtYmRhLgoKIytiZWdpbl9z cmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUKICA8PGNvbnQtZnJhYz4+CiAg KCsgMiAKICAgICAoY29udC1mcmFjIAogICAgICAobGFtYmRhIChpKSAxLjApCiAgICAgIChsYW1i ZGEgKGkpIChpZiAoPSAocmVtYWluZGVyIGkgMykgMikgKCsgKCogKC8gaSAzKSAyKSAyKSAxKSkK ICAgICAgMTQgKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogMi43OTQ3NzE2NjI1MzcKCioqKiBE T05FIEV4ZXJjaXNlIDEuMzkgdGFuLWNmCiAgICBDTE9TRUQ6IFsyMDE5LTA5LTA0IFdlZCAxMjox MV0KICAgIDpMT0dCT09LOgoKICAgIDpFTkQ6CiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBi b3RoIDpyZXN1bHRzIG91dHB1dAogIDw8Y29udC1mcmFjPj4KICAoZGVmaW5lICh0YW4tY2YgeCBr KQogICAgKGNvbnQtZnJhYwogICAgIChsYW1iZGEgKGkpCiAgICAgICAoaWYgKD0gaSAxKSB4ICgt ICgqIHggeCkpKSkKICAgICAobGFtYmRhIChpKQogICAgICAgKC0gKCogMiBpKSAxKSkKICAgICBr KSkKICAoZGlzcGxheSAodGFuIDAuMSkpCiAgKG5ld2xpbmUpCiAgKGRpc3BsYXkodGFuLWNmIDAu MSAzMDApKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAwLjEwMDMzNDY3MjA4NTQ1MDU1CjogMC4x MDAzMzQ2NzIwODU0NTA1NQoKKioqIERPTkUgRXhlcmNpc2UgMS40MCBuZXd0b25zLW1ldGhvZAog ICAgQ0xPU0VEOiBbMjAxOS0wOS0wNCBXZWQgMTc6MDZdCiAgICA6TE9HQk9PSzoKICAgIENMT0NL OiBbMjAxOS0wOS0wNCBXZWQgMTc6MjFdLS1bMjAxOS0wOS0wNCBXZWQgMTc6MjFdID0+ICAwOjAw CiAgICA6RU5EOgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFs dWUgOm5vd2ViLXJlZiBkZXJpdgogIChkZWZpbmUgKGRlcml2IGcpCiAgICAobGFtYmRhICh4KSAo LyAoLSAoZyAoKyB4IGR4KSkgKGcgeCkpIGR4KSkpCiAgKGRlZmluZSBkeCAwLjAwMDAxKQojK2Vu ZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpu b3dlYi1yZWYgbmV3dG9ucy1tZXRob2QKICAoZGVmaW5lIChuZXd0b24tdHJhbnNmb3JtIGcpCiAg ICAobGFtYmRhICh4KSAoLSB4ICgvIChnIHgpICgoZGVyaXYgZykgeCkpKSkpCiAgKGRlZmluZSAo bmV3dG9ucy1tZXRob2QgZyBndWVzcykKICAgIChmaXhlZC1wb2ludCAobmV3dG9uLXRyYW5zZm9y bSBnKSBndWVzcykpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGgg OnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBzcXVhcmUKKGRlZmluZSAoc3F1YXJlIHgpCiAoKiB4 IHgpKQojK2VuZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRz IHZhbHVlIDpub3dlYi1yZWYgY3ViZQooZGVmaW5lIChjdWJlIHgpCiAgKCogeCB4IHgpKQojK2Vu ZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpu b3dlYi1yZWYgY3ViaWMKICAoZGVmaW5lIChjdWJpYyBhIGIgYykgCiAgICAobGFtYmRhICh4KSAo KyAoY3ViZSB4KSAoKiBhIChzcXVhcmUgeCkpICgqIGIgeCkgYykpKXgKIytlbmRfc3JjCgojK2Jl Z2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIGlu YwooZGVmaW5lIChpbmMgeCkgKCsgeCAxKSkKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hlbWUg OmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKPDxmaXhlZC1wb2ludC1zaWxlbnQ+Pgo8PGN1 YmljPj4KPDxjdWJlPj4KPDxzcXVhcmU+Pgo8PGRlcml2Pj4KPDxuZXd0b25zLW1ldGhvZD4+Cgoo ZGlzcGxheSAobmV3dG9ucy1tZXRob2QgKGN1YmljIDUgMyAxKSAxKSkKIytlbmRfc3JjCgojK1JF U1VMVFM6CjogLTQuMzY1MjMwMDEzNDAzMDQ2CgpUaGVvcmV0aWNhbGx5LCBhIGN1YmljIG1heSBo YXZlIHVwIHRvIDMgcm9vdHMsIGJ1dCB0byBmaW5kIGFsbCBvZiB0aGVtIHdlCndvdWxkIG5lZWQg dG8gdHJ5IG92ZXIgYWxsIHBvc3NpYmxlIG9uZXMuCgoqKiogRE9ORSBFeGVyY2lzZSAxLjQxIGRv dWJsZS1kb3VibGUKICAgIENMT1NFRDogWzIwMTktMDktMDQgV2VkIDE3OjIxXQoKIytiZWdpbl9z cmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBkb3VibGUt ZnVuY3Rpb24KKGRlZmluZSAoZG91YmxlIGZ1bikKICAobGFtYmRhICh4KSAoZnVuIChmdW4geCkp KSkKKGRlZmluZSAoaW5jIHgpCiAgKCsgeCAxKSkKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hl bWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZQo8PGRvdWJsZS1mdW5jdGlvbj4+CigoKGRv dWJsZSBkb3VibGUpIGluYykgNSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogOQoKIytiZWdpbl9z cmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUKPDxkb3VibGUtZnVuY3Rpb24+ PgooKChkb3VibGUgKGRvdWJsZSBkb3VibGUpKSBpbmMpIDUpCiMrZW5kX3NyYwoKIytSRVNVTFRT Ogo6IDIxCgpcKDIxID0gNSArIDE2XCkKRG91YmxlIHJlYWxseSB3b3JrcyBhcyBhIHBvd2VyIG9m IGEgZnVuY3Rpb24uIFwoIDIgXFJpZ2h0YXJyb3cgMl4yIFxSaWdodGFycm93Ml57Ml4yfSA9Clxt Ym94e2luY31eezE2fSA1IFwpCioqKiBET05FIEV4ZXJjaXNlIDEuNDIgY29tcG9zZQogICAgQ0xP U0VEOiBbMjAxOS0wOS0wNCBXZWQgMTc6MjddCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBi b3RoIDpyZXN1bHRzIHZhbHVlIDpub3dlYi1yZWYgY29tcG9zZQooZGVmaW5lIChjb21wb3NlIGYg ZykKICAobGFtYmRhICh4KSAoZiAoZyB4KSkpKQojK2VuZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVt ZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCjw8Y29tcG9zZT4+Cjw8c3F1YXJlPj4KPDxp bmM+PgooKGNvbXBvc2Ugc3F1YXJlIGluYykgNikKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogNDkK CioqKiBET05FIEV4ZXJjaXNlIDEuNDMgcmVwZWF0ZWQKICAgIENMT1NFRDogWzIwMTktMDktMDQg V2VkIDE3OjU0XQojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1 ZSA6bm93ZWItcmVmIHJlcGVhdGVkCgogIChkZWZpbmUgKHJlcGVhdGVkIGZ1biBuKQogICAgKGRl ZmluZSAocmVwZWF0LWl0IG4gZnVuIGNvbWJpbmF0b3IpCiAgICAgIChpZiAoPSBuIDEpCgkgIGNv bWJpbmF0b3IKCSAgKHJlcGVhdC1pdCAgKC0gbiAxKSBmdW4gKGxhbWJkYSAoeCkgKGZ1biAoY29t YmluYXRvciB4KSkpKSkpCiAgICAgIChyZXBlYXQtaXQgbiBmdW4gZnVuKSkKIytlbmRfc3JjCgoj K1JFU1VMVFM6CjogIzx1bmRlZj4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpy ZXN1bHRzIHZhbHVlCjw8cmVwZWF0ZWQ+PgoKPDxzcXVhcmU+PgoKKChyZXBlYXRlZCBzcXVhcmUg MikgNSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogNjI1CgpIbS4gTWFuYWdlZCB0byBkbyBpdCB3 aXRob3V0IHRoZSB+Y29tcG9zZX4gZm9ybS4KCioqKiBET05FIEV4ZXJjaXNlIDEuNDQgc21vb3Ro aW5nCiAgICBDTE9TRUQ6IFsyMDE5LTA5LTA0IFdlZCAyMDoxN10KCiMrYmVnaW5fc3JjIHNjaGVt ZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpub3dlYi1yZWYgc21vb3RoCiAgKGRlZmlu ZSBkeCAwLjEpCiAgKGRlZmluZSAoc21vb3RoIGYpCiAgICAobGFtYmRhICh4KSAoLyAoKyAoZiAo LSB4IGR4KSkKCQkgKGYgeCkKCQkgKGYgKCsgeCBkeCkpKQoJICAgICAgMykpKQojK2VuZF9zcmMK CiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpub3dlYi1y ZWYgbi1zbW9vdGhlZAogIChkZWZpbmUgKG4tc21vb3RoZWQgZnVuIG4pCiAgICAoKHJlcGVhdGVk IHNtb290aCBuKSBmdW4pKQojK2VuZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBi b3RoIDpyZXN1bHRzIG91dHB1dAo8PHNtb290aD4+Cjw8bi1zbW9vdGhlZD4+Cjw8cmVwZWF0ZWQ+ Pgo8PGN1YmU+PgooZGVmaW5lIChleDE0NC1hbnN3ZXIgeCkKICAoKG4tc21vb3RoZWQgY3ViZSAz KSB4KSkKKGRpc3BsYXkgKGV4MTQ0LWFuc3dlciAxMCkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6 IDEwMDAuNgoKTG9va3MgbGlrZSB3aGF0IHdlIHdhbnRlZC4KCioqKiBET05FIEV4ZXJjaXNlIDEu NDUgbnRoLXJvb3QKICAgIENMT1NFRDogWzIwMTktMDktMDQgV2VkIDIxOjM3XQoKIytiZWdpbl9z cmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBhdmVyYWdl CihkZWZpbmUgKGF2ZXJhZ2UgeCB5KQogICAoLyAoKyB4IHkpIDIpKQojK2VuZF9zcmMKCiMrYmVn aW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpub3dlYi1yZWYgYXZl cmFnZS1kYW1wCihkZWZpbmUgKGF2ZXJhZ2UtZGFtcCBmKQogIChsYW1iZGEgKHgpIChhdmVyYWdl IHggKGYgeCkpKSkKIytlbmRfc3JjCgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGgg OnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBuLWF2ZXJhZ2UtZGFtcAooZGVmaW5lIChuLWF2ZXJh Z2UtZGFtcGVkIGYgbikKICAgKChyZXBlYXRlZCBhdmVyYWdlLWRhbXAgbikgZikpCiMrZW5kX3Ny YwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2Vi LXJlZiBiZXR0ZXItZml4ZWQtcG9pbnQKICAoZGVmaW5lIHRvbGVyYW5jZSAwLjAwMDEpCiAgKGRl ZmluZSAoZml4ZWQtcG9pbnQgZiBmaXJzdC1ndWVzcykKICAgIChkZWZpbmUgKGNsb3NlLWVub3Vn aD8gdjEgdjIpCiAgICAgICg8IChhYnMgKC0gdjEgdjIpKQoJIHRvbGVyYW5jZSkpCiAgICAoZGVm aW5lICh0cnkgZ3Vlc3MpCiAgICAgICAobGV0ICgobmV4dCAoZiBndWVzcykpKQoJKGlmIChjbG9z ZS1lbm91Z2g/IGd1ZXNzIG5leHQpCgkgICAgbmV4dAoJICAgICh0cnkgbmV4dCkpKSkKICAodHJ5 IGZpcnN0LWd1ZXNzKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogIzx1bmRlZj4KCiMrYmVnaW5f c3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpub3dlYi1yZWYgcm9vdC1u LXgKICAoZGVmaW5lIChyb290IG4geCBpbml0aWFsLWd1ZXNzKQogICAgKGZpeGVkLXBvaW50CiAg ICAgKG4tYXZlcmFnZS1kYW1wZWQKICAgICAgKGxhbWJkYSAoeSkgKC8geCAocG93IHkgKC0gbiAx KSkpKQogICAgICBuKSAKICAgICAgaW5pdGlhbC1ndWVzcykpCiMrZW5kX3NyYwoKIytiZWdpbl9z cmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBwb3ctcmVj dXJzaXZlCihkZWZpbmUgKHBvdyB4IG4pCiAoaWYgKD0gbiAxKQogICB4CiAgICgqIHggKHBvdyB4 ICgtIG4gMSkpKSkpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGgg OnJlc3VsdHMgb3V0cHV0Cjw8YXZlcmFnZT4+Cjw8YXZlcmFnZS1kYW1wPj4KPDxyZXBlYXRlZD4+ Cjw8YmV0dGVyLWZpeGVkLXBvaW50Pj4KPDxuLWF2ZXJhZ2UtZGFtcD4+Cjw8cG93LXJlY3Vyc2l2 ZT4+Cjw8cm9vdC1uLXg+PgooZGlzcGxheSAocm9vdCA0IDQgMy4wKSkKCiMrZW5kX3NyYwoKIytS RVNVTFRTOgo6IDEuNDE0NDQ0NDg3Mzc2NTE5NAoKVGhlIHRydWUgYW5zd2VyIHdvdWxkIHJlcXVp cmUgdG8gYWN0dWFsbHkgZXN0aW1hdGUgdGhlIGRhbXBlbmluZyBmYWN0b3IsIGJ1dAp3ZSBrbm93 IHRoYXQgKm4qIGlzIGVub3VnaCwgYW5kIEkgYW0gbGF6eS4KCioqKiBET05FIEV4ZXJjaXNlIDEu NDYgaXRlcmF0aXZlLWltcHJvdmUKICAgIENMT1NFRDogWzIwMTktMDktMDQgV2VkIDIyOjI1XQoK IytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJl ZiBpdGVyYXRpdmUtaW1wcm92ZQogIChkZWZpbmUgKGl0ZXJhdGl2ZS1pbXByb3ZlIGdvb2QtZW5v dWdoPyBpbXByb3ZlKQogICAgKGRlZmluZSAoaW1wcm92ZXIgZ3Vlc3MpCiAgICAgIChpZiAoZ29v ZC1lbm91Z2g/IGd1ZXNzKQoJICBndWVzcwoJICAoaW1wcm92ZXIgKGltcHJvdmUgZ3Vlc3MpKSkp CiAgaW1wcm92ZXIpCiMrZW5kX3NyYwoKKioqKiBET05FIGEuIHNxcnQKICAgICBDTE9TRUQ6IFsy MDE5LTA5LTA0IFdlZCAyMjoyNF0KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpy ZXN1bHRzIHZhbHVlCiAgICA8PHNxdWFyZT4+CiAgICA8PGl0ZXJhdGl2ZS1pbXByb3ZlPj4KICAg IChkZWZpbmUgKGV4MS40NnNxcnQgeCkKICAgICAgKGxldCAoCgkgICAgKHNxdWFyZS1pbXByb3Zl cgoJICAgICAoaXRlcmF0aXZlLWltcHJvdmUKCSAgICAgIChsYW1iZGEgKHkpICg8IChhYnMgKC0g KHNxdWFyZSB5KSB4ICkpIDAuMDEpKQoJICAgICAgKGxhbWJkYSAoeSkgKC8gKCsgeSAoLyB4IHkp KSAyKSkpCgkgICAgICkKCSAgICApCgkoc3F1YXJlLWltcHJvdmVyIDEpKSkKICAgIChleDEuNDZz cXJ0IDIuMCkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogMS40MTY2NjY2NjY2NjY2NjY1CgoqKioq IERPTkUgYi4gZml4ZWQtcG9pbnQKICAgICBDTE9TRUQ6IFsyMDE5LTA5LTA0IFdlZCAyMjoyNV0K CiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCiAgICA8PHNx dWFyZT4+CiAgICA8PGl0ZXJhdGl2ZS1pbXByb3ZlPj4KICAgIChkZWZpbmUgKGZpeHBvaW50IGYp CiAgICAgIChsZXQgKAoJICAgIChmaXhwb2ludC1pbXByb3ZlcgoJICAgICAoaXRlcmF0aXZlLWlt cHJvdmUKCSAgICAgIChsYW1iZGEgKHkpICg8IChhYnMgKC0gKGYgeSkgeSApKSAwLjAxKSkKCSAg ICAgIChsYW1iZGEgKHkpICgvICgrIHkgKGYgeSkpIDIpKSkKCSAgICAgKQoJICAgICkKCShmaXhw b2ludC1pbXByb3ZlciAxLjApKSkKICAgIChmaXhwb2ludCAobGFtYmRhICh4KSAoKyAxICgvIDEg eCkpKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogMS42MTQ3Nzg1NDc2NjUyMDY4CgoKCkkgaGF2 ZSBtYWRlIGl0LiBBdCBbMjAxOS0wOS0wNCBXZWQgMjI6MjVdIEkgc3RpbGwgaGF2ZW4ndCBpbXBs ZW1lbnRlZCBhbGwgdGhlCnBpY3R1cmVzLCBidXQgSSBhbHJlYWR5IGNhbiBzYXkgdGhhdCBJIGhh dmUgc29sdmVkIF9hbGxfIHByb2JsZW1zIG9mIHRoZQpmaXJzdCBjaGFwdGVyIG9mIFNJQ1AuIFNv bWUgbWFjcm9zIGFyZSB3cm9uZywgSSBuZWVkIHRvIHJldmlzZSB0aGVtLCBidXQgdGhhdAp3aWxs IGJlIGRvbmUgb24gdGhlIHNlY29uZCBwYXNzLiAoWWVzLCB0aGVyZSB3aWxsIGJlIGEgc2Vjb25k IFtvciwgcmF0aGVyLCB0aGlyZF0gcGFzcyEpCgoqKiBUT0RPIENoYXB0ZXIgMjogQnVpbGRpbmcg YWJzdHJhY3Rpb25zIHdpdGggZGF0YSBbMTA2LzExMF0KKioqIERPTkUgRXhlcmNpc2UgMi4xIG1h a2UtcmF0CiAgICBDTE9TRUQ6IFsyMDE5LTA5LTA2IEZyaSAxMzowMF0KCgpJbiB0aGlzIGV4ZXJj aXNlIEkgd2lsbCBhbHNvIGRlZmluZSB0aGUgZnVuY3Rpb25zIHByZXNlbnRlZCBieSBBYmVsc29u CmFuZCBTdXNzbWFuIGZvciBnZW5lcmFsIHJlZmVyZW5jZS4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6 ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpub3dlYi1yZWYgbWFrZS1yYXQKICAoZGVmaW5l IChtYWtlLXJhdCBudW1lcmF0b3IgZGVub21pbmF0b3IpCiAgICAobGV0KiAoKG15LWdjZCAoZ2Nk IG51bWVyYXRvciBkZW5vbWluYXRvcikpCgkgICAobnVtZXJhdG9yICgvIG51bWVyYXRvciBteS1n Y2QpKQoJICAgKGRlbm9taW5hdG9yICgvIGRlbm9taW5hdG9yIG15LWdjZCkpCgkgICAoc2lnbiAo LyAoYWJzIGRlbm9taW5hdG9yKSBkZW5vbWluYXRvcikpKQogICAgICAoY29ucyAoKiBudW1lcmF0 b3Igc2lnbikgKCogZGVub21pbmF0b3Igc2lnbikpKSkKICAoZGVmaW5lIChudW1lciB4KQogICAg KGNhciB4KSkKCiAgKGRlZmluZSAoZGVub20geCkKICAgIChjZHIgeCkpCgojK2VuZF9zcmMKCiMr UkVTVUxUUzoKOiB1bmZpbmlzaGVkCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6 cmVzdWx0cyB2YWx1ZSAyLjIuMS1iYXNpYy1yYXQKICAoZGVmaW5lIChhZGQtcmF0IHggeSkKICAg IChtYWtlLXJhdCAoKyAoKiAobnVtZXIgeCkgKGRlbm9tIHkpKQoJCSAoKiAobnVtZXIgeSkgKGRl bm9tIHgpKSkKCSAgICAgICgqIChkZW5vbSB4KSAoZGVub20geSkpKSkKICAoZGVmaW5lIChzdWIt cmF0IHggeSkKICAgIChtYWtlLXJhdCAoLSAoKiAobnVtZXIgeCkgKGRlbm9tIHkpKQoJCSAoKiAo bnVtZXIgeSkgKGRlbm9tIHgpKSkKCSAgICAgICgqIChkZW5vbSB4KSAoZGVub20geSkpKSkKICAo ZGVmaW5lIChtdWwtcmF0IHggeSkKICAgIChtYWtlLXJhdCAoKiAobnVtZXIgeCkgKG51bWVyIHkp KQoJICAgICAgKCogKGRlbm9tIHgpIChkZW5vbSB5KSkpKQoKICAoZGVmaW5lIChkaXYtcmF0IHgg eSkKICAgIChtYWtlLXJhdCAoKiAobnVtZXIgeCkgKGRlbm9tIHkpKQoJICAgICAgKCogKGRlbm9t IHgpIChudW1lciB5KSkpKQogIChkZWZpbmUgKGVxdWFsLXJhdD8geCB5KQogICAgKD0gKCogKG51 bWVyIHgpIChkZW5vbSB5KSkKICAgICAgICgqIChudW1lciB5KSAoZGVub20geCkpKSkKCiMrZW5k X3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5v d2ViLXJlZiBwcmludC1yYXQKICAoZGVmaW5lIChwcmludC1yYXQgeCkKICAgIChuZXdsaW5lKQog ICAgKGRpc3BsYXkgKG51bWVyIHgpKQogICAgKGRpc3BsYXkgIi8iKQogICAgKGRpc3BsYXkgKGRl bm9tIHgpKSkKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVz dWx0cyBvdXRwdXQKPDxwcmludC1yYXQ+Pgo8PDIuMi4xLWJhc2ljLXJhdD4+Cjw8bWFrZS1yYXQ+ PgooZGVmaW5lIG9uZS1oYWxmIChtYWtlLXJhdCAtNjUgLTUpKQoocHJpbnQtcmF0IG9uZS1oYWxm KQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAKOiAxMy8xCgoqKiogVE9ETyBGaWd1cmUgMi4xCgpU aGlzIGZpZ3VyZSBjb250YWlucyBhIGRhdGEtYWJzdHJhY3Rpb24gZGlhZ3JhbS4gSSBkb24ndCBr bm93IGhvdyB0bwptYWtlIHRoZW0geWV0LgoKKioqIERPTkUgRXhlcmNpc2UgMi4yIG1ha2Utc2Vn bWVudAogICAgQ0xPU0VEOiBbMjAxOS0wOS0wNiBGcmkgMTM6MzRdCgojK2JlZ2luX3NyYyBzY2hl bWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIG1ha2Utc2VnbWVudAog IChkZWZpbmUgKG1ha2Utc2VnbWVudCB4MSB5MSB4MiB5MikKICAgIChjb25zIChtYWtlLXBvaW50 IHgxIHkxKSAgKG1ha2UtcG9pbnQgeDIgeTIpKSkKCiAgKGRlZmluZSAoc3RhcnQtc2VnbWVudCBz ZWdtZW50KQogICAgKGNhciBzZWdtZW50KSkKCiAgKGRlZmluZSAoZW5kLXNlZ21lbnQgc2VnbWVu dCkKICAgIChjZHIgc2VnbWVudCkpCgogIChkZWZpbmUgKG1ha2UtcG9pbnQgeCB5KQogICAgKGNv bnMgeCB5KSkKCiAgKGRlZmluZSAoeC1wb2ludCBwb2ludCkKICAgIChjYXIgcG9pbnQpKQoKICAo ZGVmaW5lICh5LXBvaW50IHBvaW50KQogICAgKGNkciBwb2ludCkpCgogIChkZWZpbmUgKG1pZHBv aW50LXNlZ21lbnQgc2VnbWVudCkKICAgIChtYWtlLXBvaW50ICgvICgrICh4LXBvaW50IChzdGFy dC1zZWdtZW50IHNlZ21lbnQpKQoJCSAgICh4LXBvaW50IChlbmQtc2VnbWVudCAgIHNlZ21lbnQp KSkgMikKCQkoLyAoKyAoeS1wb2ludCAoc3RhcnQtc2VnbWVudCBzZWdtZW50KSkKCQkgICAoeS1w b2ludCAoZW5kLXNlZ21lbnQgICBzZWdtZW50KSkpIDIpKSkKCiMrZW5kX3NyYwoKIytiZWdpbl9z cmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBwcmludC1w b2ludAogIChkZWZpbmUgKHByaW50LXBvaW50IHApCiAgICAobmV3bGluZSkKICAgIChkaXNwbGF5 ICIoIikKICAgIChkaXNwbGF5ICh4LXBvaW50IHApKQogICAgKGRpc3BsYXkgIiwiKQogICAgKGRp c3BsYXkgKHktcG9pbnQgcCkpCiAgICAoZGlzcGxheSAiKSIpKQojK2VuZF9zcmMKCiMrYmVnaW5f c3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PHByaW50LXBvaW50Pj4K PDxtYWtlLXNlZ21lbnQ+PgoocHJpbnQtcG9pbnQgKG1pZHBvaW50LXNlZ21lbnQgKG1ha2Utc2Vn bWVudCAxIDAgMCAxKSkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IAo6ICgxLzIsMS8yKQoKVGhl IHRhc2sgbG9va3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSnVzdCBtYWtlIGEgY29ucyBvZiBw b2ludHMuCgoqKiogRE9ORSBFeGVyY2lzZSAyLjMgbWFrZS1yZWN0YW5nbGUKICAgIENMT1NFRDog WzIwMTktMDktMDggU3VuIDE3OjU4XQoKSSB3aWxsIGNob29zZSB0aGUgZm9sbG93aW5nIHR3byBy ZXByZXNlbnRhdGlvbnM6CiAtIExpc3Qgb2YgcG9pbnRzIGZyb20gdG9wIGxlZnQgdG8gdGhlIHJp Z2h0LgogLSBUd28gbGlzdHMgb2YgY29vcmRpbmF0ZXMsIHggYW5kIHkuCgpJIHdpbGwgbm90IGJl IHVzaW5nIHNlZ21lbnRzIGZyb20gRXhlcmNpc2UgMi4yLCBiZWNhdXNlIHRoZW4gSSB3b3VsZApo YXZlIHRvIGNhcmUgYWJvdXQgdGhlIGNvbnNpc3RlbmN5IG9mIHRoZSBmaXJzdCBhbmQgdGhlIGxh c3QgcG9pbnQgaW4KdGhlIGZvdXIgc2VnbWVudHMuCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9y dHMgYm90aCA6cmVzdWx0cyBvdXRwdXQgOm5vd2ViLXJlZiByZWN0YW5nbGUKICAoZGVmaW5lIChh cmVhIHJlY3RhbmdsZSkKICAgICgqIChnZXQtaGVpZ2h0IHJlY3RhbmdsZSkgKGdldC13aWR0aCBy ZWN0YW5nbGUpKSkKICAoZGVmaW5lIChwZXJpbWV0ZXIgcmVjdGFuZ2xlKQogICAgKCogMiAoKyAo Z2V0LWhlaWdodCByZWN0YW5nbGUpIChnZXQtd2lkdGggcmVjdGFuZ2xlKSkpKQogIChkZWZpbmUg KGdldC1oZWlnaHQgcmVjdGFuZ2xlKQogICAgKGRpc3QgKG50aC1wb2ludCAxIHJlY3RhbmdsZSkg KG50aC1wb2ludCAyIHJlY3RhbmdsZSkpKQogIChkZWZpbmUgKGdldC13aWR0aCByZWN0YW5nbGUp CiAgICAoZGlzdCAobnRoLXBvaW50IDIgcmVjdGFuZ2xlKSAobnRoLXBvaW50IDMgcmVjdGFuZ2xl KSkpCiAgKGRlZmluZSAoZGlzdCBwb2ludDEgcG9pbnQyKQogICAgKCsgKHNxdWFyZSAoLSAoeC1w b2ludCBwb2ludDEpICh4LXBvaW50IHBvaW50MikpKSAoc3F1YXJlICgtICh5LXBvaW50IHBvaW50 MSkgKHktcG9pbnQgcG9pbnQyKSkpKSkKCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpl eHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpub3dlYi1yZWYgcmVjdGFuZ2xlLXBvaW50LWxp c3QKICAoZGVmaW5lIChtYWtlLXJlY3RhbmdsZSB4MSB5MSB4MiB5MiB4MyB5MyB4NCB5NCkgICAK ICAgIChsaXN0IChtYWtlLXBvaW50IHgxIHkxKQoJICAobWFrZS1wb2ludCB4MiB5MikKCSAgKG1h a2UtcG9pbnQgeDMgeTMpCgkgIChtYWtlLXBvaW50IHg0IHk0KSkpCiAgKGRlZmluZSAobnRoLXBv aW50IG4gcmVjdGFuZ2xlKQogICAgKGlmICg9IG4gMSkKCShjYXIgcmVjdGFuZ2xlKQoJKG50aC1w b2ludCAoLSBuIDEpIChjZHIgcmVjdGFuZ2xlKSkpKQojK2VuZF9zcmMKCgojK2JlZ2luX3NyYyBz Y2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQgOm5vd2ViLXJlZiByZWN0YW5nbGUt dHdvLWxpc3RzCiAgKGRlZmluZSAobWFrZS1yZWN0YW5nbGUgeDEgeTEgeDIgeTIgeDMgeTMgeDQg eTQpICAgCiAgICAoY29ucyAobGlzdCB4MSB4MiB4MyB4NCkgKGxpc3QgeTEgeTIgeTMgeTQpKSkK CiAgKGRlZmluZSAobnRoLXBvaW50IG4gcmVjdGFuZ2xlKQogICAgKGlmICg9IG4gMSkKCShtYWtl LXBvaW50IChjYWFyIHJlY3RhbmdsZSkgKGNhZHIgcmVjdGFuZ2xlKSkKCShudGgtcG9pbnQgKC0g biAxKSAoY29ucyAoY2RhciByZWN0YW5nbGUpIChjZGRyIHJlY3RhbmdsZSkpKSkpCiMrZW5kX3Ny YwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CiAgPDxy ZWN0YW5nbGU+PgogIDw8cmVjdGFuZ2xlLXBvaW50LWxpc3Q+PgogIDw8bWFrZS1zZWdtZW50Pj4K ICAobGV0ICgodGVzdDEgKG1ha2UtcmVjdGFuZ2xlIDAgMCAwIDEgMSAxIDEgMCkpKQogICAgKGRp c3BsYXkgIkFyZWE9IikKICAgIChkaXNwbGF5IChhcmVhIHRlc3QxKSkKICAgIChuZXdsaW5lKQog ICAgKGRpc3BsYXkgIlBlcmltZXRlcj0iKQogICAgKGRpc3BsYXkgKHBlcmltZXRlciB0ZXN0MSkp CiAgICAobmV3bGluZSkpCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiBBcmVhPTEKOiBQZXJpbWV0 ZXI9NAoKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAog IDw8cmVjdGFuZ2xlPj4KICA8PHJlY3RhbmdsZS10d28tbGlzdHM+PgogIDw8bWFrZS1zZWdtZW50 Pj4KICAobGV0ICgodGVzdDEgKG1ha2UtcmVjdGFuZ2xlIDAgMCAwIDEgMSAxIDEgMCkpKQogICAg KGRpc3BsYXkgIkFyZWE9IikKICAgIChkaXNwbGF5IChhcmVhIHRlc3QxKSkKICAgIChuZXdsaW5l KQogICAgKGRpc3BsYXkgIlBlcmltZXRlcj0iKQogICAgKGRpc3BsYXkgKHBlcmltZXRlciB0ZXN0 MSkpCiAgICAobmV3bGluZSkpCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiBBcmVhPTEKOiBQZXJp bWV0ZXI9NAoKVGhpcyBpcyBub3QgdmVyeSBlZmZpY2llbnQsIGJ1dCB0d28gaW1wbGVtZW50YXRp b25zIHdlcmUgcmVxdWVzdGVkIC0tCmFuZCB0aGV5IHdlcmUgZGVsaXZlcmVkLgoKKioqIERPTkUg RXhlcmNpc2UgMi40IGNvbnMtbGFtYmRhCiAgICBDTE9TRUQ6IFsyMDE5LTA5LTA4IFN1biAxODow OF0KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAogIChk ZWZpbmUgKGNvbnMgeCB5KQogICAgKGxhbWJkYSAobSkgKG0geCB5KSkpCiAgKGRlZmluZSAoY2Fy IHopCiAgICAoeiAobGFtYmRhIChwIHEpIHApKSkKICAoZGVmaW5lIChjZHIgeikKICAgICh6IChs YW1iZGEgKHAgcSkgcSkpKQoKICAoZGlzcGxheSAoY2FyIChjb25zICdhICdiKSkpCiAgKG5ld2xp bmUpCiAgKGRpc3BsYXkgKGNkciAoY29ucyAnYSAnYikpKQogIChuZXdsaW5lKQojK2VuZF9zcmMK CiMrUkVTVUxUUzoKOiBhCjogYgoKKioqIERPTkUgRXhlcmNpc2UgMi41IGNvbnMtcG93CiAgICBD TE9TRUQ6IFsyMDE5LTA5LTA4IFN1biAxOTowN10KICAgIDA6MDA6MDAgLS0gMDo1NjowMiAKCiMr YmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpub3dlYi1yZWYg ZXgyLjVjb25zCihkZWZpbmUgKGNvbnMgYSBiKQogICgqIChleHB0IDIgYSkgKGV4cHQgMyBiKSkp CiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICM8dW5kZWY+CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4 cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIGV4Mi41Y2FyCihkZWZpbmUgKGNh ciBudW1iZXIpCiAgKGxvZyAoZ2NkIChleHB0IDIuMCAoZmxvb3IgKGxvZyBudW1iZXIgMikpKSBu dW1iZXIpIDIpKQooZGVmaW5lIChjZHIgbnVtYmVyKQogIChsb2cgKGdjZCAoZXhwdCAzLjAgKGZs b29yIChsb2cgbnVtYmVyIDIpKSkgbnVtYmVyKSAzKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6Cjog Izx1bmRlZj4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVl Cjw8ZXgyLjVjYXI+Pgo8PGV4Mi41Y29ucz4+CgoobGlzdCAoY2FyIChjb25zIDE0IDQpKSAoY2Ry IChjb25zIDE0IDQpKSkKCiMrZW5kX3NyYwoKIytSRVNVTFRTOgp8IDE0LjAgfCA0LjAgfAoKKioq IERPTkUgRXhlcmNpc2UgMi42IENodXJjaCBOdW1lcmFscwogICAgQ0xPU0VEOiBbMjAxOS0wOS0w OCBTdW4gMTk6NDFdCjA6MDA6MDAgLS0gMDoyMzo1OCAKCkluIHRoZSB3b3JzdCBjYXNlIHRoaXMg ZXhlcmNpc2UgY2FuIGJlIGNvcGllZCBsaXRlcmFsbHkgcmlnaHQgZnJvbSB0aGUKV2lraXBlZGlh IGFydGljbGU6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NodXJjaF9lbmNvZGluZwoj K2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVm IGNodXJjaC16ZXJvCiAgKGRlZmluZSBpZGVudGl0eSAobGFtYmRhICh4KSB4KSkKICAoZGVmaW5l IHplcm8gKGxhbWJkYSAoZikgaWRlbnRpdHkpKQogIChkZWZpbmUgKGFkZC0xIG4pCiAgICAobGFt YmRhIChmKSAobGFtYmRhICh4KSAoZiAoKG4gZikgeCkpKSkpCiMrZW5kX3NyYwoKIytiZWdpbl9z cmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CiAgPDxjaHVyY2gtemVybz4+ CiAgKGRlZmluZSBvbmUgKGxhbWJkYSAoZikgKGxhbWJkYSAoeCkgKGYgeCkpKSkKICAoZGVmaW5l IHR3byAobGFtYmRhIChmKSAobGFtYmRhICh4KSAoZiAoZiB4KSkpKSkKICAoZGVmaW5lIChwbHVz IGEgYikKICAgIChsYW1iZGEgKGYpIChsYW1iZGEgKHgpICgoYSBmKSAoKGIgZikgeCkpKSkpCgoj K2VuZF9zcmMKCiMrUkVTVUxUUzoKCioqKiBET05FIEV4ZXJjaXNlIDIuNyBtYWtlLWludGVydmFs CiAgICBDTE9TRUQ6IFsyMDE5LTA5LTA4IFN1biAyMDowOV0KMDowMDowMCAtLSAwOjIwOjA5IAoK IytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJl ZiBtYWtlLWludGVydmFsCiAgKGRlZmluZSAobWFrZS1pbnRlcnZhbCBhIGIpCiAgICAoY29ucyBh IGIpKQogIChkZWZpbmUgKHVwcGVyLWJvdW5kIGludGVydmFsKQogICAgKG1heCAoY2FyIGludGVy dmFsKSAoY2RyIGludGVydmFsKSkpCiAgKGRlZmluZSAobG93ZXItYm91bmQgaW50ZXJ2YWwpCiAg ICAobWluIChjYXIgaW50ZXJ2YWwpIChjZHIgaW50ZXJ2YWwpKSkKIytlbmRfc3JjCgoKIytiZWdp bl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBpbnRl cnZhbC1jb21tb24KICAoZGVmaW5lIChhZGQtaW50ZXJ2YWwgeCB5KQogICAgKG1ha2UtaW50ZXJ2 YWwgKCsgKGxvd2VyLWJvdW5kIHgpIChsb3dlci1ib3VuZCB5KSkKCQkgICAoKyAodXBwZXItYm91 bmQgeCkgKHVwcGVyLWJvdW5kIHkpKSkpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpl eHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBtdWwtaW50ZXJ2YWwtc2ltcGxl CiAgKGRlZmluZSAobXVsLWludGVydmFsIHggeSkKICAgIChsZXQgKChwMSAoKiAobG93ZXItYm91 bmQgeCkgKGxvd2VyLWJvdW5kIHkpKSkKCSAgKHAyICgqIChsb3dlci1ib3VuZCB4KSAodXBwZXIt Ym91bmQgeSkpKQoJICAocDMgKCogKHVwcGVyLWJvdW5kIHgpIChsb3dlci1ib3VuZCB5KSkpCgkg IChwNCAoKiAodXBwZXItYm91bmQgeCkgKHVwcGVyLWJvdW5kIHkpKSkpCiAgICAgIChtYWtlLWlu dGVydmFsIChtaW4gcDEgcDIgcDMgcDQpCgkJICAgICAobWF4IHAxIHAyIHAzIHA0KSkpKQojK2Vu ZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpu b3dlYi1yZWYgZGl2LWludGVydmFsLWxhbWUKICAoZGVmaW5lIChkaXYtaW50ZXJ2YWwgeCB5KQog ICAgKG11bC1pbnRlcnZhbAogICAgIHgKICAgICAobWFrZS1pbnRlcnZhbCAoLyAxLjAgKHVwcGVy LWJvdW5kIHkpKQoJCSAgICAoLyAxLjAgKGxvd2VyLWJvdW5kIHkpKSkpKQojK2VuZF9zcmMKCiMr YmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PG1ha2UtaW50 ZXJ2YWw+Pgo8PGludGVydmFsLWNvbW1vbj4+Cjw8ZGl2LWludGVydmFsLWxhbWU+Pgo8PG11bC1p bnRlcnZhbC1zaW1wbGU+Pgooc2hvdyAjdCAiICIgKGFkZC1pbnRlcnZhbCAobWFrZS1pbnRlcnZh bCA1IDUuNikgKG1ha2UtaW50ZXJ2YWwgNiA2LjEpKSAiXG4iKQooc2hvdyAjdCAiICIgKG11bC1p bnRlcnZhbCAobWFrZS1pbnRlcnZhbCAtMC4xIDAuMSkgKG1ha2UtaW50ZXJ2YWwgMTAwIDExMCkp ICJcbiIpCihzaG93ICN0ICIgIiAoZGl2LWludGVydmFsIChtYWtlLWludGVydmFsIC0wLjEgMC4x KSAobWFrZS1pbnRlcnZhbCAxMDAgMTEwKSkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICAoMTEu MCAuIDExLjcpCjogICgtMTEuMCAuIDExLjApCjogICgtMC4wMDEgLiAwLjAwMSkKCioqKiBET05F IEV4ZXJjaXNlIDIuOCBzdWItaW50ZXJ2YWwKICAgIENMT1NFRDogWzIwMTktMDktMDggU3VuIDIz OjA3XQoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5v d2ViLXJlZiBzdWItaW50ZXJ2YWwKICAoZGVmaW5lIChzdWItaW50ZXJ2YWwgYSBiKQogICAgKG1h a2UtaW50ZXJ2YWwgKC0gKHVwcGVyLWJvdW5kIGEpIChsb3dlci1ib3VuZCBiKSkKCQkgICAoLSAo bG93ZXItYm91bmQgYSkgKHVwcGVyLWJvdW5kIGIpKSkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6 ICM8dW5kZWY+CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRw dXQKPDxtYWtlLWludGVydmFsPj4KPDxzdWItaW50ZXJ2YWw+Pgooc2hvdyAjdCAiICIgKHN1Yi1p bnRlcnZhbCAobWFrZS1pbnRlcnZhbCAxMDAgLTEwMCkgKG1ha2UtaW50ZXJ2YWwgLTEgMTAxKSkp CiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICAoMTAxIC4gLTIwMSkKCioqKiBET05FIEV4ZXJjaXNl IDIuOSBpbnRlcnZhbC13aWR0aAogICAgQ0xPU0VEOiBbMjAxOS0wOS0wOCBTdW4gMjM6MTVdCiAw OjA2OjAwCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCiAg KGRlZmluZSAod2lkdGggaW50ZXJ2YWwpCiAgICAoYWJzICgtICh1cHBlci1ib3VuZCBpbnRlcnZh bCkgKGxvd2VyLWJvdW5kIGludGVydmFsKSkpKQojK2VuZF9zcmMKClwoIGEgKyBcRGVsdGEgYSAr IGIgKyBcRGVsdGEgYiA9IChhK2IpICsgKFxEZWx0YSBhICsgXERlbHRhIGIpXCkKXCgoYStcRGVs dGEgYSlcY2RvdCAoYitcRGVsdGEgYikgPSAoYVxjZG90IGIpICsgKGFcRGVsdGEgYiArIGJcRGVs dGEgYSArIFxEZWx0YSBhIFxEZWx0YSBiKVwpCgpUaGUgZm9ybXVsYWUgYWJvdmUgc2hvdWxkIHJl bGF0aXZlbHkgY29udmluY2luZ2x5IGV4cGxhaW4gd2h5IHRoZQp3aWR0aCBpcyBub3QgdGhlIGZ1 bmN0aW9uIG9mIHRoZSBpbml0aWFsIHdpZHRocyBvbmx5IGluIHRoZSBjYXNlIG9mCm11bHRpcGxp Y2F0aW9uLiAKCioqKiBET05FIEV4ZXJjaXNlIDIuMTAgZGl2LWludGVydmFsLWJldHRlcgogICAg Q0xPU0VEOiBbMjAxOS0wOS0wOCBTdW4gMjM6MzBdCjA6MTQ6NTAgIApUaGUgaW5pdGlhbCBBbHlz c2EncyBjb25zdHJ1Y3Rpb24gaXM6CiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpy ZXN1bHRzIHZhbHVlIDpub3dlYi1yZWYgZGl2LWludGVydmFsLWJldHRlcgogIChkZWZpbmUgKGRp di1pbnRlcnZhbCB4IHkpCiAgICAod2hlbiAoYW5kICg8IChsb3dlci1ib3VuZCB5KSAwKSAoPiAo dXBwZXItYm91bmQgeSkgMCkpCiAgICAgIChlcnJvciAiRGl2aXNpb24gYnkgemVyby4iIChsaXN0 IHggeSkpKQogICAgICAobXVsLWludGVydmFsCiAgICAgICB4CiAgICAgICAobWFrZS1pbnRlcnZh bCAoLyAxLjAgKHVwcGVyLWJvdW5kIHkpKQoJCSAgICAgICgvIDEuMCAobG93ZXItYm91bmQgeSkp KSkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICM8dW5kZWY+CgojK2JlZ2luX3NyYyBzY2hlbWUg OmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKPDxkaXYtaW50ZXJ2YWwtYmV0dGVyPj4KPDxt YWtlLWludGVydmFsPj4KKGRpc3BsYXkgKGRpdi1pbnRlcnZhbCAobWFrZS1pbnRlcnZhbCAxIDIp IChtYWtlLWludGVydmFsIC0xIDEpKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogJyhFeGNlcHRp b24gIzE5IHVzZXIgIkRpdmlzaW9uIGJ5IHplcm8uIiAoKCgxIC4gMikgKC0xIC4gMSkpKSAjZiAj ZikKCioqKiBET05FIEV4ZXJjaXNlIDIuMTEgbXVsLWludGVydmFsLW5pbmUtY2FzZXMKICAgIENM T1NFRDogWzIwMTktMDktMDkgTW9uIDAwOjQ1XQoxOjA2OjU4IAoKfCBudW1iZXIgfCBsb3dlciB4 IHwgdXBwZXIgeCB8IGxvd2VyIHkgfCB1cHBlciB5IHwKfC0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLXwKfCAgICAgIDIgfCArICAgICAgIHwgKyAgICAgICB8 ICsgICAgICAgfCArICAgICAgIHwKfCAgICAgIDIgfCArICAgICAgIHwgKyAgICAgICB8IC0gICAg ICAgfCArICAgICAgIHwKfCAgICAgIDIgfCArICAgICAgIHwgKyAgICAgICB8IC0gICAgICAgfCAt ICAgICAgIHwKfCAgICAgIDIgfCAtICAgICAgIHwgKyAgICAgICB8ICsgICAgICAgfCArICAgICAg IHwKfCAgICAgIDMgfCAtICAgICAgIHwgKyAgICAgICB8IC0gICAgICAgfCArICAgICAgIHwKfCAg ICAgIDIgfCAtICAgICAgIHwgKyAgICAgICB8IC0gICAgICAgfCAtICAgICAgIHwKfCAgICAgIDIg fCAtICAgICAgIHwgLSAgICAgICB8ICsgICAgICAgfCArICAgICAgIHwKfCAgICAgIDIgfCAtICAg ICAgIHwgLSAgICAgICB8IC0gICAgICAgfCArICAgICAgIHwKfCAgICAgIDIgfCAtICAgICAgIHwg LSAgICAgICB8IC0gICAgICAgfCAtICAgICAgIHwKCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9y dHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIG11bC1pbnRlcnZhbAogIChkZWZpbmUg KG11bC1pbnRlcnZhbCB4IHkpCiAgICAobGV0ICgoeDEgKGxvd2VyLWJvdW5kIHgpKQoJICAoeDIg KHVwcGVyLWJvdW5kIHgpKQoJICAoeTEgKGxvd2VyLWJvdW5kIHkpKQoJICAoeTIgKHVwcGVyLWJv dW5kIHkpKSkKICAgICAgKGNvbmQgKChhbmQgKD4geDEgMCkgKD4geDIgMCkgKD4geTEgMCkgKD4g eTIgMCkpIChtYWtlLWludGVydmFsICgqIHgxIHkxKSAoKiB4MiB5MikpKQoJICAgICgoYW5kICg+ IHgxIDApICg+IHgyIDApICg8IHkxIDApICg+IHkyIDApKSAobWFrZS1pbnRlcnZhbCAoKiB4MiB5 MSkgKCogeDIgeTIpKSkKCSAgICAoKGFuZCAoPiB4MSAwKSAoPiB4MiAwKSAoPCB5MSAwKSAoPCB5 MiAwKSkgKG1ha2UtaW50ZXJ2YWwgKCogeDIgeTEpICgqIHgyIHkxKSkpCgkgICAgKChhbmQgKDwg eDEgMCkgKD4geDIgMCkgKD4geTEgMCkgKD4geTIgMCkpIChtYWtlLWludGVydmFsICgqIHgxIHky KSAoKiB4MiB5MikpKQoJICAgICgoYW5kICg8IHgxIDApICg+IHgyIDApICg8IHkxIDApICg+IHky IDApKQoJICAgICAobGV0ICgocDEgKCogKGxvd2VyLWJvdW5kIHgpIChsb3dlci1ib3VuZCB5KSkp CgkJICAgKHAyICgqIChsb3dlci1ib3VuZCB4KSAodXBwZXItYm91bmQgeSkpKQoJCSAgIChwMyAo KiAodXBwZXItYm91bmQgeCkgKGxvd2VyLWJvdW5kIHkpKSkKCQkgICAocDQgKCogKHVwcGVyLWJv dW5kIHgpICh1cHBlci1ib3VuZCB5KSkpKQoJICAgICAgIChtYWtlLWludGVydmFsIChtaW4gcDEg cDIgcDMgcDQpCgkJCSAgICAgIChtYXggcDEgcDIgcDMgcDQpKSkpCgkgICAgKChhbmQgKDwgeDEg MCkgKD4geDIgMCkgKDwgeTEgMCkgKDwgeTIgMCkpIChtYWtlLWludGVydmFsICgqIHgyIHkyKSAo KiB4MiB5MSkpKQoJICAgICgoYW5kICg8IHgxIDApICg8IHgyIDApICg+IHkxIDApICg+IHkyIDAp KSAobWFrZS1pbnRlcnZhbCAoKiB4MSB5MikgKCogeDIgeTEpKSkKCSAgICAoKGFuZCAoPCB4MSAw KSAoPCB4MiAwKSAoPCB5MSAwKSAoPiB5MiAwKSkgKG1ha2UtaW50ZXJ2YWwgKCogeDIgeTIpICgq IHgxIHkxKSkpCgkgICAgKChhbmQgKDwgeDEgMCkgKDwgeDIgMCkgKDwgeTEgMCkgKDwgeTIgMCkp IChtYWtlLWludGVydmFsICgqIHgyIHkyKSAoKiB4MSB5MSkpKSkpKQojK2VuZF9zcmMKCkkgZG9u J3QgZXZlbiB3YW50IHRvIHRlc3QgaXQuIAoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJv dGggOnJlc3VsdHMgb3V0cHV0Cjw8bXVsLWludGVydmFsPj4KPDxtYWtlLWludGVydmFsPj4KKHNo b3cgI3QgIiAiIChtdWwtaW50ZXJ2YWwgKG1ha2UtaW50ZXJ2YWwgLTIgMikgKG1ha2UtaW50ZXJ2 YWwgLTUgNikpKQoKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogICgtMTIgLiAxMikKCk1hcnZlbG91 cy4KCioqKiBET05FIEV4ZXJjaXNlIDIuMTIgbWFrZS1jZW50ZXItcGVyY2VudAogICAgQ0xPU0VE OiBbMjAxOS0wOS0wOSBNb24gMTA6MTFdCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90 aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIG1ha2UtY2VudGVyLXdpZHRoCiAgKGRlZmluZSAo bWFrZS1jZW50ZXItd2lkdGggYyB3KQogICAgKG1ha2UtaW50ZXJ2YWwgKC0gYyB3KSAoKyBjIHcp KSkKICAoZGVmaW5lIChjZW50ZXIgaSkKICAgICgvICgrIChsb3dlci1ib3VuZCBpKSAodXBwZXIt Ym91bmQgaSkpIDIpKQogIChkZWZpbmUgKHdpZHRoIGkpCiAgICAoLyAoLSAodXBwZXItYm91bmQg aSkgKGxvd2VyLWJvdW5kIGkpKSAyKSkKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4 cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIG1ha2UtY2VudGVyLXByZWNpc2lv bgogIChkZWZpbmUgKG1ha2UtY2VudGVyLXBlcmNlbnQgY2VudGVyIHBlcmNlbnQpCiAgICAobGV0 ICgoZGVsdGEgKCogY2VudGVyICgvIHBlcmNlbnQgMTAwKSkpKQogICAgICAobWFrZS1pbnRlcnZh bCAgKCsgY2VudGVyIGRlbHRhKSAoLSBjZW50ZXIgZGVsdGEpKSkpCiAgKGRlZmluZSAocmVsYXRp dmUtcHJlY2lzaW9uIGludGVydmFsKQogICAgKGxldCogKChjZW50ZXIgKC8gKCsgKGxvd2VyLWJv dW5kIGludGVydmFsKSAodXBwZXItYm91bmQgaW50ZXJ2YWwpKQoJCSAgICAgMikpCgkgICAocGVy Y2VudCAoLyAoYWJzICgtIChsb3dlci1ib3VuZCBpbnRlcnZhbCkgKHVwcGVyLWJvdW5kIGludGVy dmFsKSkpIDIpKSkKICAgICAgKC8gcGVyY2VudCBjZW50ZXIpKSkKIytlbmRfc3JjCgojK1JFU1VM VFM6CjogIzx1bmRlZj4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRz IG91dHB1dAo8PG1ha2UtY2VudGVyLXdpZHRoPj4KPDxtYWtlLWNlbnRlci1wcmVjaXNpb24+Pgo8 PG1ha2UtaW50ZXJ2YWw+PgogIChsZXQgKCh0ZXN0LWludGVydmFsIChtYWtlLWNlbnRlci1wZXJj ZW50IDEwMCAyKSkpCiAgICAoc2hvdyAjdCAiICIgdGVzdC1pbnRlcnZhbCAiXG4iKQogICAgKHNo b3cgI3QgIiAiIChjZW50ZXIgdGVzdC1pbnRlcnZhbCkgIlxuIikKICAgIChzaG93ICN0ICIgIiAo cmVsYXRpdmUtcHJlY2lzaW9uIHRlc3QtaW50ZXJ2YWwpKSAiXG4iKQojK2VuZF9zcmMKCiMrUkVT VUxUUzoKOiAgKDEwMiAuIDk4KQo6ICAxMDAKOiAgMS81MAoKKioqIERPTkUgRXhlcmNpc2UgMi4x MyBmb3JtdWxhIGZvciB0b2xlcmFuY2UKICAgIENMT1NFRDogWzIwMTktMDktMDkgTW9uIDEwOjE2 XQoKXCgoYStcRGVsdGEgYSlcY2RvdCAoYitcRGVsdGEgYikgPSAoYVxjZG90IGIpICsgKGFcRGVs dGEgYiArIGJcRGVsdGEgYSArIFxEZWx0YSBhIFxEZWx0YSBiKVwpClwoXGZyYWN7KGErXERlbHRh IGEpXGNkb3QgKGIrXERlbHRhIGIpfXthXGNkb3QgYn0gPSBcZnJhY3soYVxjZG90IGIpfXthXGNk b3QgYn0gKyBcZnJhY3soYVxEZWx0YSBiICsKYlxEZWx0YSBhICsgXERlbHRhIGEgXERlbHRhIGIp fXthIFxjZG90IGJ9IFxhcHByb3ggMSArIFxmcmFje1xEZWx0YSBhfXthfSArIFxmcmFje1xEZWx0 YSBifXtifVwpIAoKKioqIERPTkUgRXhlcmNpc2UgMi4xNCBwYXJhbGxlbC1yZXNpc3RvcnMKICAg IENMT1NFRDogWzIwMTktMDktMDkgTW9uIDExOjI0XQowOjM3OjAwICsgIDA6MzE6MDcgPSAxOjA2 OjA3CiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAogIDw8 bWFrZS1pbnRlcnZhbD4+CiAgPDxkaXYtaW50ZXJ2YWwtYmV0dGVyPj4KICA8PG11bC1pbnRlcnZh bD4+CiAgPDxpbnRlcnZhbC1jb21tb24+PgogIChkZWZpbmUgKHBhcjEgcjEgcjIpCiAgICAoZGl2 LWludGVydmFsIChtdWwtaW50ZXJ2YWwgcjEgcjIpCgkJICAoYWRkLWludGVydmFsIHIxIHIyKSkp CiAgKGRlZmluZSAocGFyMiByMSByMikKICAgIChsZXQgKChvbmUgKG1ha2UtaW50ZXJ2YWwgMSAx KSkpCiAgICAgIChkaXYtaW50ZXJ2YWwKICAgICAgIG9uZSAoYWRkLWludGVydmFsIChkaXYtaW50 ZXJ2YWwgb25lIHIxKQoJCQkgKGRpdi1pbnRlcnZhbCBvbmUgcjIpKSkpKQoKICAoc2hvdyAjdCAi ICIgKHBhcjEgKG1ha2UtaW50ZXJ2YWwgNC45IDUuMSkgKG1ha2UtaW50ZXJ2YWwgNi45IDcuMSkp ICJcbiIpCiAgKHNob3cgI3QgIiAiIChwYXIyIChtYWtlLWludGVydmFsIDQuOSA1LjEpIChtYWtl LWludGVydmFsIDYuOSA3LjEpKSAiXG4iKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAgKDIuNzcx MzExNDc1NDA5ODM2NyAuIDMuMDY4NjQ0MDY3Nzk2NjA5NikKOiAgKDIuODY1MjU0MjM3Mjg4MTM1 NiAuIDIuOTY4MDMyNzg2ODg1MjQ2KQoKSXQgaXMgd29ydGggbm90aWNpbmcgdGhhdCB+cGFyMn4g dXNlcyBtb3JlIG9wZXJhdGlvbnMgdGhhbgp+cGFyMX4uIEV2ZW4gaWYgdGhlIHRpdGxlIHByb2Js ZW0gaW4gdGhlIGV4ZXJjaXNlIHdhc24ndCBwcmVzZW50LCB3ZQp3b3VsZCBzdGlsbCBnZXQgYSBs ZXNzIHByZWNpc2UgcmVzdWx0LgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJl c3VsdHMgb3V0cHV0CiAgICA8PG1ha2UtaW50ZXJ2YWw+PgogICAgPDxtdWwtaW50ZXJ2YWw+Pgog ICAgPDxkaXYtaW50ZXJ2YWwtYmV0dGVyPj4KICAgIChsZXQgKChvbmUgKG1ha2UtaW50ZXJ2YWwg MS4wIDEuMCkpCgkgIChpMiAobWFrZS1pbnRlcnZhbCA0LjkgNS4xKSkKCSAgKGkzIChtYWtlLWlu dGVydmFsIDYuOSA3LjEpKSkKICAgICAgKHNob3cgI3QgIiAiIChkaXYtaW50ZXJ2YWwgb25lIG9u ZSkgIlxuIikKICAgICAgKHNob3cgI3QgIiAiIChkaXYtaW50ZXJ2YWwgb25lIGkyKSAiXG4iKQog ICAgICAoc2hvdyAjdCAiICIgKGRpdi1pbnRlcnZhbCBpMiBpMikgIlxuIikKICAgICAgKHNob3cg I3QgIiAiIChkaXYtaW50ZXJ2YWwgaTIgaTMpICJcbiIpCiAgICAgIChzaG93ICN0ICIgIiAobXVs LWludGVydmFsICBpMiAoZGl2LWludGVydmFsIG9uZSBpMikpICJcbiIpKQoKIytlbmRfc3JjCgoj K1JFU1VMVFM6CjogICgxLjAgLiAxLjApCjogICgwLjE5NjA3ODQzMTM3MjU0OTA0IC4gMC4yMDQw ODE2MzI2NTMwNjEyKQo6ICAoMC45NjA3ODQzMTM3MjU0OTAzIC4gMS4wNDA4MTYzMjY1MzA2MTIp CjogICgwLjY5MDE0MDg0NTA3MDQyMjYgLiAwLjczOTEzMDQzNDc4MjYwODYpCjogICgwLjk2MDc4 NDMxMzcyNTQ5MDMgLiAxLjA0MDgxNjMyNjUzMDYxMikKClRoZSBpZGVhIGhlcmUgaXMsIGluIHNv bWUgc2Vuc2UsIHRoZSBub24taW5kZXBlbmRlbmNlIG9mIHRoZSByYW5kb20KdmFyaWFibGVzICpp MiogYW5kICppMiouIFJlZ2FyZGxlc3Mgb2YgdGhlIHByZWNpc2lvbiBvZiAqaTIqLCB3ZQpfa25v d18gdGhhdCBcKFxmcmFje2lfMn17aV8yfSA9IDFcKS4gCgpUaGUgY2VudGVyLXBlcmNlbnQgZm9y bSBJIGltcGxlbWVudGVkIGlzIHNsaWdodGx5IGRpZmZlcmVudCBmcm9tIHRoZQpvbmUgQWJlbHNv biBleHBlY3RlZCwgSSBndWVzcywgYnV0IHN0aWxsLApcKFxmcmFjezF9ezF9IFxhcHByb3ggMSBc cG0gMlxEZWx0YVwpLiBUaGlzIGlzIHRvbyBtdWNoLgoKKioqIERPTkUgRXhlcmNpc2UgMi4xNSBi ZXR0ZXItaW50ZXJ2YWxzCiAgICBDTE9TRUQ6IFsyMDE5LTA5LTA5IE1vbiAxMTozNF0KCkkgYWxy ZWFkeSBhbnN3ZXJlZCB0aGlzIHF1ZXN0aW9uIGluIHRoZSBFeGVyY2lzZSAyLjE0LiBUaGUgcHJv YmxlbSBpcwpvZiB0aGUgcG90ZW50aWFsIGluZGVwZW5kZW5jZSAod2hpY2ggbWF5IG9yIG1heSBu b3QgYmUgdGhlIGNhc2UpIG9mCiphKiBhbmQgKmIqLCBidXQgY29tcGxldGUgZGVwZW5kZW5jZSBv ZiAqYSogb24gKmEqLCB3aGljaCBpcyBcKDFcKQpyZWdhcmRsZXNzIG9mIHdoZXRoZXIgKmEqIGlz IGV2ZW4gd2VsbC1kZWZpbmVkLgoKKioqIERPTkUgRXhlcmNpc2UgMi4xNiBpbnRlcnZhbC1hcml0 aG1ldGljCiAgICBDTE9TRUQ6IFsyMDE5LTA5LTA5IE1vbiAxMTozN10KClRvIHNvbHZlIHRoaXMg cHJvYmxlbSBpbiB0aGUgZ2VuZXJhbCBjYXNlLCBvbiB3b3VsZCBoYXZlIHRvIGJ1aWxkIGEKcHJv YmFiaWxpdHkgZGlzdHJpYnV0aW9uIG9mIHRoZSBmdW5jdGlvbiBvbiB0aGUgdmFyaWFibGVzLCBh bmQgdXNlCnNvbWV0aGluZyBvZiBhIHByb2JhYmlsaXN0aWMgcmVkdWN0aW9uIG9uIGV2ZXJ5IHN0 ZXAuIEkgYW0gbm90IGF3YXJlCm9mIHN1Y2ggc3lzdGVtcyBpZiB0aGV5IGV2ZW4gZXhpc3QuIEl0 IHdvdWxkIGJlIGluZGlzcGVuc2FibGUgZm9yCnF1YW50dW0gbW9kZWxsaW5nIHRob3VnaC4KCkh5 cG90aGV0aWNhbGx5LCBpZiBzdWNoIHN5c3RlbXMgZXhpc3RlZCwgdGhleSB3b3VsZCBkbyBzb21l dGhpbmcgbGlrZQpidWlsZCBhIGRpc3RyaWJ1dGlvbiBvbiBldmVyeSBzdGVwIG9mIHRoZSBjb21w dXRhdGlvbiBhbmQgdHJhY2sgZXZlcnkKcXVhbnRpdHkgb2NjdXJyZW5jZSBpbiBldmVyeSBkaXN0 cmlidXRpb24uCgoqKiogVE9ETyBGaWd1cmUgMi4yIEJveC1hbmQtcG9pbnRlciByZXByZXNlbnRh dGlvbiBvZiB+KGNvbnMgMSAyKX4uIDpncmFwaHZpejpwbGFudHVtbDp0aWt6OgpodHRwczovL2dp dGxhYi5jb20vZ3JhcGh2aXovZ3JhcGh2aXovaXNzdWVzLzE1ODgKaHR0cHM6Ly9naXRsYWIuY29t L2dyYXBodml6L2dyYXBodml6L2lzc3Vlcy8xNTg5CjEwOjAwOjAwClsyMDE5LTA5LTEwIFR1ZSAx MDoyNF0gSSBtYW5hZ2VkIHRvIG1ha2UgcGdmIHdvcmsgd2l0aCBvcmctbW9kZSwgYnV0CmRpZG4n dCBtYW5hZ2UgdG8gIG1ha2UgYSBwaWN0dXJlIHlldC4gU28gZmFyIHRoaXMgcHJvYmxlbSBoYXBw ZW5lZCB0bwpnZW5lcmFsaXplIHRvIHRoZSBjYXNlIG9mIGRyYXdpbmcgYXJiaXRyYXJ5IHZlY3Rv ciBncmFwaGljcy4gR3JhcGh2aXoKdHVybmVkIG91dCB0byBiZSBsZXNzIGZpdCBmb3IgdGhpcyBw cm9ibGVtLgoKIytiZWdpbl9zcmMgcGxhbnR1bWwgOmV4cG9ydHMgYm90aCA6ZmlsZSBmaWd1cmUt Mi0yLnBuZwogIEBzdGFydGRvdAogIGRpZ3JhcGggc2ljcDJfMiB7CiAgICBub2RlIFtzaGFwZT1u b25lXTsKICAgIHNvdXJjZSBbbGFiZWw9IiJdOwogICAgCiAgICBub2RlIFtzaGFwZT1wbGFpbnRl eHQsIHN0eWxlPSJyb3VuZGVkIl07CiAgICBzdHJ1Y3QwIFtsYWJlbD08PHRhYmxlIEJPUkRFUj0i MCIgQ0VMTEJPUkRFUj0iMSIgQ0VMTFNQQUNJTkc9IjAiPgogICAgICAgICAgICAgPHRyPgogICAg ICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjkiIGhlaWdodD0iMzUiIHNpZGVzPSJsdHJiIiBwb3J0 PSJmMSI+PC90ZD4KICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjI5IiBoZWlnaHQ9IjM1IiBz aWRlcz0ibHJ0YiIgcG9ydD0iZjIiPjwvdGQ+CiAgICAgICAgICAgICA8L3RyPgogICAgICAgICAg ICAgPC90YWJsZT4+LCBzdHlsZT0icm91bmRlZCxmaWxsZWQiLCBmaWxsY29sb3I9ImdyYXkiXTsK ICAgIHJhbmtkaXI9TFI7CiAgICBub2RlIFtzaGFwZT1yZWNvcmQsIHN0eWxlPSJyb3VuZGVkIl07 CiAgICBzdHJ1Y3QyIFtsYWJlbD0iPGYyPiAyIl07CiAgICBzdHJ1Y3QxIFtsYWJlbD0iPGYxPiAx Il07CiAgICBlZGdlIFthcnJvd2hlYWQ9bm9ybWFsLGFycm93dGFpbD1kb3RdOyAgICAKICAgIHN0 cnVjdDA6ZjI6YyAtPiBzdHJ1Y3QyOmYwIFt0YWlsY2xpcD1mYWxzZV07CiAgICBzdHJ1Y3QwOmYx OmMgLT4gc3RydWN0MTpmMCBbdGFpbGNsaXA9ZmFsc2VdOwogICAgc291cmNlIC0+IHN0cnVjdDA7 CiAgfQoKICBAZW5kZG90CiMrZW5kX3NyYyAKCiMrUkVTVUxUUzoKW1tmaWxlOmZpZ3VyZS0yLTIu cG5nXV0KCgoKIytuYW1lOiB0aWt6dGVzdAojK2hlYWRlcjogOmltYWdlbWFnaWNrIHllcyA6aW1p bm9wdGlvbnMgLWRlbnNpdHkgNjAwIDppbW91dG9wdGlvbnMgLWdlb21ldHJ5IDIwMAojK2hlYWRl cjogOmZpdCB5ZXMgOmhlYWRlcnMgJygiXFx1c2VwYWNrYWdle3Rpa3p9IikKIytoZWFkZXI6IDpi dWZmZXIgb24KIytiZWdpbl9zcmMgbGF0ZXggOnJlc3VsdHMgcmF3IGZpbGUgOmV4cG9ydHMgY29k ZSA6ZmlsZSB0ZXN0LnBuZwogIFx1c2V0aWt6bGlicmFyeXt0cmVlc30KICBcYmVnaW57dGlrenBp Y3R1cmV9W2NvbG9yPXdoaXRlXQogICAgXG5vZGUgW2NpcmNsZSwgZHJhdywgZmlsbD1yZWQhNzBd IGF0ICgwLDApIHsxfQogICAgICBjaGlsZCB7IAogICAgICAgICAgICAgbm9kZSBbY2lyY2xlLCBk cmF3LCBmaWxsPWJsdWUhNzBdIHsyfQogICAgICAgICAgICAgY2hpbGQgeyAKICAgICAgICAgICAg ICAgICAgIG5vZGUgW2NpcmNsZSwgZHJhdywgZmlsbD1ncmVlbiE3MF0gIHszfSB9CiAgICAgICAg ICAgICBjaGlsZCB7IAogICAgICAgICAgICAgICAgICAgbm9kZSBbY2lyY2xlLCBkcmF3LCBmaWxs PXllbGxvdyE3MF0gezR9IH0KICAgICAgICAgICAgfTsKICBcZW5ke3Rpa3pwaWN0dXJlfQojK2Vu ZF9zcmMKCiMrUkVTVUxUUzogdGlrenRlc3QKW1tmaWxlOnRlc3QucG5nXV0KCgojK2JlZ2luX3Ny YyBwbGFudHVtbCA6ZXhwb3J0cyBib3RoIDpmaWxlIGRpdGFhLnBuZwpAc3RhcnRkaXRhYQogICAg ICAgICAgICAgICArLS0tKy0tLSsgICAgICstLS0rLS0tKyAgICAgICAgICstLS0rLS0tKyAgICAg Ky0tLSsKICAgICAgICAgIC0tLS0+fCAqIHwgKi0rLS0tLT58ICogfCAqIHwgICAgLS0tLT58ICog fCAqLS0tLS0tPnwgNCB8CiAgICAgICAgICAgICAgICstfC0rLS0tKyAgICAgKy18LSstfC0rICAg ICAgICAgKy18LSstLS0rICAgICArLS0tKwogICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg fCAgIHwgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgIFYgICAgICAgICAgICAgViAgIFYg ICAgICAgICAgICAgVgogICAgICAgICAgICAgKy0tLSstLS0rICAgICAgKy0tLSsgKy0tLSsgICAg ICArLS0tKy0tLSsgICAgICstLS0rLS0tKwogICAgICAgICAgICAgfCAqIHwgKiB8ICAgICAgfCAz IHwgfCA0IHwgICAgICB8ICogfCAqLSstLS0tPnwgKiB8ICogfAogICAgICAgICAgICAgKy18LSst fC0rICAgICAgKy0tLSsgKy0tLSsgICAgICArLXwtKy0tLSsgICAgICstfC0rLXwtKwogICAgICAg ICAgICAgICB8ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAg IHwKICAgICAgICAgICAgICAgViAgIFYgICAgICAgICAgICAgICAgICAgICAgICAgICBWICAgICAg ICAgICAgIFYgICBWCiAgICAgICAgICAgICstLS0rICstLS0rICAgICAgICAgICAgICAgICAgICAg ICstLS0rICAgICAgICArLS0tKyArLS0tKwogICAgICAgICAgICB8IDEgfCB8IDIgfCAgICAgICAg ICAgICAgICAgICAgICB8IDEgfCAgICAgICAgfCAyIHwgfCAzIHwKICAgICAgICAgICAgKy0tLSsg Ky0tLSsgICAgICAgICAgICAgICAgICAgICAgKy0tLSsgICAgICAgICstLS0rICstLS0rCgpAZW5k ZGl0YWEKIytlbmRfc3JjIAoKIytSRVNVTFRTOgpbW2ZpbGU6ZGl0YWEucG5nXV0KCioqKiBET05F IEV4ZXJjaXNlIDIuMTcgbGFzdC1wYWlyCiAgICBDTE9TRUQ6IFsyMDE5LTA5LTEwIFR1ZSAxMDo0 OF0KMDoyMDo1MSAKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZh bHVlIDpub3dlYi1yZWYgbGFzdC1wYWlyCiAgKGRlZmluZSAobGFzdC1wYWlyIGxzdCkKICAgIChs aXN0LXRhaWwgbHN0ICgtIChsZW5ndGggbHN0KSAxKSkpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMg c2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8bGFzdC1wYWlyPj4KKGxldCAo KHRtcCAobGFzdC1wYWlyICcoMSAxKSkpKQooc2hvdyAjdCAiICIgKGNhciB0bXApICIgIiAoY2Ry IHRtcCkpKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAgMSAoKQoKKioqIERPTkUgRXhlcmNpc2Ug Mi4xOCByZXZlcnNlCiAgICBDTE9TRUQ6IFsyMDE5LTA5LTEwIFR1ZSAxMDo1N10KMDowMzo1NiAK IytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJl ZiByZXZlcnNlLWxpc3QKICAoZGVmaW5lIChyZXZlcnNlIGxzdCkKICAgIChkZWZpbmUgKGxzdC1p dGVyIHggeSkKICAgICAgIChpZiAobnVsbD8geSkKCSAgIHgKCSAgIChsc3QtaXRlciAoY29ucyAo Y2FyIHkpIHgpIChjZHIgeSkpKSkKICAgIChsc3QtaXRlciAnKCkgbHN0KSkKIytlbmRfc3JjCgoj K2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKPDxyZXZlcnNl LWxpc3Q+Pgooc2hvdyAjdCAiICIgKHJldmVyc2UgJygxIDIgMykpKQojK2VuZF9zcmMKCiMrUkVT VUxUUzoKOiAgKDMgMiAxKQoKKioqIERPTkUgRXhlcmNpc2UgMi4xOSBjb2luLXZhbHVlcyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnVuc3VyZToKICAgIENMT1NFRDogWzIwMTkt MDktMTAgVHVlIDExOjI3XQoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3Vs dHMgdmFsdWUgOm5vd2ViLXJlZiBjb2luLXZhbHVlcwogIChkZWZpbmUgdXMtY29pbnMgKGxpc3Qg NTAgMjUgMTAgNSAxKSkKICAoZGVmaW5lIHVrLWNvaW5zIChsaXN0IDEwMCA1MCAyMCAxMCA1IDIg MSAwLjUpKQogIChkZWZpbmUgdWstY29pbnMtZGFtYWdlZCAobGlzdCAwLjUwIDEwMCA1MCAyMCAx MCA1IDIgMSkpCgogIChkZWZpbmUgKGNjIGFtb3VudCBjb2luLXZhbHVlcykKICAgIChjb25kICgo PSBhbW91bnQgMCkgMSkKCSAgKChvciAoPCBhbW91bnQgMCkgKG5vLW1vcmU/IGNvaW4tdmFsdWVz KSkgMCkKCSAgKGVsc2UKCSAgICgrIChjYyBhbW91bnQKCQkgIChleGNlcHQtZmlyc3QtZGVub21p bmF0aW9uCgkJICAgY29pbi12YWx1ZXMpKQoJICAgICAgKGNjICgtIGFtb3VudAoJCSAgICAgKGZp cnN0LWRlbm9taW5hdGlvbgoJCSAgICAgIGNvaW4tdmFsdWVzKSkKCQkgIGNvaW4tdmFsdWVzKSkp KSkKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2 YWx1ZSA6bm93ZWItcmVmIGZpcnN0LWRlbm9taW5hdGlvbgogIChkZWZpbmUgKGZpcnN0LWRlbm9t aW5hdGlvbiBjb2luLXZhbHVlcykKICAgIChjYXIgY29pbi12YWx1ZXMpKQogIChkZWZpbmUgKGV4 Y2VwdC1maXJzdC1kZW5vbWluYXRpb24gY29pbi12YWx1ZXMpCiAgICAoY2RyIGNvaW4tdmFsdWVz KSkKICAoZGVmaW5lIChuby1tb3JlPyBjb2luLXZhbHVlcykKICAgIChudWxsPyBjb2luLXZhbHVl cykpCiMrZW5kX3NyYwoKKldhcm5pbmc6KiB0aGUgbmV4dCBjb2RlIGlzIGEgYml0IHNsb3cgKH4x IG1pbnV0ZSkuCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRw dXQKPDxmaXJzdC1kZW5vbWluYXRpb24+Pgo8PGNvaW4tdmFsdWVzPj4KKHNob3cgI3QgIiAiIChj YyAxMzcgdXMtY29pbnMpICJcbiIpCihzaG93ICN0ICIgIiAoY2MgMTM3IHVrLWNvaW5zKSAiXG4i KQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAgNzA0CjogIDQ0MzE2NgoKIytiZWdpbl9zcmMgc2No ZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8Zmlyc3QtZGVub21pbmF0aW9uPj4K PDxjb2luLXZhbHVlcz4+CihzaG93ICN0ICIgIiAoY2MgMTM3IHVrLWNvaW5zLWRhbWFnZWQpICJc biIpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICA0NDMxNjYKCkkgZG9uJ3Qgc2VlIHdoeSB0aGUg cmVzdWx0IHdvdWxkIGRlcGVuZCBvbiB0aGUgb3JkZXIgb2YgdGhlIGNvaW5zLiBXZQpkb24ndCBz ZWVtIHRvIGJlIHVzaW5nIHRoZSBvcmRlciBhbnl3aGVyZS4KCioqKiBET05FIEV4ZXJjaXNlIDIu MjAgZG90dGVkLXRhaWwgbm90YXRpb24KICAgIENMT1NFRDogWzIwMTktMDktMTAgVHVlIDE4OjU1 XQoxOjQ1OjEwIAojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1 ZSA6bm93ZWItcmVmIHNhbWUtcGFyaXR5CiAgKGRlZmluZSAoc2FtZS1wYXJpdHkgLiBsc3QpCiAg ICAoZGVmaW5lIChpdGVyLXBhcml0eSBsc3QgYml0IGFjY3VtdWxhdG9yKQogICAgICAoY29uZCAo KG51bGw/IGxzdCkKCSAgICAgYWNjdW11bGF0b3IpCgkgICAgKCg9IChyZW1haW5kZXIgKGNhciBs c3QpIDIpIGJpdCkKCSAgICAgKGl0ZXItcGFyaXR5IChjZHIgbHN0KSBiaXQgKGNvbnMgKGNhciBs c3QpIGFjY3VtdWxhdG9yKSkpCgkgICAgKGVsc2UKCSAgICAgKGl0ZXItcGFyaXR5IChjZHIgbHN0 KSBiaXQgYWNjdW11bGF0b3IpKSkpCiAgIChyZXZlcnNlIChpdGVyLXBhcml0eSBsc3QgKHJlbWFp bmRlciAoY2FyIGxzdCkgMikgJygpKSkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICM8dW5kZWY+ CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKPDxzYW1l LXBhcml0eT4+CihzaG93ICN0ICIgIiAoc2FtZS1wYXJpdHkgMiAzIDQpICJcbiIpCihzaG93ICN0 ICIgIiAoc2FtZS1wYXJpdHkgMSAyIDMgNCkgIlxuIikKIytlbmRfc3JjCgojK1JFU1VMVFM6Cjog ICgyIDQpCjogICgxIDMpCgoqKiogRE9ORSBFeGVyY2lzZSAyLjIxIG1hcC1zcXVhcmUtbGlzdAog ICAgQ0xPU0VEOiBbMjAxOS0wOS0xMCBUdWUgMTk6MTRdCjA6MTM6MjMgCiMrYmVnaW5fc3JjIHNj aGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAogIChkZWZpbmUgbmlsICNmKQogIChk ZWZpbmUgKHNxdWFyZS1saXN0IGl0ZW1zKQoKICAoaWYgKG51bGw/IGl0ZW1zKQoJJygpCgkoY29u cyAoKiAoY2FyIGl0ZW1zKSAoY2FyIGl0ZW1zKSkgKHNxdWFyZS1saXN0IChjZHIgaXRlbXMpKSkp KQogIChzaG93ICN0ICIgIiAoc3F1YXJlLWxpc3QgJygxIDIgMyA0IDUpKSkKIytlbmRfc3JjCgoj K1JFU1VMVFM6CjogICgxIDQgOSAxNiAyNSkKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBi b3RoIDpyZXN1bHRzIG91dHB1dAogIChkZWZpbmUgKHNxdWFyZS1saXN0IGl0ZW1zKQogICAgKG1h cCAobGFtYmRhICh4KSAoKiB4IHgpKSBpdGVtcykpCgogIChzaG93ICN0ICIgIiAoc3F1YXJlLWxp c3QgJygxIDIgMyA0IDUpKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogICgxIDQgOSAxNiAyNSkK Ck9uZSBvZiB0aGUgcGVjdWxpYXIgdHJpY2tzIGluIHRoaXMgZXF1YXRpb24gaXMgdGhhdCB1bmxp a2UgaW4gb2xkZXIKbGlzcHMsICojZiogaXMgbm90IGVudGlyZWx5IHRoZSBzYW1lIGFzIH4nKCl+ LCBhbHRob3VnaCB0aGV5IGJvdGgKZXZhbHVhdGUgdG8gZmFsc2UuCgoqKiogRE9ORSBFeGVyY2lz ZSAyLjIyIHdyb25nIGxpc3Qgb3JkZXIKICAgIENMT1NFRDogWzIwMTktMDktMTAgVHVlIDE5OjI0 XQpSZWZlcnJpbmcgdG8gRXhlcmNpc2UgMi4yMCBpcyBoaWdobHkgcmVjb21tZW5kZWQuIAoKVGhl IHByb2JsZW0gd2l0aCB0aGUgZmlyc3Qgc29sdXRpb24gaXMgdGhhdCwgaW5kZWVkLCBoZSdzIH5j b25zfidpbmcKdGhlIHBhaXIgaW4gc3VjaCBhIHdheSB0aGF0IGl0IHdvdWxkIHByb2R1Y2UgdGhl IHJldmVyc2VkIGxpc3QuCgpUaGUgcHJvYmxlbSB3aXRoIHRoZSBzZWNvbmQgc29sdXRpb24gaXMg dGhhdCBpdCBJUyBjcmVhdGluZyBhIGxpc3QtaXNoCmNvbnN0cnVjdGlvbiB0aGF0IGlzIGNvbnRh aW5zIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlIHJpZ2h0IG9yZGVyLCBidXQKc3RvcmVzIHRoZW0g aW4gfmNkcn4ncywgbm90IGluIH5jYXJ+J3MuIAoKSW4gbGlzcCB3aXRob3V0IG11dGF0aW9ucyAo d2l0aG91dCB+c2V0LWNkciF+IGFuZCB+c2V0LWNhciF+KSwgaXQgaXMKb25seSBwb3NzaWJsZSB0 byBwcmVwZW5kIGVsZW1lbnRzIHRvIGxpc3RzLCBub3QgcmVhbGx5IGFwcGVuZC4KCioqKiBET05F IEV4ZXJjaXNlIDIuMjMgZm9yLWVhY2gKICAgIENMT1NFRDogWzIwMTktMDktMTAgVHVlIDE5OjMz XQowOjA0OjU2IAojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRw dXQKICAoZGVmaW5lIChmb3ItZWFjaCBmdW4gaXRlbXMpCiAgICh1bmxlc3MgKG51bGw/IGl0ZW1z KQogICAgKGZ1biAoY2FyIGl0ZW1zKSkKICAgIChmb3ItZWFjaCBmdW4gKGNkciBpdGVtcykpKSkK CiAgKGZvci1lYWNoIChsYW1iZGEgKHgpCgkgICAgICAobmV3bGluZSkKCSAgICAgIChkaXNwbGF5 IHgpKQoJICAgIChsaXN0IDU3IDMyMSA4OCkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IAo6IDU3 CjogMzIxCjogODgKCioqKiBET05FIEV4ZXJjaXNlIDIuMjQgbGlzdC1wbG90LXJlc3VsdCAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6Z3JhcGh2aXo6CiAgICBDTE9TRUQ6IFsyMDE5LTA5LTEw IFR1ZSAyMjoxM10KMDo0ODozOSAKVGhlIHJlc3VsdCBvZiB0aGUgaW50ZXJwcmV0ZXI6CiMrYmVn aW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAooc2hvdyAjdCAiICIg KGxpc3QgMSAobGlzdCAyIChsaXN0IDMgNCkpKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogICgx ICgyICgzIDQpKSkKClRoZSBib3gtYW5kLXBvaW50ZXIgc3RydWN0dXJlOgoKIytiZWdpbl9zcmMg cGxhbnR1bWwgOmV4cG9ydHMgYm90aCA6ZmlsZSBleGVyY2lzZS0yLTI0LnBuZwogIEBzdGFydGRv dAogIGRpZ3JhcGggc2ljcDJfMjQgewogICAgbm9kZSBbc2hhcGU9cGxhaW50ZXh0LCBzdHlsZT0i cm91bmRlZCJdOwogICAgc3RydWN0MSBbbGFiZWw9PDx0YWJsZSBCT1JERVI9IjAiIENFTExCT1JE RVI9IjEiIENFTExTUEFDSU5HPSIwIj4KICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAg ICA8dGQgd2lkdGg9IjI5IiBoZWlnaHQ9IjM1IiBzaWRlcz0ibHRyYiIgcG9ydD0iZjAiPjE8L3Rk PgogICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjkiIGhlaWdodD0iMzUiIHNpZGVzPSJscnRi IiBwb3J0PSJmMSI+PC90ZD4KICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICA8L3RhYmxl Pj4sIHN0eWxlPSJyb3VuZGVkLGZpbGxlZCIsIGZpbGxjb2xvcj0iZ3JheSJdOwogICAgcmFua2Rp cj1MUjsKICAgIGVkZ2UgW2Fycm93aGVhZD1ub3JtYWwsYXJyb3d0YWlsPWRvdCx0YWlsY2xpcD1m YWxzZSwgZGlyPWJvdGhdOyAgICAKICAgIHN0cnVjdDE6ZjE6YyAtPiBzdHJ1Y3QyIFt0YWlsY2xp cD1mYWxzZV07CiAgICAKICAgIG5vZGUgW3NoYXBlPXBsYWludGV4dCwgc3R5bGU9InJvdW5kZWQi XTsKICAgIHN0cnVjdDIgW2xhYmVsPTw8dGFibGUgQk9SREVSPSIwIiBDRUxMQk9SREVSPSIxIiBD RUxMU1BBQ0lORz0iMCI+CiAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgPHRkIHdp ZHRoPSIyOSIgaGVpZ2h0PSIzNSIgc2lkZXM9Imx0cmIiIHBvcnQ9ImYwIj48L3RkPgogICAgICAg ICAgICAgICAgIDx0ZCB3aWR0aD0iMjkiIGhlaWdodD0iMzUiIHNpZGVzPSJscnRiIiBwb3J0PSJm MSI+JygpPC90ZD4KICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICA8L3RhYmxlPj4sIHN0 eWxlPSJyb3VuZGVkLGZpbGxlZCIsIGZpbGxjb2xvcj0iZ3JheSJdOwogICAgCiAgICBzdHJ1Y3Qy OmYwOmMgLT4gc3RydWN0MyBbdGFpbGNsaXA9ZmFsc2VdOwogICAgCiAgICBub2RlIFtzaGFwZT1w bGFpbnRleHQsIHN0eWxlPSJyb3VuZGVkIl07CiAgICBzdHJ1Y3QzIFtsYWJlbD08PHRhYmxlIEJP UkRFUj0iMCIgQ0VMTEJPUkRFUj0iMSIgQ0VMTFNQQUNJTkc9IjAiPgogICAgICAgICAgICAgPHRy PgogICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjkiIGhlaWdodD0iMzUiIHNpZGVzPSJsdHJi IiBwb3J0PSJmMCI+PC90ZD4KICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjI5IiBoZWlnaHQ9 IjM1IiBzaWRlcz0ibHJ0YiIgcG9ydD0iZjEiPjwvdGQ+CiAgICAgICAgICAgICA8L3RyPgogICAg ICAgICAgICAgPC90YWJsZT4+LCBzdHlsZT0icm91bmRlZCxmaWxsZWQiLCBmaWxsY29sb3I9Imdy YXkiXTsKCiAgICBub2RlIFtzaGFwZT1wbGFpbnRleHQsIHN0eWxlPSJyb3VuZGVkIl07CiAgICBz dHJ1Y3Q0IFtsYWJlbD08PHRhYmxlIEJPUkRFUj0iMCIgQ0VMTEJPUkRFUj0iMSIgQ0VMTFNQQUNJ Tkc9IjAiPgogICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjki IGhlaWdodD0iMzUiIHNpZGVzPSJsdHJiIiBwb3J0PSJmMCI+PC90ZD4KICAgICAgICAgICAgICAg ICA8dGQgd2lkdGg9IjI5IiBoZWlnaHQ9IjM1IiBzaWRlcz0ibHJ0YiIgcG9ydD0iZjEiPicoKTwv dGQ+CiAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgPC90YWJsZT4+LCBzdHlsZT0icm91 bmRlZCxmaWxsZWQiLCBmaWxsY29sb3I9ImdyYXkiXTsKICAgIHN0cnVjdDNfMyBbbGFiZWw9IjIi LHNoYXBlPXJlY29yZF07CiAgICBzdHJ1Y3QzOmYwOmMgLT4gc3RydWN0M18zIFt0YWlsY2xpcD1m YWxzZV07CgogICAgc3RydWN0MzpmMTpjIC0+IHN0cnVjdDQgW3RhaWxjbGlwPWZhbHNlXTsKCiAg ICBzdHJ1Y3Q1IFtsYWJlbD08PHRhYmxlIEJPUkRFUj0iMCIgQ0VMTEJPUkRFUj0iMSIgQ0VMTFNQ QUNJTkc9IjAiPgogICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0i MjkiIGhlaWdodD0iMzUiIHNpZGVzPSJsdHJiIiBwb3J0PSJmMCI+MzwvdGQ+CiAgICAgICAgICAg ICAgICAgPHRkIHdpZHRoPSIyOSIgaGVpZ2h0PSIzNSIgc2lkZXM9ImxydGIiIHBvcnQ9ImYxIj48 L3RkPgogICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgIDwvdGFibGU+Piwgc3R5bGU9InJv dW5kZWQsZmlsbGVkIiwgZmlsbGNvbG9yPSJncmF5Il07CiAgICBzdHJ1Y3Q0OmYwOmMgLT4gc3Ry dWN0NTsgICAgCgogICAgc3RydWN0NiBbbGFiZWw9PDx0YWJsZSBCT1JERVI9IjAiIENFTExCT1JE RVI9IjEiIENFTExTUEFDSU5HPSIwIj4KICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAg ICA8dGQgd2lkdGg9IjI5IiBoZWlnaHQ9IjM1IiBzaWRlcz0ibHRyYiIgcG9ydD0iZjAiPjQ8L3Rk PgogICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjkiIGhlaWdodD0iMzUiIHNpZGVzPSJscnRi IiBwb3J0PSJmMSI+JygpPC90ZD4KICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICA8L3Rh YmxlPj4sIHN0eWxlPSJyb3VuZGVkLGZpbGxlZCIsIGZpbGxjb2xvcj0iZ3JheSJdOwogICAgc3Ry dWN0NTpmMTpjIC0+IHN0cnVjdDY7CgogIH0KCiAgQGVuZGRvdAojK2VuZF9zcmMgCgojK1JFU1VM VFM6CltbZmlsZTpleGVyY2lzZS0yLTI0LnBuZ11dCgpUcmVlIGludGVycHJldGF0aW9uOgoKICMr YmVnaW5fc3JjIHBsYW50dW1sIDpleHBvcnRzIGJvdGggOmZpbGUgZmlndXJlLTEtMS1kb3QucG5n CiBAc3RhcnRkb3QKIGdyYXBoIGcgewoJIG5vZGUgW3NoYXBlPXBsYWludGV4dF07CgkgQTEgW2xh YmVsPSIoMSAoMiAoMyA0KSkpIl07CgoJIEIxIFtsYWJlbD0iMSJdOwogICAgICAgICBCMiBbbGFi ZWw9IigyICgzIDQpKSJdOwoKICAgICAgICAgQzEgW2xhYmVsPSIyIl07CiAgICAgICAgIEMyIFts YWJlbD0iKDMgNCkiXTsKCiAgICAgICAgIEQxIFtsYWJlbD0iMyJdOwogICAgICAgICBEMiBbbGFi ZWw9IjQiXTsKCgogLy8gZWRnZXMKCSBBMSAtLSBCMTsKCSBBMSAtLSBCMjsKCQoJIEIyIC0tIEMx OwoJIEIyIC0tIEMyOwoKCSBDMiAtLSBEMTsKCSBDMiAtLSBEMjsKCgkgeyByYW5rPXNhbWU7IEEx IH0KCSB7IHJhbms9c2FtZTsgQjEgQjIgfSAKCSB7IHJhbms9c2FtZTsgQzEgQzIgfQoJIHsgcmFu az1zYW1lOyBEMSBEMiB9CiB9IAogQGVuZGRvdAogIytlbmRfc3JjIAoKICMrUkVTVUxUUzoKIFtb ZmlsZTpmaWd1cmUtMS0xLWRvdC5wbmddXQoKKioqIERPTkUgRXhlcmNpc2UgMi4yNSBjYWRkcgog ICAgQ0xPU0VEOiBbMjAxOS0wOS0xMCBUdWUgMjM6MDddCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhw b3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCihjYXIgKGNkciAoY2FyIChjZHIgKGNkciAnKDEgMyAo NSA3KSA5KSkpKSkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IDcKCiMrYmVnaW5fc3JjIHNjaGVt ZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCihjYWFyICcoKDcpKSkKIytlbmRfc3JjCgoj K1JFU1VMVFM6CjogNwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMg b3V0cHV0CihzaG93ICN0ICIgIiAoY2FyIChjZHIgKGNhciAoY2RyIChjYXIgKGNkciAoY2FyIChj ZHIgKGNhciAoY2RyIChjYXIgKGNkciAnKDEgKDIgKDMgKDQgKDUgKDYgNykpKSkpKSkpKSkpKSkp KSkpKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogIDcKClRoZSB0YXNrIHdhcyBmdW5ueS4KCioq KiBET05FIEV4ZXJjaXNlIDIuMjYgYXBwZW5kIGNvbnMgbGlzdAogICAgQ0xPU0VEOiBbMjAxOS0w OS0xMCBUdWUgMjM6MjNdCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0 cyBvdXRwdXQKKGRlZmluZSB4IChsaXN0IDEgMiAzKSkKKGRlZmluZSB5IChsaXN0IDQgNSA2KSkK KHNob3cgI3QgIiAiIChhcHBlbmQgeCB5KSAiXG4iKQooc2hvdyAjdCAiICIgKGNvbnMgeCB5KSAi XG4iKQooc2hvdyAjdCAiICIgKGxpc3QgeCB5KSAiXG4iKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoK OiAgKDEgMiAzIDQgNSA2KQo6ICAoKDEgMiAzKSA0IDUgNikKOiAgKCgxIDIgMykgKDQgNSA2KSkK CioqKiBET05FIEV4ZXJjaXNlIDIuMjcgZGVlcC1yZXZlcnNlCiAgICBDTE9TRUQ6IFsyMDE5LTA5 LTExIFdlZCAwOTo0N10KMDoxNDo0NiAKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGgg OnJlc3VsdHMgb3V0cHV0CiAgKGRlZmluZSAoZGVlcC1yZXZlcnNlIGxzdCkKICAgIChkZWZpbmUg KGl0ZXItcmV2ZXJzZSBsc3QxIGFjY3VtdWxhdG9yKQogICAgICAoaWYgKG51bGw/IGxzdDEpCgkg IGFjY3VtdWxhdG9yCgkgIChpZiAocGFpcj8gKGNhciBsc3QxKSkKCSAgICAgIChpdGVyLXJldmVy c2UgKGNkciBsc3QxKSAoY29ucyAoZGVlcC1yZXZlcnNlIChjYXIgbHN0MSkpIGFjY3VtdWxhdG9y KSkKCSAgICAgIChpdGVyLXJldmVyc2UgKGNkciBsc3QxKSAoY29ucyAoY2FyIGxzdDEpIGFjY3Vt dWxhdG9yKSkpKSkKICAgIChpdGVyLXJldmVyc2UgbHN0ICcoKSkpCgogIChkZWZpbmUgeCAobGlz dCAobGlzdCAxIDIpIChsaXN0IDMgNCkpKQogIChzaG93ICN0ICIgIiAocmV2ZXJzZSB4KSAiXG4i KQogIChzaG93ICN0ICIgIiAoZGVlcC1yZXZlcnNlIHgpKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoK OiAgKCgzIDQpICgxIDIpKQo6ICAoKDQgMykgKDIgMSkpCgoqKiogRE9ORSBFeGVyY2lzZSAyLjI4 IGZyaW5nZQogICAgQ0xPU0VEOiBbMjAxOS0wOS0xMSBXZWQgMTA6MjRdCjA6Mzc6MDAKIytiZWdp bl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CiAgICAgIChkZWZpbmUg KGZyaW5nZSB0cmVlKQoJKGRlZmluZSAoZnJpbmdlLWl0ZXIgdHJlZSBhY2N1bXVsYXRvcikKCSAg KGNvbmQgICgobnVsbD8gdHJlZSkgJygpKQoJCSAoKG5vdCAocGFpcj8gdHJlZSkpIChsaXN0IHRy ZWUpKQoJCSAoZWxzZQoJCSAgIChhcHBlbmQgYWNjdW11bGF0b3IgCgkJCSAgIChmcmluZ2UtaXRl ciAoY2FyIHRyZWUpICcoKSkKCQkJICAgKGZyaW5nZS1pdGVyIChjZHIgdHJlZSkgJygpKSkpKSkK CShmcmluZ2UtaXRlciB0cmVlICcoKSkpCiAgICAgIChkZWZpbmUgeCAobGlzdCAobGlzdCAxIDIp IChsaXN0IDMgNCkpKQogICAgICAoc2hvdyAjdCAiICIgKGZyaW5nZSB4KSAiXG4iKQogICAgICAo c2hvdyAjdCAiICIgKGZyaW5nZSAobGlzdCB4IHgpKSAiXG4iKQoKIytlbmRfc3JjCgojK1JFU1VM VFM6CjogICgxIDIgMyA0KQo6ICAoMSAyIDMgNCAxIDIgMyA0KQoKKioqIERPTkUgRXhlcmNpc2Ug Mi4yOSBtb2JpbGUKICAgIENMT1NFRDogWzIwMTktMDktMTEgV2VkIDExOjQ3XQoxOjIzOjAKIyti ZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBt b2JpbGUKICAoZGVmaW5lIChtYWtlLW1vYmlsZSBsZWZ0IHJpZ2h0KQogICAgKGxpc3QgbGVmdCBy aWdodCkpCgogIChkZWZpbmUgKG1ha2UtYnJhbmNoIGxlbmd0aCBzdHJ1Y3R1cmUpCiAgICAobGlz dCBsZW5ndGggc3RydWN0dXJlKSkKCiAgKGRlZmluZSAobGVmdC1icmFuY2ggbW9iaWxlKQogICAg KGNhciBtb2JpbGUpKQoKICAoZGVmaW5lIChyaWdodC1icmFuY2ggbW9iaWxlKQogICAgKGNhZHIg bW9iaWxlKSkKCiAgKGRlZmluZSAoYnJhbmNoLWxlbmd0aCBicmFuY2gpCiAgICAoY2FyIGJyYW5j aCkpCgogIChkZWZpbmUgKGJyYW5jaC1zdHJ1Y3R1cmUgYnJhbmNoKQogICAgKGNhZHIgYnJhbmNo KSkKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2 YWx1ZSA6bm93ZWItcmVmIG1vYmlsZS10b3RhbC13ZWlnaHQKICAoZGVmaW5lICh0b3RhbC13ZWln aHQgbW9iaWxlKQogICAgKGlmIChwYWlyPyBtb2JpbGUpCiAgICAoKyAoaWYgKHBhaXI/IChicmFu Y2gtc3RydWN0dXJlIChsZWZ0LWJyYW5jaCBtb2JpbGUpKSkKCSAgICh0b3RhbC13ZWlnaHQgKGJy YW5jaC1zdHJ1Y3R1cmUgKGxlZnQtYnJhbmNoIG1vYmlsZSkpKQoJICAgKGJyYW5jaC1zdHJ1Y3R1 cmUgKGxlZnQtYnJhbmNoIG1vYmlsZSkpKQogICAgICAgKGlmIChwYWlyPyAoYnJhbmNoLXN0cnVj dHVyZSAocmlnaHQtYnJhbmNoIG1vYmlsZSkpKQoJICAgKHRvdGFsLXdlaWdodCAoYnJhbmNoLXN0 cnVjdHVyZSAocmlnaHQtYnJhbmNoIG1vYmlsZSkpKQoJICAgKGJyYW5jaC1zdHJ1Y3R1cmUgKHJp Z2h0LWJyYW5jaCBtb2JpbGUpKSkpCiAgICBtb2JpbGUpKQojK2VuZF9zcmMKCiMrYmVnaW5fc3Jj IHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCiAgPDxtb2JpbGU+PgogIDw8bW9i aWxlLXRvdGFsLXdlaWdodD4+CiAgKHRvdGFsLXdlaWdodAogICAobWFrZS1tb2JpbGUKICAgICht YWtlLWJyYW5jaAogICAgIDUKICAgICAobWFrZS1tb2JpbGUKICAgICAgKG1ha2UtYnJhbmNoIDEg MSkKICAgICAgKG1ha2UtYnJhbmNoIDIgMikpKQogICAgKG1ha2UtYnJhbmNoIDcgMikpKQojK2Vu ZF9zcmMKCiMrUkVTVUxUUzoKOiA1CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6 cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIG1vYmlsZS1iYWxhbmNlZAogICAgKGRlZmluZSAoYmFs YW5jZWQ/IG1vYmlsZSkKICAgICAgKGFuZAogICAgICAgKD0KCSgqCgkgKGJyYW5jaC1sZW5ndGgg KGxlZnQtYnJhbmNoIG1vYmlsZSkpCgkgKHRvdGFsLXdlaWdodCAoYnJhbmNoLXN0cnVjdHVyZSAo bGVmdC1icmFuY2ggbW9iaWxlKSkpKQoJKCoKCSAoYnJhbmNoLWxlbmd0aCAocmlnaHQtYnJhbmNo IG1vYmlsZSkpCgkgKHRvdGFsLXdlaWdodCAoYnJhbmNoLXN0cnVjdHVyZSAocmlnaHQtYnJhbmNo IG1vYmlsZSkpKSkKCSkKICAgICAgIChpZiAocGFpcj8gKGJyYW5jaC1zdHJ1Y3R1cmUgKGxlZnQt YnJhbmNoIG1vYmlsZSkpKQoJICAgKGJhbGFuY2VkPyAoYnJhbmNoLXN0cnVjdHVyZSAobGVmdC1i cmFuY2ggbW9iaWxlKSkpCgkgICAjdCkKICAgICAgIChpZiAocGFpcj8gKGJyYW5jaC1zdHJ1Y3R1 cmUgKHJpZ2h0LWJyYW5jaCBtb2JpbGUpKSkKCSAgIChiYWxhbmNlZD8gKGJyYW5jaC1zdHJ1Y3R1 cmUgKHJpZ2h0LWJyYW5jaCBtb2JpbGUpKSkKCSAgICN0KSkpCiAgICAgCiMrZW5kX3NyYwoKIytS RVNVTFRTOgo6ICM8dW5kZWY+CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVz dWx0cyBvdXRwdXQKPDxtb2JpbGUtYmFsYW5jZWQ+Pgo8PG1vYmlsZS10b3RhbC13ZWlnaHQ+Pgo8 PG1vYmlsZT4+CiAgKHNob3cgI3QgIiAiIChiYWxhbmNlZD8KICAgKG1ha2UtbW9iaWxlCiAgICAo bWFrZS1icmFuY2gKICAgICA1CiAgICAgKG1ha2UtbW9iaWxlCiAgICAgIChtYWtlLWJyYW5jaCAx IDEpCiAgICAgIChtYWtlLWJyYW5jaCAyIDIpKSkKICAgIChtYWtlLWJyYW5jaCA3IDIpKSkgIlxu IikKICAoc2hvdyAjdCAiICIgKGJhbGFuY2VkPyAobWFrZS1tb2JpbGUgKG1ha2UtYnJhbmNoIDUg NSkgKG1ha2UtYnJhbmNoIDUgNSkpKSAiXG4iKQoKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogICNm CjogICN0CgpJZiB3ZSByZXBsYWNlIGxpc3RzIHdpdGggfmNvbnN+LCB0aGUgb25seSB0aGluZyB0 aGF0IG5lZWRzIHRvIGJlCmNoYW5nZWQgaXMgdGhhdCB+Y2Fkcn4gc2hvdWxkIGJlIHJlcGxhY2Vk IHdpdGggfmNhcn4uCgoqKiogRE9ORSBFeGVyY2lzZSAyLjMwIHNxdWFyZS10cmVlCiAgICBDTE9T RUQ6IFsyMDE5LTA5LTExIFdlZCAxNDoxMV0KIDEuIEEgbm8taGlnaC1sZXZlbCB2ZXJzaW9uCiMr YmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpub3dlYi1yZWYg IHNxdWFyZS10cmVlCiAgKGRlZmluZSAoc3F1YXJlLXRyZWUgdHJlZSkKICAgIChjb25kICgobnVs bD8gdHJlZSkgJygpKQoJICAoKG5vdCAocGFpcj8gdHJlZSkpIChzcXVhcmUgdHJlZSkpCgkgIChl bHNlIChjb25zIChzcXVhcmUtdHJlZSAoY2FyIHRyZWUpKQoJCSAgICAgIChzcXVhcmUtdHJlZSAo Y2RyIHRyZWUpKSkpKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogIzx1bmRlZj4KCiMrYmVnaW5f c3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PHNxdWFyZS10cmVlPj4K ICAoc2hvdyAjdCAiICIgKHNxdWFyZS10cmVlCiAgIChsaXN0IDEKCSAobGlzdCAyIChsaXN0IDMg NCkgNSkKCSAobGlzdCA2IDcpKSkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICAoMSAoNCAoOSAx NikgMjUpICgzNiA0OSkpCiAyLiBIaWdoLWxldmVsIHZlcnNpb24KIytiZWdpbl9zcmMgc2NoZW1l IDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpub3dlYi1yZWYgc3F1YXJlLXN1YnRyZWUt bWFwCiAgICAoZGVmaW5lIChzcXVhcmUtdHJlZSB0cmVlKQogICAgICAobWFwIChsYW1iZGEgKHN1 Yi10cmVlKQoJICAgICAoaWYgKHBhaXI/IHN1Yi10cmVlKQoJCSAoc3F1YXJlLXRyZWUgc3ViLXRy ZWUpCgkJIChzcXVhcmUgc3ViLXRyZWUpKSkKCSAgIHRyZWUpKQoKIytlbmRfc3JjCgojK1JFU1VM VFM6CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKPDxz cXVhcmUtc3VidHJlZS1tYXA+PgogIChzaG93ICN0ICIgIiAoc3F1YXJlLXRyZWUKICAgKGxpc3Qg MQoJIChsaXN0IDIgKGxpc3QgMyA0KSA1KQoJIChsaXN0IDYgNykpKSkKIytlbmRfc3JjCgojK1JF U1VMVFM6CjogICgxICg0ICg5IDE2KSAyNSkgKDM2IDQ5KSkKCk5vdCBhIHZlcnkgaGFyZCBwcm9i bGVtLgoKKioqIERPTkUgRXhlcmNpc2UgMi4zMSB0cmVlLW1hcCBzcXVhcmUgdHJlZQogICAgQ0xP U0VEOiBbMjAxOS0wOS0xMSBXZWQgMTQ6MzhdCk5vdCBhIHZlcnkgaGFyZCBwcm9ibGVtLgojK2Jl Z2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKICAoZGVmaW5lIChz cXVhcmUtdHJlZSB0cmVlKSAodHJlZS1tYXAgc3F1YXJlIHRyZWUpKQoKICAoZGVmaW5lICh0cmVl LW1hcCBzcXVhcmUgdHJlZSkKICAgIChtYXAgKGxhbWJkYSAoc3ViLXRyZWUpCgkgICAoaWYgKHBh aXI/IHN1Yi10cmVlKQoJICAgICAgICh0cmVlLW1hcCBzcXVhcmUgc3ViLXRyZWUpCgkgICAgICAg KHNxdWFyZSBzdWItdHJlZSkpKQoJIHRyZWUpKQogIChzaG93ICN0ICIgIiAKCShzcXVhcmUtdHJl ZQoJIChsaXN0IDEKCSAgICAgICAobGlzdCAyIChsaXN0IDMgNCkgNSkKCSAgICAgICAobGlzdCA2 IDcpKSkpCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAgKDEgKDQgKDkgMTYpIDI1KSAoMzYgNDkp KQoKKioqIERPTkUgRXhlcmNpc2UgMi4zMiBzdWJzZXRzCiAgICBDTE9TRUQ6IFsyMDE5LTA5LTEx IFdlZCAxNDo1M10KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZh bHVlIDpub3dlYi1yZWYgc3Vic2V0cwogIChkZWZpbmUgKHN1YnNldHMgcykKICAgIChpZiAobnVs bD8gcykKCShsaXN0ICcoKSkKCShsZXQgKChyZXN0IChzdWJzZXRzIChjZHIgcykpKSkKCSAgKGFw cGVuZCByZXN0IChtYXAgKGxhbWJkYSAoc3VmZml4KSAoYXBwZW5kIChsaXN0IChjYXIgcykpIHN1 ZmZpeCkpIHJlc3QpKSkpKQogIChzdWJzZXRzICcoMSAyIDMpKQojK2VuZF9zcmMKCiMrUkVTVUxU UzoKfC0tLSstLS0rLS0tfAp8IDMgfCAgIHwgICB8CnwgMiB8ICAgfCAgIHwKfCAyIHwgMyB8ICAg fAp8IDEgfCAgIHwgICB8CnwgMSB8IDMgfCAgIHwKfCAxIHwgMiB8ICAgfAp8IDEgfCAyIHwgMyB8 CgpUaGUgZXhwbGFuYXRpb24gaXMgZWFzeS4gVGhlIHN1YnNldHMgY2FuIGJlIGNvbnN0cnVjdGVk IGJ5IHRha2luZyBhbnkKZWxlbWVudCwgc2F5LCB0aGUgZmlyc3QsIGFuZCBhcHBlbmRpbmcgaXQg dG8gZXZlcnkgc3Vic2V0IG9mIHRoZSByZXN0Cm9mIHRoZSBzZXQuIFRoYXQgaXMgaWYgd2UgYWxy ZWFkeSBoYXZlIGEgc2V0IG9mIHN1YnNldHMgb2Ygc29tZSBzZXQKKlMqLCBhbmQgd2UgYXJlIGFk ZGluZyBzb21lIGVsZW1lbnQgKmEqLCB0aGVuIGl0IG1heSBvciBtYXkgbm90IGJlIGluCmV2ZXJ5 IHN1YnNldCBvZiB0aGUgZW5sYXJnZWQgc2V0ICpTK2EqLiAKCioqKiBUT0RPIEZpZ3VyZSAyLjcg U2lnbmFsLWZsb3cgZGlhZ3JhbQoKKioqIERPTkUgRXhlcmNpc2UgMi4zMyBtYXAtYXBwZW5kLWxl bmd0aAogICAgQ0xPU0VEOiBbMjAxOS0wOS0xMSBXZWQgMjM6NTNdCgojK2JlZ2luX3NyYyBzY2hl bWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIGZpbHRlcgogIChkZWZp bmUgKGZpbHRlciBwcmVkaWNhdGUgc2VxdWVuY2UpCiAgICAoY29uZCAoKG51bGw/IHNlcXVlbmNl KSAnKCkpCgkgICgocHJlZGljYXRlIChjYXIgc2VxdWVuY2UpKQoJICAgKGNvbnMgKGNhciBzZXF1 ZW5jZSkKCQkgKGZpbHRlciBwcmVkaWNhdGUgKGNkciBzZXF1ZW5jZSkpKSkKCSAgKGVsc2UgKGZp bHRlciBwcmVkaWNhdGUgKGNkciBzZXF1ZW5jZSkpKSkpCiMrZW5kX3NyYwpuCiMrYmVnaW5fc3Jj IHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpub3dlYi1yZWYgYWNjdW11bGF0 ZQogIChkZWZpbmUgKGFjY3VtdWxhdGUgb3AgaW5pdGlhbCBzZXF1ZW5jZSkKICAgIChpZiAobnVs bD8gc2VxdWVuY2UpCglpbml0aWFsCgkgICAgKGFjY3VtdWxhdGUgb3AgKG9wIGluaXRpYWwgKGNh ciBzZXF1ZW5jZSkpIChjZHIgc2VxdWVuY2UpKSkpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2No ZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBlbnVtZXJhdGUtaW50 ZXJ2YWwKICAoZGVmaW5lIChlbnVtZXJhdGUtaW50ZXJ2YWwgbG93IGhpZ2gpCiAgICAoaWYgKD4g bG93IGhpZ2gpCgknKCkKCShjb25zIGxvdyAoZW51bWVyYXRlLWludGVydmFsICgrIGxvdyAxKSBo aWdoKSkpKQojK2VuZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1 bHRzIHZhbHVlIDpub3dlYi1yZWYgZW51bWVyYXRlLXRyZWUKICAoZGVmaW5lIChlbnVtZXJhdGUt dHJlZSB0cmVlKQogICAgKGNvbmQgKChudWxsPyB0cmVlKSAnKCkpCgkgICAoKG5vdCAocGFpcj8g dHJlZSkpIChsaXN0IHRyZWUpKQoJICAgKGVsc2UgKGFwcGVuZCAoZW51bWVyYXRlLXRyZWUgKGNh ciB0cmVlKSkKCQkJIChlbnVtZXJhdGUtdHJlZSAoY2RyIHRyZWUpKSkpKSkKIytlbmRfc3JjCgoj K2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVm IG1hcC1hcHBlbmQtbGVuZ3RoCiAgKGRlZmluZSAobWFwIHAgc2VxdWVuY2UpCiAgICAoYWNjdW11 bGF0ZSAobGFtYmRhICh4IHkpICh4IHkpKSAnKCkgc2VxdWVuY2UpKQogIChkZWZpbmUgKGFwcGVu ZCBzZXExIHNlcTIpCiAgICAoYWNjdW11bGF0ZSBjb25zIHNlcTIgc2VxMSkpCiAgKGRlZmluZSAo bGVuZ3RoIHNlcXVlbmNlKQogICAgKGFjY3VtdWxhdGUgKGxhbWJkYSAoeCB5KSAoKyAxIHkpKSkp CiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFs dWUKIChsZW5ndGggKG1ha2UtbGlzdCAxMDAgOTkpKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAx MDAKCioqKiBET05FIEV4ZXJjaXNlIDIuMzQgaG9ybmVycy1ydWxlCiAgICBDTE9TRUQ6IFsyMDE5 LTA5LTEyIFRodSAwMDowMV0KIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3Vs dHMgdmFsdWUKPDxhY2N1bXVsYXRlPj4KICAoZGVmaW5lIChob3JuZXItZXZhbCB4IGNvZWZmaWNp ZW50LXNlcXVlbmNlKQogICAgKGFjY3VtdWxhdGUgKGxhbWJkYSAodGhpcy1jb2VmZiBoaWdoZXIt dGVybXMpICgrIHRoaXMtY29lZmYgKCogeCBoaWdoZXItdGVybXMpKSkKCQkwCgkJY29lZmZpY2ll bnQtc2VxdWVuY2UpKQogIChob3JuZXItZXZhbCAyIChsaXN0IDEgMyAwIDUgMCAxKSkKCiMrZW5k X3NyYwoKIytSRVNVTFRTOgo6IDc5CgoqKiogRE9ORSBFeGVyY2lzZSAyLjM1IGNvdW50LWxlYXZl cy1hY2N1bXVsYXRlCiAgICBDTE9TRUQ6IFsyMDE5LTA5LTEyIFRodSAwMDoxN10KIytiZWdpbl9z cmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUKPDxhY2N1bXVsYXRlPj4KICAo ZGVmaW5lIChjb3VudC1sZWF2ZXMgdCkKICAgIChhY2N1bXVsYXRlICsgMCAobWFwIChsYW1iZGEg KHgpIChpZiAocGFpcj8geCkKCQkJCSAgICAoY291bnQtbGVhdmVzIHgpCgkJCQkgICAgMSkpIHQp KSkKICAoY291bnQtbGVhdmVzIChsaXN0IDEgMiAzKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6Cjog MwoKKioqIERPTkUgRXhlcmNpc2UgMi4zNiBhY2N1bXVsYXRlLW4KICAgIENMT1NFRDogWzIwMTkt MDktMTIgVGh1IDAwOjI2XQojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0 cyB2YWx1ZSA6bm93ZWItcmVmIGFjY3VtdWxhdGUtbgo8PGFjY3VtdWxhdGU+PgogIChkZWZpbmUg KGFjY3VtdWxhdGUtbiBvcCBpbml0IHNlcXMpCiAgICAoaWYgKG51bGw/IChjYXIgc2VxcykpCgkn KCkKCShjb25zIChhY2N1bXVsYXRlIG9wIGluaXQgKG1hcCBjYXIgc2VxcykpCiAgICAgICAgICAg ICAgKGFjY3VtdWxhdGUtbiBvcCBpbml0IChtYXAgY2RyIHNlcXMpKSkpKQojK2VuZF9zcmMKICAK IytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUKPDxhY2N1bXVs YXRlLW4+PgogIChhY2N1bXVsYXRlLW4gKyAwICcoKDEgMiAzKSAoNCA1IDYpICg3IDggOSkgKDEw IDExIDEyKSkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgp8IDIyIHwgMjYgfCAzMCB8CgoqKiogRE9O RSBFeGVyY2lzZSAyLjM3IG1hdHJpeC0qLXZlY3RvcgogICAgQ0xPU0VEOiBbMjAxOS0wOS0xMiBU aHUgMDA6NTBdCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1 ZSA6bm93ZWItcmVmIGRvdC1wcm9kdWN0CiAgKGRlZmluZSAoZG90LXByb2R1Y3QgdiB3KQogICAg KGFjY3VtdWxhdGUgKyAwIChtYXAgKiB2IHcpKSkKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hl bWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIG1hdHJpeC1vcGVyYXRp b25zCiAgKGRlZmluZSAobWF0cml4LSotdmVjdG9yIG0gdikKICAgIChtYXAgKGxhbWJkYSAoeCkg KGRvdC1wcm9kdWN0IHYgeCkpIG0pKQogIChkZWZpbmUgKHRyYW5zcG9zZSBtYXQpCiAgICAoYWNj dW11bGF0ZS1uIGNvbnMgJygpIG1hdCkpCiAgKGRlZmluZSAobWF0cml4LSotbWF0cml4IG0gbikK ICAgIChsZXQgKChjb2xzICh0cmFuc3Bvc2UgbikpKQogICAgICAobWFwIChsYW1iZGEgKHgpICht YXRyaXgtKi12ZWN0b3IgbSB4KSkgbikpKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAjPHVuZGVm PgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8YWNj dW11bGF0ZT4+Cjw8YWNjdW11bGF0ZS1uPj4KPDxkb3QtcHJvZHVjdD4+Cjw8bWF0cml4LW9wZXJh dGlvbnM+Pgooc2hvdyAjdCAiICIgKG1hdHJpeC0qLXZlY3RvciAnKCgxIDIgMyA0KSAoNCA1IDYg NikgKDYgNyA4IDkpKSAnKDEgMiAzIDQpKSAiXG4iKQooc2hvdyAjdCAiICIgKHRyYW5zcG9zZSAn KCgxIDIgMyA0KSAoNCA1IDYgNikgKDYgNyA4IDkpKSkgIlxuIikKKHNob3cgI3QgIiAiIChtYXRy aXgtKi1tYXRyaXgKICAgICAgICAgICAgICAgJygoMSAyIDMgNCkgKDQgNSA2IDYpICg2IDcgOCA5 KSkgCiAgICAgICAgICAgICAgICcoKDEgMiAzIDQpICg0IDUgNiA2KSAoNiA3IDggOSkpICkgIlxu IikKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogICgzMCA1NiA4MCkKOiAgKCgxIDQgNikgKDIgNSA3 KSAoMyA2IDgpICg0IDYgOSkpCjogICgoMzAgNTYgODApICg1NiAxMTMgMTYxKSAoODAgMTYxIDIz MCkpCgoqKiogRE9ORSBFeGVyY2lzZSAyLjM4IGZvbGQtbGVmdAogICAgQ0xPU0VEOiBbMjAxOS0w OS0xMiBUaHUgMDk6NDVdCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRz IHZhbHVlIDpub3dlYi1yZWYgZm9sZC1sZWZ0CiAgKGRlZmluZSAoZm9sZC1sZWZ0IG9wIGluaXRp YWwgc2VxdWVuY2UpCiAgICAoZGVmaW5lIChpdGVyIHJlc3VsdCByZXN0KQogICAgICAoaWYgKG51 bGw/IHJlc3QpCgkgIHJlc3VsdAoJICAoaXRlciAob3AgcmVzdWx0IChjYXIgcmVzdCkpCgkJKGNk ciByZXN0KSkpKQogICAgKGl0ZXIgaW5pdGlhbCBzZXF1ZW5jZSkpCiMrZW5kX3NyYwoKIytiZWdp bl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8YWNjdW11bGF0ZT4+ Cjw8Zm9sZC1sZWZ0Pj4KKHNob3cgI3QgIiAiIChhY2N1bXVsYXRlIC8gMSAobGlzdCAxIDIgMykp ICJcbiIpCihzaG93ICN0ICIgIiAoZm9sZC1sZWZ0IC8gMSAobGlzdCAxIDIgMykpICJcbiIpCihz aG93ICN0ICIgIiAoYWNjdW11bGF0ZSBsaXN0ICcoKSAobGlzdCAxIDIgMykpICJcbiIpCihzaG93 ICN0ICIgIiAoZm9sZC1sZWZ0IGxpc3QgJygpIChsaXN0IDEgMiAzKSkgIlxuIikKKHNob3cgI3Qg IiAiIChmb2xkLWxlZnQgKyAwIChsaXN0IDEgMiAzKSkgIlxuIikKKHNob3cgI3QgIiAiIChhY2N1 bXVsYXRlICsgMCAobGlzdCAxIDIgMykpICJcbiIpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICAz LzIKOiAgMS82CjogICgxICgyICgzICgpKSkpCjogICgoKCgpIDEpIDIpIDMpCjogIDYKOiAgNgoK V2VsbCwgaXQgc2VlbXMgdGhhdCBjb21tdXRhdGl2ZSBvcGVyYXRpb25zLCB0aGF0IGlzIHRoZSBv bmVzIGZvciB3aGljaApcKGErYiA9IGIrYVwpLgoKKioqIERPTkUgRXhlcmNpc2UgMi4zOSByZXZl cnNlIGZvbGQtcmlnaHQgZm9sZC1sZWZ0CiAgICBDTE9TRUQ6IFsyMDE5LTA5LTEyIFRodSAwOTo1 Ml0KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PGFj Y3VtdWxhdGU+Pgo8PGZvbGQtbGVmdD4+CiAgKGRlZmluZSAocmV2ZXJzZSBzZXF1ZW5jZSkKICAg IChhY2N1bXVsYXRlIChsYW1iZGEgKHggeSkgKGNvbnMgeCB5KSkgJygpIHNlcXVlbmNlKSkKICAo c2hvdyAjdCAiICIgKHJldmVyc2UgKGxpc3QgMSAyIDMpKSAiXG4iKQogIChkZWZpbmUgKHJldmVy c2Ugc2VxdWVuY2UpCiAgICAoZm9sZC1sZWZ0ICAobGFtYmRhICh4IHkpIChjb25zIHkgeCkpICco KSBzZXF1ZW5jZSkpCiAgKHNob3cgI3QgIiAiIChyZXZlcnNlIChsaXN0IDEgMiAzKSkpCgojK2Vu ZF9zcmMKCiMrUkVTVUxUUzoKOiAgKDEgMiAzKQo6ICAoMyAyIDEpCgoqKiogRE9ORSBFeGVyY2lz ZSAyLjQwIHVuaXF1ZS1wYWlycwogICAgQ0xPU0VEOiBbMjAxOS0wOS0xMiBUaHUgMTA6MzRdCjA6 NDI6MDAKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpu b3dlYi1yZWYgZmxhdG1hcAogIChkZWZpbmUgKGZsYXRtYXAgcHJvYyBzZXEpCiAgICAoYWNjdW11 bGF0ZSBhcHBlbmQgJygpIChtYXAgcHJvYyBzZXEpKSkKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBz Y2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIHByaW1lLXN1bQog IChkZWZpbmUgKHByaW1lLXN1bT8gcGFpcikKICAgIChwcmltZT8gKCsgKGNhciBwYWlyKSAoY2Fk ciBwYWlyKSkpKQojK2VuZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpy ZXN1bHRzIHZhbHVlIDpub3dlYi1yZWYgbWFrZS1wYWlyLXN1bQooZGVmaW5lIChtYWtlLXBhaXIt c3VtIHBhaXIpCiAgICAobGlzdCAoY2FyIHBhaXIpIChjYWRyIHBhaXIpICgrIChjYXIgcGFpcikg KGNhZHIgcGFpcikpKSkKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90 aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIHByaW1lLXN1bS1wYWlycwogIChkZWZpbmUgKHBy aW1lLXN1bS1wYWlycyBuKQogICAgKG1hcCBtYWtlLXBhaXItc3VtCgkgIChmaWx0ZXIgcHJpbWUt c3VtPyAoZmxhdG1hcAoJCQkgICAgICAobGFtYmRhIChpKQoJCQkJKG1hcCAobGFtYmRhIChqKSAo bGlzdCBpIGopKQoJCQkJICAgICAoZW51bWVyYXRlLWludGVydmFsIDEgKC0gaSAxKSkpKQoJCQkg ICAgICAoZW51bWVyYXRlLWludGVydmFsIDEgbikpKSkpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMg c2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8cHJpbWUtc3VtLXBhaXJzPj4K PDxlbnVtZXJhdGUtaW50ZXJ2YWw+Pgo8PGZsYXRtYXA+Pgo8PGFjY3VtdWxhdGU+Pgo8PHByaW1l LXN1bT4+Cjw8ZmlsdGVyPj4KPDxmYXN0LXByaW1lPj4KPDxmZXJtYXQtcHJpbWV0ZXN0Pj4KPDxl eHBtb2QtbWlsbGVyLXJhYmluPj4KPDxtYWtlLXBhaXItc3VtPj4KPDxtYXAtYXBwZW5kLWxlbmd0 aD4+CihzaG93ICN0ICIgIiAocHJpbWUtc3VtLXBhaXJzIDMwKSkKIytlbmRfc3JjCgojK1JFU1VM VFM6CjogICgoMiAxIDMpICgzIDIgNSkgKDQgMSA1KSAoNCAzIDcpICg1IDIgNykgKDYgMSA3KSAo NiA1IDExKSAoNyA0IDExKSAoNyA2IDEzKSAoOCAzIDExKSAoOCA1IDEzKSAoOSAyIDExKSAoOSA0 IDEzKSAoOSA4IDE3KSAoMTAgMSAxMSkgKDEwIDMgMTMpICgxMCA3IDE3KSAoMTAgOSAxOSkgKDEx IDIgMTMpICgxMSA2IDE3KSAoMTEgOCAxOSkgKDEyIDEgMTMpICgxMiA1IDE3KSAoMTIgNyAxOSkg KDEyIDExIDIzKSAoMTMgNCAxNykgKDEzIDYgMTkpICgxMyAxMCAyMykgKDE0IDMgMTcpICgxNCA1 IDE5KSAoMTQgOSAyMykgKDE1IDIgMTcpICgxNSA0IDE5KSAoMTUgOCAyMykgKDE1IDE0IDI5KSAo MTYgMSAxNykgKDE2IDMgMTkpICgxNiA3IDIzKSAoMTYgMTMgMjkpICgxNiAxNSAzMSkgKDE3IDIg MTkpICgxNyA2IDIzKSAoMTcgMTIgMjkpICgxNyAxNCAzMSkgKDE4IDEgMTkpICgxOCA1IDIzKSAo MTggMTEgMjkpICgxOCAxMyAzMSkgKDE5IDQgMjMpICgxOSAxMCAyOSkgKDE5IDEyIDMxKSAoMTkg MTggMzcpICgyMCAzIDIzKSAoMjAgOSAyOSkgKDIwIDExIDMxKSAoMjAgMTcgMzcpICgyMSAyIDIz KSAoMjEgOCAyOSkgKDIxIDEwIDMxKSAoMjEgMTYgMzcpICgyMSAyMCA0MSkgKDIyIDEgMjMpICgy MiA3IDI5KSAoMjIgOSAzMSkgKDIyIDE1IDM3KSAoMjIgMTkgNDEpICgyMiAyMSA0MykgKDIzIDYg MjkpICgyMyA4IDMxKSAoMjMgMTQgMzcpICgyMyAxOCA0MSkgKDIzIDIwIDQzKSAoMjQgNSAyOSkg KDI0IDcgMzEpICgyNCAxMyAzNykgKDI0IDE3IDQxKSAoMjQgMTkgNDMpICgyNCAyMyA0NykgKDI1 IDQgMjkpICgyNSA2IDMxKSAoMjUgMTIgMzcpICgyNSAxNiA0MSkgKDI1IDE4IDQzKSAoMjUgMjIg NDcpICgyNiAzIDI5KSAoMjYgNSAzMSkgKDI2IDExIDM3KSAoMjYgMTUgNDEpICgyNiAxNyA0Mykg KDI2IDIxIDQ3KSAoMjcgMiAyOSkgKDI3IDQgMzEpICgyNyAxMCAzNykgKDI3IDE0IDQxKSAoMjcg MTYgNDMpICgyNyAyMCA0NykgKDI3IDI2IDUzKSAoMjggMSAyOSkgKDI4IDMgMzEpICgyOCA5IDM3 KSAoMjggMTMgNDEpICgyOCAxNSA0MykgKDI4IDE5IDQ3KSAoMjggMjUgNTMpICgyOSAyIDMxKSAo MjkgOCAzNykgKDI5IDEyIDQxKSAoMjkgMTQgNDMpICgyOSAxOCA0NykgKDI5IDI0IDUzKSAoMzAg MSAzMSkgKDMwIDcgMzcpICgzMCAxMSA0MSkgKDMwIDEzIDQzKSAoMzAgMTcgNDcpICgzMCAyMyA1 MykgKDMwIDI5IDU5KSkKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRz IHZhbHVlIDpub3dlYi1yZWYgdW5pcXVlLXBhaXJzCiAgKGRlZmluZSAodW5pcXVlLXBhaXJzIG4p CiAgICAoZmxhdG1hcAogICAgIChsYW1iZGEgKGkpCiAgICAgICAobWFwIChsYW1iZGEgKGopIChs aXN0IGkgaikpCgkgICAgKGVudW1lcmF0ZS1pbnRlcnZhbCAxICgtIGkgMSkpKSkKICAgICAoZW51 bWVyYXRlLWludGVydmFsIDEgbikpKQojK2VuZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhw b3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCiAgPDx1bmlxdWUtcGFpcnM+PgogIDw8ZmxhdG1hcD4+ CiAgPDxlbnVtZXJhdGUtaW50ZXJ2YWw+PgogIDw8YWNjdW11bGF0ZT4+CiAgKHVuaXF1ZS1wYWly cyAzKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKfCAyIHwgMSB8CnwgMyB8IDEgfAp8IDMgfCAyIHwK CiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpub3dlYi1y ZWYgcHJpbWUtc3VtLXBhaXJzLXVuaXF1ZS1wYWlycwogIChkZWZpbmUgKHByaW1lLXN1bS1wYWly cyBuKQogICAgKG1hcCBtYWtlLXBhaXItc3VtCgkgIChmaWx0ZXIgcHJpbWUtc3VtPyAodW5pcXVl LXBhaXJzIG4pKSkpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGgg OnJlc3VsdHMgdmFsdWUKPDx1bmlxdWUtcGFpcnM+Pgo8PHByaW1lLXN1bS1wYWlycy11bmlxdWUt cGFpcnM+Pgo8PGVudW1lcmF0ZS1pbnRlcnZhbD4+Cjw8ZmxhdG1hcD4+Cjw8YWNjdW11bGF0ZT4+ Cjw8cHJpbWUtc3VtPj4KPDxmaWx0ZXI+Pgo8PGZhc3QtcHJpbWU+Pgo8PGZlcm1hdC1wcmltZXRl c3Q+Pgo8PGV4cG1vZC1taWxsZXItcmFiaW4+Pgo8PG1ha2UtcGFpci1zdW0+Pgo8PG1hcC1hcHBl bmQtbGVuZ3RoPj4KKHByaW1lLXN1bS1wYWlycyAxMCkKIytlbmRfc3JjCgojK1JFU1VMVFM6Cnwg IDIgfCAxIHwgIDMgfAp8ICAzIHwgMiB8ICA1IHwKfCAgNCB8IDEgfCAgNSB8CnwgIDQgfCAzIHwg IDcgfAp8ICA1IHwgMiB8ICA3IHwKfCAgNiB8IDEgfCAgNyB8CnwgIDYgfCA1IHwgMTEgfAp8ICA3 IHwgNCB8IDExIHwKfCAgNyB8IDYgfCAxMyB8CnwgIDggfCAzIHwgMTEgfAp8ICA4IHwgNSB8IDEz IHwKfCAgOSB8IDIgfCAxMSB8CnwgIDkgfCA0IHwgMTMgfAp8ICA5IHwgOCB8IDE3IHwKfCAxMCB8 IDEgfCAxMSB8CnwgMTAgfCAzIHwgMTMgfAp8IDEwIHwgNyB8IDE3IHwKfCAxMCB8IDkgfCAxOSB8 CgpJIGhhdmUgdG8gbm90ZSB0aGF0IHRoaXMgZGVjZWlwdGl2ZWx5IHNpbXBsZSB0YXNrIGludm9s dmVzIHJldXNpbmcKcmVzdWx0cyBvZiAxMiBvdGhlciBwcm9ibGVtcy4KIAoqKiogRE9ORSBFeGVy Y2lzZSAyLjQxIHRyaXBsZS1zdW0KICAgIENMT1NFRDogWzIwMTktMDktMTQgU2F0IDE1OjE1XQog ICAgICpFeGVyY2lzZSAyLjQxOiogV3JpdGUgYSBwcm9jZWR1cmUgdG8gZmluZCBhbGwgb3JkZXJl ZCB0cmlwbGVzIG9mCiAgICAgZGlzdGluY3QgcG9zaXRpdmUgaW50ZWdlcnMgaSwgaiwgYW5kIGsg bGVzcyB0aGFuIG9yIGVxdWFsIHRvIGEKICAgICBnaXZlbiBpbnRlZ2VyIG4gdGhhdCBzdW0gdG8g YSBnaXZlbiBpbnRlZ2VyIHMuCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVz dWx0cyB2YWx1ZSA6bm93ZWItcmVmIHVuaXF1ZS10cmlwbGVzCiAgICAoZGVmaW5lICh1bmlxdWUt dHJpcGxlcyBuKQogICAgICAoZmxhdG1hcAogICAgICAgKGxhbWJkYSAoaSkKCSAoZmxhdG1hcCAo bGFtYmRhIChqKSAKCQkobWFwIChsYW1iZGEgKGspIChsaXN0IGkgaiBrKSkKCQkgICAgIChlbnVt ZXJhdGUtaW50ZXJ2YWwgMSAoLSBqIDEpKSkpCgkgICAgICAoZW51bWVyYXRlLWludGVydmFsIDEg KC0gaSAxKSkpKQogICAgICAgKGVudW1lcmF0ZS1pbnRlcnZhbCAxIG4pKSkKCiMrZW5kX3NyYwoK IytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8YWNjdW11 bGF0ZT4+Cjw8ZW51bWVyYXRlLWludGVydmFsPj4KPDxmbGF0bWFwPj4KPDx1bmlxdWUtdHJpcGxl cz4+CihzaG93ICN0ICIgIiAodW5pcXVlLXRyaXBsZXMgNSkgIlxuIikKIytlbmRfc3JjCgojK1JF U1VMVFM6CjogICgoMyAyIDEpICg0IDIgMSkgKDQgMyAxKSAoNCAzIDIpICg1IDIgMSkgKDUgMyAx KSAoNSAzIDIpICg1IDQgMSkgKDUgNCAyKSAoNSA0IDMpKQoKCgojK2JlZ2luX3NyYyBzY2hlbWUg OmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIHN1bS1lcXVhbC1zCiAgKGRl ZmluZSAoc3VtLWVxdWFsLXM/IHMgdHVwbGUpCiAgICAoaWYgKD0gcyAgKGFjY3VtdWxhdGUgKyAw IHR1cGxlKSkKCSN0CgkjZikpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRz IGJvdGggOnJlc3VsdHMgdmFsdWUKPDxzdW0tZXF1YWwtcz4+Cjw8YWNjdW11bGF0ZT4+CihhbmQg KHN1bS1lcXVhbC1zPyAzMCAobGlzdCAxMCA1IDUgOSAxKSkgKG5vdCAoc3VtLWVxdWFsLXM/IDEw IChsaXN0IDMgMyAzKSkpKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAjdAoKIytiZWdpbl9zcmMg c2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBzdW0tZXF1YWwt cy10cmlwbGVzCiAgKGRlZmluZSAoc3VtLWVxdWFsLXMtdHJpcGxlcyBzIG4pCiAgICAoZmlsdGVy IChsYW1iZGEgKHgpIChzdW0tZXF1YWwtcz8gcyB4KSkgKHVuaXF1ZS10cmlwbGVzIG4pKSkKIytl bmRfc3JjCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZQo8 PGVudW1lcmF0ZS1pbnRlcnZhbD4+Cjw8ZmxhdG1hcD4+Cjw8c3VtLWVxdWFsLXMtdHJpcGxlcz4+ Cjw8YWNjdW11bGF0ZT4+Cjw8c3VtLWVxdWFsLXM+Pgo8PGZpbHRlcj4+Cjw8dW5pcXVlLXRyaXBs ZXM+Pgooc3VtLWVxdWFsLXMtdHJpcGxlcyAxNSAzMCkKIytlbmRfc3JjCgojK1JFU1VMVFM6Cnwg IDYgfCA1IHwgNCB8CnwgIDcgfCA1IHwgMyB8CnwgIDcgfCA2IHwgMiB8CnwgIDggfCA0IHwgMyB8 CnwgIDggfCA1IHwgMiB8CnwgIDggfCA2IHwgMSB8CnwgIDkgfCA0IHwgMiB8CnwgIDkgfCA1IHwg MSB8CnwgMTAgfCAzIHwgMiB8CnwgMTAgfCA0IHwgMSB8CnwgMTEgfCAzIHwgMSB8CnwgMTIgfCAy IHwgMSB8CgoqKiogRE9ORSBGaWd1cmUgMi44IEEgc29sdXRpb24gdG8gdGhlIGVpZ2h0LXF1ZWVu cyBwdXp6bGUuCgojK2JlZ2luX3NyYyBwbGFudHVtbCA6ZXhwb3J0cyBib3RoIDpmaWxlIGZpZ3Vy ZS0yLTgucG5nCkBzdGFydGRpdGFhCiAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKy0tLSstLS0r LS0tKy0tLSsKICAgICAgICAgIHwgICB8ICAgfCAgIHwgICB8ICAgfCBRIHwgICB8ICAgfAogICAg ICAgICAgKy0tLSstLS0rLS0tKy0tLSstLS0rLS0tKy0tLSstLS0rCiAgICAgICAgICB8ICAgfCAg IHwgUSB8ICAgfCAgIHwgICB8ICAgfCAgIHwKICAgICAgICAgICstLS0rLS0tKy0tLSstLS0rLS0t Ky0tLSstLS0rLS0tKwogICAgICAgICAgfCBRIHwgICB8ICAgfCAgIHwgICB8ICAgfCAgIHwgICB8 CiAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKy0tLSstLS0rLS0tKy0tLSsKICAgICAgICAgIHwg ICB8ICAgfCAgIHwgICB8ICAgfCAgIHwgUSB8ICAgfAogICAgICAgICAgKy0tLSstLS0rLS0tKy0t LSstLS0rLS0tKy0tLSstLS0rCiAgICAgICAgICB8ICAgfCAgIHwgICB8ICAgfCBRIHwgICB8ICAg fCAgIHwKICAgICAgICAgICstLS0rLS0tKy0tLSstLS0rLS0tKy0tLSstLS0rLS0tKwogICAgICAg ICAgfCAgIHwgICB8ICAgfCAgIHwgICB8ICAgfCAgIHwgUSB8CiAgICAgICAgICArLS0tKy0tLSst LS0rLS0tKy0tLSstLS0rLS0tKy0tLSsKICAgICAgICAgIHwgICB8IFEgfCAgIHwgICB8ICAgfCAg IHwgICB8ICAgfAogICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSstLS0rLS0tKy0tLSstLS0rCiAg ICAgICAgICB8ICAgfCAgIHwgICB8IFEgfCAgIHwgICB8ICAgfCAgIHwKICAgICAgICAgICstLS0r LS0tKy0tLSstLS0rLS0tKy0tLSstLS0rLS0tKwpAZW5kZGl0YWEKIytlbmRfc3JjIAoKIytSRVNV TFRTOgpbW2ZpbGU6ZmlndXJlLTItOC5wbmddXQoKKioqIERPTkUgRXhlcmNpc2UgMi40MiBrLXF1 ZWVucwogICAgQ0xPU0VEOiBbMjAxOS0wOS0xNyBUdWUgMjI6MjddCjM6MDA6MDAgKyAyOjAwOjAw ICsgMTowMDowMCA9IDY6MDA6MDAKVGhlIGNvbW1lbnRhcnkgdG8gdGhpcyBwcm9ibGVtIGlzIGJh ZC4gRmlyc3RseSwgaXQgaXMgKk5PVCogb2J2aW91cwp0aGF0IGl0IGlzIGV2ZW4gcG9zc2libGUg dG8gcGxhY2UgYSBxdWVlbiBpbnRvIGV2ZXJ5IGNvbHVtbiBhbmQgZXZlcnkKcm93LiBJbmRlZWQs IGluIHRoZSBzb2x1dGlvbiBhYm92ZSwgdGhpcyBoYXBwZW5zIHRvIGJlIHRoZSBjYXNlLCBidXQK dGhpcyBpcyBieSBubyBtZWFucyBvYnZpb3VzLgoKVGhlIHNlY29uZCB0aG91Z2h0OiBzaW5jZSB0 aGUgYWxnb3JpdGhtIGlzIGV4cGVjdGVkIHRvIHByb3ZpZGUgKmFsbCoKcG9zc2libGUgc29sdXRp b25zLCBpdCBzaG91bGQgYmUgcmVxdWlyZWQgaGF2ZSBhIGxpc3Qgb2YgbGlzdHMuLi4gc29ydApv ZiwgdG8gcmVwcmVzZW50IHRoZSBtdWx0aXR1ZGUuIFNvIH5xdWVlbnN+IHNob3VsZCByZXR1cm4g YSBsaXN0IG9mCmxpc3RzLiAKClNlY29uZGx5LCB0aGUgY29kZSBnaXZlbiBieSB0aGUgYXV0aG9y cyBpcyB0b3RhbGx5IG1vcm9uaWMgaW4gYXQgbGVhc3QKdHdvIHBsYWNlczogCiAxLiByZXN0LW9m LXF1ZWVucz8gU2VyaW91c2x5PyBXaHkgbm90ICJ3b3JsZCBvZiBxdWVlbnMiLCBvcgogICAgInN1 ZmZpeC1xdWVlbnMiLCB0byBtYWtlIGl0IGV2ZW4gbW9yZSBvYnNjdXJlPyBJdCBzaG91bGQgaGF2 ZSBiZWVuCiAgICBjYWxsZWQgInByZWZpeC1xdWVlbnMiLCBvciwgYmV0dGVyICJxdWVlbnMtYWxy ZWFkeS1vbi1ib2FyZCIuIFdlCiAgICBhcmUgbm90IHNob3J0IG9mIGJ5dGVzLCBhcmUgd2U/CiAy LiB3aG8gb24gRWFydGggd291bGQgY2FsbCBhIHByb2NlZHVyZSAicXVlZW4tY29scyI/IFdoYXQg ZG9lcyBpdApldmVuIG1lYW4/IERlc2NyaXB0aXZlIG5hbWVzIC0tIHplcm8uCiAKVGhlIHRoaXJk IHRob3VnaHQ6IGFueW9uZSB3aG8gd2FudHMgdG8gc29sdmUgdGhpcyBwdXp6bGUsIG11c3QgYXQK bGVhc3Qga25vdyB3aGF0IGl0IGlzIGZvciBhIHF1ZWVuIHRvIGJlICJzYWZlIi4gVGhhdCBpcywg aWYgYSBxdWVlbgpudW1iZXIgQSBoYXMgYSBwb3NpdGlvbiBiXzEgdGhlbiBvdXIgbmV3IHF1ZWVu J3MgQiBwb3NpdGlvbiBiXzIgbXVzdApzYXRpc2Z5IDogMSkgYl8yIFxuZXEgYl8xIDIpfGJfMiAt IGJfMXwgXG5lIEIgLSBBLiBBbmQgdGhpcyBtdXN0IGJlIHRydWUKXGZvcmFsbCBBIDwgQi4KClRo ZSBmb3VydGggdGhvdWdodDogaXQgaXMgKk5PVCogb2J2aW91cywgYnV0IHRoZSAicmVzdCBvZiBx dWVlbnMiCmNvbnRhaW5zIHRoZSBsaXN0IG9mIHF1ZWVucyBfaW4gdGhlIHJldmVyc2VkIG9yZGVy Xy4gU28gfmNhcn4naW5nCmFueXRoaW5nIHdpdGggaXQgcmVwcmVzZW50cyBhdHRhY2hpbmcgdGhl IHF1ZWVuIF90byB0aGUgZW5kXyBvZiB0aGUKbGlzdC4gVGhpcyBpcyB3aHkgd2UgaGF2ZSAqayog c3VwcGxpZWQgYXMgYW4gYXJndW1lbnQgdG8gdGhlIH5zYWZlP34KcHJvY2VkdXJlLgoKIytiZWdp bl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBrLXF1 ZWVucwogIChkZWZpbmUgKHF1ZWVucyBib2FyZC1zaXplKQogICAgKGRlZmluZSAocXVlZW4tY29s cyBrKQogICAgICAoaWYgKD0gayAwKQoJICAobGlzdCBlbXB0eS1ib2FyZCkKCSAgKGZpbHRlcgoJ ICAgKGxhbWJkYSAocG9zaXRpb25zKSAoc2FmZT8gayBwb3NpdGlvbnMpKQoJICAgKGZsYXRtYXAK CSAgICAobGFtYmRhIChyZXN0LW9mLXF1ZWVucykKCSAgICAgIChtYXAgKGxhbWJkYSAobmV3LXJv dykKCQkgICAgIChhZGpvaW4tcG9zaXRpb24gbmV3LXJvdyBrIHJlc3Qtb2YtcXVlZW5zKSkKCQkg ICAoZW51bWVyYXRlLWludGVydmFsIDEgYm9hcmQtc2l6ZSkpKQoJICAgIChxdWVlbi1jb2xzICgt IGsgMSkpKSkpKQogICAgKHF1ZWVuLWNvbHMgYm9hcmQtc2l6ZSkpCgojK2VuZF9zcmMKCiMrYmVn aW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PGstcXVlZW5zPj4K PDxmbGF0bWFwPj4KPDxlbnVtZXJhdGUtaW50ZXJ2YWw+Pgo8PGFjY3VtdWxhdGU+Pgo8PGZpbHRl cj4+CiAgKGRlZmluZSBlbXB0eS1ib2FyZCAnKCkpCiAgKGRlZmluZSAoYWRqb2luLXBvc2l0aW9u IG5ldy1yb3cgayByZXN0LW9mLXF1ZWVucykKICAgIChjb25zIChjb25zIGsgbmV3LXJvdykgcmVz dC1vZi1xdWVlbnMpKQogIChkZWZpbmUgKHNhZmU/IGsgcG9zaXRpb25zKQogICAgKGNvbmQgKChu dWxsPyAoY2RyIHBvc2l0aW9ucykpICN0KQoJICAoKD0gayAxKSAjdCkKCSAgKCg9IChjZGFyIHBv c2l0aW9ucykgKGNkYWRyIHBvc2l0aW9ucykpICNmKQoJICAoKD0gKGFicyAoLSAoY2RhciBwb3Np dGlvbnMpIChjZGFkciBwb3NpdGlvbnMpKSkgKGFicyAoLSAoY2FhciBwb3NpdGlvbnMpIChjYWFk ciBwb3NpdGlvbnMpKSkpICNmKQoJICAoZWxzZSAoc2FmZT8gayAoY29ucyAoY2FyIHBvc2l0aW9u cykgKGNkZHIgcG9zaXRpb25zKSkpKSkpCihtYXAgKGxhbWJkYSAoeCkgKHNob3cgI3QgIiAiIHgg IlxuIikpIChxdWVlbnMgOCkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgojK2JlZ2luX2V4YW1wbGUK ICgoOCAuIDQpICg3IC4gMikgKDYgLiA3KSAoNSAuIDMpICg0IC4gNikgKDMgLiA4KSAoMiAuIDUp ICgxIC4gMSkpCiAoKDggLiA1KSAoNyAuIDIpICg2IC4gNCkgKDUgLiA3KSAoNCAuIDMpICgzIC4g OCkgKDIgLiA2KSAoMSAuIDEpKQogKCg4IC4gMykgKDcgLiA1KSAoNiAuIDIpICg1IC4gOCkgKDQg LiA2KSAoMyAuIDQpICgyIC4gNykgKDEgLiAxKSkKICgoOCAuIDMpICg3IC4gNikgKDYgLiA0KSAo NSAuIDIpICg0IC4gOCkgKDMgLiA1KSAoMiAuIDcpICgxIC4gMSkpCiAoKDggLiA1KSAoNyAuIDcp ICg2IC4gMSkgKDUgLiAzKSAoNCAuIDgpICgzIC4gNikgKDIgLiA0KSAoMSAuIDIpKQogKCg4IC4g NCkgKDcgLiA2KSAoNiAuIDgpICg1IC4gMykgKDQgLiAxKSAoMyAuIDcpICgyIC4gNSkgKDEgLiAy KSkKICgoOCAuIDMpICg3IC4gNikgKDYgLiA4KSAoNSAuIDEpICg0IC4gNCkgKDMgLiA3KSAoMiAu IDUpICgxIC4gMikpCiAoKDggLiA1KSAoNyAuIDMpICg2IC4gOCkgKDUgLiA0KSAoNCAuIDcpICgz IC4gMSkgKDIgLiA2KSAoMSAuIDIpKQogKCg4IC4gNSkgKDcgLiA3KSAoNiAuIDQpICg1IC4gMSkg KDQgLiAzKSAoMyAuIDgpICgyIC4gNikgKDEgLiAyKSkKICgoOCAuIDQpICg3IC4gMSkgKDYgLiA1 KSAoNSAuIDgpICg0IC4gNikgKDMgLiAzKSAoMiAuIDcpICgxIC4gMikpCiAoKDggLiAzKSAoNyAu IDYpICg2IC4gNCkgKDUgLiAxKSAoNCAuIDgpICgzIC4gNSkgKDIgLiA3KSAoMSAuIDIpKQogKCg4 IC4gNCkgKDcgLiA3KSAoNiAuIDUpICg1IC4gMykgKDQgLiAxKSAoMyAuIDYpICgyIC4gOCkgKDEg LiAyKSkKICgoOCAuIDYpICg3IC4gNCkgKDYgLiAyKSAoNSAuIDgpICg0IC4gNSkgKDMgLiA3KSAo MiAuIDEpICgxIC4gMykpCiAoKDggLiA2KSAoNyAuIDQpICg2IC4gNykgKDUgLiAxKSAoNCAuIDgp ICgzIC4gMikgKDIgLiA1KSAoMSAuIDMpKQogKCg4IC4gMSkgKDcgLiA3KSAoNiAuIDQpICg1IC4g NikgKDQgLiA4KSAoMyAuIDIpICgyIC4gNSkgKDEgLiAzKSkKICgoOCAuIDYpICg3IC4gOCkgKDYg LiAyKSAoNSAuIDQpICg0IC4gMSkgKDMgLiA3KSAoMiAuIDUpICgxIC4gMykpCiAoKDggLiA2KSAo NyAuIDIpICg2IC4gNykgKDUgLiAxKSAoNCAuIDQpICgzIC4gOCkgKDIgLiA1KSAoMSAuIDMpKQog KCg4IC4gNCkgKDcgLiA3KSAoNiAuIDEpICg1IC4gOCkgKDQgLiA1KSAoMyAuIDIpICgyIC4gNikg KDEgLiAzKSkKICgoOCAuIDUpICg3IC4gOCkgKDYgLiA0KSAoNSAuIDEpICg0IC4gNykgKDMgLiAy KSAoMiAuIDYpICgxIC4gMykpCiAoKDggLiA0KSAoNyAuIDgpICg2IC4gMSkgKDUgLiA1KSAoNCAu IDcpICgzIC4gMikgKDIgLiA2KSAoMSAuIDMpKQogKCg4IC4gMikgKDcgLiA3KSAoNiAuIDUpICg1 IC4gOCkgKDQgLiAxKSAoMyAuIDQpICgyIC4gNikgKDEgLiAzKSkKICgoOCAuIDEpICg3IC4gNykg KDYgLiA1KSAoNSAuIDgpICg0IC4gMikgKDMgLiA0KSAoMiAuIDYpICgxIC4gMykpCiAoKDggLiAy KSAoNyAuIDUpICg2IC4gNykgKDUgLiA0KSAoNCAuIDEpICgzIC4gOCkgKDIgLiA2KSAoMSAuIDMp KQogKCg4IC4gNCkgKDcgLiAyKSAoNiAuIDcpICg1IC4gNSkgKDQgLiAxKSAoMyAuIDgpICgyIC4g NikgKDEgLiAzKSkKICgoOCAuIDUpICg3IC4gNykgKDYgLiAxKSAoNSAuIDQpICg0IC4gMikgKDMg LiA4KSAoMiAuIDYpICgxIC4gMykpCiAoKDggLiA2KSAoNyAuIDQpICg2IC4gMSkgKDUgLiA1KSAo NCAuIDgpICgzIC4gMikgKDIgLiA3KSAoMSAuIDMpKQogKCg4IC4gNSkgKDcgLiAxKSAoNiAuIDQp ICg1IC4gNikgKDQgLiA4KSAoMyAuIDIpICgyIC4gNykgKDEgLiAzKSkKICgoOCAuIDUpICg3IC4g MikgKDYgLiA2KSAoNSAuIDEpICg0IC4gNykgKDMgLiA0KSAoMiAuIDgpICgxIC4gMykpCiAoKDgg LiA2KSAoNyAuIDMpICg2IC4gNykgKDUgLiAyKSAoNCAuIDgpICgzIC4gNSkgKDIgLiAxKSAoMSAu IDQpKQogKCg4IC4gMikgKDcgLiA3KSAoNiAuIDMpICg1IC4gNikgKDQgLiA4KSAoMyAuIDUpICgy IC4gMSkgKDEgLiA0KSkKICgoOCAuIDcpICg3IC4gMykgKDYgLiAxKSAoNSAuIDYpICg0IC4gOCkg KDMgLiA1KSAoMiAuIDIpICgxIC4gNCkpCiAoKDggLiA1KSAoNyAuIDEpICg2IC4gOCkgKDUgLiA2 KSAoNCAuIDMpICgzIC4gNykgKDIgLiAyKSAoMSAuIDQpKQogKCg4IC4gMSkgKDcgLiA1KSAoNiAu IDgpICg1IC4gNikgKDQgLiAzKSAoMyAuIDcpICgyIC4gMikgKDEgLiA0KSkKICgoOCAuIDMpICg3 IC4gNikgKDYgLiA4KSAoNSAuIDEpICg0IC4gNSkgKDMgLiA3KSAoMiAuIDIpICgxIC4gNCkpCiAo KDggLiA2KSAoNyAuIDMpICg2IC4gMSkgKDUgLiA3KSAoNCAuIDUpICgzIC4gOCkgKDIgLiAyKSAo MSAuIDQpKQogKCg4IC4gNykgKDcgLiA1KSAoNiAuIDMpICg1IC4gMSkgKDQgLiA2KSAoMyAuIDgp ICgyIC4gMikgKDEgLiA0KSkKICgoOCAuIDcpICg3IC4gMykgKDYgLiA4KSAoNSAuIDIpICg0IC4g NSkgKDMgLiAxKSAoMiAuIDYpICgxIC4gNCkpCiAoKDggLiA1KSAoNyAuIDMpICg2IC4gMSkgKDUg LiA3KSAoNCAuIDIpICgzIC4gOCkgKDIgLiA2KSAoMSAuIDQpKQogKCg4IC4gMikgKDcgLiA1KSAo NiAuIDcpICg1IC4gMSkgKDQgLiAzKSAoMyAuIDgpICgyIC4gNikgKDEgLiA0KSkKICgoOCAuIDMp ICg3IC4gNikgKDYgLiAyKSAoNSAuIDUpICg0IC4gOCkgKDMgLiAxKSAoMiAuIDcpICgxIC4gNCkp CiAoKDggLiA2KSAoNyAuIDEpICg2IC4gNSkgKDUgLiAyKSAoNCAuIDgpICgzIC4gMykgKDIgLiA3 KSAoMSAuIDQpKQogKCg4IC4gOCkgKDcgLiAzKSAoNiAuIDEpICg1IC4gNikgKDQgLiAyKSAoMyAu IDUpICgyIC4gNykgKDEgLiA0KSkKICgoOCAuIDIpICg3IC4gOCkgKDYgLiA2KSAoNSAuIDEpICg0 IC4gMykgKDMgLiA1KSAoMiAuIDcpICgxIC4gNCkpCiAoKDggLiA1KSAoNyAuIDcpICg2IC4gMikg KDUgLiA2KSAoNCAuIDMpICgzIC4gMSkgKDIgLiA4KSAoMSAuIDQpKQogKCg4IC4gMykgKDcgLiA2 KSAoNiAuIDIpICg1IC4gNykgKDQgLiA1KSAoMyAuIDEpICgyIC4gOCkgKDEgLiA0KSkKICgoOCAu IDYpICg3IC4gMikgKDYgLiA3KSAoNSAuIDEpICg0IC4gMykgKDMgLiA1KSAoMiAuIDgpICgxIC4g NCkpCiAoKDggLiAzKSAoNyAuIDcpICg2IC4gMikgKDUgLiA4KSAoNCAuIDYpICgzIC4gNCkgKDIg LiAxKSAoMSAuIDUpKQogKCg4IC4gNikgKDcgLiAzKSAoNiAuIDcpICg1IC4gMikgKDQgLiA0KSAo MyAuIDgpICgyIC4gMSkgKDEgLiA1KSkKICgoOCAuIDQpICg3IC4gMikgKDYgLiA3KSAoNSAuIDMp ICg0IC4gNikgKDMgLiA4KSAoMiAuIDEpICgxIC4gNSkpCiAoKDggLiA3KSAoNyAuIDEpICg2IC4g MykgKDUgLiA4KSAoNCAuIDYpICgzIC4gNCkgKDIgLiAyKSAoMSAuIDUpKQogKCg4IC4gMSkgKDcg LiA2KSAoNiAuIDgpICg1IC4gMykgKDQgLiA3KSAoMyAuIDQpICgyIC4gMikgKDEgLiA1KSkKICgo OCAuIDMpICg3IC4gOCkgKDYgLiA0KSAoNSAuIDcpICg0IC4gMSkgKDMgLiA2KSAoMiAuIDIpICgx IC4gNSkpCiAoKDggLiA2KSAoNyAuIDMpICg2IC4gNykgKDUgLiA0KSAoNCAuIDEpICgzIC4gOCkg KDIgLiAyKSAoMSAuIDUpKQogKCg4IC4gNykgKDcgLiA0KSAoNiAuIDIpICg1IC4gOCkgKDQgLiA2 KSAoMyAuIDEpICgyIC4gMykgKDEgLiA1KSkKICgoOCAuIDQpICg3IC4gNikgKDYgLiA4KSAoNSAu IDIpICg0IC4gNykgKDMgLiAxKSAoMiAuIDMpICgxIC4gNSkpCiAoKDggLiAyKSAoNyAuIDYpICg2 IC4gMSkgKDUgLiA3KSAoNCAuIDQpICgzIC4gOCkgKDIgLiAzKSAoMSAuIDUpKQogKCg4IC4gMikg KDcgLiA0KSAoNiAuIDYpICg1IC4gOCkgKDQgLiAzKSAoMyAuIDEpICgyIC4gNykgKDEgLiA1KSkK ICgoOCAuIDMpICg3IC4gNikgKDYgLiA4KSAoNSAuIDIpICg0IC4gNCkgKDMgLiAxKSAoMiAuIDcp ICgxIC4gNSkpCiAoKDggLiA2KSAoNyAuIDMpICg2IC4gMSkgKDUgLiA4KSAoNCAuIDQpICgzIC4g MikgKDIgLiA3KSAoMSAuIDUpKQogKCg4IC4gOCkgKDcgLiA0KSAoNiAuIDEpICg1IC4gMykgKDQg LiA2KSAoMyAuIDIpICgyIC4gNykgKDEgLiA1KSkKICgoOCAuIDQpICg3IC4gOCkgKDYgLiAxKSAo NSAuIDMpICg0IC4gNikgKDMgLiAyKSAoMiAuIDcpICgxIC4gNSkpCiAoKDggLiAyKSAoNyAuIDYp ICg2IC4gOCkgKDUgLiAzKSAoNCAuIDEpICgzIC4gNCkgKDIgLiA3KSAoMSAuIDUpKQogKCg4IC4g NykgKDcgLiAyKSAoNiAuIDYpICg1IC4gMykgKDQgLiAxKSAoMyAuIDQpICgyIC4gOCkgKDEgLiA1 KSkKICgoOCAuIDMpICg3IC4gNikgKDYgLiAyKSAoNSAuIDcpICg0IC4gMSkgKDMgLiA0KSAoMiAu IDgpICgxIC4gNSkpCiAoKDggLiA0KSAoNyAuIDcpICg2IC4gMykgKDUgLiA4KSAoNCAuIDIpICgz IC4gNSkgKDIgLiAxKSAoMSAuIDYpKQogKCg4IC4gNCkgKDcgLiA4KSAoNiAuIDUpICg1IC4gMykg KDQgLiAxKSAoMyAuIDcpICgyIC4gMikgKDEgLiA2KSkKICgoOCAuIDMpICg3IC4gNSkgKDYgLiA4 KSAoNSAuIDQpICg0IC4gMSkgKDMgLiA3KSAoMiAuIDIpICgxIC4gNikpCiAoKDggLiA0KSAoNyAu IDIpICg2IC4gOCkgKDUgLiA1KSAoNCAuIDcpICgzIC4gMSkgKDIgLiAzKSAoMSAuIDYpKQogKCg4 IC4gNSkgKDcgLiA3KSAoNiAuIDIpICg1IC4gNCkgKDQgLiA4KSAoMyAuIDEpICgyIC4gMykgKDEg LiA2KSkKICgoOCAuIDcpICg3IC4gNCkgKDYgLiAyKSAoNSAuIDUpICg0IC4gOCkgKDMgLiAxKSAo MiAuIDMpICgxIC4gNikpCiAoKDggLiA4KSAoNyAuIDIpICg2IC4gNCkgKDUgLiAxKSAoNCAuIDcp ICgzIC4gNSkgKDIgLiAzKSAoMSAuIDYpKQogKCg4IC4gNykgKDcgLiAyKSAoNiAuIDQpICg1IC4g MSkgKDQgLiA4KSAoMyAuIDUpICgyIC4gMykgKDEgLiA2KSkKICgoOCAuIDUpICg3IC4gMSkgKDYg LiA4KSAoNSAuIDQpICg0IC4gMikgKDMgLiA3KSAoMiAuIDMpICgxIC4gNikpCiAoKDggLiA0KSAo NyAuIDEpICg2IC4gNSkgKDUgLiA4KSAoNCAuIDIpICgzIC4gNykgKDIgLiAzKSAoMSAuIDYpKQog KCg4IC4gNSkgKDcgLiAyKSAoNiAuIDgpICg1IC4gMSkgKDQgLiA0KSAoMyAuIDcpICgyIC4gMykg KDEgLiA2KSkKICgoOCAuIDMpICg3IC4gNykgKDYgLiAyKSAoNSAuIDgpICg0IC4gNSkgKDMgLiAx KSAoMiAuIDQpICgxIC4gNikpCiAoKDggLiAzKSAoNyAuIDEpICg2IC4gNykgKDUgLiA1KSAoNCAu IDgpICgzIC4gMikgKDIgLiA0KSAoMSAuIDYpKQogKCg4IC4gOCkgKDcgLiAyKSAoNiAuIDUpICg1 IC4gMykgKDQgLiAxKSAoMyAuIDcpICgyIC4gNCkgKDEgLiA2KSkKICgoOCAuIDMpICg3IC4gNSkg KDYgLiAyKSAoNSAuIDgpICg0IC4gMSkgKDMgLiA3KSAoMiAuIDQpICgxIC4gNikpCiAoKDggLiAz KSAoNyAuIDUpICg2IC4gNykgKDUgLiAxKSAoNCAuIDQpICgzIC4gMikgKDIgLiA4KSAoMSAuIDYp KQogKCg4IC4gNSkgKDcgLiAyKSAoNiAuIDQpICg1IC4gNikgKDQgLiA4KSAoMyAuIDMpICgyIC4g MSkgKDEgLiA3KSkKICgoOCAuIDYpICg3IC4gMykgKDYgLiA1KSAoNSAuIDgpICg0IC4gMSkgKDMg LiA0KSAoMiAuIDIpICgxIC4gNykpCiAoKDggLiA1KSAoNyAuIDgpICg2IC4gNCkgKDUgLiAxKSAo NCAuIDMpICgzIC4gNikgKDIgLiAyKSAoMSAuIDcpKQogKCg4IC4gNCkgKDcgLiAyKSAoNiAuIDUp ICg1IC4gOCkgKDQgLiA2KSAoMyAuIDEpICgyIC4gMykgKDEgLiA3KSkKICgoOCAuIDQpICg3IC4g NikgKDYgLiAxKSAoNSAuIDUpICg0IC4gMikgKDMgLiA4KSAoMiAuIDMpICgxIC4gNykpCiAoKDgg LiA2KSAoNyAuIDMpICg2IC4gMSkgKDUgLiA4KSAoNCAuIDUpICgzIC4gMikgKDIgLiA0KSAoMSAu IDcpKQogKCg4IC4gNSkgKDcgLiAzKSAoNiAuIDEpICg1IC4gNikgKDQgLiA4KSAoMyAuIDIpICgy IC4gNCkgKDEgLiA3KSkKICgoOCAuIDQpICg3IC4gMikgKDYgLiA4KSAoNSAuIDYpICg0IC4gMSkg KDMgLiAzKSAoMiAuIDUpICgxIC4gNykpCiAoKDggLiA2KSAoNyAuIDMpICg2IC4gNSkgKDUgLiA3 KSAoNCAuIDEpICgzIC4gNCkgKDIgLiAyKSAoMSAuIDgpKQogKCg4IC4gNikgKDcgLiA0KSAoNiAu IDcpICg1IC4gMSkgKDQgLiAzKSAoMyAuIDUpICgyIC4gMikgKDEgLiA4KSkKICgoOCAuIDQpICg3 IC4gNykgKDYgLiA1KSAoNSAuIDIpICg0IC4gNikgKDMgLiAxKSAoMiAuIDMpICgxIC4gOCkpCiAo KDggLiA1KSAoNyAuIDcpICg2IC4gMikgKDUgLiA2KSAoNCAuIDMpICgzIC4gMSkgKDIgLiA0KSAo MSAuIDgpKQojK2VuZF9leGFtcGxlCgpCZWNhdXNlIG9mIHJlYWxseSB0ZXJyaWJsZSBpbnRyb2R1 Y3Rpb24sIHRoaXMgZXhlcmNpc2UgdG9vayBtZSA2IHRpbWVzCm1vcmUgdGhhbiBpdCdzIHdvcnRo LgoKKioqIERPTkUgRXhlcmNpc2UgMi40MyBzbG93IGstcXVlZW5zCiAgICBDTE9TRUQ6IFsyMDE5 LTA5LTE3IFR1ZSAyMjo1NV0KClRvIGFuc3dlciB0aGlzIGV4ZXJjaXNlLCB3ZSBuZWVkIHRvIGVz dGltYXRlIHRoZSBjb21wbGV4aXR5IG9mIHRoZQpjYW5vbmljYWwgc29sdXRpb24gYW5kIExvdWlz JyBzb2x1dGlvbi4KCkZvciB0aGUgY2Fub25pY2FsIHNvbHV0aW9uLCB3ZSBjYW4gc2FmZWx5IGFz c3VtZSB0aGF0IHRoZSB+c2FmZT9+CnByb2NlZHVyZSBmaWx0ZXJzIG91dCBubyBzZXF1ZW5jZXMg YXQgYWxsICh0aGlzIHdvdWxkIG9ubHkgd29yc2VuIG91cgplc3RpbWF0ZSkuIFRoZXJlZm9yZSwg ZXZlcnkgYWRkaXRpb25hbCBjb2x1bW4gd291bGQgbXVsdGlwbHkgdGhlIHRvdGFsCmNvbXB1dGF0 aW9uIG5lZWRlZCBieSB0aGUgc2l6ZSBvZiB0aGUgY29sdW1uLiBSb3VnaGx5IHNwZWFraW5nLCB0 aGlzCndvdWxkIGJlIFwoa15rIFxhcHByb3ggMl5rIFxyaWdodGFycm93IDJee31eNiA9IDY0XCku CgpGb3IgdGhlIExvdWlzJ3Mgc29sdXRpb24sIGhvd2V2ZXIsIHRoZSB+KHF1ZWVuLWNvbHMgKC0g ayAxKSl+IGlzCnNvbHZlZCBmb3IgZXZlcnkgdmFsdWUgb2Ygfmt+IGZyb20gc2NyYXRjaCwgd2hp Y2ggaXMgbm90IG5lY2Vzc2FyeSwKYW5kIGFkZHMgYW4gYWRkaXRpb25hbCBtdWx0aXBsaWNhbmQg b2YgXChrXntrLTF9XCkgZm9yIGV2ZXJ5Cn5rfi4gUm91Z2hseSBzcGVha2luZywgdGhpcyBhZGRz IGFuIGFkZGl0aW9uYWwgcG93ZXIgb2YgXChrLTFcKSB0byB0aGUKc29sdXRpb24gdGltZS4gXCgg KGtcY2RvdCBUKV5rIFxhcHByb3ggMl57Nmt9XHJpZ2h0YXJyb3cgMl57MzZ9XCkuIEEgbGl0dGxl IGJpdCB0b28gbXVjaC4KCioqKiBSZW1hcmsuIE5vdyB3ZSBhcmUgc3RhcnRpbmcgdGhlICJwaWN0 dXJlIGxhbmd1YWdlIiBjaGFwdGVyLiAKSXQgbWF5IChhbmQgd2lsbCkgcmVxdWlyZSBleHRlbnNp dmUgbW9kaWZpY2F0aW9uIHRvIHRoZSBzdGFuZGFyZAp3b3JraW5nIGVudmlyb25tZW50LCBiZWNh dXNlIEkgYW0gbm90IHVzaW5nIHRoZSBtb3N0IGRlZmF1bHQgbm93YWRheXMKUmFja2V0LiBJbiB0 aGlzIHN1YnNlY3Rpb24gSSB3aWxsIGltcGxlbWVudCB0aGUgcmVxdWlyZWQgc3Vicm91dGluZXMu CgpTSUNQIGlzIGluY3JlZGlibHkgY29uZnVzaW5nIGluIHRoaXMgY2hhcHRlci4gCgpUaGUgZm9s bG93aW5nIGlzIG9uZSBvZiB0aGUgbW9zdCBwcm9taW5lbnQgZXhhbXBsZXM6CiMrYmVnaW5fc3Jj IHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCihkZWZpbmUgKHNlZ21lbnRzLT5w YWludGVyIHNlZ21lbnQtbGlzdCkKICAgICAgIChsYW1iZGEgKGZyYW1lKQogICAgICAgICAoZm9y LWVhY2gKICAgICAgICAgIChsYW1iZGEgKHNlZ21lbnQpCiAgICAgICAgICAgIChkcmF3LWxpbmUK ICAgICAgICAgICAgICgoZnJhbWUtY29vcmQtbWFwIGZyYW1lKSAoc3RhcnQtc2VnbWVudCBzZWdt ZW50KSkKICAgICAgICAgICAgICgoZnJhbWUtY29vcmQtbWFwIGZyYW1lKSAoZW5kLXNlZ21lbnQg c2VnbWVudCkpKSkKICAgICAgICAgIHNlZ21lbnQtbGlzdCkpKQojK2VuZF9zcmMKCiMrYmVnaW5f c3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dCA6bm93ZWItcmVmIGRyYXct bGluZQogIChkZWZpbmUgY2FudmFzLXNpemUKICAgIChtYWtlLXBhcmFtZXRlcgogICAgIDIwMAog ICAgIChsYW1iZGEgKHNpemUpCiAgICAgICAoaWYgKGFuZCAoZXhhY3QtaW50ZWdlcj8gc2l6ZSkg KDw9IDIgc2l6ZSAxMDAwKSkKCSAgIHNpemUKCSAgIChlcnJvciAiaW52YWxpZCBjYW52YXMgc2l6 ZSIpKSkpKQogIChkZWZpbmUgY2FudmFzLWZpbGUtbmFtZQogICAgIChtYWtlLXBhcmFtZXRlcgog ICAgICAgIChzdHJpbmctYXBwZW5kICIuLyIgKHN1YnN0cmluZyAocHJvY2Vzcy0+c3RyaW5nICJ1 dWlkZ2VuIikgMCAzNikgIi5wbmciKQoJKGxhbWJkYSAobmFtZSkKCSAgKGlmIChzdHJpbmc/IG5h bWUpCgkgICAgICBuYW1lCgkgICAgICAoZXJyb3IgImludmFsaWQgY2FudmFzIGZpbGUgbmFtZSIp KSkpKQogIChkZWZpbmUgKGNhbnZhcy1yZXNldCkKICAgIChzeXN0ZW0gInJtIiAoY2FudmFzLWZp bGUtbmFtZSkpCiAgICAoc3lzdGVtICJjb252ZXJ0IiAieGM6d2hpdGUiCgkgICAgIi1zY2FsZSIg KHN0cmluZy1hcHBlbmQKCQkgICAgICAobnVtYmVyLT5zdHJpbmcgKGNhbnZhcy1zaXplKSkKCQkg ICAgICAieCIKCQkgICAgICAobnVtYmVyLT5zdHJpbmcgKGNhbnZhcy1zaXplKSkpCgkgICAgKGNh bnZhcy1maWxlLW5hbWUpKSkKICAoZGVmaW5lIChjYW52YXMtcmVmcmVzaCkKICAgIChzdHJpbmct YXBwZW5kICJbWyIgKGNhbnZhcy1maWxlLW5hbWUpICJdXSIpKQogIChjYW52YXMtcmVzZXQpCiAg KGRlZmluZSAoZHJhdy1saW5lIHBvaW50MSBwb2ludDIpCiAgICAoc3lzdGVtICJtb2dyaWZ5IgoJ ICAgICItZmlsbCIgImJsYWNrIgoJICAgICItZHJhdyIgKHN0cmluZy1hcHBlbmQgImxpbmUgIgoJ CQkJICAgKG51bWJlci0+c3RyaW5nICgqIChjYW52YXMtc2l6ZSkgKGNhciBwb2ludDEpKSkKCQkJ CSAgICIsIgoJCQkJICAgKG51bWJlci0+c3RyaW5nICgqIChjYW52YXMtc2l6ZSkgKGNhZHIgcG9p bnQxKSkpCgkJCQkgICAiICIKCQkJCSAgIChudW1iZXItPnN0cmluZyAoKiAoY2FudmFzLXNpemUp IChjYXIgcG9pbnQyKSkpCgkJCQkgICAiLCIKCQkJCSAgIChudW1iZXItPnN0cmluZyAoKiAoY2Fu dmFzLXNpemUpIChjYWRyIHBvaW50MikpKSkKCSAgICAoY2FudmFzLWZpbGUtbmFtZSkpCiAgICAj OyhkaXNwbGF5IChzdHJpbmctYXBwZW5kICJbWyIgKGNhbnZhcy1maWxlLW5hbWUpICJdXSIpKQog ICAgKHN0cmluZy1hcHBlbmQgIltbIiAoY2FudmFzLWZpbGUtbmFtZSkgIl1dIikpCiMrZW5kX3Ny YwoKIytSRVNVTFRTOgoKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRz IHJhdyB2YWx1ZQogIDw8ZHJhdy1saW5lPj4KICAoZHJhdy1saW5lIChsaXN0IDAgMCkgKGxpc3Qg MSAxKSkKICAoZHJhdy1saW5lIChsaXN0IDAgMSkgKGxpc3QgMSAwKSkKIytlbmRfc3JjCgojK1JF U1VMVFM6CltbLi9kODkwZjk4Ny0zYmExLTQxZjQtYTJiMi1jNDI3YWE3YzI4NTguZ2lmXV0KCiMr YmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpub3dlYi1yZWYg cGljdC1mcmFtZQogIChkZWZpbmUgKGZyYW1lLWNvb3JkLW1hcCBmcmFtZSkKICAgIChsYW1iZGEg KHYpCiAgICAgKGFkZC12ZWN0CiAgICAgICAob3JpZ2luLWZyYW1lIGZyYW1lKQogICAgICAgICAg ICAgIChhZGQtdmVjdCAoc2NhbGUtdmVjdCAoeGNvci12ZWN0IHYpIChlZGdlMS1mcmFtZSBmcmFt ZSkpCgkJIChzY2FsZS12ZWN0ICh5Y29yLXZlY3QgdikgKGVkZ2UyLWZyYW1lIGZyYW1lKSkpKSkp CiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICM8dW5kZWY+CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4 cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZQogIDw8bWFrZS1mcmFtZT4+CiAgPDxwaWN0LWZyYW1l Pj4KICA8PHBpY3QtdmVjdD4+CiAgKChmcmFtZS1jb29yZC1tYXAKCSAgIChtYWtlLWZyYW1lCgkg ICAgKG1ha2UtdmVjdCAwLjEgMC4yKQoJICAgIChtYWtlLXZlY3QgMS4wIDEuMCkKCSAgICAobWFr ZS12ZWN0IDEuMCAxLjApKSkgKG1ha2UtdmVjdCAwIDApKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoK fCAwLjEgfCAwLjIgfAoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMg cmF3IHZhbHVlIDpub3dlYi1yZWYgc2VnbWVudHMtcGFpbnRlcgogIChkZWZpbmUgKHNlZ21lbnRz LT5wYWludGVyIHNlZ21lbnQtbGlzdCkKICAgIChsYW1iZGEgKGZyYW1lKQogICAgICAoZm9yLWVh Y2gKICAgICAgIChsYW1iZGEgKHNlZ21lbnQpCgkgKGRyYXctbGluZQoJICAoKGZyYW1lLWNvb3Jk LW1hcCBmcmFtZSkKCSAgIChzdGFydC1zZWdtZW50IHNlZ21lbnQpKQoJICAoKGZyYW1lLWNvb3Jk LW1hcCBmcmFtZSkKCSAgIChlbmQtc2VnbWVudCBzZWdtZW50KSkpKQogICAgICAgc2VnbWVudC1s aXN0KSkpCiMrZW5kX3NyYwoKVGhlIG5leHQgaXMgdGhlICJyb2dlcnMiIHBhaW50ZXIuIEFzIHVz dWFsIHdpdGggU0lDUCwgZmlnaHRpbmcgd2l0aAp0aGUgcHJvZ3JhbW1pbmcgc3lzdGVtIHRha2Vz IG1vcmUgdGltZSB0aGFuIGFjdHVhbGx5IHNvbHZpbmcgYW55dGhpbmcuClRvb2sgbWUgMyBob3Vy cy4gKDM6MDA6MDApCgpBc2tlZCBhIHF1ZXN0aW9uIGhlcmU6IGh0dHBzOi8vd3d3LmltYWdlbWFn aWNrLm9yZy9kaXNjb3Vyc2Utc2VydmVyL3ZpZXd0b3BpYy5waHA/Zj0xJnQ9MzY3NzAKCgojK2Jl Z2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIG1h Z2ljay12ZWN0CiAgICAoZGVmaW5lIChwaWN0LXZlY3QtPm1hZ2ljay12ZWN0IHZlY3RvciBzZXBh cmF0b3IpCiAgICAgIChzdHJpbmctYXBwZW5kCiAgICAgICAobnVtYmVyLT5zdHJpbmcgKCsgMSAo KiAoY2FudmFzLXNpemUpICh4Y29yLXZlY3QgdmVjdG9yKSkpKQogICAgICAgc2VwYXJhdG9yCiAg ICAgICAobnVtYmVyLT5zdHJpbmcgKCsgMSAoKiAoY2FudmFzLXNpemUpICh5Y29yLXZlY3QgdmVj dG9yKSkpKSkpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJl c3VsdHMgdmFsdWUgOm5vd2ViLXJlZiByb2dlcnMKICAoZGVmaW5lIChyb2dlcnMgZnJhbWUpCiAg ICAoc3lzdGVtICJjb252ZXJ0IiAKICAgICAgICAgICAgIChjYW52YXMtZmlsZS1uYW1lKQogICAg ICAgICAgICAgIigiCgkgICAgICIrZGlzdG9ydCIgImFmZmluZSIKCSAgICAgKHN0cmluZy1hcHBl bmQgCgkJIjEsMSAiICAgICIxLDEiCgkJIiAxNDksMSAiICAgKHBpY3QtdmVjdC0+bWFnaWNrLXZl Y3QgKGVkZ2UxLWZyYW1lICBmcmFtZSkgIiwiKQogICAgICAgICAgICAgICAgIiAxLDE4MCAiICAo cGljdC12ZWN0LT5tYWdpY2stdmVjdCAoZWRnZTItZnJhbWUgIGZyYW1lKSAiLCIpKQogICAgICAg ICAgICAgIi1iYWNrZ3JvdW5kIiAidHJhbnNwYXJlbnQiCgkgICAgICItc3BsaWNlIiAocGljdC12 ZWN0LT5tYWdpY2stdmVjdAoJCQkob3JpZ2luLWZyYW1lIGZyYW1lKSAieCIpCiAgICAgICAgICAg ICAiLi9hc3NldHMvcm9nZXJzLnBuZyIgIikiIAogICAgICAgICAgICAgIi1jb21wb3NpdGUiICAg ICAgICAgICAgCiAgICAgICAgICAgICAoY2FudmFzLWZpbGUtbmFtZSkpKQojK2VuZF9zcmMKCiMr UkVTVUxUUzoKOiAjPHVuZGVmPgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJl c3VsdHMgcmF3IHZhbHVlCjw8cGljdC12ZWN0Pj4KPDxwaWN0LWZyYW1lPj4KPDxtYWtlLWZyYW1l Pj4KPDxtYWdpY2stdmVjdD4+Cjw8cm9nZXJzPj4KPDxkcmF3LWxpbmU+Pgoocm9nZXJzIChtYWtl LWZyYW1lIChtYWtlLXZlY3QgMCAwKSAobWFrZS12ZWN0IDEgMCkgKG1ha2UtdmVjdCAwIDEpKSkK KGNhbnZhcy1yZWZyZXNoKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKW1suLzc1NTA5NmYxLTI4MGYt NGUzOS1iZDlmLWMxN2RhZGE5ZWQ2OS5wbmddXQoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRz IGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiB3YXZlLWJpdG1hcAogIChkZWZpbmUgKHdh dmUgZnJhbWUpCiAgICAjOyhjb252ZXJ0IHdoaXRlLmdpZiBcKCAtZGlzdG9ydCAiQWZmaW5lIiAi MSwxIDEsMSAgMSwxNDkgMSwyMDAgIDE4MCwxIDIwMCwxIiAgcm9nZXJzLnBuZyBcKSAtY29tcG9z aXRlICBvdXRwdXQuZ2lmKQogICAgIzsoY29udmVydCByb2dlcnMucG5nICAtYWxwaGEgc2V0IC12 aXJ0dWFsLXBpeGVsIHRyYW5zcGFyZW50ICtkaXN0b3J0IGFmZmluZSAiMSwxIDEsMSAxLDUwIDEs NTAgNTAsMSA1MCw1MCIgLWJhY2tncm91bmQgdHJhbnNwYXJlbnQgLXNwbGljZSAiNTB4NTAiIG91 dHB1dC5wbmcpCiAgICAoc3lzdGVtICJjb252ZXJ0IiAKCSAgICAgKGNhbnZhcy1maWxlLW5hbWUp CgkgICAgICIoIgoJICAgICAiLWFscGhhIiAic2V0IiAiLXZpcnR1YWwtcGl4ZWwiICJ0cmFuc3Bh cmVudCIKCSAgICAgIitkaXN0b3J0IiAiYWZmaW5lIgoJICAgICAoc3RyaW5nLWFwcGVuZCAKCQki MSwxICIgICAgIjEsMSIKCQkiIDE1MiwxICIgICAocGljdC12ZWN0LT5tYWdpY2stdmVjdAoJCQkg ICAgICAoZWRnZTEtZnJhbWUgIGZyYW1lKSAiLCIpCgkJIiAxLDE4NCAiICAgKHBpY3QtdmVjdC0+ bWFnaWNrLXZlY3QKCQkJICAgICAgKGVkZ2UyLWZyYW1lICBmcmFtZSkgIiwiKSkKCSAgICAgIi1i YWNrZ3JvdW5kIiAidHJhbnNwYXJlbnQiCgkgICAgICItc3BsaWNlIiAocGljdC12ZWN0LT5tYWdp Y2stdmVjdAoJCQkob3JpZ2luLWZyYW1lIGZyYW1lKSAieCIpCgkgICAgICIuL2Fzc2V0cy93YXZl LnBuZyIgIikiCgkgICAgICItY29tcG9zaXRlIgoJICAgICAoY2FudmFzLWZpbGUtbmFtZSkpKQoj K2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAjPHVuZGVmPgoKKioqIERPTkUgRXhlcmNpc2UgMi40NCB1 cC1zcGxpdAogICAgQ0xPU0VEOiBbMjAxOS0wOS0yMyBNb24gMjI6NTRdCgojK2JlZ2luX3NyYyBz Y2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIHVwLXNwbGl0CiAg KGRlZmluZSAodXAtc3BsaXQgcGFpbnRlciBuKQogICAgKGlmICg9IG4gMCkKCXBhaW50ZXIKCShs ZXQgKChzbWFsbGVyICh1cC1zcGxpdCBwYWludGVyICgtIG4gMSkpKSkKCSAgKGJlbG93IHBhaW50 ZXIgKGJlc2lkZSBzbWFsbGVyIHNtYWxsZXIpKSkpKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAj PHVuZGVmPgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgcmF3IHZh bHVlCjw8cGljdC12ZWN0Pj4KPDxtYWtlLWZyYW1lPj4KPDxwaWN0LXNlZ21lbnQ+Pgo8PHNlZ21l bnRzLXBhaW50ZXI+Pgo8PHdhdmUtc2VnbWVudD4+Cjw8dHJhbnNmb3JtLXBhaW50ZXI+Pgo8PHBp Y3QtZnJhbWU+Pgo8PGRyYXctbGluZT4+Cjw8YmVzaWRlPj4KPDxiZWxvdy1iZXNpZGU+Pgo8PHJv dGF0ZTI3MD4+Cjw8cm90YXRlOTA+Pgo8PHVwLXNwbGl0Pj4KKCh1cC1zcGxpdCB3YXZlIDEpICht YWtlLWZyYW1lIChtYWtlLXZlY3QgMC4wIDEuMCkgKG1ha2UtdmVjdCAxLjAgMC4wKSAobWFrZS12 ZWN0IDAuMCAtMS4wKSkpCihjYW52YXMtcmVmcmVzaCkKIytlbmRfc3JjCgojK1JFU1VMVFM6Cltb Li80N2VmMjQwZC0yYThiLTQ4ODYtODQzMS1jN2FhZGU0OWZiMDkucG5nXV0KCioqKiBET05FIEV4 ZXJjaXNlIDIuNDUgc3BsaXQKICAgIENMT1NFRDogWzIwMTktMDktMjQgVHVlIDAxOjM3XQoKIyti ZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBz cGxpdAogIChkZWZpbmUgKHNwbGl0IG9wMSBvcDIpCiAgICAoZGVmaW5lIChzcGxpdC1pbm5lciBw YWludGVyIG4pCiAgICAgIChpZiAoPSBuIDApCiAgICAgIHBhaW50ZXIKICAgICAgKGxldCAoKHNt YWxsZXIgKHNwbGl0LWlubmVyIHBhaW50ZXIgKC0gbiAxKSkpKQoJKG9wMiBwYWludGVyIChvcDEg c21hbGxlciBzbWFsbGVyKSkpKSkKICAgIChsYW1iZGEgKHBhaW50ZXIgbikKICAgICAgKHNwbGl0 LWlubmVyIHBhaW50ZXIgbikpKQogIChkZWZpbmUgdXAtc3BsaXQgKHNwbGl0IGJlc2lkZSBiZWxv dykpCiAgKGRlZmluZSByaWdodC1zcGxpdCAoc3BsaXQgYmVsb3cgYmVzaWRlKSkKIytlbmRfc3Jj CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyByYXcgdmFsdWUKPDxw aWN0LXZlY3Q+Pgo8PG1ha2UtZnJhbWU+Pgo8PHBpY3Qtc2VnbWVudD4+Cjw8c2VnbWVudHMtcGFp bnRlcj4+Cjw8d2F2ZS1zZWdtZW50Pj4KPDx0cmFuc2Zvcm0tcGFpbnRlcj4+Cjw8cGljdC1mcmFt ZT4+Cjw8ZHJhdy1saW5lPj4KPDxiZXNpZGU+Pgo8PGJlbG93LWJlc2lkZT4+Cjw8cm90YXRlMjcw Pj4KPDxyb3RhdGU5MD4+Cjw8c3BsaXQ+PgooKHVwLXNwbGl0IHdhdmUgMSkgKG1ha2UtZnJhbWUg KG1ha2UtdmVjdCAwLjAgMS4wKSAobWFrZS12ZWN0IDEuMCAwLjApIChtYWtlLXZlY3QgMC4wIC0x LjApKSkKKGNhbnZhcy1yZWZyZXNoKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKW1suLzQzNDA0YjE0 LTkyMjQtNGI2NC1iMzA0LTdiZWViZWQyYzNjOC5wbmddXQoKIytiZWdpbl9zcmMgc2NoZW1lIDpl eHBvcnRzIGJvdGggOnJlc3VsdHMgcmF3IHZhbHVlCjw8cGljdC12ZWN0Pj4KPDxtYWtlLWZyYW1l Pj4KPDxwaWN0LXNlZ21lbnQ+Pgo8PHNlZ21lbnRzLXBhaW50ZXI+Pgo8PHdhdmUtc2VnbWVudD4+ Cjw8dHJhbnNmb3JtLXBhaW50ZXI+Pgo8PHBpY3QtZnJhbWU+Pgo8PGRyYXctbGluZT4+Cjw8YmVz aWRlPj4KPDxiZWxvdy1iZXNpZGU+Pgo8PHJvdGF0ZTI3MD4+Cjw8cm90YXRlOTA+Pgo8PHNwbGl0 Pj4KKChyaWdodC1zcGxpdCB3YXZlIDEpIChtYWtlLWZyYW1lIChtYWtlLXZlY3QgMC4wIDEuMCkg KG1ha2UtdmVjdCAxLjAgMC4wKSAobWFrZS12ZWN0IDAuMCAtMS4wKSkpCihjYW52YXMtcmVmcmVz aCkKIytlbmRfc3JjCgojK1JFU1VMVFM6CltbLi9iOTZjNTkzZS1hNzExLTQ4MjQtYTc5Yy00YjRl OTExZDEzNzQucG5nXV0KCioqKiBET05FIEV4ZXJjaXNlIDIuNDYgbWFrZS12ZWN0CiAgICBDTE9T RUQ6IFsyMDE5LTA5LTIwIEZyaSAxMjo0OF0KIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJv dGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBwaWN0LXZlY3QKICAoZGVmaW5lIChtYWtlLXZl Y3QgeGNvciB5Y29yIC4gbykKICAgIChhcHBlbmQgKGxpc3QgeGNvcikgKGxpc3QgeWNvcikgbykp CiAgKGRlZmluZSAoeGNvci12ZWN0IHZlY3QpCiAgICAoY2FyIHZlY3QpKQogIChkZWZpbmUgKHlj b3ItdmVjdCB2ZWN0KQogICAgKGNhZHIgdmVjdCkpCiAgKGRlZmluZSAoc2NhbGUtdmVjdCBzY2Fs ZSB2ZWN0KQogICAgKG1hcCAobGFtYmRhICh4KSAoKiB4IHNjYWxlKSkgdmVjdCkpCiAgKGRlZmlu ZSAoYWRkLXZlY3QgdmVjMSB2ZWMyKQogICAgKG1hcCAobGFtYmRhIChjb3IxIGNvcjIpICgrIGNv cjEgY29yMikpIHZlYzEgdmVjMikpCiAgKGRlZmluZSAoc3ViLXZlY3QgdmVjMSB2ZWMyKQogICAg KG1hcCAobGFtYmRhIChjb3IxIGNvcjIpICgtIGNvcjEgY29yMikpIHZlYzEgdmVjMikpCiMrZW5k X3NyYwoKIytSRVNVTFRTOgo6ICM8dW5kZWY+CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMg Ym90aCA6cmVzdWx0cyBvdXRwdXQKPDxwaWN0LXZlY3Q+Pgooc2hvdyAjdCAobWFrZS12ZWN0IDEg MiAzKSAiXG4iKQooc2hvdyAjdCAoeGNvci12ZWN0IChtYWtlLXZlY3QgMSAyIDMpKSAiXG4iKQoo c2hvdyAjdCAoeWNvci12ZWN0IChtYWtlLXZlY3QgMSAyIDMpKSAiXG4iKQooc2hvdyAjdCAoc2Nh bGUtdmVjdCAyIChtYWtlLXZlY3QgMSAyIDMpKSAiXG4iKQooc2hvdyAjdCAoYWRkLXZlY3QgKG1h a2UtdmVjdCAxIDIgMykgKG1ha2UtdmVjdCAxIDIgMykpICJcbiIpCihzaG93ICN0IChzdWItdmVj dCAobWFrZS12ZWN0IDEgMiAzKSAobWFrZS12ZWN0IDEgMiAzKSkgIlxuIikKIytlbmRfc3JjCgoj K1JFU1VMVFM6CjogKDEgMiAzKQo6IDEKOiAyCjogKDIgNCA2KQo6ICgyIDQgNikKOiAoMCAwIDAp CgoqKiogRE9ORSBFeGVyY2lzZSAyLjQ3IG1ha2UtZnJhbWUKICAgIENMT1NFRDogWzIwMTktMDkt MjAgRnJpIDE0OjQ4XQojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2 YWx1ZSA6bm93ZWItcmVmIG1ha2UtZnJhbWUKKGRlZmluZSAobWFrZS1mcmFtZSBvcmlnaW4gZWRn ZTEgZWRnZTIpCiAgKGxpc3Qgb3JpZ2luIGVkZ2UxIGVkZ2UyKSkKKGRlZmluZSAob3JpZ2luLWZy YW1lIGZyYW1lKQogIChjYXIgZnJhbWUpKQooZGVmaW5lIChlZGdlMS1mcmFtZSBmcmFtZSkKICAo Y2FkciBmcmFtZSkpCihkZWZpbmUgKGVkZ2UyLWZyYW1lIGZyYW1lKQogIChjYWRkciBmcmFtZSkp CiMrZW5kX3NyYwojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRw dXQKPDxtYWtlLWZyYW1lPj4KPDxwaWN0LXZlY3Q+PgoobWFrZS1mcmFtZSAobWFrZS12ZWN0IDAu MSAwLjIpIChtYWtlLXZlY3QgMC4xIDAuMikgKG1ha2UtdmVjdCAwLjAgMC4zKSkKKG9yaWdpbi1m cmFtZSAobWFrZS1mcmFtZSAobWFrZS12ZWN0IDAuMSAwLjIpIChtYWtlLXZlY3QgMC4xIDAuMikg KG1ha2UtdmVjdCAwLjAgMC4zKSkpCihlZGdlMS1mcmFtZSAgKG1ha2UtZnJhbWUgKG1ha2UtdmVj dCAwLjEgMC4yKSAobWFrZS12ZWN0IDAuMSAwLjIpIChtYWtlLXZlY3QgMC4wIDAuMykpKQooZWRn ZTItZnJhbWUgIChtYWtlLWZyYW1lIChtYWtlLXZlY3QgMC4xIDAuMikgKG1ha2UtdmVjdCAwLjEg MC4yKSAobWFrZS12ZWN0IDAuMCAwLjMpKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CgojK2JlZ2lu X3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKPDxwaWN0LXZlY3Q+Pgog IChkZWZpbmUgKG1ha2UtZnJhbWUgb3JpZ2luIGVkZ2UxIGVkZ2UyKQogICAgKGNvbnMgb3JpZ2lu IChjb25zIGVkZ2UxIGVkZ2UyKSkpCiAgKGRlZmluZSAob3JpZ2luLWZyYW1lIGZyYW1lKQogICAg KGNhciBmcmFtZSkpCiAgKGRlZmluZSAoZWRnZTEtZnJhbWUgZnJhbWUpCiAgICAoY2FkciBmcmFt ZSkpCiAgKGRlZmluZSAoZWRnZTItZnJhbWUgZnJhbWUpCiAgICAoY2RkciBmcmFtZSkpCiAgKHNo b3cgI3QgKG9yaWdpbi1mcmFtZSAobWFrZS1mcmFtZSAobWFrZS12ZWN0IDAuMSAwLjIpIChtYWtl LXZlY3QgMC4xIDAuMikgKG1ha2UtdmVjdCAwLjAgMC4zKSkpICJcbiIpCiAgKHNob3cgI3QgKGVk Z2UxLWZyYW1lIChtYWtlLWZyYW1lIChtYWtlLXZlY3QgMC4xIDAuMikgKG1ha2UtdmVjdCAwLjEg MC4yKSAobWFrZS12ZWN0IDAuMCAwLjMpKSkgIlxuIikKICAoc2hvdyAjdCAoZWRnZTItZnJhbWUg KG1ha2UtZnJhbWUgKG1ha2UtdmVjdCAwLjEgMC4yKSAobWFrZS12ZWN0IDAuMSAwLjIpIChtYWtl LXZlY3QgMC4wIDAuMykpKSAiXG4iKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAoMC4xIDAuMikK OiAoMC4xIDAuMikKOiAoMC4wIDAuMykKCioqKiBET05FIEV4ZXJjaXNlIDIuNDggbWFrZS1zZWdt ZW50CiAgICBDTE9TRUQ6IFsyMDE5LTA5LTIwIEZyaSAxNjowNl0KIytiZWdpbl9zcmMgc2NoZW1l IDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBwaWN0LXNlZ21lbnQKICAo ZGVmaW5lIChtYWtlLXNlZ21lbnQgc3RhcnQtdmVjdG9yIGVuZC12ZWN0b3IpCiAgICAobGlzdCBz dGFydC12ZWN0b3IgZW5kLXZlY3RvcikpCiAgKGRlZmluZSAoc3RhcnQtc2VnbWVudCBzZWdtZW50 KQogICAgKGNhciBzZWdtZW50KSkKICAoZGVmaW5lIChlbmQtc2VnbWVudCBzZWdtZW50KQogICAg KGNhZHIgc2VnbWVudCkpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJv dGggOnJlc3VsdHMgcmF3IHZhbHVlCiAgPDxkcmF3LWxpbmU+PgogIDw8cGljdC1zZWdtZW50Pj4K ICA8PHNlZ21lbnRzLXBhaW50ZXI+PgogIDw8cGljdC12ZWN0Pj4KICA8PG1ha2UtZnJhbWU+Pgog IDw8cGljdC1mcmFtZT4+CiAgKChzZWdtZW50cy0+cGFpbnRlcgogICAgKGxpc3QKICAgICAobWFr ZS1zZWdtZW50IChtYWtlLXZlY3QgMCAwKSAobWFrZS12ZWN0IDEgMSkpCiAgICAgKG1ha2Utc2Vn bWVudCAobWFrZS12ZWN0IDAgMSkgKG1ha2UtdmVjdCAxIDApKSkpCiAgIChtYWtlLWZyYW1lICht YWtlLXZlY3QgMCAwKSAobWFrZS12ZWN0IDAgMSkgKG1ha2UtdmVjdCAxIDApKSkKICAoY2FudmFz LXJlZnJlc2gpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgpbWy90bXAvc2NoZW1lLXRlbXAuZ2lmXV0K CioqKiBET05FIEV4ZXJjaXNlIDIuNDkgc2VnbWVudHMtPnBhaW50ZXIgYXBwbGljYXRpb25zCiAg ICBDTE9TRUQ6IFsyMDE5LTA5LTIwIEZyaSAyMzoxMF0KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhw b3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpub3dlYi1yZWYgeC1wYWludGVyCihkZWZpbmUgeC1w YWludGVyCiAgKHNlZ21lbnRzLT5wYWludGVyCiAgICAobGlzdAogICAgIChtYWtlLXNlZ21lbnQg KG1ha2UtdmVjdCAwIDApIChtYWtlLXZlY3QgMSAxKSkKICAgICAobWFrZS1zZWdtZW50IChtYWtl LXZlY3QgMCAxKSAobWFrZS12ZWN0IDEgMCkpKSkpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2No ZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgcmF3IHZhbHVlCiAgPDxkcmF3LWxpbmU+PgogIDw8 cGljdC1zZWdtZW50Pj4KICA8PHNlZ21lbnRzLXBhaW50ZXI+PgogIDw8cGljdC12ZWN0Pj4KICA8 PG1ha2UtZnJhbWU+PgogIDw8cGljdC1mcmFtZT4+CiAgPDx4LXBhaW50ZXI+PgogICh4LXBhaW50 ZXIKICAgKG1ha2UtZnJhbWUgKG1ha2UtdmVjdCAwIDApIChtYWtlLXZlY3QgMCAxKSAobWFrZS12 ZWN0IDEgMCkpKQogIChjYW52YXMtcmVmcmVzaCkKIytlbmRfc3JjCgojK1JFU1VMVFM6CltbLi9h NThmODk0Ni00MmI2LTQzYzQtODlhNS01OWU4OTI1OTkzOTQuZ2lmXV0KClRoaXMgcGFpbnRlciBp cyBub3QgZW50aXJlbHkgYWNjdXJhdGUsIGJlY2F1c2UgbXkgYmFja2dyb3VuZCBpcyBibGFjaywK c28gdGhlIGxpbmVzIHdvdWxkIGNvYWxlc2NlIHdpdGggaXQuIEkgdGhlcmVmb3JlIGp1c3QgbW92 ZWQgdGhlIGxpbmVzCmEgbGl0dGxlIGJpdCBpbnNpZGUuCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4 cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIGZyYW1lLWJvdW5kYXJ5LXBhaW50 ZXIKKGRlZmluZSBmcmFtZS1ib3VuZGFyeS1wYWludGVyCiAgKHNlZ21lbnRzLT5wYWludGVyCiAg ICAobGlzdAogICAgIChtYWtlLXNlZ21lbnQgKG1ha2UtdmVjdCAwLjAxIDAuMDEpIChtYWtlLXZl Y3QgMC4wMSAwLjk5KSkKICAgICAobWFrZS1zZWdtZW50IChtYWtlLXZlY3QgMC4wMSAwLjk5KSAo bWFrZS12ZWN0IDAuOTkgMC45OSkpCiAgICAgKG1ha2Utc2VnbWVudCAobWFrZS12ZWN0IDAuOTkg MC45OSkgKG1ha2UtdmVjdCAwLjk5IDAuMDEpKQogICAgIChtYWtlLXNlZ21lbnQgKG1ha2UtdmVj dCAwLjk5IDAuMDEpIChtYWtlLXZlY3QgMC4wMSAwLjAxKSkpKSkKIytlbmRfc3JjCgojK2JlZ2lu X3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyByYXcgdmFsdWUKICA8PGRyYXctbGlu ZT4+CiAgPDxwaWN0LXNlZ21lbnQ+PgogIDw8c2VnbWVudHMtcGFpbnRlcj4+CiAgPDxwaWN0LXZl Y3Q+PgogIDw8bWFrZS1mcmFtZT4+CiAgPDxwaWN0LWZyYW1lPj4KICA8PGZyYW1lLWJvdW5kYXJ5 LXBhaW50ZXI+PgoKICAoZnJhbWUtYm91bmRhcnktcGFpbnRlcgogICAobWFrZS1mcmFtZSAobWFr ZS12ZWN0IDAuMSAwLjEpIChtYWtlLXZlY3QgMC4xIDAuMDUpIChtYWtlLXZlY3QgMC41IDApKSkK ICAoY2FudmFzLXJlZnJlc2gpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgpbWy4vYzAzZjU5ZmItYzQ3 My00Y2MxLWJiODAtMjBjOTdlN2U3NTk0LmdpZl1dCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9y dHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIGRpYW1vbmQtcGFpbnRlcgooZGVmaW5l IGRpYW1vbmQtcGFpbnRlcgogIChzZWdtZW50cy0+cGFpbnRlcgogICAgKGxpc3QKICAgICAobWFr ZS1zZWdtZW50IChtYWtlLXZlY3QgMC4wMSAwLjUpIChtYWtlLXZlY3QgMC41IDAuOTkpKQogICAg IChtYWtlLXNlZ21lbnQgKG1ha2UtdmVjdCAwLjUgMC45OSkgKG1ha2UtdmVjdCAwLjk5IDAuNSkp CiAgICAgKG1ha2Utc2VnbWVudCAobWFrZS12ZWN0IDAuOTkgMC41KSAobWFrZS12ZWN0IDAuNSAw LjAxKSkKICAgICAobWFrZS1zZWdtZW50IChtYWtlLXZlY3QgMC41IDAuMDEpIChtYWtlLXZlY3Qg MC4wMSAwLjUpKSkpKQojK2VuZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3Ro IDpyZXN1bHRzIHJhdyB2YWx1ZQogIDw8ZHJhdy1saW5lPj4KICA8PHBpY3Qtc2VnbWVudD4+CiAg PDxzZWdtZW50cy1wYWludGVyPj4KICA8PHBpY3QtdmVjdD4+CiAgPDxtYWtlLWZyYW1lPj4KICA8 PHBpY3QtZnJhbWU+PgogIDw8ZGlhbW9uZC1wYWludGVyPj4KCiAgKGRpYW1vbmQtcGFpbnRlcgog ICAobWFrZS1mcmFtZSAobWFrZS12ZWN0IDAgMCkgKG1ha2UtdmVjdCAwIDEpIChtYWtlLXZlY3Qg MSAwKSkpCiAgKGNhbnZhcy1yZWZyZXNoKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKW1suLzkwOTE4 ZGYxLWE4MDItNGRmNi1hMTBkLWFmYzUwNTQ3YmM3Mi5naWZdXQoKUmVtYXJrOiB0aGUgZXhlcmNp c2UgMi40OWQgaXMgYW1iaWd1b3VzLiBUaGUgIlVub2ZmaWNpYWwgVGV4aW5mbyBWZXJzaW9uIgpk aWZmZXJzIHdpdGggdGhlIG9mZmljaWFsIHBhcGVyIHZlcnNpb24gaW4gdGhpcyByZXNwZWN0LCBz aW5jZSBpbiB0aGUgcGFwZXIKdmVyc2lvbiB0aGUgd2F2aW5nIGZpZ3VyaW5lIGlzIGRyYXduIHdp dGggc2VnbWVudHMsIHdoZXJlYXMgdGhlIFVURiB1c2VzIGEKYml0bWFwLgpUaGlzIGlzIHRoZSBy b3VnaCBzb2x1dGlvbiB0byB0aGUgInNlZ21lbnQtYmFzZWQiIHZlcnNpb24uCgojK2JlZ2luX3Ny YyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIHdhdmUtc2Vn bWVudAooZGVmaW5lIHdhdmUgCiAgIChzZWdtZW50cy0+cGFpbnRlciAKICAgICAgICAobGlzdCAK ICAgICAgICAgICAgICAgKG1ha2Utc2VnbWVudCAobWFrZS12ZWN0IC4yNSAwKSAobWFrZS12ZWN0 IC4zNSAuNSkpIAogICAgICAgICAgICAgICAobWFrZS1zZWdtZW50IChtYWtlLXZlY3QgLjM1IC41 KSAobWFrZS12ZWN0IC4zIC42KSkgCiAgICAgICAgICAgICAgIChtYWtlLXNlZ21lbnQgKG1ha2Ut dmVjdCAuMyAuNikgKG1ha2UtdmVjdCAuMTUgLjQpKSAKICAgICAgICAgICAgICAgKG1ha2Utc2Vn bWVudCAobWFrZS12ZWN0IC4xNSAuNCkgKG1ha2UtdmVjdCAwIC42NSkpIAogICAgICAgICAgICAg ICAobWFrZS1zZWdtZW50IChtYWtlLXZlY3QgMCAuNjUpIChtYWtlLXZlY3QgMCAuODUpKSAKICAg ICAgICAgICAgICAgKG1ha2Utc2VnbWVudCAobWFrZS12ZWN0IDAgLjg1KSAobWFrZS12ZWN0IC4x NSAuNikpIAogICAgICAgICAgICAgICAobWFrZS1zZWdtZW50IChtYWtlLXZlY3QgLjE1IC42KSAo bWFrZS12ZWN0IC4zIC42NSkpIAogICAgICAgICAgICAgICAobWFrZS1zZWdtZW50IChtYWtlLXZl Y3QgLjMgLjY1KSAobWFrZS12ZWN0IC40IC42NSkpIAogICAgICAgICAgICAgICAobWFrZS1zZWdt ZW50IChtYWtlLXZlY3QgLjQgLjY1KSAobWFrZS12ZWN0IC4zNSAuODUpKSAKICAgICAgICAgICAg ICAgKG1ha2Utc2VnbWVudCAobWFrZS12ZWN0IC4zNSAuODUpIChtYWtlLXZlY3QgLjQgMSkpIAog ICAgICAgICAgICAgICAobWFrZS1zZWdtZW50IChtYWtlLXZlY3QgLjQgMSkgKG1ha2UtdmVjdCAu NiAxKSkgCiAgICAgICAgICAgICAgIChtYWtlLXNlZ21lbnQgKG1ha2UtdmVjdCAuNiAxKSAobWFr ZS12ZWN0IC42NSAuODUpKSAKICAgICAgICAgICAgICAgKG1ha2Utc2VnbWVudCAobWFrZS12ZWN0 IC42NSAuODUpIChtYWtlLXZlY3QgLjYgLjY1KSkgCiAgICAgICAgICAgICAgIChtYWtlLXNlZ21l bnQgKG1ha2UtdmVjdCAuNiAuNjUpIChtYWtlLXZlY3QgLjc1IC42NSkpIAogICAgICAgICAgICAg ICAobWFrZS1zZWdtZW50IChtYWtlLXZlY3QgLjc1IC42NSkgKG1ha2UtdmVjdCAxIC4zNSkpIAog ICAgICAgICAgICAgICAobWFrZS1zZWdtZW50IChtYWtlLXZlY3QgMSAuMzUpIChtYWtlLXZlY3Qg MSAuMTUpKSAKICAgICAgICAgICAgICAgKG1ha2Utc2VnbWVudCAobWFrZS12ZWN0IDEgLjE1KSAo bWFrZS12ZWN0IC42IC40NSkpIAogICAgICAgICAgICAgICAobWFrZS1zZWdtZW50IChtYWtlLXZl Y3QgLjYgLjQ1KSAobWFrZS12ZWN0IC43NSAwKSkgCiAgICAgICAgICAgICAgIChtYWtlLXNlZ21l bnQgKG1ha2UtdmVjdCAuNzUgMCkgKG1ha2UtdmVjdCAuNiAwKSkgCiAgICAgICAgICAgICAgICht YWtlLXNlZ21lbnQgKG1ha2UtdmVjdCAuNiAwKSAobWFrZS12ZWN0IC41IC4zKSkgCiAgICAgICAg ICAgICAgIChtYWtlLXNlZ21lbnQgKG1ha2UtdmVjdCAuNSAuMykgKG1ha2UtdmVjdCAuNCAwKSkg CiAgICAgICAgICAgICAgIChtYWtlLXNlZ21lbnQgKG1ha2UtdmVjdCAuNCAwKSAobWFrZS12ZWN0 IC4yNSAwKSkgCiAgICAgICAgKQogICApCikKIytlbmRfc3JjCgoKIytiZWdpbl9zcmMgc2NoZW1l IDpleHBvcnRzIGJvdGggOnJlc3VsdHMgcmF3IHZhbHVlCjw8cGljdC12ZWN0Pj4KPDxwaWN0LWZy YW1lPj4KPDxtYWdpY2stdmVjdD4+Cjw8bWFrZS1mcmFtZT4+Cjw8cGljdC1zZWdtZW50Pj4KPDxz ZWdtZW50cy1wYWludGVyPj4KPDx3YXZlLXNlZ21lbnQ+Pgo8PGRyYXctbGluZT4+Cih3YXZlICht YWtlLWZyYW1lIChtYWtlLXZlY3QgMC4wIDAuOSkgKG1ha2UtdmVjdCAwLjcgMCkgKG1ha2UtdmVj dCAwIC0wLjcpKSkKKGNhbnZhcy1yZWZyZXNoKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKW1suL2Q5 ZjA3MzFhLWEyNTctNDljZi1hNzFkLWY4ZDNhYjllMzNlZC5wbmddXQoKKioqIERPTkUgRXhlcmNp c2UgMi41MCBmbGlwLWhvcml6IGFuZCByb3RhdGUyNzAgYW5kIHJvdGF0ZTE4MAogICAgQ0xPU0VE OiBbMjAxOS0wOS0yMCBGcmkgMjM6MzddCjA6Mjc6MDAKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBv cnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiB0cmFuc2Zvcm0tcGFpbnRlcgogIChk ZWZpbmUgKHRyYW5zZm9ybS1wYWludGVyIHBhaW50ZXIgb3JpZ2luIGNvcm5lcjEgY29ybmVyMikK ICAgIChsYW1iZGEgKGZyYW1lKQogICAgICAobGV0ICgobSAoZnJhbWUtY29vcmQtbWFwIGZyYW1l KSkpCgkobGV0ICgobmV3LW9yaWdpbiAobSBvcmlnaW4pKSkKCSAgKHBhaW50ZXIgKG1ha2UtZnJh bWUKCQkgICAgbmV3LW9yaWdpbgoJCSAgICAoc3ViLXZlY3QgKG0gY29ybmVyMSkgbmV3LW9yaWdp bikKCQkgICAgKHN1Yi12ZWN0IChtIGNvcm5lcjIpIG5ldy1vcmlnaW4pKSkpKSkpCiMrZW5kX3Ny YwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2Vi LXJlZiBmbGlwLWhvcml6CiAgKGRlZmluZSAoZmxpcC1ob3JpeiBwYWludGVyKQogICAgKHRyYW5z Zm9ybS1wYWludGVyIHBhaW50ZXIKCQkgICAgICAgKG1ha2UtdmVjdCAxLjAgMC4wKQoJCSAgICAg ICAobWFrZS12ZWN0IDAuMCAwLjApCgkJICAgICAgIChtYWtlLXZlY3QgMS4wIDEuMCkpKQojK2Vu ZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHJhdyB2YWx1 ZQo8PGZsaXAtaG9yaXo+Pgo8PHBpY3QtdmVjdD4+Cjw8cGljdC1zZWdtZW50Pj4KPDxzZWdtZW50 cy1wYWludGVyPj4KPDx0cmFuc2Zvcm0tcGFpbnRlcj4+Cjw8bWFrZS1mcmFtZT4+Cjw8cGljdC1m cmFtZT4+Cjw8ZHJhdy1saW5lPj4KPDx3YXZlLXNlZ21lbnQ+PgooZGVmaW5lIGJsdHItbGluZS1w YWludGVyCiAgKHNlZ21lbnRzLT5wYWludGVyCiAgICAobGlzdAogICAgIChtYWtlLXNlZ21lbnQg KG1ha2UtdmVjdCAwLjAgMC4wMCkgKG1ha2UtdmVjdCAxIDEuMCkpKSkpCigoZmxpcC1ob3JpeiB3 YXZlKSAobWFrZS1mcmFtZSAobWFrZS12ZWN0IDAgMSkgKG1ha2UtdmVjdCAxIDApIChtYWtlLXZl Y3QgMCAtMSkpKQooY2FudmFzLXJlZnJlc2gpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgpbWy4vODY5 ZGUyZDMtNTVmNS00MjlhLWFkOWQtNDk0MTQwNWE4ZDczLnBuZ11dCgojK2JlZ2luX3NyYyBzY2hl bWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIHJvdGF0ZTE4MAogIChk ZWZpbmUgKHJvdGF0ZTE4MCBwYWludGVyKQogICAgKHRyYW5zZm9ybS1wYWludGVyIHBhaW50ZXIK CQkgICAgICAgKG1ha2UtdmVjdCAxLjAgMS4wKQoJCSAgICAgICAobWFrZS12ZWN0IDAuMCAxLjAp CgkJICAgICAgIChtYWtlLXZlY3QgMS4wIDAuMCkpKQojK2VuZF9zcmMKCiMrYmVnaW5fc3JjIHNj aGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHJhdyB2YWx1ZQo8PHJvdGF0ZTE4MD4+Cjw8cGlj dC12ZWN0Pj4KPDxwaWN0LXNlZ21lbnQ+Pgo8PHNlZ21lbnRzLXBhaW50ZXI+Pgo8PHRyYW5zZm9y bS1wYWludGVyPj4KPDxtYWtlLWZyYW1lPj4KPDxwaWN0LWZyYW1lPj4KPDxkcmF3LWxpbmU+Pgo8 PHdhdmUtc2VnbWVudD4+CihkZWZpbmUgbmUtYXJyb3ctcGFpbnRlcgogIChzZWdtZW50cy0+cGFp bnRlcgogICAgKGxpc3QKICAgICAobWFrZS1zZWdtZW50IChtYWtlLXZlY3QgMC4wIDAuMDApICht YWtlLXZlY3QgMC45IDAuOSkpCiAgICAgKG1ha2Utc2VnbWVudCAobWFrZS12ZWN0IDAuOSAwLjkp IChtYWtlLXZlY3QgMC45IDAuNykpCiAgICAgKG1ha2Utc2VnbWVudCAobWFrZS12ZWN0IDAuOSAw LjkpIChtYWtlLXZlY3QgMC43IDAuOSkpKSkpCiM7KG5lLWFycm93LXBhaW50ZXIgKG1ha2UtZnJh bWUgKG1ha2UtdmVjdCAwIDApIChtYWtlLXZlY3QgMCAxKSAobWFrZS12ZWN0IDEgMCkpKQooKHJv dGF0ZTE4MCB3YXZlKSAobWFrZS1mcmFtZSAobWFrZS12ZWN0IDAgMSkgKG1ha2UtdmVjdCAxIDAp IChtYWtlLXZlY3QgMCAtMSkpKQooY2FudmFzLXJlZnJlc2gpCiMrZW5kX3NyYwoKIytSRVNVTFRT OgpbWy4vNTE5ODYwNzItNDczZS00MjViLTk1OWEtMWJkODFmNDcxNDQ3LnBuZ11dCgojK2JlZ2lu X3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIHJvdGF0 ZTI3MAogIChkZWZpbmUgKHJvdGF0ZTI3MCBwYWludGVyKQogICAgKHRyYW5zZm9ybS1wYWludGVy IHBhaW50ZXIKCQkgICAgICAgKG1ha2UtdmVjdCAwLjAgMS4wKQoJCSAgICAgICAobWFrZS12ZWN0 IDAuMCAwLjApCgkJICAgICAgIChtYWtlLXZlY3QgMS4wIDEuMCkpKQojK2VuZF9zcmMKCgojK2Jl Z2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyByYXcgdmFsdWUKPDxwaWN0LXZl Y3Q+Pgo8PG1ha2UtZnJhbWU+Pgo8PHJvZ2Vycz4+Cjw8dHJhbnNmb3JtLXBhaW50ZXI+Pgo8PHBp Y3QtZnJhbWU+Pgo8PGRyYXctbGluZT4+Cjw8YmVzaWRlPj4KPDxiZWxvdy1iZXNpZGU+Pgo8PHJv dGF0ZTI3MD4+Cjw8cGljdC1zZWdtZW50Pj4KPDxzZWdtZW50cy1wYWludGVyPj4KPDx3YXZlLXNl Z21lbnQ+PgojOygoYmVsb3cgcm9nZXJzIHdhdmUpIChtYWtlLWZyYW1lIChtYWtlLXZlY3QgMC4w IDAuMCkgKG1ha2UtdmVjdCAxLjAgMC4wKSAobWFrZS12ZWN0IDAuMCAxLjApKSkKKChyb3RhdGUy NzAgd2F2ZSkgKG1ha2UtZnJhbWUgKG1ha2UtdmVjdCAwLjAgMS4wKSAobWFrZS12ZWN0IDEuMCAw LjApIChtYWtlLXZlY3QgMC4wIC0xLjApKSkKKGNhbnZhcy1yZWZyZXNoKQojK2VuZF9zcmMKCiMr UkVTVUxUUzoKW1suLzMzYTBiYjAxLWFhNTEtNDIwYy05NjRkLTczZDA4OTM4OGM2Yy5wbmddXQoK KioqIERPTkUgRXhlcmNpc2UgMi41MSBiZWxvdwogICAgQ0xPU0VEOiBbMjAxOS0wOS0yMiBTdW4g MTg6NTBdCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6 bm93ZWItcmVmIGJlc2lkZQogIChkZWZpbmUgKGJlc2lkZSBwYWludGVyMSBwYWludGVyMikKICAg IChsZXQgKChzcGxpdC1wb2ludCAobWFrZS12ZWN0IDAuNSAwLjApKSkKICAgICAgKGxldCAoKHBh aW50LWxlZnQKCSAgICAgKHRyYW5zZm9ybS1wYWludGVyCgkgICAgICBwYWludGVyMQoJICAgICAg KG1ha2UtdmVjdCAwLjAgMC4wKQoJICAgICAgc3BsaXQtcG9pbnQKCSAgICAgIChtYWtlLXZlY3Qg MC4wIDEuMCkpKQoJICAgIChwYWludC1yaWdodAoJICAgICAodHJhbnNmb3JtLXBhaW50ZXIKCSAg ICAgIHBhaW50ZXIyCgkgICAgICBzcGxpdC1wb2ludAoJICAgICAgKG1ha2UtdmVjdCAxLjAgMC4w KQoJICAgICAgKG1ha2UtdmVjdCAwLjUgMS4wKSkpKQoJKGxhbWJkYSAoZnJhbWUpCgkgIChwYWlu dC1sZWZ0IGZyYW1lKQoJICAocGFpbnQtcmlnaHQgZnJhbWUpKSkpKQojK2VuZF9zcmMKCiMrUkVT VUxUUzoKOiAjPHVuZGVmPgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3Vs dHMgdmFsdWUgOm5vd2ViLXJlZiBiZWxvdwogIChkZWZpbmUgKGJlbG93IHBhaW50ZXIxIHBhaW50 ZXIyKQogICAgKGxldCAoKHNwbGl0LXBvaW50IChtYWtlLXZlY3QgMC4wIDAuNSkpKQogICAgICAo bGV0ICgocGFpbnQtYm90dG9tCgkgICAgICh0cmFuc2Zvcm0tcGFpbnRlcgoJICAgICAgcGFpbnRl cjEKCSAgICAgIChtYWtlLXZlY3QgMC4wIDAuNSkKCSAgICAgIChtYWtlLXZlY3QgMS4wIDAuNSkK CSAgICAgIChtYWtlLXZlY3QgMC4wIDEuMCkpKQoJICAgIChwYWludC10b3AKCSAgICAgKHRyYW5z Zm9ybS1wYWludGVyCgkgICAgICBwYWludGVyMgoJICAgICAgKG1ha2UtdmVjdCAwLjAgMC4wKQoJ ICAgICAgKG1ha2UtdmVjdCAxLjAgMC4wKQoJICAgICAgc3BsaXQtcG9pbnQpKSkKCShsYW1iZGEg KGZyYW1lKQoJICAocGFpbnQtdG9wIGZyYW1lKQoJICAocGFpbnQtYm90dG9tIGZyYW1lKSkpKSkK CiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICM8dW5kZWY+CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4 cG9ydHMgYm90aCA6cmVzdWx0cyByYXcgdmFsdWUKPDxwaWN0LXZlY3Q+Pgo8PG1ha2UtZnJhbWU+ Pgo8PHdhdmUtc2VnbWVudD4+Cjw8cm9nZXJzPj4KPDxiZWxvdz4+Cjw8dHJhbnNmb3JtLXBhaW50 ZXI+Pgo8PHBpY3QtZnJhbWU+Pgo8PGRyYXctbGluZT4+CigoYmVsb3cgd2F2ZSB3YXZlKSAobWFr ZS1mcmFtZSAobWFrZS12ZWN0IDAuMCAwLjApIChtYWtlLXZlY3QgMS4wIDAuMCkgKG1ha2UtdmVj dCAwLjAgMS4wKSkpCihjYW52YXMtcmVmcmVzaCkKIytlbmRfc3JjCgojK1JFU1VMVFM6CltbLi8y NDg2OTg4MS05OGQ0LTRhNzItODdlOC04YjNjMDk1ZjQwOGMucG5nXV0KCiMrYmVnaW5fc3JjIHNj aGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpub3dlYi1yZWYgYmVsb3ctYmVzaWRl CiAgKGRlZmluZSAoYmVsb3cgcGFpbnRlcjEgcGFpbnRlcjIpCiAgICAocm90YXRlOTAgKGJlc2lk ZSAocm90YXRlMjcwIHBhaW50ZXIxKSAocm90YXRlMjcwIHBhaW50ZXIyKSkpKQojK2VuZF9zcmMK CiMrUkVTVUxUUzoKOiAjPHVuZGVmPgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGgg OnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiByb3RhdGU5MAogIChkZWZpbmUgKHJvdGF0ZTkwIHBh aW50ZXIpCiAgICAodHJhbnNmb3JtLXBhaW50ZXIgcGFpbnRlcgoJCSAgICAgICAobWFrZS12ZWN0 IDEuMCAwLjApCgkJICAgICAgIChtYWtlLXZlY3QgMS4wIDEuMCkKCQkgICAgICAgKG1ha2UtdmVj dCAwLjAgMC4wKSkpCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAjPHVuZGVmPgoKIytiZWdpbl9z cmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgcmF3IHZhbHVlCjw8cGljdC12ZWN0Pj4K PDxtYWtlLWZyYW1lPj4KPDxwaWN0LXNlZ21lbnQ+Pgo8PHNlZ21lbnRzLXBhaW50ZXI+Pgo8PHdh dmUtc2VnbWVudD4+Cjw8dHJhbnNmb3JtLXBhaW50ZXI+Pgo8PHBpY3QtZnJhbWU+Pgo8PGRyYXct bGluZT4+Cjw8bWFnaWNrLXZlY3Q+Pgo8PGJlc2lkZT4+Cjw8YmVsb3ctYmVzaWRlPj4KPDxyb3Rh dGUyNzA+Pgo8PHJvdGF0ZTkwPj4KKChiZWxvdyB3YXZlIHdhdmUpIChtYWtlLWZyYW1lIChtYWtl LXZlY3QgMC4wIDEuMCkgKG1ha2UtdmVjdCAxLjAgMC4wKSAobWFrZS12ZWN0IDAuMCAtMS4wKSkp CiM7KChyb3RhdGUyNzAgcm9nZXJzKSAobWFrZS1mcmFtZSAobWFrZS12ZWN0IDAuMCAwLjApICht YWtlLXZlY3QgMS4wIDAuMCkgKG1ha2UtdmVjdCAwLjAgMS4wKSkpCihjYW52YXMtcmVmcmVzaCkK IytlbmRfc3JjCgojK1JFU1VMVFM6CltbLi8xM2FlYzgwMS0wMTcxLTQ0OTctODQxYy01ZmE5YzYw M2M3M2IucG5nXV0KCgpSZW1hcms6IGltYWdlbWFnaWNrIGlzIGEgaG9ycmlibGUgcGllY2Ugb2Yg c29mdHdhcmUsIGV2ZW4gdGhvdWdoIHdlIGhhdmUKbm90aGluZyBiZXR0ZXIuIAoKKioqIERPTkUg RXhlcmNpc2UgMi41MiBtb2RpZnkgc3F1YXJlLWxpbWl0CiAgICBDTE9TRUQ6IFsyMDE5LTA5LTI0 IFR1ZSAxMjoyNV0KClRvIGNvbXBsZXRlIHRoaXMgZXhlcmNpc2UsIHdlIHdvdWxkIGZpcnN0IG5l ZWQgdG8gaW1wbGVtZW50IHRoZSBzcXVhcmUgbGltaXQuCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4 cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIHNxdWFyZS1saW1pdAogICAgKGRl ZmluZSAoc3F1YXJlLWxpbWl0IHBhaW50ZXIgbikKICAgICAgKGxldCAoKGNvbWJpbmU0IChzcXVh cmUtb2YtZm91ciBmbGlwLWhvcml6IGlkZW50aXR5CgkJCQkgICAgICByb3RhdGUxODAgZmxpcC12 ZXJ0KSkpCgkoY29tYmluZTQgKGNvcm5lci1zcGxpdCBwYWludGVyIG4pKSkpCgogICAgKGRlZmlu ZSAoc3F1YXJlLW9mLWZvdXIgdGwgdHIgYmwgYnIpCiAgICAgIChsYW1iZGEgKHBhaW50ZXIpCgko bGV0ICgodG9wIChiZXNpZGUgKHRsIHBhaW50ZXIpICh0ciBwYWludGVyKSkpCgkgICAgICAoYm90 dG9tIChiZXNpZGUgKGJsIHBhaW50ZXIpIChiciBwYWludGVyKSkpKQoJICAoYmVsb3cgYm90dG9t IHRvcCkpKSkKCiAgICAoZGVmaW5lIChjb3JuZXItc3BsaXQgcGFpbnRlciBuKQogICAgICAoaWYg KD0gbiAwKQoJICBwYWludGVyCgkgIChsZXQgKCh1cCAodXAtc3BsaXQgcGFpbnRlciAoLSBuIDEp KSkKCQkocmlnaHQgKHJpZ2h0LXNwbGl0IHBhaW50ZXIgKC0gbiAxKSkpKQoJICAgIChsZXQgKCh0 b3AtbGVmdCAoYmVzaWRlIHVwIHVwKSkKCQkgIChib3R0b20tcmlnaHQgKGJlbG93IHJpZ2h0IHJp Z2h0KSkKCQkgIChjb3JuZXIgKGNvcm5lci1zcGxpdCBwYWludGVyICgtIG4gMSkpKSkKCSAgICAg IChiZXNpZGUgKGJlbG93IHBhaW50ZXIgdG9wLWxlZnQpCgkJICAgICAgKGJlbG93IGJvdHRvbS1y aWdodCBjb3JuZXIpKSkpKSkKICAoZGVmaW5lIChmbGlwLXZlcnQgcGFpbnRlcikKICAgICh0cmFu c2Zvcm0tcGFpbnRlciBwYWludGVyCgkJICAgICAgIChtYWtlLXZlY3QgMC4wIDEuMCkKCQkgICAg ICAgKG1ha2UtdmVjdCAxLjAgMS4wKQoJCSAgICAgICAobWFrZS12ZWN0IDAuMCAwLjApKSkKICAo ZGVmaW5lIChpZGVudGl0eSB4KQogICAgeCkKIytlbmRfc3JjCgpCZWNhdXNlIHRoZSBleGVyY2lz ZSByZXF1aXJlcyBtb2RpZmljYXRpb24gb2YgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyAoYW5kIEkK ZG9uJ3Qgd2FudCB0byBhZHZpc2UgdGhlbSksIEknZCBqdXN0IHNwbGljZSBhbGwgdGhlIHNvdXJj ZSBjb2RlIGludG8gb25lIGJsb2NrLgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGgg OnJlc3VsdHMgcmF3IHZhbHVlCiAgICAoZGVmaW5lIChzcXVhcmUtbGltaXQgcGFpbnRlciBuKQog ICAgICAobGV0ICgoY29tYmluZTQgKHNxdWFyZS1vZi1mb3VyIGZsaXAtaG9yaXogaWRlbnRpdHkK CQkJCSAgICAgIHJvdGF0ZTE4MCBmbGlwLXZlcnQpKSkKCShjb21iaW5lNCAoY29ybmVyLXNwbGl0 IHBhaW50ZXIgbikpKSkKCiAgICAoZGVmaW5lIChzcXVhcmUtb2YtZm91ciB0bCB0ciBibCBicikK ICAgICAgKGxhbWJkYSAocGFpbnRlcikKCShsZXQgKCh0b3AgKGJlc2lkZSAoZmxpcC1ob3JpeiAo dGwgcGFpbnRlcikpICh0ciBwYWludGVyKSkpCgkgICAgICAoYm90dG9tIChiZXNpZGUgKGJsIHBh aW50ZXIpIChiciBwYWludGVyKSkpKQoJICAoYmVsb3cgYm90dG9tIHRvcCkpKSkKCiAgICAoZGVm aW5lIChjb3JuZXItc3BsaXQgcGFpbnRlciBuKQogICAgICAoaWYgKD0gbiAwKQoJICBwYWludGVy CgkgIChsZXQgKCh1cCAodXAtc3BsaXQgcGFpbnRlciAoLSBuIDEpKSkKCQkocmlnaHQgKHJpZ2h0 LXNwbGl0IHBhaW50ZXIgKC0gbiAxKSkpKQoJICAgIChsZXQgKCh0b3AtbGVmdCAoYmVzaWRlIHVw IHVwKSkKCQkgIChib3R0b20tcmlnaHQgKGJlbG93IHJpZ2h0IHJpZ2h0KSkKCQkgIChjb3JuZXIg KGNvcm5lci1zcGxpdCBwYWludGVyICgtIG4gMSkpKSkKCSAgICAgIChiZWxvdyAoYmVsb3cgcGFp bnRlciB0b3AtbGVmdCkKCQkgICAgICAoYmVsb3cgYm90dG9tLXJpZ2h0IGNvcm5lcikpKSkpKQog IChkZWZpbmUgKGZsaXAtdmVydCBwYWludGVyKQogICAgKHRyYW5zZm9ybS1wYWludGVyIHBhaW50 ZXIKCQkgICAgICAgKG1ha2UtdmVjdCAwLjAgMS4wKQoJCSAgICAgICAobWFrZS12ZWN0IDEuMCAx LjApCgkJICAgICAgIChtYWtlLXZlY3QgMC4wIDAuMCkpKQogIChkZWZpbmUgKGlkZW50aXR5IHgp CiAgICB4KQogIChkZWZpbmUgKG1ha2UtdmVjdCB4Y29yIHljb3IgLiBvKQogICAgKGFwcGVuZCAo bGlzdCB4Y29yKSAobGlzdCB5Y29yKSBvKSkKICAoZGVmaW5lICh4Y29yLXZlY3QgdmVjdCkKICAg IChjYXIgdmVjdCkpCiAgKGRlZmluZSAoeWNvci12ZWN0IHZlY3QpCiAgICAoY2FkciB2ZWN0KSkK ICAoZGVmaW5lIChzY2FsZS12ZWN0IHNjYWxlIHZlY3QpCiAgICAobWFwIChsYW1iZGEgKHgpICgq IHggc2NhbGUpKSB2ZWN0KSkKICAoZGVmaW5lIChhZGQtdmVjdCB2ZWMxIHZlYzIpCiAgICAobWFw IChsYW1iZGEgKGNvcjEgY29yMikgKCsgY29yMSBjb3IyKSkgdmVjMSB2ZWMyKSkKICAoZGVmaW5l IChzdWItdmVjdCB2ZWMxIHZlYzIpCiAgICAobWFwIChsYW1iZGEgKGNvcjEgY29yMikgKC0gY29y MSBjb3IyKSkgdmVjMSB2ZWMyKSkKICAoZGVmaW5lIChtYWtlLWZyYW1lIG9yaWdpbiBlZGdlMSBl ZGdlMikKICAgIChsaXN0IG9yaWdpbiBlZGdlMSBlZGdlMikpCiAgKGRlZmluZSAob3JpZ2luLWZy YW1lIGZyYW1lKQogICAgKGNhciBmcmFtZSkpCiAgKGRlZmluZSAoZWRnZTEtZnJhbWUgZnJhbWUp CiAgICAoY2FkciBmcmFtZSkpCiAgKGRlZmluZSAoZWRnZTItZnJhbWUgZnJhbWUpCiAgICAoY2Fk ZHIgZnJhbWUpKQogIChkZWZpbmUgKG1ha2Utc2VnbWVudCBzdGFydC12ZWN0b3IgZW5kLXZlY3Rv cikKICAgIChsaXN0IHN0YXJ0LXZlY3RvciBlbmQtdmVjdG9yKSkKICAoZGVmaW5lIChzdGFydC1z ZWdtZW50IHNlZ21lbnQpCiAgICAoY2FyIHNlZ21lbnQpKQogIChkZWZpbmUgKGVuZC1zZWdtZW50 IHNlZ21lbnQpCiAgICAoY2FkciBzZWdtZW50KSkKICAoZGVmaW5lIChzZWdtZW50cy0+cGFpbnRl ciBzZWdtZW50LWxpc3QpCiAgICAobGFtYmRhIChmcmFtZSkKICAgICAgKGZvci1lYWNoCiAgICAg ICAobGFtYmRhIChzZWdtZW50KQoJIChkcmF3LWxpbmUKCSAgKChmcmFtZS1jb29yZC1tYXAgZnJh bWUpCgkgICAoc3RhcnQtc2VnbWVudCBzZWdtZW50KSkKCSAgKChmcmFtZS1jb29yZC1tYXAgZnJh bWUpCgkgICAoZW5kLXNlZ21lbnQgc2VnbWVudCkpKSkKICAgICAgIHNlZ21lbnQtbGlzdCkpKQog IChkZWZpbmUgd2F2ZSAKICAgICAoc2VnbWVudHMtPnBhaW50ZXIgCgkgIChsaXN0IAoJCSAobWFr ZS1zZWdtZW50IChtYWtlLXZlY3QgLjI1IDApIChtYWtlLXZlY3QgLjM1IC41KSkgCgkJIChtYWtl LXNlZ21lbnQgKG1ha2UtdmVjdCAuMzUgLjUpIChtYWtlLXZlY3QgLjMgLjYpKSAKCQkgKG1ha2Ut c2VnbWVudCAobWFrZS12ZWN0IC4zIC42KSAobWFrZS12ZWN0IC4xNSAuNCkpIAoJCSAobWFrZS1z ZWdtZW50IChtYWtlLXZlY3QgLjE1IC40KSAobWFrZS12ZWN0IDAgLjY1KSkgCgkJIChtYWtlLXNl Z21lbnQgKG1ha2UtdmVjdCAwIC42NSkgKG1ha2UtdmVjdCAwIC44NSkpIAoJCSAobWFrZS1zZWdt ZW50IChtYWtlLXZlY3QgMCAuODUpIChtYWtlLXZlY3QgLjE1IC42KSkgCgkJIChtYWtlLXNlZ21l bnQgKG1ha2UtdmVjdCAuMTUgLjYpIChtYWtlLXZlY3QgLjMgLjY1KSkgCgkJIChtYWtlLXNlZ21l bnQgKG1ha2UtdmVjdCAuMyAuNjUpIChtYWtlLXZlY3QgLjQgLjY1KSkgCgkJIChtYWtlLXNlZ21l bnQgKG1ha2UtdmVjdCAuNCAuNjUpIChtYWtlLXZlY3QgLjM1IC44NSkpIAoJCSAobWFrZS1zZWdt ZW50IChtYWtlLXZlY3QgLjM1IC44NSkgKG1ha2UtdmVjdCAuNCAxKSkgCgkJIChtYWtlLXNlZ21l bnQgKG1ha2UtdmVjdCAuNCAxKSAobWFrZS12ZWN0IC42IDEpKSAKCQkgKG1ha2Utc2VnbWVudCAo bWFrZS12ZWN0IC42IDEpIChtYWtlLXZlY3QgLjY1IC44NSkpIAoJCSAobWFrZS1zZWdtZW50ICht YWtlLXZlY3QgLjY1IC44NSkgKG1ha2UtdmVjdCAuNiAuNjUpKSAKCQkgKG1ha2Utc2VnbWVudCAo bWFrZS12ZWN0IC42IC42NSkgKG1ha2UtdmVjdCAuNzUgLjY1KSkgCgkJIChtYWtlLXNlZ21lbnQg KG1ha2UtdmVjdCAuNzUgLjY1KSAobWFrZS12ZWN0IDEgLjM1KSkgCgkJIChtYWtlLXNlZ21lbnQg KG1ha2UtdmVjdCAxIC4zNSkgKG1ha2UtdmVjdCAxIC4xNSkpIAoJCSAobWFrZS1zZWdtZW50ICht YWtlLXZlY3QgMSAuMTUpIChtYWtlLXZlY3QgLjYgLjQ1KSkgCgkJIChtYWtlLXNlZ21lbnQgKG1h a2UtdmVjdCAuNiAuNDUpIChtYWtlLXZlY3QgLjc1IDApKSAKCQkgKG1ha2Utc2VnbWVudCAobWFr ZS12ZWN0IC43NSAwKSAobWFrZS12ZWN0IC42IDApKSAKCQkgKG1ha2Utc2VnbWVudCAobWFrZS12 ZWN0IC42IDApIChtYWtlLXZlY3QgLjUgLjMpKSAKCQkgKG1ha2Utc2VnbWVudCAobWFrZS12ZWN0 IC41IC4zKSAobWFrZS12ZWN0IC40IDApKSAKCQkgKG1ha2Utc2VnbWVudCAobWFrZS12ZWN0IC40 IDApIChtYWtlLXZlY3QgLjI1IDApKQogICAgICAgICAgICAgICAgIChtYWtlLXNlZ21lbnQgKG1h a2UtdmVjdCAwLjQ1IDAuNSkgKG1ha2UtdmVjdCAwLjUwIDAuNDUpKQogICAgICAgICAgICAgICAg IChtYWtlLXNlZ21lbnQgKG1ha2UtdmVjdCAwLjUgMC40NSkgKG1ha2UtdmVjdCAwLjU1IDAuNTAp KSAKCSAgKQogICAgICkKICApCiAgKGRlZmluZSAodHJhbnNmb3JtLXBhaW50ZXIgcGFpbnRlciBv cmlnaW4gY29ybmVyMSBjb3JuZXIyKQogICAgKGxhbWJkYSAoZnJhbWUpCiAgICAgIChsZXQgKCht IChmcmFtZS1jb29yZC1tYXAgZnJhbWUpKSkKCShsZXQgKChuZXctb3JpZ2luIChtIG9yaWdpbikp KQoJICAocGFpbnRlciAobWFrZS1mcmFtZQoJCSAgICBuZXctb3JpZ2luCgkJICAgIChzdWItdmVj dCAobSBjb3JuZXIxKSBuZXctb3JpZ2luKQoJCSAgICAoc3ViLXZlY3QgKG0gY29ybmVyMikgbmV3 LW9yaWdpbikpKSkpKSkKICAoZGVmaW5lIChmcmFtZS1jb29yZC1tYXAgZnJhbWUpCiAgICAobGFt YmRhICh2KQogICAgIChhZGQtdmVjdAogICAgICAgKG9yaWdpbi1mcmFtZSBmcmFtZSkKCSAgICAg IChhZGQtdmVjdCAoc2NhbGUtdmVjdCAoeGNvci12ZWN0IHYpIChlZGdlMS1mcmFtZSBmcmFtZSkp CgkJIChzY2FsZS12ZWN0ICh5Y29yLXZlY3QgdikgKGVkZ2UyLWZyYW1lIGZyYW1lKSkpKSkpCiAg KGRlZmluZSBjYW52YXMtc2l6ZQogICAgKG1ha2UtcGFyYW1ldGVyCiAgICAgMjAwCiAgICAgKGxh bWJkYSAoc2l6ZSkKICAgICAgIChpZiAoYW5kIChleGFjdC1pbnRlZ2VyPyBzaXplKSAoPD0gMiBz aXplIDEwMDApKQoJICAgc2l6ZQoJICAgKGVycm9yICJpbnZhbGlkIGNhbnZhcyBzaXplIikpKSkp CiAgKGRlZmluZSBjYW52YXMtZmlsZS1uYW1lCiAgICAgKG1ha2UtcGFyYW1ldGVyCgkoc3RyaW5n LWFwcGVuZCAiLi8iIChzdWJzdHJpbmcgKHByb2Nlc3MtPnN0cmluZyAidXVpZGdlbiIpIDAgMzYp ICIucG5nIikKCShsYW1iZGEgKG5hbWUpCgkgIChpZiAoc3RyaW5nPyBuYW1lKQoJICAgICAgbmFt ZQoJICAgICAgKGVycm9yICJpbnZhbGlkIGNhbnZhcyBmaWxlIG5hbWUiKSkpKSkKICAoZGVmaW5l IChjYW52YXMtcmVzZXQpCiAgICAoc3lzdGVtICJybSIgKGNhbnZhcy1maWxlLW5hbWUpKQogICAg KHN5c3RlbSAiY29udmVydCIgInhjOndoaXRlIgoJICAgICItc2NhbGUiIChzdHJpbmctYXBwZW5k CgkJICAgICAgKG51bWJlci0+c3RyaW5nIChjYW52YXMtc2l6ZSkpCgkJICAgICAgIngiCgkJICAg ICAgKG51bWJlci0+c3RyaW5nIChjYW52YXMtc2l6ZSkpKQoJICAgIChjYW52YXMtZmlsZS1uYW1l KSkpCiAgKGRlZmluZSAoY2FudmFzLXJlZnJlc2gpCiAgICAoc3RyaW5nLWFwcGVuZCAiW1siIChj YW52YXMtZmlsZS1uYW1lKSAiXV0iKSkKICAoY2FudmFzLXJlc2V0KQogIChkZWZpbmUgKGRyYXct bGluZSBwb2ludDEgcG9pbnQyKQogICAgKHN5c3RlbSAibW9ncmlmeSIKCSAgICAiLWZpbGwiICJi bGFjayIKCSAgICAiLWRyYXciIChzdHJpbmctYXBwZW5kICJsaW5lICIKCQkJCSAgIChudW1iZXIt PnN0cmluZyAoKiAoY2FudmFzLXNpemUpIChjYXIgcG9pbnQxKSkpCgkJCQkgICAiLCIKCQkJCSAg IChudW1iZXItPnN0cmluZyAoKiAoY2FudmFzLXNpemUpIChjYWRyIHBvaW50MSkpKQoJCQkJICAg IiAiCgkJCQkgICAobnVtYmVyLT5zdHJpbmcgKCogKGNhbnZhcy1zaXplKSAoY2FyIHBvaW50Mikp KQoJCQkJICAgIiwiCgkJCQkgICAobnVtYmVyLT5zdHJpbmcgKCogKGNhbnZhcy1zaXplKSAoY2Fk ciBwb2ludDIpKSkpCgkgICAgKGNhbnZhcy1maWxlLW5hbWUpKQogICAgKHN0cmluZy1hcHBlbmQg IltbIiAoY2FudmFzLWZpbGUtbmFtZSkgIl1dIikpCiAgKGRlZmluZSAoYmVzaWRlIHBhaW50ZXIx IHBhaW50ZXIyKQogICAgKGxldCAoKHNwbGl0LXBvaW50IChtYWtlLXZlY3QgMC41IDAuMCkpKQog ICAgICAobGV0ICgocGFpbnQtbGVmdAoJICAgICAodHJhbnNmb3JtLXBhaW50ZXIKCSAgICAgIHBh aW50ZXIxCgkgICAgICAobWFrZS12ZWN0IDAuMCAwLjApCgkgICAgICBzcGxpdC1wb2ludAoJICAg ICAgKG1ha2UtdmVjdCAwLjAgMS4wKSkpCgkgICAgKHBhaW50LXJpZ2h0CgkgICAgICh0cmFuc2Zv cm0tcGFpbnRlcgoJICAgICAgcGFpbnRlcjIKCSAgICAgIHNwbGl0LXBvaW50CgkgICAgICAobWFr ZS12ZWN0IDEuMCAwLjApCgkgICAgICAobWFrZS12ZWN0IDAuNSAxLjApKSkpCgkobGFtYmRhIChm cmFtZSkKCSAgKHBhaW50LWxlZnQgZnJhbWUpCgkgIChwYWludC1yaWdodCBmcmFtZSkpKSkpCiAg KGRlZmluZSAoYmVsb3cgcGFpbnRlcjEgcGFpbnRlcjIpCiAgICAocm90YXRlOTAgKGJlc2lkZSAo cm90YXRlMjcwIHBhaW50ZXIxKSAocm90YXRlMjcwIHBhaW50ZXIyKSkpKQogIChkZWZpbmUgKHJv dGF0ZTI3MCBwYWludGVyKQogICAgKHRyYW5zZm9ybS1wYWludGVyIHBhaW50ZXIKCQkgICAgICAg KG1ha2UtdmVjdCAwLjAgMS4wKQoJCSAgICAgICAobWFrZS12ZWN0IDAuMCAwLjApCgkJICAgICAg IChtYWtlLXZlY3QgMS4wIDEuMCkpKQogIChkZWZpbmUgKHJvdGF0ZTkwIHBhaW50ZXIpCiAgICAo dHJhbnNmb3JtLXBhaW50ZXIgcGFpbnRlcgoJCSAgICAgICAobWFrZS12ZWN0IDEuMCAwLjApCgkJ ICAgICAgIChtYWtlLXZlY3QgMS4wIDEuMCkKCQkgICAgICAgKG1ha2UtdmVjdCAwLjAgMC4wKSkp CgogIChkZWZpbmUgKHJvdGF0ZTE4MCBwYWludGVyKQogICAgKHRyYW5zZm9ybS1wYWludGVyIHBh aW50ZXIKCQkgICAgICAgKG1ha2UtdmVjdCAxLjAgMS4wKQoJCSAgICAgICAobWFrZS12ZWN0IDAu MCAxLjApCgkJICAgICAgIChtYWtlLXZlY3QgMS4wIDAuMCkpKQogIChkZWZpbmUgKHNwbGl0IG9w MSBvcDIpCiAgICAoZGVmaW5lIChzcGxpdC1pbm5lciBwYWludGVyIG4pCiAgICAgIChpZiAoPSBu IDApCiAgICAgIHBhaW50ZXIKICAgICAgKGxldCAoKHNtYWxsZXIgKHNwbGl0LWlubmVyIHBhaW50 ZXIgKC0gbiAxKSkpKQoJKG9wMiBwYWludGVyIChvcDEgc21hbGxlciBzbWFsbGVyKSkpKSkKICAg IChsYW1iZGEgKHBhaW50ZXIgbikKICAgICAgKHNwbGl0LWlubmVyIHBhaW50ZXIgbikpKQogIChk ZWZpbmUgdXAtc3BsaXQgKHNwbGl0IGJlc2lkZSBiZWxvdykpCiAgKGRlZmluZSByaWdodC1zcGxp dCAoc3BsaXQgYmVsb3cgYmVzaWRlKSkKICAoZGVmaW5lIChmbGlwLWhvcml6IHBhaW50ZXIpCiAg ICAodHJhbnNmb3JtLXBhaW50ZXIgcGFpbnRlcgoJCSAgICAgICAobWFrZS12ZWN0IDEuMCAwLjAp CgkJICAgICAgIChtYWtlLXZlY3QgMC4wIDAuMCkKCQkgICAgICAgKG1ha2UtdmVjdCAxLjAgMS4w KSkpCiAgKChzcXVhcmUtbGltaXQgd2F2ZSAxKSAobWFrZS1mcmFtZSAobWFrZS12ZWN0IDAuMCAx LjApIChtYWtlLXZlY3QgMS4wIDAuMCkgKG1ha2UtdmVjdCAwLjAgLTEuMCkpKQogIChjYW52YXMt cmVmcmVzaCkKIytlbmRfc3JjCgojK1JFU1VMVFM6CltbLi9mMmQxNmY5Ni1kZTE2LTQ1ZjctOWY3 Zi0xZTMxMzk3ZTRkNjEucG5nXV0KCiBhLiBJIGFkZGVkIGEgY2hlY2stbWFyayBhdCB0aGUgc2Vn bWVudHMtPnBhaW50ZXIgbGV2ZWwuCiBiLiBSZXBsYWNlZCB0aGUgbGFzdCB+YmVzaWRlfiB3aXRo IH5iZWxvd34gYXQgdGhlIGxvd2VzdCBsZXZlbC4KIGMuIEFkZGVkIGEgfmZsaXAtaG9yaXp+IGF0 IHRoZSBsZXZlbCBvZiB0aGUgfnNxdWFyZS1vZi1mb3Vyfi4KCioqKiBSZW1hcmsuIEhlcmUgdGhl IHBpY3R1cmUgbGFuZ3VhZ2UgY2hhcHRlciBzdG9wcwpUaGUgYml0bWFwIGxvYWRlciB1c2VkIGJ5 IHRoZSB+cm9nZXJzfiBwYWludGVyIGlzIG5vdCB2ZXJ5IHJlbGlhYmxlLCBzbyBpdAp3aWxsIG5v dCBwcm9iYWJseSBiZSBhYmxlIHRvIHJlcGxpY2F0ZSB0aGUgZnVsbCB+c3F1YXJlLWxpbWl0fi4g WW91IGNhbiB0cnkKdGhvdWdoLiAKKioqIERPTkUgRXhlcmNpc2UgMi41MyBxdW90ZSBpbnRyb2R1 Y3Rpb24KICAgIENMT1NFRDogWzIwMTktMDktMjQgVHVlIDEyOjM2XQojK2JlZ2luX3NyYyBzY2hl bWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKKHNob3cgI3QgKGxpc3QgJ2EgJ2IgJ2Mp ICJcbiIpCihzaG93ICN0IChsaXN0IChsaXN0ICdnZW9yZ2UpKSAiXG4iKQooc2hvdyAjdCAoY2Ry ICcoKHgxIHgyKSAoeTEgeTIpKSkgIlxuIikKKHNob3cgI3QgKGNhZHIgJygoeDEgeDIpICh5MSB5 MikpKSAiXG4iKQooc2hvdyAjdCAocGFpcj8gKGNhciAnKGEgc2hvcnQgbGlzdCkpKSAiXG4iKQoo c2hvdyAjdCAobWVtcSAncmVkICcoKHJlZCBzaG9lcykgKGJsdWUgc29ja3MpKSkgIlxuIikKKHNo b3cgI3QgKG1lbXEgJ3JlZCAnKHJlZCBzaG9lcyBibHVlIHNvY2tzKSkgIlxuIikKIytlbmRfc3Jj CgojK1JFU1VMVFM6CjogKGEgYiBjKQo6ICgoZ2VvcmdlKSkKOiAoKHkxIHkyKSkKOiAoeTEgeTIp CjogI2YKOiAjZgo6IChyZWQgc2hvZXMgYmx1ZSBzb2NrcykKCioqKiBET05FIEV4ZXJjaXNlIDIu NTQgZXF1YWw/IGltcGxlbWVudGF0aW9uCiAgICBDTE9TRUQ6IFsyMDE5LTA5LTI0IFR1ZSAxMzo0 OF0KIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpub3dl Yi1yZWYgZXF1YWwtaW1wbGVtZW50YXRpb24KICAoZGVmaW5lIChlcXVhbD8gbzEgbzIpCiAgICAo Y29uZCAoKGVxPyBvMSBvMikgI3QpCgkgICgoYW5kIChsaXN0PyBvMSkgKGxpc3Q/IG8yKSkgICAg IChhY2N1bXVsYXRlIChsYW1iZGEgKHggeSkgKGFuZCB4IHkpKSAjdCAobWFwIGVxdWFsPyBvMSBv MikpKQoJICAoKGFuZCAobnVtYmVyPyBvMSkgKG51bWJlcj8gbzIpKSAoPSBvMSBvMikpCgkgIChl bHNlICNmKSkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgoKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhw b3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PGFjY3VtdWxhdGU+PgoKPDxlcXVhbC1pbXBsZW1l bnRhdGlvbj4+Cgooc2hvdyAjdCAoZXF1YWw/ICcodGhpcyBpcyBhIGxpc3QpICcodGhpcyBpcyBh IGxpc3QpKSAiXG4iKQooc2hvdyAjdCAoZXF1YWw/ICcodGhpcyBpcyBhIGxpc3QpICcodGhpcyAo aXMgYSkgbGlzdCkpICJcbiIpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICN0CjogI2YKCioqKiBE T05FIEV4ZXJjaXNlIDIuNTUgcXVvdGUgcXVvdGUKICAgIENMT1NFRDogWzIwMTktMDktMjQgVHVl IDEzOjQ4XQpUaGlzIGlzIHJlYWxseSBlYXN5Lgp+KGNhciAnJ2FicmFjYWRhYnJhKX4gaXMgaW4g cmVhbGl0eSB+KGNhciAocXVvdGUgKHF1b3RlIGFicmFjYWRhYnJhKSkpfi4gVGhlCnNlY29uZCB+ J34gZ2V0cyBhdXRvbWF0aWNhbGx5IHRyYW5zbGF0ZWQgaW50byBhIH5xdW90ZX4gYW5kIGlzIG5v dCBpbnRlcnByZXRlZC4KKioqIERPTkUgRXhlcmNpc2UgMi41NiBkaWZmZXJlbnRpYXRpb24tZXhw b25lbnRpYXRpb24KICAgIENMT1NFRDogWzIwMTktMDktMjQgVHVlIDIzOjE0XQojK2JlZ2luX3Ny YyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIGRlcml2LWJh c2ljCiAgKGRlZmluZSAoZGVyaXYgZXhwIHZhcikKICAgIChjb25kICgobnVtYmVyPyBleHApIDAp CgkgICgodmFyaWFibGU/IGV4cCkgKGlmIChzYW1lLXZhcmlhYmxlPyBleHAgdmFyKSAxIDApKQoJ ICAoKHN1bT8gZXhwKSAobWFrZS1zdW0gKGRlcml2IChhZGRlbmQgZXhwKSB2YXIpCgkJCQkoZGVy aXYgKGF1Z2VuZCBleHApIHZhcikpKQoJICAoKHByb2R1Y3Q/IGV4cCkKCSAgIChtYWtlLXN1bQoJ ICAgIChtYWtlLXByb2R1Y3QgKG11bHRpcGxpZXIgZXhwKQoJCQkgIChkZXJpdiAobXVsdGlwbGlj YW5kIGV4cCkgdmFyKSkKCSAgICAobWFrZS1wcm9kdWN0IChkZXJpdiAobXVsdGlwbGllciBleHAp IHZhcikKCQkJICAobXVsdGlwbGljYW5kIGV4cCkpKSkKCSAgKGVsc2UKCSAgIChlcnJvciAidW5r bm93biBleHByZXNzaW9uIHR5cGU6IERFUklWIiBleHApKSkpCiMrZW5kX3NyYwoKIytiZWdpbl9z cmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBkZXJpdi1j b21wb25lbnRzCiAgKGRlZmluZSAodmFyaWFibGU/IHgpIChzeW1ib2w/IHgpKQogIChkZWZpbmUg KHNhbWUtdmFyaWFibGU/IHYxIHYyKQogICAgKGFuZCAodmFyaWFibGU/IHYxKSAodmFyaWFibGU/ IHYyKSAoZXE/IHYxIHYyKSkpCiAgKGRlZmluZSAoPW51bWJlcj8gZXhwIG51bSkKICAgIChhbmQg KG51bWJlcj8gZXhwKSAoPSBleHAgbnVtKSkpCiMrZW5kX3NyYwogIAojK2JlZ2luX3NyYyBzY2hl bWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIGRlcml2LW9wZXJhdGlv bnMKICAoZGVmaW5lIChtYWtlLXN1bSBhMSBhMiAuIHJlc3QpCiAgICAoY29uZCAoKD1udW1iZXI/ IGExIDApIGEyKQoJICAoKD1udW1iZXI/IGEyIDApIGExKQoJICAoKGFuZCAobnVtYmVyPyBhMSkg KG51bWJlcj8gYTIpKQoJICAgKCsgYTEgYTIpKQoJICAoZWxzZSAobGlzdCAnKyBhMSBhMikpKSkK ICAoZGVmaW5lIChtYWtlLXByb2R1Y3QgbTEgbTIpCiAgICAoY29uZCAoKG9yICg9bnVtYmVyPyBt MSAwKSAoPW51bWJlcj8gbTIgMCkpIDApCgkgICgoPW51bWJlcj8gbTEgMSkgbTIpCgkgICgoPW51 bWJlcj8gbTIgMSkgbTEpCgkgICgoYW5kIChudW1iZXI/IG0xKSAobnVtYmVyPyBtMikpICgqIG0x IG0yKSkKCSAgKGVsc2UgKGxpc3QgJyogbTEgbTIpKSkpCiAgKGRlZmluZSAoc3VtPyB4KSAoYW5k IChwYWlyPyB4KSAoZXE/IChjYXIgeCkgJyspKSkKICAoZGVmaW5lIChhZGRlbmQgcykgKGNhZHIg cykpCiAgKGRlZmluZSAoYXVnZW5kIHMpIChjYWRkciBzKSkKICAoZGVmaW5lIChwcm9kdWN0PyB4 KSAoYW5kIChwYWlyPyB4KSAoZXE/IChjYXIgeCkgJyopKSkKICAoZGVmaW5lIChtdWx0aXBsaWVy IHApIChjYWRyIHApKQogIChkZWZpbmUgKG11bHRpcGxpY2FuZCBwKSAoY2FkZHIgcCkpCgojK2Vu ZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8 PGRlcml2LWJhc2ljPj4KPDxkZXJpdi1jb21wb25lbnRzPj4KPDxkZXJpdi1vcGVyYXRpb25zPj4K KHNob3cgI3QgKGRlcml2ICcoKyB4IDMpICd4KSAiXG4iKQooc2hvdyAjdCAoZGVyaXYgJygqIHgg eSkgJ3gpICJcbiIpCihzaG93ICN0IChkZXJpdiAnKCogKCogeCB5KSAoKyB4IDMpKSAneCkgIlxu IikKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogMQo6IHkKOiAoKyAoKiB4IHkpICgqIHkgKCsgeCAz KSkpCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93 ZWItcmVmIGRlcml2LWFuZC1leHBvbmVudAoKICAoZGVmaW5lIChkZXJpdiBleHAgdmFyKQogICAg KGNvbmQgKChudW1iZXI/IGV4cCkgMCkKCSAgKCh2YXJpYWJsZT8gZXhwKSAoaWYgKHNhbWUtdmFy aWFibGU/IGV4cCB2YXIpIDEgMCkpCgkgICgoc3VtPyBleHApIChtYWtlLXN1bSAoZGVyaXYgKGFk ZGVuZCBleHApIHZhcikKCQkJCShkZXJpdiAoYXVnZW5kIGV4cCkgdmFyKSkpCgkgICgocHJvZHVj dD8gZXhwKQoJICAgKG1ha2Utc3VtCgkgICAgKG1ha2UtcHJvZHVjdCAKCSAgICAgKG11bHRpcGxp ZXIgZXhwKQoJICAgICAoZGVyaXYKCSAgICAgIChtdWx0aXBsaWNhbmQgZXhwKQoJICAgICAgdmFy KSkKCSAgICAobWFrZS1wcm9kdWN0CgkgICAgIChkZXJpdgoJICAgICAgKG11bHRpcGxpZXIgZXhw KQoJICAgICAgdmFyKQoJICAgICAobXVsdGlwbGljYW5kIGV4cCkpKSkKCSAgKChleHBvbmVudGlh dGlvbj8gZXhwKQoJICAgKG1ha2UtcHJvZHVjdCAoZXhwb25lbnQgZXhwKQoJCQkgKG1ha2UtcHJv ZHVjdAoJCQkgIChtYWtlLWV4cG9uZW50aWF0aW9uCgkJCSAgIChiYXNlIGV4cCkKCQkJICAgKG1h a2Utc3VtIChleHBvbmVudCBleHApIC0xKSkKCQkJICAoZGVyaXYgKGJhc2UgZXhwKSB2YXIpKSkp CgkgIChlbHNlCgkgICAoZXJyb3IgInVua25vd24gZXhwcmVzc2lvbiB0eXBlOiBERVJJViIgZXhw KSkpKQoKICAoZGVmaW5lIChtYWtlLWV4cG9uZW50aWF0aW9uIGJhc2UgcG93ZXIpCiAgICAoY29u ZCAoKD1udW1iZXI/IHBvd2VyIDApIDEpCgkgICgoPW51bWJlcj8gcG93ZXIgMSkgYmFzZSkKCSAg KChhbmQgKG51bWJlcj8gYmFzZSkgKG51bWJlcj8gcG93ZXIpKQoJICAgKGV4cHQgYmFzZSBwb3dl cikpCgkgIChlbHNlIChsaXN0ICcqKiBiYXNlIHBvd2VyKSkpKQogIChkZWZpbmUgKGV4cG9uZW50 aWF0aW9uPyB4KSAoYW5kIChwYWlyPyB4KSAoZXE/IChjYXIgeCkgJyoqKSkpCiAgKGRlZmluZSAo YmFzZSBzKSAoY2FkciBzKSkKICAoZGVmaW5lIChleHBvbmVudCBzKSAoY2FkZHIgcykpCgojK2Vu ZF9zcmMKCiMrUkVTVUxUUzoKOiAjPHVuZGVmPgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRz IGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8ZGVyaXYtYW5kLWV4cG9uZW50Pj4KPDxkZXJpdi1jb21w b25lbnRzPj4KPDxkZXJpdi1vcGVyYXRpb25zPj4KKHNob3cgI3QgKGRlcml2ICcoKiogeCAzKSAn eCkgIlxuIikKKHNob3cgI3QgKGRlcml2ICcoKiogKCogKCogeCB5KSAoKyB4IDMpKSA1KSAneCkg IlxuIikKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogKCogMyAoKiogeCAyKSkKOiAoKiA1ICgqICgq KiAoKiAoKiB4IHkpICgrIHggMykpIDQpICgrICgqIHggeSkgKCogeSAoKyB4IDMpKSkpKQoKKioq IERPTkUgRXhlcmNpc2UgMi41NyBkaWZmZXJlbnRpYXRlLXRocmVlLXN1bQogICAgQ0xPU0VEOiBb MjAxOS0wOS0yNSBXZWQgMTI6NDBdCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpy ZXN1bHRzIHZhbHVlIDpub3dlYi1yZWYgZGVyaXYtb3BlcmF0aW9ucy10aHJlZQogIChkZWZpbmUg KG1ha2Utc3VtIGExIGEyIC4gcmVzdCkKICAgIChpZiAobnVsbD8gcmVzdCkKCShjb25kICgoPW51 bWJlcj8gYTEgMCkgYTIpCgkgICAgICAoKD1udW1iZXI/IGEyIDApIGExKQoJICAgICAgKChhbmQg KG51bWJlcj8gYTEpIChudW1iZXI/IGEyKSkKCSAgICAgICAoKyBhMSBhMikpCgkgICAgICAoZWxz ZSAobGlzdCAnKyBhMSBhMikpKQoJKG1ha2Utc3VtIGExIChhcHBseSBtYWtlLXN1bSBhMiAoY2Fy IHJlc3QpIChjZHIgcmVzdCkpKSkpCiAgKGRlZmluZSAobWFrZS1wcm9kdWN0IG0xIG0yIC4gcmVz dCkKICAgIChpZiAobnVsbD8gcmVzdCkKCShjb25kICgob3IgKD1udW1iZXI/IG0xIDApICg9bnVt YmVyPyBtMiAwKSkgMCkKCSAgKCg9bnVtYmVyPyBtMSAxKSBtMikKCSAgKCg9bnVtYmVyPyBtMiAx KSBtMSkKCSAgKChhbmQgKG51bWJlcj8gbTEpIChudW1iZXI/IG0yKSkgKCogbTEgbTIpKQoJICAo ZWxzZSAobGlzdCAnKiBtMSBtMikpKQoJKG1ha2UtcHJvZHVjdCBtMSAoYXBwbHkgbWFrZS1wcm9k dWN0IG0yIChjYXIgcmVzdCkgKGNkciByZXN0KSkpKSkKICAoZGVmaW5lIChzdW0/IHgpIChhbmQg KHBhaXI/IHgpIChlcT8gKGNhciB4KSAnKykpKQogIChkZWZpbmUgKGFkZGVuZCBzKSAoY2FkciBz KSkKICAoZGVmaW5lIChhdWdlbmQgcykKICAgIChpZiAobnVsbD8gKGNkZGRyIHMpKQoJKGNhZGRy IHMpCgkoYXBwbHkgbWFrZS1zdW0gKGNkZHIgcykpKSkKICAoZGVmaW5lIChwcm9kdWN0PyB4KSAo YW5kIChwYWlyPyB4KSAoZXE/IChjYXIgeCkgJyopKSkKICAoZGVmaW5lIChtdWx0aXBsaWVyIHAp IChjYWRyIHApKQogIChkZWZpbmUgKG11bHRpcGxpY2FuZCBwKQogICAgKGlmIChudWxsPyAoY2Rk ZHIgcCkpCgkoY2FkZHIgcCkKCShhcHBseSBtYWtlLXByb2R1Y3QgKGNkZHIgcCkpKSkKCiMrZW5k X3NyYwoKIytSRVNVTFRTOgo6ICM8dW5kZWY+CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMg Ym90aCA6cmVzdWx0cyBvdXRwdXQKPDxkZXJpdi1hbmQtZXhwb25lbnQ+Pgo8PGRlcml2LWNvbXBv bmVudHM+Pgo8PGRlcml2LW9wZXJhdGlvbnMtdGhyZWU+Pgooc2hvdyAjdCAoZGVyaXYgJygqKiB4 IDMpICd4KSAiXG4iKQooc2hvdyAjdCAoZGVyaXYgJygqIHggeSB6KSAneSkgIlxuIikKKHNob3cg I3QgKGRlcml2ICcoKiogKCogKCogeCB5IHopICgrIHggMykpIDUpICd4KSAiXG4iKQojK2VuZF9z cmMKCiMrUkVTVUxUUzoKOiAoKiAzICgqKiB4IDIpKQo6ICgqIHggeikKOiAoKiA1ICgqICgqKiAo KiAoKiB4IHkgeikgKCsgeCAzKSkgNCkgKCsgKCogeCB5IHopICgqICgqIHkgeikgKCsgeCAzKSkp KSkKCioqKiBET05FIEV4ZXJjaXNlIDIuNTggaW5maXgtbm90YXRpb24KICAgIENMT1NFRDogWzIw MTktMDktMjUgV2VkIDE1OjIxXQoKVGhpcyBzb2x1dGlvbiBpcyBjb3BpZWQgZnJvbSBodHRwOi8v Y29tbXVuaXR5LnNjaGVtZXdpa2kub3JnLz9zaWNwLWV4Mi41OAphbG1vc3QgdmVyYmF0aW0uIENv dXJ0ZXN5IG9mIHNnbS4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRz IG91dHB1dAooZGVmaW5lIChzaW5nbGV0b24/IGxzdCkKICAoPSAxIChsZW5ndGggbHN0KSkpCihk ZWZpbmUgKHN1bT8gZXhwcikgCiAgIChlcT8gJysgKHNtYWxsZXN0LW9wIGV4cHIpKSkgCiAgCiAo ZGVmaW5lIChwcm9kdWN0PyBleHByKSAKICAgKGVxPyAnKiAoc21hbGxlc3Qtb3AgZXhwcikpKSAK KGRlZmluZSAoc21hbGxlc3Qtb3AgZXhwcikgCiAgIChhY2N1bXVsYXRlIChsYW1iZGEgKGEgYikg CiAgICAgICAgICAgICAgICAgKGlmIChvcGVyYXRvcj8gYikgCiAgICAgICAgICAgICAgICAgICAg IChtaW4tcHJlY2VkZW5jZSBhIGIpIAogICAgICAgICAgICAgICAgICAgICBhKSkgCiAgICAgICAg ICAgICAgICdtYXhvcCAKICAgICAgICAgICAgICAgZXhwcikpCihkZWZpbmUgKnByZWNlZGVuY2Ut dGFibGUqIAogICAnKCAobWF4b3AgLiAxMDAwMCkgCiAgICAgIChtaW5vcCAuIC0xMDAwMCkgCiAg ICAgICgrIC4gMCkgCiAgICAgICgqIC4gMSkgKSkgCiAgCiAoZGVmaW5lIChvcGVyYXRvcj8geCkg CiAgIChkZWZpbmUgKGxvb3Agb3AtcGFpcikgCiAgICAgKGNvbmQgKChudWxsPyBvcC1wYWlyKSAj ZikgCiAgICAgICAgICAgKChlcT8geCAoY2FhciBvcC1wYWlyKSkgI3QpIAogICAgICAgICAgIChl bHNlIChsb29wIChjZHIgb3AtcGFpcikpKSkpCiAgIChsb29wICpwcmVjZWRlbmNlLXRhYmxlKikp IAogKGRlZmluZSAobWluLXByZWNlZGVuY2UgYSBiKSAKICAgKGlmIChwcmVjZWRlbmNlPD8gYSBi KSAKICAgICAgIGEgCiAgICAgICBiKSkgICAKIChkZWZpbmUgKHByZWNlZGVuY2U8PyBhIGIpIAog ICAoPCAocHJlY2VkZW5jZSBhKSAocHJlY2VkZW5jZSBiKSkpIAogKGRlZmluZSAocHJlY2VkZW5j ZSBvcCkgCiAgIChkZWZpbmUgKGxvb3Agb3AtcGFpcikgCiAgICAgKGNvbmQgKChudWxsPyBvcC1w YWlyKSAKICAgICAgICAgICAgKGVycm9yICJPcGVyYXRvciBub3QgZGVmaW5lZCAtLSBQUkVDRURF TkNFOiIgb3ApKSAKICAgICAgICAgICAoKGVxPyBvcCAoY2FhciBvcC1wYWlyKSkgCiAgICAgICAg ICAgIChjZGFyIG9wLXBhaXIpKSAKICAgICAgICAgICAoZWxzZSAKICAgICAgICAgICAgKGxvb3Ag KGNkciBvcC1wYWlyKSkpKSkgCiAgIChsb29wICpwcmVjZWRlbmNlLXRhYmxlKikpIAooZGVmaW5l IChhdWdlbmQgZXhwcikgCiAgIChsZXQgKChhIChjZHIgKG1lbXEgJysgZXhwcikpKSkgCiAgICAg KGlmIChzaW5nbGV0b24/IGEpIAogICAgICAgICAoY2FyIGEpIAogICAgICAgICBhKSkpCgooZGVm aW5lIChwcmVmaXggc3ltIGxpc3QpIAogICAoaWYgKG9yIChudWxsPyBsaXN0KSAoZXE/IHN5bSAo Y2FyIGxpc3QpKSkgCiAgICAgICAnKCkgCiAgICAgICAoY29ucyAoY2FyIGxpc3QpIChwcmVmaXgg c3ltIChjZHIgbGlzdCkpKSkpIAogIAogKGRlZmluZSAoYWRkZW5kIGV4cHIpIAogICAobGV0ICgo YSAocHJlZml4ICcrIGV4cHIpKSkgCiAgICAgKGlmIChzaW5nbGV0b24/IGEpIAogICAgICAgICAo Y2FyIGEpIAogICAgICAgICBhKSkpIAooZGVmaW5lIChtYWtlLXN1bSBhMSBhMikgCiAgIChjb25k ICgoPW51bWJlcj8gYTEgMCkgYTIpIAogICAgICAgICAoKD1udW1iZXI/IGEyIDApIGExKSAKICAg ICAgICAgKChhbmQgKG51bWJlcj8gYTEpIChudW1iZXI/IGEyKSkgCiAgICAgICAgICAoKyBhMSBh MikpIAogICAgICAgICAoZWxzZSAobGlzdCBhMSAnKyBhMikpKSkgCihkZWZpbmUgKG11bHRpcGxp ZXIgZXhwcikgCiAgIChsZXQgKChtIChwcmVmaXggJyogZXhwcikpKSAKICAgICAoaWYgKHNpbmds ZXRvbj8gbSkgCiAgICAgICAgIChjYXIgbSkgCiAgICAgICAgIG0pKSkgCiAgCiAoZGVmaW5lICht dWx0aXBsaWNhbmQgZXhwcikgCiAgIChsZXQgKChtIChjZHIgKG1lbXEgJyogZXhwcikpKSkgCiAg ICAgKGlmIChzaW5nbGV0b24/IG0pIAogICAgICAgICAoY2FyIG0pIAogICAgICAgICBtKSkpIAog IAogKGRlZmluZSAobWFrZS1wcm9kdWN0IG0xIG0yKSAKICAgKGNvbmQgKCg9bnVtYmVyPyBtMSAx KSAgbTIpIAogICAgICAgICAoKD1udW1iZXI/IG0yIDEpICBtMSkgCiAgICAgICAgICgob3IgKD1u dW1iZXI/IG0xIDApICg9bnVtYmVyPyBtMiAwKSkgIDApIAogICAgICAgICAoKGFuZCAobnVtYmVy PyBtMSkgKG51bWJlcj8gbTIpKSAKICAgICAgICAgICgqIG0xIG0yKSkgCiAgICAgICAgIChlbHNl IChsaXN0IG0xICcqIG0yKSkpKQo8PGRlcml2LWNvbXBvbmVudHM+Pgo8PGRlcml2LWFuZC1leHBv bmVudD4+Cjw8YWNjdW11bGF0ZT4+Cgooc2hvdyAjdCAoc21hbGxlc3Qtb3AgJyh0ICsgaykpICJc biIpCihzaG93ICN0IChkZXJpdiAnKHggKyAzKSAneCkgIlxuIikgCihzaG93ICN0IChkZXJpdiAn KHggKiB5ICogKHggKyAzKSkgJ3gpICJcbiIpCihzaG93ICN0IChkZXJpdiAnKCh4ICogeSkgKiAo eCArIDMpKSAneCkgIlxuIikKKHNob3cgI3QgKGRlcml2ICcoeCAqICh5ICogKHggKyAzKSkpICd4 KSAiXG4iKQoKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogKwo6IDEKOiAoKHggKiB5KSArICh5ICog KHggKyAzKSkpCjogKCh4ICogeSkgKyAoeSAqICh4ICsgMykpKQo6ICgoeCAqIHkpICsgKHkgKiAo eCArIDMpKSkKCgpBcyBhIHNpZGUtbm90ZTogc29tZXRpbWVzIHBlb3BsZSBzYXkgdGhhdCBjb3B5 aW5nIG90aGVyIHBlb3BsZSdzIGNvZGUKcHJldmVudHMgdXMgZnJvbSBsZWFybmluZy4gSSBkaXNh Z3JlZS4gT25seSBjb3B5aW5nIHNnbSdzIGNvZGUgYWxsb3dlZCBtZSB0bwpmaW5kIGEgc2VyaW91 cyBidWcgaW4gbXkgaW1wbGVtZW50YXRpb24gb2YgImFjY3VtdWxhdGUiLiAKCioqKiBET05FIEV4 ZXJjaXNlIDIuNTkgdW5pb24tc2V0CiAgICBDTE9TRUQ6IFsyMDE5LTA5LTI1IFdlZCAyMjowMF0K CiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlIDpub3dlYi1y ZWYgZWxlbWVudC1vZi1zZXQKCiAgKGRlZmluZSAoZWxlbWVudC1vZi1zZXQ/IHggc2V0KQogICAg KGNvbmQgKChudWxsPyBzZXQpIGZhbHNlKQoJICAoKGVxdWFsPyB4IChjYXIgc2V0KSkgdHJ1ZSkK CSAgKGVsc2UgKGVsZW1lbnQtb2Ytc2V0PyB4IChjZHIgc2V0KSkpKSkKIytlbmRfc3JjCgojK2Jl Z2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIHVu aW9uLXNldAo8PGVsZW1lbnQtb2Ytc2V0Pj4KICAoZGVmaW5lICh1bmlvbi1zZXQgc2V0MSBzZXQy KQogICAgKGFwcGVuZCBzZXQxIChmaWx0ZXIgKGxhbWJkYSAoeCkgKG5vdCAoZWxlbWVudC1vZi1z ZXQ/IHggc2V0MSkpKSBzZXQyKSkpCgogIChkZWZpbmUgdHJ1ZSAjdCkKICAoZGVmaW5lIGZhbHNl ICNmKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAjPHVuZGVmPgoKIytiZWdpbl9zcmMgc2NoZW1l IDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8dW5pb24tc2V0Pj4KPDxmaWx0ZXI+Pgoo c2hvdyAjdCAiICIgKHVuaW9uLXNldCAnKDEgMiAzIDQpICcoMyA0IDUgNikpKQojK2VuZF9zcmMK CiMrUkVTVUxUUzoKOiAgKDEgMiAzIDQgNSA2KQoKKioqIERPTkUgRXhlcmNpc2UgMi42MCBkdXBs aWNhdGUtc2V0CiAgICBDTE9TRUQ6IFsyMDE5LTA5LTI1IFdlZCAyMjoxN10KCiMrYmVnaW5fc3Jj IHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAogIChkZWZpbmUgKGVsZW1lbnQt b2Ytc2V0PyB4IHNldCkKICAgIChjb25kICgobnVsbD8gc2V0KSBmYWxzZSkKCSAgKChlcXVhbD8g eCAoY2FyIHNldCkpIHRydWUpCgkgIChlbHNlIChlbGVtZW50LW9mLXNldD8geCAoY2RyIHNldCkp KSkpCiAgIzsoVGhlIGVsZW1lbnQtb2Ytc2V0PyBwcmVkaWNhdGUgc3RheXMgdGhlIHNhbWUpCiAg KGRlZmluZSAoYWRqb2luIHggc2V0KQogICAgKGNvbnMgeCBzZXQpKQoKICAoZGVmaW5lIChpbnRl cnNlY3Rpb24tc2V0IHNldDEgc2V0MikKICAgIChjb25kICgob3IgKG51bGw/IHNldDEpIChudWxs PyBzZXQyKSkgJygpKQoJICAoKGVsZW1lbnQtb2Ytc2V0PyAoY2FyIHNldDEpIHNldDIpCgkgICAo Y29ucyAoY2FyIHNldDEpIChpbnRlcnNlY3Rpb24tc2V0IChjZHIgc2V0MSkgc2V0MikpKQoJICAo ZWxzZSAoaW50ZXJzZWN0aW9uLXNldCAoY2RyIHNldDEpIHNldDIpKSkpCiAgIzsoVGhlIGludGVy c2VjdGlvbi1zZXQgc3RheXMgdGhlIHNhbWUsIG1vcmVvdmVyLCBldmVyeSB0aW1lIGl0IGlzIGNh bGxlZCwgCiAgdGhlIGR1cGxpY2F0ZXMgYXJlIHJlbW92ZWQuKQoKICAoZGVmaW5lICh1bmlvbi1z ZXQgc2V0MSBzZXQyKQogICAgKGFwcGVuZCBzZXQxIHNldDIpKQogIChkZWZpbmUgdHJ1ZSAjdCkK ICAoZGVmaW5lIGZhbHNlICNmKSAgCgogIChzaG93ICN0ICIgIiAoZWxlbWVudC1vZi1zZXQ/IDIg JygxIDIgMykpICJcbiIpCiAgKHNob3cgI3QgIiAiIChhZGpvaW4gMiAnKDEgMikpICJcbiIpCiAg KHNob3cgI3QgIiAiIChpbnRlcnNlY3Rpb24tc2V0ICcoMSAyIDMgNCA1KSAnKDIgMiAyIDIgMikp ICJcbiIpCiAgKHNob3cgI3QgIiAiICh1bmlvbi1zZXQgJygxIDIgMyA0IDUpICcoMSAyIDIgMiAy IDMgNCkpICJcbiIpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICAjdAo6ICAoMiAxIDIpCjogICgy KQo6ICAoMSAyIDMgNCA1IDEgMiAyIDIgMiAzIDQpCgpUaGUgZWZmaWNpZW5jeSBvZiB+ZWxlbWVu dC1vZi1zZXQ/fiBpcyBzdGlsbCBPKG4pLCBhbHRob3VnaCBvbiBhdmVyYWdlIHNldHMKd291bGQg YmUgbGFyZ2VyLiB+YWRqb2lufiB0YWtlcyBPKDEpLCBpbnN0ZWFkIG9mIE8obikuIH5pbnRlcnNl Y3Rpb24tc2V0fgp0YWtlcyB0aGUgc2FtZSBcKE8obl4yKVwpLCBhbHRob3VnaCBhZ2FpbiwgdGhl IHNldHMgbWF5IGJlIGxhcmdlci4gfnVuaW9uLXNldH4KdGFrZXMgXChPKDEpXCkgaW5zdGVhZCBv ZiBcKE8obl4yKVwpLCB3aGljaCBzb3VuZHMgZXZlbiB0b28gZ29vZCB0byBiZSB0cnVlLgoKV2Vs bCwgaWYgdGhlIGFtb3VudCBvZiBjYWxscyB0byB+aW50ZXJzZWN0aW9uLXNldH4gaXMgYmlnIGVu b3VnaCwgSSB0aGluawp0aGF0IHRoaXMgcmVwcmVzZW50YXRpb24gd291bGQgYmUgZ29vZCBlbm91 Z2gsIG9yIGV2ZW4gZmFzdGVyLgoKKioqIERPTkUgRXhlcmNpc2UgMi42MSBzZXRzIGFzIG9yZGVy ZWQgbGlzdHMKICAgIENMT1NFRDogWzIwMTktMDktMjYgVGh1IDIxOjQ0XQoKIytiZWdpbl9zcmMg c2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUKICAoZGVmaW5lIChhZGpvaW4tc2V0 IHggc2V0KQogICAgKGNvbmQgKChudWxsPyBzZXQpIHgpCgkgICgoPSB4IChjYXIgc2V0KSkgc2V0 KQoJICAoKDwgeCAoY2FyIHNldCkpIChjb25zIHggc2V0KSkKCSAgKGVsc2UgKGNvbnMgKGNhciBz ZXQpIChhZGpvaW4tc2V0IHggKGNkciBzZXQpKSkpKSkKICAoYWRqb2luLXNldCAzICcoMSAyIDQg NSkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgp8IDEgfCAyIHwgMyB8IDQgfCA1IHwKCioqKiBET05F IEV4ZXJjaXNlIDIuNjIgb3JkZXJlZC11bmlvbi1zZXQgKG9yZGVyZWQgbGlzdCkKICAgIENMT1NF RDogWzIwMTktMDktMjYgVGh1IDIxOjM4XQoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJv dGggOnJlc3VsdHMgcmF3IHZhbHVlIDpub3dlYi1yZWYgb3JkZXJlZC1zZXQKICAoZGVmaW5lIChl bGVtZW50LW9mLXNldD8geCBzZXQpCiAgICAoY29uZCAoKG51bGw/IHNldCkgZmFsc2UpCgkgICgo PSB4IChjYXIgc2V0KSkgdHJ1ZSkKCSAgKCg8IHggKGNhciBzZXQpKSBmYWxzZSkKCSAgKGVsc2Ug KGVsZW1lbnQtb2Ytc2V0PyB4IChjZHIgc2V0KSkpKSkKICAoZGVmaW5lIChpbnRlcnNlY3Rpb24t c2V0IHNldDEgc2V0MikKICAgIChpZiAob3IgKG51bGw/IHNldDEpIChudWxsPyBzZXQyKSkKCSco KQoJKGxldCAoKHgxIChjYXIgc2V0MSkpICh4MiAoY2FyIHNldDIpKSkKCSAgKGNvbmQgKCg9IHgx IHgyKQoJCSAoY29ucyB4MQoJCSAgICAgICAoaW50ZXJzZWN0aW9uLXNldCAoY2RyIHNldDEpCgkJ CQkJIChjZHIgc2V0MikpKSkKCQkoKDwgeDEgeDIpCgkJIChpbnRlcnNlY3Rpb24tc2V0IChjZHIg c2V0MSkgc2V0MikpCgkJKCg8IHgyIHgxKQoJCSAoaW50ZXJzZWN0aW9uLXNldCBzZXQxIChjZHIg c2V0MikpKSkpKSkKCiAgKGRlZmluZSAocmVtb3ZlLWR1cGxpY2F0ZXMtc2V0IHNldCkKICAgIChk ZWZpbmUgKHItZC1pdGVyIHNldCBhY2N1bXVsYXRvcikKICAgICAgKGNvbmQgKChudWxsPyBzZXQp IGFjY3VtdWxhdG9yKQoJICAgICgobnVsbD8gYWNjdW11bGF0b3IpIChyLWQtaXRlciAoY2RyIHNl dCkgKGNvbnMgKGNhciBzZXQpIGFjY3VtdWxhdG9yKSkpCgkgICAgKCg9IChjYXIgc2V0KSAoY2Fy IGFjY3VtdWxhdG9yKSkgKHItZC1pdGVyIChjZHIgc2V0KSBhY2N1bXVsYXRvcikpCgkgICAgKGVs c2UgKHItZC1pdGVyIChjZHIgc2V0KSAoY29ucyAoY2FyIHNldCkgYWNjdW11bGF0b3IpKSkpKQog ICAgKHJldmVyc2UgKHItZC1pdGVyIHNldCAnKCkpKSkKCgogIChkZWZpbmUgKHVuaW9uLXNldCBz ZXQxIHNldDIpCiAgICAoZGVmaW5lICh1bmlvbi1pdGVyIHNldDEgc2V0MiByZXN1bHQpCiAgICAg IChjb25kICgobnVsbD8gc2V0MSkgKGFwcGVuZCAocmV2ZXJzZSByZXN1bHQpIHNldDIpKQoJICAg ICgobnVsbD8gc2V0MikgKGFwcGVuZCAocmV2ZXJzZSByZXN1bHQpIHNldDEpKQoJICAgICgoPD0g KGNhciBzZXQxKSAoY2FyIHNldDIpKSAodW5pb24taXRlciAoY2RyIHNldDEpIHNldDIgKGNvbnMg KGNhciBzZXQxKSByZXN1bHQpKSkKCSAgICAoKDw9IChjYXIgc2V0MikgKGNhciBzZXQxKSkgKHVu aW9uLWl0ZXIgc2V0MSAoY2RyIHNldDIpIChjb25zIChjYXIgc2V0MikgcmVzdWx0KSkpKSkKICAg IChyZW1vdmUtZHVwbGljYXRlcy1zZXQgKHVuaW9uLWl0ZXIgc2V0MSBzZXQyICcoKSkpKQojK2Vu ZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHJhdyB2YWx1 ZSAKPDxvcmRlcmVkLXNldD4+Cihjb25zICh1bmlvbi1zZXQgJygxIDMgMTApICcoMSAyIDQgNSkp CihpbnRlcnNlY3Rpb24tc2V0ICcoMSAzIDEwKSAnKDEgMiA0IDUpKSkKIytlbmRfc3JjCgojK1JF U1VMVFM6CnwgKDEgMiAzIDQgNSAxMCkgfCAxIHwKCioqKiBUT0RPIEZpZ3VyZSAyLjE2IFZhcmlv dXMgYmluYXJ5IHRyZWVzIHRoYXQgcmVwcmVzZW50IHRoZSBzZXQgezEsMyw1LDcsOSwxMX0uCioq KiBET05FIEV4ZXJjaXNlIDIuNjMgdHJlZS0+bGlzdCAoYmluYXJ5IHNlYXJjaCB0cmVlKQogICAg Q0xPU0VEOiBbMjAxOS0wOS0yNiBUaHUgMjM6MzddCgpMZXQgbWUgY29weSB0aGUgdHdvIGNvZGUg cGllY2VzIGhlcmUsIEkgd2lsbCBuZWVkIHRoZW0gbGF0ZXIuCgojK2JlZ2luX3NyYyBzY2hlbWUg OmV4cG9ydHMgYm90aCA6cmVzdWx0cyByYXcgdmFsdWUKICAoZGVmaW5lICh0cmVlLT5saXN0LTEg dHJlZSkKICAgIChpZiAobnVsbD8gdHJlZSkKCScoKQoJKGFwcGVuZCAodHJlZS0+bGlzdC0xIChs ZWZ0LWJyYW5jaCB0cmVlKSkKCQkoY29ucyAoZW50cnkgdHJlZSkKCQkgICAgICAodHJlZS0+bGlz dC0xIChyaWdodC1icmFuY2ggdHJlZSkpKSkpKQojK2VuZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVt ZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHJhdyB2YWx1ZSA6bm93ZWItcmVmIHRyZWUtbGlzdAog IChkZWZpbmUgKHRyZWUtPmxpc3QtMiB0cmVlKQogICAgKGRlZmluZSAoY29weS10by1saXN0IHRy ZWUgcmVzdWx0LWxpc3QpCiAgICAgIChpZiAobnVsbD8gdHJlZSkKCSAgcmVzdWx0LWxpc3QKCSAg KGNvcHktdG8tbGlzdCAobGVmdC1icmFuY2ggdHJlZSkKCQkJKGNvbnMgKGVudHJ5IHRyZWUpCgkJ CSAgICAgIChjb3B5LXRvLWxpc3QgKHJpZ2h0LWJyYW5jaCB0cmVlKQoJCQkJCSAgICByZXN1bHQt bGlzdCkpKSkpCiAgICAoY29weS10by1saXN0IHRyZWUgJygpKSkKCiMrZW5kX3NyYwoKCiBhLiBU aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gZnVuY3Rpb25zIGlzIHRoZSBvcmRlciBvZiB0 cmF2ZXJzaW5nIHRoZQogdHJlZS4gVGhlIGZ1bmN0aW9uIH50cmVlLT5saXN0LTF+IHRyYXZlcnNl cyB0aGUgdHJlZSBmcm9tIHRoZSBsZWZ0LCB3aGVyZWFzCiB0aGUgZnVuY3Rpb24gfnRyZWUtPmxp c3QtMn4gZG9lcyBpdCBmcm9tIHRoZSByaWdodC4gVGhlIG91dGNvbWUgd291bGQgYmUgdGhlCiBz YW1lLCBhbmQgZm9yIHRoZSB0cmVlcyBvbiB0aGUgZmlndXJlIDIuMTYgd291bGQgZ2l2ZSB0aGUg c2FtZSBhbnN3ZXI6IAogficoMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEpfi4KIGIuIFRoZSBkaWZm ZXJlbmNlIGluIHBlcmZvcm1hbmNlIHdvdWxkIGJlIHNpZ25pZmljYW50LiBUaGUgZnVuY3Rpb24g MiB1c2VzCiB+Y29uc34sIHdoaWNoIHVzZXMgTygxKSBvcGVyYXRpb25zLCBzbyB0aGUgb3BwcHBy ZGVyIG9mIGdyb3d0aCBpcyB+TyhuKX4gaW4KIHRvdGFsLiB+YXBwZW5kfiBpbiB0aGUgZnVuY3Rp b24gMSB0YWtlcyBPKG4pIG9wZXJhdGlvbnMgaW4gdGhlIHdvcnN0IGNhc2UsCiB3aGljaCB3b3Vs ZCBtYWtlIHRoZSB0b3RhbCBjb21wbGV4aXR5IFwoTyhuXjIpXCkucAoqKiogRE9ORSBFeGVyY2lz ZSAyLjY0IGJhbGFuY2VkLXRyZWUKICAgIENMT1NFRDogWzIwMTktMDktMjkgU3VuIDE3OjIyXQoK Rmlyc3RseSwgSSB3YW50IHRvIHNlZSB3aGF0IGl0IGlzIGV4YWN0bHkgdGhhdCB0aGUgZnVuY3Rp b24gb3V0cHV0cy4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91 dHB1dCA6bm93ZWItcmVmIGxpc3QtdHJlZQogICAgIChkZWZpbmUgKGVudHJ5IHRyZWUpIChjYXIg dHJlZSkpCgogICAgIChkZWZpbmUgKGxlZnQtYnJhbmNoIHRyZWUpIChjYWRyIHRyZWUpKQoKICAg ICAoZGVmaW5lIChyaWdodC1icmFuY2ggdHJlZSkgKGNhZGRyIHRyZWUpKQoKICAgICAoZGVmaW5l IChtYWtlLXRyZWUgZW50cnkgbGVmdCByaWdodCkKICAgICAgIChsaXN0IGVudHJ5IGxlZnQgcmln aHQpKQoKCiAgKGRlZmluZSAobGlzdC0+dHJlZSBlbGVtZW50cykKICAgIChjYXIgKHBhcnRpYWwt dHJlZSBlbGVtZW50cyAobGVuZ3RoIGVsZW1lbnRzKSkpKQoKICAoZGVmaW5lIChwYXJ0aWFsLXRy ZWUgZWx0cyBuKQogICAgKGlmICg9IG4gMCkKCShjb25zICcoKSBlbHRzKQoJKGxldCAoKGxlZnQt c2l6ZSAocXVvdGllbnQgKC0gbiAxKSAyKSkpCgkgIChsZXQgKChsZWZ0LXJlc3VsdCAocGFydGlh bC10cmVlIGVsdHMgbGVmdC1zaXplKSkpCgkgICAgKGxldCAoKGxlZnQtdHJlZSAoY2FyIGxlZnQt cmVzdWx0KSkKCQkgIChub24tbGVmdC1lbHRzIChjZHIgbGVmdC1yZXN1bHQpKQoJCSAgKHJpZ2h0 LXNpemUgKC0gbiAoKyBsZWZ0LXNpemUgMSkpKSkKCSAgICAgIChsZXQgKCh0aGlzLWVudHJ5IChj YXIgbm9uLWxlZnQtZWx0cykpCgkJICAgIChyaWdodC1yZXN1bHQgKHBhcnRpYWwtdHJlZSAoY2Ry IG5vbi1sZWZ0LWVsdHMpCgkJCQkJCXJpZ2h0LXNpemUpKSkKCQkobGV0ICgocmlnaHQtdHJlZSAo Y2FyIHJpZ2h0LXJlc3VsdCkpCgkJICAgICAgKHJlbWFpbmluZy1lbHRzIChjZHIgcmlnaHQtcmVz dWx0KSkpCgkJICAoY29ucyAobWFrZS10cmVlIHRoaXMtZW50cnkgbGVmdC10cmVlIHJpZ2h0LXRy ZWUpCgkJCXJlbWFpbmluZy1lbHRzKSkpKSkpKSkKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hl bWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKPDxsaXN0LXRyZWU+Pgooc2hvdyAjdCAi ICIgKHByZXR0eSAobGlzdC0+dHJlZSAnKDEgMyA1IDcgOSAxMSkpKSkKIytlbmRfc3JjCgojK1JF U1VMVFM6CjogICg1ICgxICgpICgzICgpICgpKSkgKDkgKDcgKCkgKCkpICgxMSAoKSAoKSkpKQoK U2luY2UgSSBhbHJlYWR5IGdvdCB0aGUgcmVzdWx0LCBJIHdpbGwganVzdCBkcmF3IGl0LgoKICMr YmVnaW5fc3JjIHBsYW50dW1sIDpleHBvcnRzIGJvdGggOmZpbGUgZmlndXJlLTEtMS1kb3QucG5n CiBAc3RhcnRkb3QKIGdyYXBoIGcgewoJIG5vZGUgW3NoYXBlPXBsYWludGV4dF07CgkgQTEgW2xh YmVsPSI1Il07CgoJIEIxIFtsYWJlbD0iMSJdOwoKCSBCMyBbbGFiZWw9IjkiXTsKCgkgQzEgW2xh YmVsPSI3Il07CgkgQzIgW2xhYmVsPSIxMSJdOwogICAgICAgICBDMCBbbGFiZWw9IicoKSJdOwog ICAgICAgICBDMyBbbGFiZWw9IjMiXQoKIC8vIGVkZ2VzCgkgQTEgLS0gQjE7CgkgQTEgLS0gQjM7 CiAgICAgICAgIAogICAgICAgICBCMSAtLSBDMDsKICAgICAgICAgQjEgLS0gQzM7CgkgCiAgICAg ICAgICAKCSBCMyAtLSBDMTsKCSBCMyAtLSBDMjsKCSAKCSB7IHJhbms9c2FtZTsgQTEgfQoJIHsg cmFuaz1zYW1lOyBCMSBCMyB9IAoJIHsgcmFuaz1zYW1lOyBDMSBDMiBDMyB9CiB9IAogQGVuZGRv dAogIytlbmRfc3JjIAoKICMrUkVTVUxUUzoKIFtbZmlsZTpmaWd1cmUtMS0xLWRvdC5wbmddXQoK ICAgYS4gSG93IGV4YWN0bHkgZGlkIHRoaXMgdHJlZSBhcHBlYXI/IFRoZSBhbGdvcml0aG0gZ2l2 ZW4gYnkgQWJlbHNvbgphbmQgU3Vzc21hbiBpcyBhY3R1YWxseSBxdWl0ZSBzdHJhaWdodGZvcndh cmQ6IGRpdmlkZSBhIGxpc3QgaW50byB0d28Kcm91Z2hseSBlcXVhbCBwYXJ0cywgc2VwYXJhdGVk IGJ5IHRoZSBtaWRkbGUgZWxlbWVudCwgbWFrZSB0aGUgZWxlbWVudCBpbnRvIGEKbm9kZSwgYW5k IGF0dGFjaCB0aGUgcmlnaHQgYW5kIHRoZSBsZWZ0IHN1Yi1saXN0cyBvZiB0aGUgbGlzdCBhcyBp dHMgbGVmdCBhbmQKcmlnaHQgY2hpbGRyZW4uCgogICBiLiBUaGUgZnVuY3Rpb24gfnBhcnRpYWwt dHJlZX4gZG9lc24ndCBjb250YWluIGFueSBmdWxsIHBhc3NlcyB0aHJvdWdoIHRoZSBsaXN0LAp3 b3JrcyBpbiBjb25zdGFudCB0aW1lLCBhbmQgaXMgZXZhbHVhdGVkIG9uY2UgcGVyIG5vZGUuIFRo ZXJlZm9yZSB0aGUKY29tcGxleGl0eSBpcyBPKDEpLgoKKioqIERPTkUgRXhlcmNpc2UgMi42NSB0 cmVlLXVuaW9uLXNldAogICAgQ0xPU0VEOiBbMjAxOS0xMC0wOSBXZWQgMTI6MTNdCldlbGwsIEkg YW0gcmVxdWlyZWQgdG8gbWFrZSBhIHVuaW9uLXNldCBhbmQgYW4gaW50ZXJzZWN0aW9uLXNldC4K U28gZmFyLCB3ZSBoYXZlIHRoZSBvcGVyYXRpb25zIHRyZWUtPmxpc3QsIHdoaWNoIHdvcmtzIGlu IE8obik7IGxpc3QtPnRyZWUsCndoaWNoIHdvcmtzIGFzIE8obikgdG9vLCBhbmQgdW5pb24tc2V0 IGFuZCBpbnRlcnNlY3Rpb24tc2V0IGZvciBsaXN0LWJhc2VkCnNldCBpbXBsZW1lbnRhdGlvbnMs IHdoaWNoIGJvdGggd29yayBpbiBPKG4pLiBUaGUgc29sdXRpb24gdGhlbiBzZWVtcwpzdHJhaWdo dGZvcndhcmQuIAoKCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBy YXcgdmFsdWUgOm5vd2ViLXJlZiBzZXQtdHJlZQogIChkZWZpbmUgKHVuaW9uLXNldC10cmVlIHNl dDEgc2V0MikKICAgIChsaXN0LT50cmVlICh1bmlvbi1zZXQgKHRyZWUtPmxpc3QtMiBzZXQxKSAo dHJlZS0+bGlzdC0yIHNldDIpKSkpCgogIChkZWZpbmUgKGludGVyc2VjdGlvbi1zZXQtdHJlZSBz ZXQxIHNldDIpCiAgICAobGlzdC0+dHJlZSAoaW50ZXJzZWN0aW9uLXNldCAodHJlZS0+bGlzdC0y IHNldDEpICh0cmVlLT5saXN0LTIgc2V0MikpKSkKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hl bWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKPDxsaXN0LXRyZWU+Pgo8PHRyZWUtbGlz dD4+Cjw8b3JkZXJlZC1zZXQ+Pgo8PHNldC10cmVlPj4KCihzaG93ICN0ICh1bmlvbi1zZXQtdHJl ZSAobGlzdC0+dHJlZSAnKDEgMyAxMCkpIChsaXN0LT50cmVlICcoMSAyIDQgNSkpKSAiXG4iKQoo c2hvdyAjdCAoaW50ZXJzZWN0aW9uLXNldC10cmVlIChsaXN0LT50cmVlICcoMSAzIDEwKSkgKGxp c3QtPnRyZWUgJygxIDIgNCA1KSkpICJcbiIpCiAgIAojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAo MyAoMSAoKSAoMiAoKSAoKSkpICg1ICg0ICgpICgpKSAoMTAgKCkgKCkpKSkKOiAoMSAoKSAoKSkK CioqKiBET05FIEV4ZXJjaXNlIDIuNjYgdHJlZS1sb29rdXAKICAgIENMT1NFRDogWzIwMTktMTAt MDkgV2VkIDEzOjAzXQoKVGhlIGV4Y2VsbGVudCBwcm9wZXJ0eSBvZiB0aGUgfmxpc3QtPnRyZWV+ IHByb2NlZHVyZSBpcyB0aGF0IGlzIGFzc2VydHMgdGhhdAp0aGUgbGlzdCBnaXZlbiBhcyBhbiBh cmd1bWVudCBpcyBhbHJlYWR5IHNvcnRlZCBpbiBzb21lIHdheSBhcHByb3ByaWF0ZSBmb3IKdGhp cyByZXByZXNlbnRlZCBkYXRhLiBUaGVyZWZvcmUgd2UgY2FuIHVzZSB0aGUgZnVuY3Rpb24gdmVy YmF0aW0uCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyByYXcgdmFs dWUgOm5vd2ViLXJlZiB0cmVlLWxvb2t1cAogIChkZWZpbmUtcmVjb3JkLXR5cGUgZGljdC1lbnRy eS10eXBlCiAgKGRpY3QtZW50cnkgeCB5KQogIGRpY3QtZW50cnk/CiAgKHggZW50cnkta2V5KQog ICh5IGVudHJ5LXZhbHVlKSkKCiAgKGRlZmluZSAodHJlZS1sb29rdXAga2V5IGRpY3Rpb25hcnkp CiAgICAoY29uZCAoKG51bGw/IGRpY3Rpb25hcnkpICNmKQoJICAoKD0gKGVudHJ5LWtleSAoZW50 cnkgZGljdGlvbmFyeSkpIGtleSkgKGVudHJ5IGRpY3Rpb25hcnkpKQoJICAoKDw9IGtleSAoZW50 cnkta2V5IChlbnRyeSBkaWN0aW9uYXJ5KSkpICh0cmVlLWxvb2t1cCBrZXkgKGxlZnQtYnJhbmNo IGRpY3Rpb25hcnkpKSkKCSAgKCg+PSBrZXkgKGVudHJ5LWtleSAoZW50cnkgZGljdGlvbmFyeSkp KSAodHJlZS1sb29rdXAga2V5IChyaWdodC1icmFuY2ggZGljdGlvbmFyeSkpKQoJICAoZWxzZSAo ZXJyb3IgIkNvcnJ1cHQgZGljdGlvbmFyeSIpKSkpCgojK2VuZF9zcmMKCiMrYmVnaW5fc3JjIHNj aGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PGxpc3QtdHJlZT4+Cjw8dHJlZS1s b29rdXA+Pgooc2hvdyAjdCAiICIgKGxpc3QtPnRyZWUgKGxpc3QgKGRpY3QtZW50cnkgMSAnSm9o bikgKGRpY3QtZW50cnkgMiAnSmFtZXMpIChkaWN0LWVudHJ5IDMgJ0JhbG9vKSAoZGljdC1lbnRy eSA0ICdDYXJyeSkpKSAiXG4iKQooc2hvdyAjdCAiICIgKHRyZWUtbG9va3VwIDMgKGxpc3QtPnRy ZWUgKGxpc3QgKGRpY3QtZW50cnkgMSAnSm9obikgKGRpY3QtZW50cnkgMiAnSmFtZXMpIChkaWN0 LWVudHJ5IDMgJ0JhbG9vKSAoZGljdC1lbnRyeSA0ICdDYXJyeSkpKSkgIlxuIikKIytlbmRfc3Jj CgojK1JFU1VMVFM6CjogICh7ZGljdC1lbnRyeS10eXBlICM2MyAyIEphbWVzfSAoe2RpY3QtZW50 cnktdHlwZSAjNjMgMSBKb2hufSAoKSAoKSkgKHtkaWN0LWVudHJ5LXR5cGUgIzYzIDMgQmFsb299 ICgpICh7ZGljdC1lbnRyeS10eXBlICM2MyA0IENhcnJ5fSAoKSAoKSkpKQo6ICB7ZGljdC1lbnRy eS10eXBlICM2MyAzIEJhbG9vfQoKVGhpcyBleGVyY2lzZSB1c2VkIHRoZSByN3JzIH5kZWZpbmUt cmVjb3JkLXR5cGV+LiBJdCBpcyBub3Qgc3RyaWN0bHkKbmVjZXNzYXJ5IGhlcmUsIGJ1dCBJIHVz ZWQgaXQgZG8gYWRkIG1vcmUgImVuY2Fwc3VsYXRpb24iIHRvIHRoZSBkYXRhIGJhc2UuCioqKiBE T05FIEV4ZXJjaXNlIDIuNjcgSHVmZm1hbiBkZWNvZGUgYSBzaW1wbGUgbWVzc2FnZQogICAgQ0xP U0VEOiBbMjAxOS0xMC0wOSBXZWQgMjA6MjBdCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMg Ym90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIGh1ZmZtYW4tYmFzZQogICAgIChkZWZpbmUg KG1ha2UtbGVhZiBzeW1ib2wgd2VpZ2h0KQogICAgICAgKGxpc3QgJ2xlYWYgc3ltYm9sIHdlaWdo dCkpCgogICAgIChkZWZpbmUgKGxlYWY/IG9iamVjdCkKICAgICAgIChlcT8gKGNhciBvYmplY3Qp ICdsZWFmKSkKCiAgICAgKGRlZmluZSAoc3ltYm9sLWxlYWYgeCkgKGNhZHIgeCkpCgogICAgIChk ZWZpbmUgKHdlaWdodC1sZWFmIHgpIChjYWRkciB4KSkKCiAgICAgKGRlZmluZSAobWFrZS1jb2Rl LXRyZWUgbGVmdCByaWdodCkKICAgICAgIChsaXN0IGxlZnQKICAgICAgICAgICAgIHJpZ2h0CiAg ICAgICAgICAgICAoYXBwZW5kIChzeW1ib2xzIGxlZnQpIChzeW1ib2xzIHJpZ2h0KSkKICAgICAg ICAgICAgICgrICh3ZWlnaHQgbGVmdCkgKHdlaWdodCByaWdodCkpKSkKICAgICAoZGVmaW5lIChs ZWZ0LWJyYW5jaCB0cmVlKSAoY2FyIHRyZWUpKQoKICAgICAoZGVmaW5lIChyaWdodC1icmFuY2gg dHJlZSkgKGNhZHIgdHJlZSkpCgogICAgIChkZWZpbmUgKHN5bWJvbHMgdHJlZSkKICAgICAgIChp ZiAobGVhZj8gdHJlZSkKICAgICAgICAgICAobGlzdCAoc3ltYm9sLWxlYWYgdHJlZSkpCiAgICAg ICAgICAgKGNhZGRyIHRyZWUpKSkKCiAgICAgKGRlZmluZSAod2VpZ2h0IHRyZWUpCiAgICAgICAo aWYgKGxlYWY/IHRyZWUpCiAgICAgICAgICAgKHdlaWdodC1sZWFmIHRyZWUpCiAgICAgICAgICAg KGNhZGRkciB0cmVlKSkpCiAgICAgKGRlZmluZSAoZGVjb2RlIGJpdHMgdHJlZSkKICAgICAgIChk ZWZpbmUgKGRlY29kZS0xIGJpdHMgY3VycmVudC1icmFuY2gpCiAgICAgICAgIChpZiAobnVsbD8g Yml0cykKICAgICAgICAgICAgICcoKQogICAgICAgICAgICAgKGxldCAoKG5leHQtYnJhbmNoCiAg ICAgICAgICAgICAgICAgICAgKGNob29zZS1icmFuY2ggKGNhciBiaXRzKSBjdXJyZW50LWJyYW5j aCkpKQogICAgICAgICAgICAgICAoaWYgKGxlYWY/IG5leHQtYnJhbmNoKQogICAgICAgICAgICAg ICAgICAgKGNvbnMgKHN5bWJvbC1sZWFmIG5leHQtYnJhbmNoKQogICAgICAgICAgICAgICAgICAg ICAgICAgKGRlY29kZS0xIChjZHIgYml0cykgdHJlZSkpCiAgICAgICAgICAgICAgICAgICAoZGVj b2RlLTEgKGNkciBiaXRzKSBuZXh0LWJyYW5jaCkpKSkpCiAgICAgICAoZGVjb2RlLTEgYml0cyB0 cmVlKSkKCiAgICAgKGRlZmluZSAoY2hvb3NlLWJyYW5jaCBiaXQgYnJhbmNoKQogICAgICAgKGNv bmQgKCg9IGJpdCAwKSAobGVmdC1icmFuY2ggYnJhbmNoKSkKICAgICAgICAgICAgICgoPSBiaXQg MSkgKHJpZ2h0LWJyYW5jaCBicmFuY2gpKQogICAgICAgICAgICAgKGVsc2UgKGVycm9yICJiYWQg Yml0IC0tIENIT09TRS1CUkFOQ0giIGJpdCkpKSkKICAgICAoZGVmaW5lIChhZGpvaW4tc2V0IHgg c2V0KQogICAgICAgKGNvbmQgKChudWxsPyBzZXQpIChsaXN0IHgpKQogICAgICAgICAgICAgKCg8 ICh3ZWlnaHQgeCkgKHdlaWdodCAoY2FyIHNldCkpKSAoY29ucyB4IHNldCkpCiAgICAgICAgICAg ICAoZWxzZSAoY29ucyAoY2FyIHNldCkKICAgICAgICAgICAgICAgICAgICAgICAgIChhZGpvaW4t c2V0IHggKGNkciBzZXQpKSkpKSkKICAgICAoZGVmaW5lIChtYWtlLWxlYWYtc2V0IHBhaXJzKQog ICAgICAgKGlmIChudWxsPyBwYWlycykKICAgICAgICAgICAnKCkKICAgICAgICAgICAobGV0ICgo cGFpciAoY2FyIHBhaXJzKSkpCiAgICAgICAgICAgICAoYWRqb2luLXNldCAobWFrZS1sZWFmIChj YXIgcGFpcikgICAgIzsoc3ltYm9sKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoY2FkciBwYWlyKSkgICM7KGZyZXF1ZW5jeSkKICAgICAgICAgICAgICAgICAgICAgICAgICht YWtlLWxlYWYtc2V0IChjZHIgcGFpcnMpKSkpKSkKCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICM8 dW5kZWY+CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6 bm93ZWItcmVmIGh1ZmZtYW4tc2FtcGxlLXRyZWUKICAoZGVmaW5lIHNhbXBsZS10cmVlCiAgICAo bWFrZS1jb2RlLXRyZWUgKG1ha2UtbGVhZiAnQSA0KQoJCSAgICAobWFrZS1jb2RlLXRyZWUKCQkg ICAgIChtYWtlLWxlYWYgJ0IgMikKCQkgICAgIChtYWtlLWNvZGUtdHJlZSAobWFrZS1sZWFmICdE IDEpCgkJCQkgICAgIChtYWtlLWxlYWYgJ0MgMSkpKSkpCiAgKGRlZmluZSBzYW1wbGUtbWVzc2Fn ZSAnKDAgMSAxIDAgMCAxIDAgMSAwIDEgMSAxIDApKQoKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBz Y2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZQoKPDxodWZmbWFuLWJhc2U+Pgo8PGh1 ZmZtYW4tc2FtcGxlLXRyZWU+PgogIChkZWNvZGUgc2FtcGxlLW1lc3NhZ2Ugc2FtcGxlLXRyZWUp CiMrZW5kX3NyYwoKIytSRVNVTFRTOgp8IEEgfCBEIHwgQSB8IEIgfCBCIHwgQyB8IEEgfAoKVGhp cyBpcyBhIHJhdGhlciBlYXN5IGV4ZXJjaXNlLCB3aG8ncyBtYWluIGdvYWwgaXMgdG8gbWFrZSB1 cyB0ZXN0IHRoYXQgdGhlCmNoYXB0ZXIgY29kZSBpcyBhY3R1YWxseSB3b3JraW5nLgoKKioqIERP TkUgRXhlcmNpc2UgMi42OCBIdWZmbWFuIGVuY29kZSBhIHNpbXBsZSBtZXNzYWdlCiAgICBDTE9T RUQ6IFsyMDE5LTEwLTA5IFdlZCAyMDo1M10KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBi b3RoIDpyZXN1bHRzIHJhdyB2YWx1ZSA6bm93ZWItcmVmIGh1ZmZtYW4tZW5jb2RlCgkoZGVmaW5l IChlbmNvZGUgbWVzc2FnZSB0cmVlKQoJICAoaWYgKG51bGw/IG1lc3NhZ2UpCgkgICAgICAnKCkK CSAgICAgIChhcHBlbmQgKGVuY29kZS1zeW1ib2wgKGNhciBtZXNzYWdlKSB0cmVlKQoJCSAgICAg IChlbmNvZGUgKGNkciBtZXNzYWdlKSB0cmVlKSkpKQoJKGRlZmluZSAoZW5jb2RlLXN5bWJvbCBz eW1ib2wgdHJlZSkKCSAgKGNvbmQgKChub3QgKGVsZW1lbnQtb2Ytc2V0PyBzeW1ib2wgKHN5bWJv bHMgdHJlZSkpKQoJCSAoZXJyb3IgIkVycm9yOiBIdWZmbWFuIHRyZWUgZG9lcyBub3Qgc3VwcG9y dCBlbmNvZGluZyBzeW1ib2wiIHN5bWJvbCkpCgkJKChsZWFmPyB0cmVlKSAnKCkpCgkJKChlbGVt ZW50LW9mLXNldD8gc3ltYm9sIChzeW1ib2xzIChsZWZ0LWJyYW5jaCB0cmVlKSkpIChjb25zIDAg KGVuY29kZS1zeW1ib2wgc3ltYm9sIChsZWZ0LWJyYW5jaCB0cmVlKSkpKQoJCSgoZWxlbWVudC1v Zi1zZXQ/IHN5bWJvbCAoc3ltYm9scyAocmlnaHQtYnJhbmNoIHRyZWUpKSkgKGNvbnMgMSAoZW5j b2RlLXN5bWJvbCBzeW1ib2wgKHJpZ2h0LWJyYW5jaCB0cmVlKSkpKSkpCgkgICAgICAKIytlbmRf c3JjCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZQooZGVm aW5lIHRydWUgI3QpCihkZWZpbmUgZmFsc2UgI2YpCjw8aHVmZm1hbi1iYXNlPj4KPDxodWZmbWFu LWVuY29kZT4+Cjw8ZWxlbWVudC1vZi1zZXQ+Pgo8PGh1ZmZtYW4tc2FtcGxlLXRyZWU+PgooZW5j b2RlIChsaXN0ICdBICAnRCAgJ0EgICdCICAnQiAgJ0MgICdBKSBzYW1wbGUtdHJlZSkKIytlbmRf c3JjCgojK1JFU1VMVFM6CnwgMCB8IDEgfCAxIHwgMCB8IDAgfCAxIHwgMCB8IDEgfCAwIHwgMSB8 IDEgfCAxIHwgMCB8CgpNeSBpbXBsZW1lbnRhdGlvbiBvZiBlbmNvZGUtc3ltYm9sIGlzIG5vdCBp dGVyYXRpdmUsIGJ1dCBmb3IgZWR1Y2F0aW9uYWwKcHVycG9zZXMgaXQgc2hvdWxkIGJlIGVub3Vn aC4KCioqKiBET05FIEV4ZXJjaXNlIDIuNjkgR2VuZXJhdGUgSHVmZm1hbiB0cmVlCiAgICBDTE9T RUQ6IFsyMDE5LTEwLTEwIFRodSAxMToyOF0KCkkgc3BlbnQgYW4gaG91ciB0cnlpbmcgdG8gZGVi dWcgd2h5IG15IGNvZGUgZG9lc24ndCB3b3JrLCBhbmQgaXQgdHVybnMgb3V0CnRoYXQgYWx0aG91 Z2ggQWJlbHNvbiBhbmQgU3Vzc21hbiB1c2UgdGhlIHdvcmQgInBhaXIiIGZvciB0aGUgKHN5bWJv bCwKd2VpZ2h0KSB0dXBsZXMsIHRoZXkgYXJlIGFjdHVhbGx5IGxpc3RzLgoKIytiZWdpbl9zcmMg c2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBodWZmbWFuLWdl bmVyYXRlLXRyZWUKICAgICAoZGVmaW5lIChnZW5lcmF0ZS1odWZmbWFuLXRyZWUgcGFpcnMpCiAg ICAgICAoc3VjY2Vzc2l2ZS1tZXJnZSAobWFrZS1sZWFmLXNldCBwYWlycykpKQogICAgICM7KGxl YWYtc2V0IGlzIHNvcnRlZCBieSB3ZWlnaHQpCiAgICAgKGRlZmluZSAoc3VjY2Vzc2l2ZS1tZXJn ZSBsZWFmLXNldCkKICAgICAgIChjb25kICgobnVsbD8gbGVhZi1zZXQpICcoKSkKCSAgICAgKChu dWxsPyAoY2RyIGxlYWYtc2V0KSkgKGNhciBsZWFmLXNldCkpCgkgICAgIChlbHNlIChzdWNjZXNz aXZlLW1lcmdlIChhZGpvaW4tc2V0CgkJCQkgICAgICAobWFrZS1jb2RlLXRyZWUKCQkJCSAgICAg ICAoY2FyIGxlYWYtc2V0KQoJCQkJICAgICAgIChjYWRyIGxlYWYtc2V0KSkKCQkJCSAgICAgIChj ZGRyIGxlYWYtc2V0KSkpKSkpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRz IGJvdGggOnJlc3VsdHMgb3V0cHV0CihkZWZpbmUgdHJ1ZSAjdCkKKGRlZmluZSBmYWxzZSAjZikK PDxodWZmbWFuLWJhc2U+Pgo8PGh1ZmZtYW4tZW5jb2RlPj4KPDxlbGVtZW50LW9mLXNldD4+Cjw8 aHVmZm1hbi1zYW1wbGUtdHJlZT4+Cjw8aHVmZm1hbi1nZW5lcmF0ZS10cmVlPj4KKGRlZmluZSBw YWlycyAobGlzdCAobGlzdCAnQSA0KSAobGlzdCAnQiAyKSAobGlzdCAnQyAxKSAobGlzdCAnRCAx KSkpCm4jOyhnZW5lcmF0ZS1odWZmbWFuLXRyZWUgKGxpc3QgKGNvbnMgJ0EgNCkgKGNvbnMgJ0Ig MikgKGNvbnMgJ0MgMSkgKGNvbnMgJ0QgMSkpKQojbjsobWFrZS1sZWFmLXNldCBwYWlycykKKHNo b3cgI3QgICJTYW1wbGUtdHJlZToiIChwcmV0dHkgKGdlbmVyYXRlLWh1ZmZtYW4tdHJlZSBwYWly cykpICJcbiIpCihzaG93ICN0ICAiT3VyIHRyZWUgICA6IiAocHJldHR5IHNhbXBsZS10cmVlKSAi XG4iKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKIytiZWdpbl9leGFtcGxlClNhbXBsZS10cmVlOigo bGVhZiBBIDQpCiAgICAgICAgICAgICAoKGxlYWYgQiAyKSAoKGxlYWYgRCAxKSAobGVhZiBDIDEp IChEIEMpIDIpIChCIEQgQykgNCkKICAgICAgICAgICAgIChBIEIgRCBDKQogICAgICAgICAgICAg OCkKCk91ciB0cmVlICAgOigobGVhZiBBIDQpCiAgICAgICAgICAgICAoKGxlYWYgQiAyKSAoKGxl YWYgRCAxKSAobGVhZiBDIDEpIChEIEMpIDIpIChCIEQgQykgNCkKICAgICAgICAgICAgIChBIEIg RCBDKQogICAgICAgICAgICAgOCkKCiMrZW5kX2V4YW1wbGUKCioqKiBET05FIEV4ZXJjaXNlIDIu NzAgR2VuZXJhdGUgYSB0cmVlIGFuZCBlbmNvZGUgYSBzb25nCiAgICBDTE9TRUQ6IFsyMDE5LTEw LTEwIFRodSAxMzoxMV0KVGhpcyBleGVyY2lzZSBoYXMgYSBzbWFsbCBjYXZlYXQuIFRoZSBzY2hl bWUgdXNlZCB0byBjcmVhdGUgZXhhbXBsZXMgZm9yIFNJQ1AKYmFjayB3aGVuIGl0IHdhcyB3cml0 dGVuLCBoYWQgYSBjYXNlLWluZGVwZW5kZW50IHJlYWRlciwgdGhlcmVmb3JlIHRoZSB0ZXh0Cm9m IHRoZSBib29rIGlnbm9yZXMgdGhlIGNhc2UgZGlmZmVyZW5jZSBiZXR3ZWVuLCBzYXksICdTaGEs ICdTSEEsIGFuZCAnc2hhLgpMdWNraWx5LCBpbiB0aGUgZ2l2ZW4gc29uZywgdGhlcmUgYXJlIG5v IGluc3RhbmNlcyBvZiB0aGUgc2FtZSBzeW1ib2wKY29uc2lzdGluZyBvZiBsZXR0ZXJzIG9mIGRp ZmZlcmVudCBjYXNlcywgc28gdG8gbWFrZSB0aGUgY29kZSB3b3JrLCB0aGUgb25seQp0aGluZyBu ZWVkZWQgaXMgdG8gY29ycmVjdCB0aGUgY2FzZSBpbiB0aGUgZGljdGlvbmFyeS4KCkxldCdzIGdl bmVyYXRlIGEgdHJlZSBmaXJzdDoKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpy ZXN1bHRzIG91dHB1dAogIChkZWZpbmUgdHJ1ZSAjdCkKICAoZGVmaW5lIGZhbHNlICNmKQogIDw8 aHVmZm1hbi1iYXNlPj4KICA8PGh1ZmZtYW4tZW5jb2RlPj4KICA8PGVsZW1lbnQtb2Ytc2V0Pj4K ICA8PGh1ZmZtYW4tc2FtcGxlLXRyZWU+PgogIDw8aHVmZm1hbi1nZW5lcmF0ZS10cmVlPj4KICAo ZGVmaW5lIHBhaXJzIAogICAgKGxpc3QKICAgICAobGlzdCAnYSA0KSAobGlzdCAnR2V0IDIpIChs aXN0ICdTaGEgMSkgKGxpc3QgJ1dhaCAxKQogICAgIChsaXN0ICdib29tIDEpIChsaXN0ICdqb2Ig MikgKGxpc3QgJ25hIDE2KSAobGlzdCAneWlwIDkpKSkKICAoZGVmaW5lIGNvZGluZy10cmVlIChn ZW5lcmF0ZS1odWZmbWFuLXRyZWUgcGFpcnMpKQogIChzaG93ICN0ICAiVHJlZToiIChwcmV0dHkg Y29kaW5nLXRyZWUpICJcbiIpCiAgKGRlZmluZSBzb25nICcoCgkJICAgICBHZXQgYSBqb2IKCQkg ICAgIFNoYSBuYSBuYSBuYSBuYSBuYSBuYSBuYSBuYQoJCSAgICAgR2V0IGEgam9iCgkJICAgICBT aGEgbmEgbmEgbmEgbmEgbmEgbmEgbmEgbmEKCQkgICAgIFdhaCB5aXAgeWlwIHlpcCB5aXAgeWlw IHlpcCB5aXAgeWlwIHlpcAoJCSAgICAgU2hhIGJvb20KCQkgICAgICkpCiAgKGRlZmluZSBlbmNv ZGVkLXNvbmcgKGVuY29kZSBzb25nIGNvZGluZy10cmVlKSkKICAoc2hvdyAjdCBlbmNvZGVkLXNv bmcgIlxuIikKICAoc2hvdyAjdCAoZGVjb2RlIGVuY29kZWQtc29uZyBjb2RpbmctdHJlZSkgIlxu IikKIytlbmRfc3JjCgojK1JFU1VMVFM6CiMrYmVnaW5fZXhhbXBsZQpUcmVlOigobGVhZiBuYSAx NikKICAgICAgKChsZWFmIHlpcCA5KQogICAgICAgKCgobGVhZiBHZXQgMikgKChsZWFmIGJvb20g MSkgKGxlYWYgV2FoIDEpIChib29tIFdhaCkgMikKICAgICAgICAgICAgICAgICAgICAgIChHZXQg Ym9vbSBXYWgpCiAgICAgICAgICAgICAgICAgICAgICA0KQogICAgICAgICgoKGxlYWYgU2hhIDEp IChsZWFmIGpvYiAyKSAoU2hhIGpvYikgMykgKGxlYWYgYSA0KSAoU2hhIGpvYiBhKSA3KQogICAg ICAgIChHZXQgYm9vbSBXYWggU2hhIGpvYiBhKQogICAgICAgIDExKQogICAgICAgKHlpcCBHZXQg Ym9vbSBXYWggU2hhIGpvYiBhKQogICAgICAgMjApCiAgICAgIChuYSB5aXAgR2V0IGJvb20gV2Fo IFNoYSBqb2IgYSkKICAgICAgMzYpCgooMSAxIDAgMCAxIDEgMSAxIDEgMSAxIDAgMSAxIDEgMSAw IDAgMCAwIDAgMCAwIDAgMCAwIDEgMSAwIDAgMSAxIDEgMSAxIDEgMSAwIDEgMSAxIDEgMCAwIDAg MCAwIDAgMCAwIDAgMCAxIDEgMCAxIDEgMSAwIDEgMCAxIDAgMSAwIDEgMCAxIDAgMSAwIDEgMCAx IDAgMSAxIDEgMCAwIDEgMSAwIDEgMCkKKEdldCBhIGpvYiBTaGEgbmEgbmEgbmEgbmEgbmEgbmEg bmEgbmEgR2V0IGEgam9iIFNoYSBuYSBuYSBuYSBuYSBuYSBuYSBuYSBuYSBXYWggeWlwIHlpcCB5 aXAgeWlwIHlpcCB5aXAgeWlwIHlpcCB5aXAgU2hhIGJvb20pCiMrZW5kX2V4YW1wbGUKCioqKiBE T05FIEV4ZXJjaXNlIDIuNzEgSHVmZm1hbiB0cmVlIGZvciBmcmVxdWVuY2llcyA1IGFuZCAxMAog ICAgQ0xPU0VEOiBbMjAxOS0xMC0xMCBUaHUgMTk6MjJdCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4 cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKICAoZGVmaW5lIHRydWUgI3QpCiAgKGRlZmluZSBm YWxzZSAjZikKICA8PGh1ZmZtYW4tYmFzZT4+CiAgPDxodWZmbWFuLWVuY29kZT4+CiAgPDxlbGVt ZW50LW9mLXNldD4+CiAgPDxodWZmbWFuLXNhbXBsZS10cmVlPj4KICA8PGh1ZmZtYW4tZ2VuZXJh dGUtdHJlZT4+CiAgKGRlZmluZSBwYWlycyAKICAgIChsaXN0CiAgICAgKGxpc3QgJ2EgMSkgKGxp c3QgJ2IgMikgKGxpc3QgJ2MgNCkgKGxpc3QgJ2QgOCkpKQogIChkZWZpbmUgY29kaW5nLXRyZWUg KGdlbmVyYXRlLWh1ZmZtYW4tdHJlZSBwYWlycykpCiAgKHNob3cgI3QgICJUcmVlOiIgKHByZXR0 eSBjb2RpbmctdHJlZSkgIlxuIikKCiMrZW5kX3NyYyAKCiMrUkVTVUxUUzoKOiBUcmVlOigoKChs ZWFmIGEgMSkgKGxlYWYgYiAyKSAoYSBiKSAzKSAobGVhZiBjIDQpIChhIGIgYykgNykgKGxlYWYg ZCA4KQo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoYSBiIGMgZCkKOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUpCjogCgojK2JlZ2luX3NyYyBwbGFudHVtbCA6 ZXhwb3J0cyBib3RoIDpmaWxlIEV4ZXJjaXNlLTIuNzEucG5nIApAc3RhcnRtaW5kbWFwCnNraW5w YXJhbSBtb25vY2hyb21lIHRydWUKK18gKCgoKGxlYWYgYSAxKVxuIChsZWFmIGIgMikgKGEgYikg MylcbiAobGVhZiBjIDQpIChhIGIgYykgNylcbiAobGVhZiBkIDgpIChhIGIgYyBkKSAxNSkKKytf IChsZWFmIGQgOCkKKytfICgoKGxlYWYgYSAxKVxuIChsZWFmIGIgMikgKGEgYikgMykgXG4obGVh ZiBjIDQpIChhIGIgYykgNykKKysrXyAobGVhZiBjIDQpCisrK18gKChsZWFmIGEgMSkgXG4obGVh ZiBiIDIpIChhIGIpIDMpCisrKytfIChsZWFmIGIgMikKKysrK18gKGxlYWYgYSAxKQpAZW5kbWlu ZG1hcAojK2VuZF9zcmMgCgojK1JFU1VMVFM6CltbZmlsZTpFeGVyY2lzZS0yLjcxLnBuZ11dCgoj K2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKICAoZGVmaW5l IHRydWUgI3QpCiAgKGRlZmluZSBmYWxzZSAjZikKICA8PGh1ZmZtYW4tYmFzZT4+CiAgPDxodWZm bWFuLWVuY29kZT4+CiAgPDxlbGVtZW50LW9mLXNldD4+CiAgPDxodWZmbWFuLXNhbXBsZS10cmVl Pj4KICA8PGh1ZmZtYW4tZ2VuZXJhdGUtdHJlZT4+CiAgKGRlZmluZSBwYWlycyAKICAgIChsaXN0 CiAgICAgKGxpc3QgJ2EgMSkgKGxpc3QgJ2IgMikgKGxpc3QgJ2MgNCkgKGxpc3QgJ2QgOCkKICAg ICAobGlzdCAnZSAxNikgKGxpc3QgJ2YgMzIpIChsaXN0ICdnIDY0KSAobGlzdCAnaCAxMjgpIChs aXN0ICdqIDI1NikpKQogIChkZWZpbmUgY29kaW5nLXRyZWUgKGdlbmVyYXRlLWh1ZmZtYW4tdHJl ZSBwYWlycykpCiAgKHNob3cgI3QgICJUcmVlOiIgKHByZXR0eSBjb2RpbmctdHJlZSkgIlxuIikK CiMrZW5kX3NyYyAKCiMrUkVTVUxUUzoKIytiZWdpbl9leGFtcGxlClRyZWU6KCgoKCgoKCgobGVh ZiBhIDEpIChsZWFmIGIgMikgKGEgYikgMykgKGxlYWYgYyA0KSAoYSBiIGMpIDcpIChsZWFmIGQg OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGEgYiBjIGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1KQogICAgICAgICAgKGxlYWYgZSAxNikK ICAgICAgICAgIChhIGIgYyBkIGUpCiAgICAgICAgICAzMSkgKGxlYWYgZiAzMikKICAgICAgICAg ICAgICAoYSBiIGMgZCBlIGYpCiAgICAgICAgICAgICAgNjMpIChsZWFmIGcgNjQpCiAgICAgICAg ICAgICAgICAgIChhIGIgYyBkIGUgZiBnKQogICAgICAgICAgICAgICAgICAxMjcpIChsZWFmIGgg MTI4KQogICAgICAgICAgICAgICAgICAgICAgIChhIGIgYyBkIGUgZiBnIGgpCiAgICAgICAgICAg ICAgICAgICAgICAgMjU1KSAobGVhZiBqIDI1NikKICAgICAgICAgICAgICAgICAgICAgICAgICAg IChhIGIgYyBkIGUgZiBnIGggaikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUxMSkKCiMr ZW5kX2V4YW1wbGUKCiMrYmVnaW5fc3JjIHBsYW50dW1sIDpleHBvcnRzIGJvdGggOmZpbGUgRXhl cmNpc2UtMi43MS5wbmcgCkBzdGFydG1pbmRtYXAKc2tpbnBhcmFtIG1vbm9jaHJvbWUgdHJ1ZQor XyAoYSBiIGMgZCBlIGYgZyBoIGopIDUxMQorK18gKGxlYWYgaiAyNTYpCisrXyAoYSBiIGMgZCBl IGYgZyBoKSAyNTUKKysrXyAobGVhZiBoIDEyOCkKKysrXyAoYSBiIGMgZCBlIGYgZykgMTI3Cisr KytfIChhIGIgYyBkIGUgZikgNjMKKysrK18gKGxlYWYgZyA2NCkKKysrKytfIChhIGIgYyBkIGUp IDMxCisrKysrXyAobGVhZiBmIDMyKQorKysrKytfIChhIGIgYyBkKSAxNQorKysrKytfIChsZWFm IGUgMTYpCisrKysrKytfIChhIGIgYykgNworKysrKysrXyAobGVhZiBkIDgpIAorKysrKysrK18g KGEgYikgMworKysrKysrK18gKGxlYWYgYyA0KQorKysrKysrKytfIChsZWFmIGEgMSkKKysrKysr KysrXyAobGVhZiBiIDIpCkBlbmRtaW5kbWFwCiMrZW5kX3NyYyAKCiMrUkVTVUxUUzoKW1tmaWxl OkV4ZXJjaXNlLTIuNzEucG5nXV0KCldlIGNhbiBjbGVhcmx5IHNlZSB0aGF0IGlmIHRoZSBwcm9i YWJpbGl0aWVzIGRlY3JlYXNlIGV4cG9uZW50aWFsbHksIHRoZQpsZW5ndGggb2YgdGhlIHRyZWUg aXMgbi4gU28gdG8gZW5jb2RlIHRoZSBtb3N0IGZyZXF1ZW50IHN5bWJvbCB3ZSB3b3VsZCBuZWVk Cmp1c3Qgb25lIGJpdCwgYW5kIHRoZSBsZWFzdCBmcmVxdWVudCB3b3VsZCByZXF1aXJlIDggYml0 LgoKKioqIERPTkUgRXhlcmNpc2UgMi43MiBIdWZmbWFuIG9yZGVyIG9mIGdyb3d0aAogICAgQ0xP U0VEOiBbMjAxOS0xMC0xMCBUaHUgMjA6MzRdCgpJZiB3ZSBjb25zaWRlciBFeGVyY2lzZSAyLjcx LCB3ZSdsbCBzZWUgdGhhdCB0aGUgYW1vdW50IG9mIGVsZW1lbnRzIG1lbnRpb25lZAphdCBldmVy eSBsZXZlbCBvZiBrIHRoZSB0cmVlIGlzIG4tay4gIFRoZXJlZm9yZSwgaWYgd2Ugd2FudCB0byBl bmNvZGUgdGhlIG1vc3QKZnJlcXVlbnQgZWxlbWVudCwgd2Ugd291bGQgbmVlZCB0byBwZXJmb3Jt IE8obi1rKSBvcGVyYXRpb25zIG9uIGV2ZXJ5IGxldmVsCm9mIHRoZSB0cmVlLiBTaW5jZSB3ZSB3 b3VsZCBuZWVkIHRvIGV2ZW50dWFsbHkgcmVhY2ggdGhlIGJvdHRvbS1tb3N0IGxldmVsLAp0aGUg dG90YWwgbnVtYmVyIG9mIG9wZXJhdGlvbnMgd291bGQgYmUgXChcc3VtXzFebiAobi1rKSA9IE8o bl4yKVwpLgoKVGhlIG1vc3QgZnJlcXVlbnQgZWxlbWVudCBpcyBhbHdheXMgb24KbGV2ZWwgMSwg c28gdG8gZW5jb2RlIGl0IHdlIHdvdWxkIG5lZWQgTygxKSBvcGVyYXRpb25zLCBhbmQgd2UgZG9u J3QgZXZlbgpuZWVkIHRvIGdvIHRocm91Z2ggdGhlIGxpc3QuCgoqKiogUmVtYXJrIENvbXBsZXgg cGFja2FnZXMKClRoZSBmb2xsb3dpbmcgc2V2ZXJhbCBleGVyY2lzZXMgY2FuIG9ubHkgYmUgY29u c2lkZXJlZCAiZnVuY3Rpb25hbCIKbG9vc2VseS4gCgpJbiB0aGlzIHN1YnNlY3Rpb24gSSB3aWxs IGNvcHkgdGhlIHNvdXJjZSBvZiB0aGUgdHdvIGNvbXBsZXggcGFja2FnZXMgZ2l2ZW4KYXMgZXhh bXBsZXMuCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQK ICAgICAoZGVmaW5lIChpbnN0YWxsLXJlY3Rhbmd1bGFyLXBhY2thZ2UpCiAgICAgICA7OyBpbnRl cm5hbCBwcm9jZWR1cmVzCiAgICAgICAoZGVmaW5lIChyZWFsLXBhcnQgeikgKGNhciB6KSkKICAg ICAgIChkZWZpbmUgKGltYWctcGFydCB6KSAoY2RyIHopKQogICAgICAgKGRlZmluZSAobWFrZS1m cm9tLXJlYWwtaW1hZyB4IHkpIChjb25zIHggeSkpCiAgICAgICAoZGVmaW5lIChtYWduaXR1ZGUg eikKICAgICAgICAgKHNxcnQgKCsgKHNxdWFyZSAocmVhbC1wYXJ0IHopKQogICAgICAgICAgICAg ICAgICAoc3F1YXJlIChpbWFnLXBhcnQgeikpKSkpCiAgICAgICAoZGVmaW5lIChhbmdsZSB6KQog ICAgICAgICAoYXRhbiAoaW1hZy1wYXJ0IHopIChyZWFsLXBhcnQgeikpKQogICAgICAgKGRlZmlu ZSAobWFrZS1mcm9tLW1hZy1hbmcgciBhKQogICAgICAgICAoY29ucyAoKiByIChjb3MgYSkpICgq IHIgKHNpbiBhKSkpKQoKICAgICAgIDs7IGludGVyZmFjZSB0byB0aGUgcmVzdCBvZiB0aGUgc3lz dGVtCiAgICAgICAoZGVmaW5lICh0YWcgeCkgKGF0dGFjaC10YWcgJ3JlY3Rhbmd1bGFyIHgpKQog ICAgICAgKHB1dCAncmVhbC1wYXJ0ICcocmVjdGFuZ3VsYXIpIHJlYWwtcGFydCkKICAgICAgIChw dXQgJ2ltYWctcGFydCAnKHJlY3Rhbmd1bGFyKSBpbWFnLXBhcnQpCiAgICAgICAocHV0ICdtYWdu aXR1ZGUgJyhyZWN0YW5ndWxhcikgbWFnbml0dWRlKQogICAgICAgKHB1dCAnYW5nbGUgJyhyZWN0 YW5ndWxhcikgYW5nbGUpCiAgICAgICAocHV0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdyZWN0YW5n dWxhcgogICAgICAgICAgICAobGFtYmRhICh4IHkpICh0YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcg eCB5KSkpKQogICAgICAgKHB1dCAnbWFrZS1mcm9tLW1hZy1hbmcgJ3JlY3Rhbmd1bGFyCiAgICAg ICAgICAgIChsYW1iZGEgKHIgYSkgKHRhZyAobWFrZS1mcm9tLW1hZy1hbmcgciBhKSkpKQogICAg ICAgJ2RvbmUpCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhw b3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAogICAgIChkZWZpbmUgKGluc3RhbGwtcG9sYXItcGFj a2FnZSkKICAgICAgIDs7IGludGVybmFsIHByb2NlZHVyZXMKICAgICAgIChkZWZpbmUgKG1hZ25p dHVkZSB6KSAoY2FyIHopKQogICAgICAgKGRlZmluZSAoYW5nbGUgeikgKGNkciB6KSkKICAgICAg IChkZWZpbmUgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkgKGNvbnMgciBhKSkKICAgICAgIChkZWZp bmUgKHJlYWwtcGFydCB6KQogICAgICAgICAoKiAobWFnbml0dWRlIHopIChjb3MgKGFuZ2xlIHop KSkpCiAgICAgICAoZGVmaW5lIChpbWFnLXBhcnQgeikKICAgICAgICAgKCogKG1hZ25pdHVkZSB6 KSAoc2luIChhbmdsZSB6KSkpKQogICAgICAgKGRlZmluZSAobWFrZS1mcm9tLXJlYWwtaW1hZyB4 IHkpCiAgICAgICAgIChjb25zIChzcXJ0ICgrIChzcXVhcmUgeCkgKHNxdWFyZSB5KSkpCiAgICAg ICAgICAgICAgIChhdGFuIHkgeCkpKQoKICAgICAgIDs7IGludGVyZmFjZSB0byB0aGUgcmVzdCBv ZiB0aGUgc3lzdGVtCiAgICAgICAoZGVmaW5lICh0YWcgeCkgKGF0dGFjaC10YWcgJ3BvbGFyIHgp KQogICAgICAgKHB1dCAncmVhbC1wYXJ0ICcocG9sYXIpIHJlYWwtcGFydCkKICAgICAgIChwdXQg J2ltYWctcGFydCAnKHBvbGFyKSBpbWFnLXBhcnQpCiAgICAgICAocHV0ICdtYWduaXR1ZGUgJyhw b2xhcikgbWFnbml0dWRlKQogICAgICAgKHB1dCAnYW5nbGUgJyhwb2xhcikgYW5nbGUpCiAgICAg ICAocHV0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdwb2xhcgogICAgICAgICAgICAobGFtYmRhICh4 IHkpICh0YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSkpKQogICAgICAgKHB1dCAnbWFrZS1m cm9tLW1hZy1hbmcgJ3BvbGFyCiAgICAgICAgICAgIChsYW1iZGEgKHIgYSkgKHRhZyAobWFrZS1m cm9tLW1hZy1hbmcgciBhKSkpKQogICAgICAgJ2RvbmUpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgoK KioqIFJlbWFyayBSZWZlcmVuY2UgdG8gdGhlIHB1dCBhbmQgZ2V0IGZ1bmN0aW9ucwp+cHV0fiBh bmQgfmdldH4gZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGxhdGVyLCBob3dldmVyLCB5b3UgY2FuIHVz ZSB0aGVtIGlmCnRhbmdsaW5nIGluIHRoZSBibG9jayBjYWxsZWQ6IDw8cHV0LWFuZC1nZXQ+Pi4g SXQgaXMgYSBzdGF0ZWZ1bCBibG9jaywgc28gYmUKc3VyZSB0byBpbmNsdWRlIGl0IGZpcnN0Lgoq KiogRE9ORSBFeGVyY2lzZSAyLjczIGRhdGEtZHJpdmVuLWRlcml2CiAgICBDTE9TRUQ6IFsyMDE5 LTEwLTExIEZyaSAxMTowNV0KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1 bHRzIG91dHB1dCA6bm93ZWItcmVmIGRhdGEtZHJpdmVuLWRlcml2CiAgICAgICAgICAoZGVmaW5l IChkZXJpdiBleHAgdmFyKQogICAgICAgICAgICAgKGNvbmQgKChudW1iZXI/IGV4cCkgMCkKICAg ICAgICAgICAgICAgICAgICgodmFyaWFibGU/IGV4cCkgKGlmIChzYW1lLXZhcmlhYmxlPyBleHAg dmFyKSAxIDApKQogICAgICAgICAgICAgICAgICAgKGVsc2UgKChnZXQgJ2Rlcml2IChvcGVyYXRv ciBleHApKSAob3BlcmFuZHMgZXhwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2YXIpKSkpCiAgICAgICAgICAoZGVmaW5lIChvcGVyYXRvciBl eHApIChjYXIgZXhwKSkKICAgICAgICAgIChkZWZpbmUgKG9wZXJhbmRzIGV4cCkgKGNkciBleHAp KQojK2VuZF9zcmMKCioqKiogRE9ORSBhCiAgICAgQ0xPU0VEOiBbMjAxOS0xMC0xMSBGcmkgMTA6 MjldCiBXZSByZXBsYWNlZCB0aGUgZml4ZWQgfnByb2R1Y3Q/fiBhbmQgfnN1bT9+IHByZWRpY2F0 ZSBmdW5jdGlvbnMgd2l0aCB0aGUKb25lcyBkaXNwYXRjaGVkIG9uIHRoZSB0YWJsZS4gQm90aCBv ZiB0aGVzZSBwcmVkaWNhdGVzIHJlcXVpcmUgdGhlaXIgdGVzdGVkCnZhcmlhYmxlIHRvIGJlIGEg fmNvbnN+LiBUaGlzIGlzIHdoeSB+bnVtYmVyP34gYW5kIH52YXJpYWJsZT9+IGNhbm5vdCBiZQpy ZXBsYWNlZCB3aXRoIGEgZGlzcGF0Y2hlZCB2ZXJzaW9uIOKIkiB0aGV5IGFyZSBub3QgYSBwYWly LgoKKioqKiBET05FIGIKU3VycHJpc2Utc3VycHJpc2UsIHRoZSBwcm90b3R5cGUgb2YgdGhlIHR3 byB+ZGVyaXZ+IGZ1bmN0aW9ucyB3ZSBhcmUKc3VwcG9zZWQgdG8gd3JpdGUgaXMgaW5jb21wYXRp YmxlIHdpdGggdGhlIGRlcml2YXRpdmVzIHdlIGhhZCB0byB3cml0ZSBpbiB0aGUgRXhlcmNpc2Ut Mi41Ni4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dCA6 bm93ZWItcmVmIGRhdGEtZHJpdmVuLXN1bS1tdWwKICAoZGVmaW5lIChkaWZmZXJlbnRpYXRlLXN1 bSBvcGVyYW5kcyB2YXIpCiAgICAobWFrZS1zdW0gKGRlcml2IChjYXIgIG9wZXJhbmRzKSB2YXIp CgkgICAgICAoZGVyaXYgKGNhZHIgb3BlcmFuZHMpIHZhcikpKQogIChkZWZpbmUgKGRpZmZlcmVu dGlhdGUtbXVsdGlwbGljYXRpb24gb3BlcmFuZHMgdmFyKQogICAgKG1ha2Utc3VtCiAgICAgKG1h a2UtcHJvZHVjdCAoY2FyICBvcGVyYW5kcykKCQkgICAoZGVyaXYgKGNhZHIgb3BlcmFuZHMpIHZh cikpCiAgICAgKG1ha2UtcHJvZHVjdCAoZGVyaXYgKGNhciAgb3BlcmFuZHMpIHZhcikKCQkgICAo Y2FkciBvcGVyYW5kcykpKSkKICAocHV0ICdkZXJpdiAnKyBkaWZmZXJlbnRpYXRlLXN1bSkKICAo cHV0ICdkZXJpdiAnKiBkaWZmZXJlbnRpYXRlLW11bHRpcGxpY2F0aW9uKQojK2VuZF9zcmMKCiMr YmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PHB1dC1hbmQt Z2V0Pj4KPDxkZXJpdi1jb21wb25lbnRzPj4KPDxkZXJpdi1vcGVyYXRpb25zPj4KPDxkYXRhLWRy aXZlbi1kZXJpdj4+Cjw8ZGF0YS1kcml2ZW4tc3VtLW11bD4+CihzaG93ICN0ICJUZXN0OiIgKGRl cml2ICcoKyBhICgqIGIgYSkpICdhKSAiXG4iKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiBUZXN0 OigrIDEgYikKCioqKiogRE9ORSBjCiAgICAgQ0xPU0VEOiBbMjAxOS0xMC0xMSBGcmkgMTE6MDNd CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQgOm5vd2Vi LXJlZiBkYXRhLWRyaXZlbi1leHBvbmVudGlhdGlvbgooZGVmaW5lIChtYWtlLWV4cG9uZW50aWF0 aW9uIGJhc2UgcG93ZXIpCiAgICAoY29uZCAoKD1udW1iZXI/IHBvd2VyIDApIDEpCgkgICgoPW51 bWJlcj8gcG93ZXIgMSkgYmFzZSkKCSAgKChhbmQgKG51bWJlcj8gYmFzZSkgKG51bWJlcj8gcG93 ZXIpKQoJICAgKGV4cHQgYmFzZSBwb3dlcikpCgkgIChlbHNlIChsaXN0ICcqKiBiYXNlIHBvd2Vy KSkpKQoKKGRlZmluZSAoZGlmZmVyZW50aWF0ZS1leHBvbmVudGlhdGlvbiBleHAgdmFyKQoJICAg KG1ha2UtcHJvZHVjdCAoY2FkciBleHApCgkJCSAobWFrZS1wcm9kdWN0CgkJCSAgKG1ha2UtZXhw b25lbnRpYXRpb24KCQkJICAgKGNhciBleHApCgkJCSAgIChtYWtlLXN1bSAoY2FkciBleHApIC0x KSkKCQkJICAoZGVyaXYgKGNhciBleHApIHZhcikpKSkKCihwdXQgJ2Rlcml2ICcqKiBkaWZmZXJl bnRpYXRlLWV4cG9uZW50aWF0aW9uKQojK2VuZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhw b3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAooZGVmaW5lIGZhbHNlICNmKQo8PHB1dC1hbmQtZ2V0 Pj4KPDxkZXJpdi1jb21wb25lbnRzPj4KPDxkZXJpdi1vcGVyYXRpb25zPj4KPDxkYXRhLWRyaXZl bi1kZXJpdj4+Cjw8ZGF0YS1kcml2ZW4tc3VtLW11bD4+Cjw8ZGF0YS1kcml2ZW4tZXhwb25lbnRp YXRpb24+Pgooc2hvdyAjdCAiVGVzdDoiIChkZXJpdiAnKCsgYSAoKiBiICgqKiBhIGMpKSkgJ2Ep ICJcbiIpCgojOyhzaG93ICN0ICJUZXN0OiIgKGRlcml2ICcoKiogYSBiKSAnYSkgIlxuIikKIytl bmRfc3JjCgojK1JFU1VMVFM6CjogVGVzdDooKyAxICgqIGIgKCogYyAoKiogYSAoKyBjIC0xKSkp KSkKCioqKiogRE9ORSBkCiAgICAgQ0xPU0VEOiBbMjAxOS0xMC0xMSBGcmkgMTE6MDVdCgpUaGUg b25seSBjaGFuZ2UgbmVlZGVkIGlzIHRvIGNoYW5nZSB0aGUgb3JkZXIgb2YgcGFyYW1ldGVycyBp biB+cHV0fiBqdXN0IGFzCml0IGlzIGNoYW5nZWQgaW4gfmdldH4uIFRoZSByZXN0IHNob3VsZCBi ZSBhYnNvbHV0ZWx5IHRoZSBzYW1lLgoKKioqIERPTkUgRXhlcmNpc2UgMi43NCBJbnNhdGlhYmxl IEVudGVycHJpc2VzCiAgICBDTE9TRUQ6IFsyMDE5LTEwLTExIEZyaSAyMDo1Nl0KClRoaXMgdGFz ayBpcyBhIGJpdCB3ZWlyZCBhbmQgdG9vIHZhZ3VlbHkgZm9ybXVsYXRlZC4gRm9yIHRoZSBzdGFy dCwgbGV0J3MKYXNzdW1lIHRoYXQgdGhlIGNvbXBhbnkgb25seSBoYXMgdHdvIGRpdmlzaW9ucy4K CiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dCA6bm93ZWIt cmVmIGluc2F0aWFibGUtZW50ZXJwcmlzZXMtZGF0YQogIChkZWZpbmUgZGl2aXNpb24tMS1zZXQt b2YtcmVjb3JkcwogICAgIChjb25zICdkaXZpc2lvbi0xIChsaXN0IChsaXN0ICdKYWNrIChjb25z ICdzYWxhcnkgMTAwKSAoY29ucyAnYWRkcmVzcyAjZikpIChsaXN0ICdKaWxsIChjb25zICdzYWxh cnkgMjAwKSAnKGFkZHJlc3MgI3QpKSkpKQogIChkZWZpbmUgKGRpdmlzaW9uLTEtZ2V0LXJlY29y ZCByZWNvcmQtc2V0IGtleSkKICAgIChkZWZpbmUgKGNyYXdsZXIgcmVjb3JkcyBrZXkpCiAgICAg IChjb25kICgobnVsbD8gcmVjb3JkcykgJygpKQoJICAgICgoZXE/IGtleSAoY2FhciByZWNvcmRz KSkgKGNhciByZWNvcmRzKSkKCSAgICAoZWxzZSAoY3Jhd2xlciAoY2RyIHJlY29yZHMpIGtleSkp KSkKICAgIChjcmF3bGVyIChjZHIgcmVjb3JkLXNldCkga2V5KSkKCiAgKGRlZmluZSAoZGl2aXNp b24tMS1nZXQtc2FsYXJ5IHJlY29yZCkKICAgICAoY2RyIChsaXN0LXJlZiByZWNvcmQgMSkpKQoK ICAoZGVmaW5lIGRpdmlzaW9uLTItc2V0LW9mLXJlY29yZHMKICAgIChjb25zICdkaXZpc2lvbi0y IChsaXN0IChsaXN0ICdwbGFjZWhvbGRlciAnV2FuZ1lpICdzYWxhcnkgMTAwICdhZGRyZXNzICdu ZXZlcmxhbmQpIChsaXN0ICdwbGFjZWhvbGRlciAnWmhhbmdFciAnc2FsYXJ5IDIwMCAnYWRkcmVz cyAndGhpcy13b3JsZCkpKSkKCiAgKGRlZmluZSAoZGl2aXNpb24tMi1nZXQtcmVjb3JkIHJlY29y ZC1zZXQga2V5KQogICAgKGRlZmluZSAoY3Jhd2xlciByZWNvcmRzIGtleSkKICAgICAgKGNvbmQg KChudWxsPyByZWNvcmRzKSAnKCkpCgkgICAgKChlcT8ga2V5IChsaXN0LXJlZiAoY2FyIHJlY29y ZHMpIDEpKSAoY2FyIHJlY29yZHMpKQoJICAgIChlbHNlIChjcmF3bGVyIChjZHIgcmVjb3Jkcykg a2V5KSkpKQogICAgKGNyYXdsZXIgKGNkciByZWNvcmQtc2V0KSBrZXkpKQogIChkZWZpbmUgKGRp dmlzaW9uLTItZ2V0LXNhbGFyeSByZWNvcmQpCiAgICAgKGxpc3QtcmVmIHJlY29yZCAzKSkKCihw dXQgJ2dldC1yZWNvcmQgJ2RpdmlzaW9uLTEgZGl2aXNpb24tMS1nZXQtcmVjb3JkKQoocHV0ICdn ZXQtcmVjb3JkICdkaXZpc2lvbi0yIGRpdmlzaW9uLTItZ2V0LXJlY29yZCkKKHB1dCAnZ2V0LXNh bGFyeSAnZGl2aXNpb24tMSBkaXZpc2lvbi0xLWdldC1zYWxhcnkpCihwdXQgJ2dldC1zYWxhcnkg J2RpdmlzaW9uLTIgZGl2aXNpb24tMi1nZXQtc2FsYXJ5KQoKCgojK2VuZF9zcmMKCiMrYmVnaW5f c3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PHB1dC1hbmQtZ2V0Pj4K PDxpbnNhdGlhYmxlLWVudGVycHJpc2VzLWRhdGE+PgoKKHNob3cgI3QgIkRpdmlzaW9uLTE6ICIg KGRpdmlzaW9uLTEtZ2V0LXJlY29yZCBkaXZpc2lvbi0xLXNldC1vZi1yZWNvcmRzICdKYWNrKSAi XG4iKQooc2hvdyAjdCAiRGl2aXNpb24tMjogIiAoZGl2aXNpb24tMi1nZXQtcmVjb3JkIGRpdmlz aW9uLTItc2V0LW9mLXJlY29yZHMgJ1dhbmdZaSkgIlxuIikKKHNob3cgI3QgIkRpdmlzaW9uLTI6 ICIgKGRpdmlzaW9uLTItZ2V0LXJlY29yZCBkaXZpc2lvbi0yLXNldC1vZi1yZWNvcmRzICdaaGFu Z0VyKSAiXG4iKQooc2hvdyAjdCAiU2FsYXJ5LTE6ICAgIiAoZGl2aXNpb24tMS1nZXQtc2FsYXJ5 IChkaXZpc2lvbi0xLWdldC1yZWNvcmQgZGl2aXNpb24tMS1zZXQtb2YtcmVjb3JkcyAnSmlsbCkp ICJcbiIpCihzaG93ICN0ICJTYWxhcnktMjogICAiIChkaXZpc2lvbi0yLWdldC1zYWxhcnkgKGRp dmlzaW9uLTItZ2V0LXJlY29yZCBkaXZpc2lvbi0yLXNldC1vZi1yZWNvcmRzICdXYW5nWWkpKSAi XG4iKQooc2hvdyAjdCAiRGl2aXNpb24tMTogIiAoKGdldCAnZ2V0LXJlY29yZCAnZGl2aXNpb24t MSkgZGl2aXNpb24tMS1zZXQtb2YtcmVjb3JkcyAnSmFjaykgIlxuIikKKHNob3cgI3QgIkRpdmlz aW9uLTI6ICIgKChnZXQgJ2dldC1yZWNvcmQgJ2RpdmlzaW9uLTIpIGRpdmlzaW9uLTItc2V0LW9m LXJlY29yZHMgJ1dhbmdZaSkgIlxuIikKKHNob3cgI3QgIkRpdmlzaW9uLTE6ICIgKChnZXQgJ2dl dC1zYWxhcnkgJ2RpdmlzaW9uLTEpIChkaXZpc2lvbi0xLWdldC1yZWNvcmQgZGl2aXNpb24tMS1z ZXQtb2YtcmVjb3JkcyAnSmlsbCkpICJcbiIpCihzaG93ICN0ICJEaXZpc2lvbi0yOiAiICgoZ2V0 ICdnZXQtc2FsYXJ5ICdkaXZpc2lvbi0yKSAoZGl2aXNpb24tMi1nZXQtcmVjb3JkIGRpdmlzaW9u LTItc2V0LW9mLXJlY29yZHMgJ1dhbmdZaSkpICJcbiIpCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoK OiBEaXZpc2lvbi0xOiAoSmFjayAoc2FsYXJ5IC4gMTAwKSAoYWRkcmVzcyAuICNmKSkKOiBEaXZp c2lvbi0yOiAocGxhY2Vob2xkZXIgV2FuZ1lpIHNhbGFyeSAxMDAgYWRkcmVzcyBuZXZlcmxhbmQp CjogRGl2aXNpb24tMjogKHBsYWNlaG9sZGVyIFpoYW5nRXIgc2FsYXJ5IDIwMCBhZGRyZXNzIHRo aXMtd29ybGQpCjogU2FsYXJ5LTE6ICAgMjAwCjogU2FsYXJ5LTI6ICAgMTAwCjogRGl2aXNpb24t MTogKEphY2sgKHNhbGFyeSAuIDEwMCkgKGFkZHJlc3MgLiAjZikpCjogRGl2aXNpb24tMjogKHBs YWNlaG9sZGVyIFdhbmdZaSBzYWxhcnkgMTAwIGFkZHJlc3MgbmV2ZXJsYW5kKQo6IERpdmlzaW9u LTE6IDIwMAo6IERpdmlzaW9uLTI6IDEwMAoKKioqKiBET05FIGEKICAgICBDTE9TRUQ6IFsyMDE5 LTEwLTExIEZyaSAxODozOV0KClRoZSBrZXkgdGhpbmcgaW4gb3VyIGltcGxlbWVudGF0aW9uIG9m IHRoZSB0d28gZGF0YXNldHMgaXMgdGhhdCB3ZSBoYXZlIGEKZGVwYXJ0bWVudCB0YWcgYXQgdGhl IGJlZ2lubmluZy4gVGhpcyBsZXRzIHVzIGRpc3BhdGNoIG9uIHRoZSBvcmlnaW4gb2YgdGhlCmRh dGEuCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQgOm5v d2ViLXJlZiBpbnNhdGlhYmxlLWEKKGRlZmluZSAoZ2V0LXJlY29yZCBkYXRhc2V0IGtleSkKICAg KChnZXQgJ2dldC1yZWNvcmQgKGNhciBkYXRhc2V0KSkgZGF0YXNldCBrZXkpKQojK2VuZF9zcmMK CiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PHB1dC1h bmQtZ2V0Pj4KPDxpbnNhdGlhYmxlLWVudGVycHJpc2VzLWRhdGE+Pgo8PGluc2F0aWFibGUtYT4+ Cgooc2hvdyAjdCAoZ2V0LXJlY29yZCBkaXZpc2lvbi0xLXNldC1vZi1yZWNvcmRzICdKaWxsKSAi XG4iKQooc2hvdyAjdCAoZ2V0LXJlY29yZCBkaXZpc2lvbi0yLXNldC1vZi1yZWNvcmRzICdaaGFu Z0VyKSAiXG4iKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAoSmlsbCAoc2FsYXJ5IDIwMCkgKGFk ZHJlc3MgI3QpKQo6IChwbGFjZWhvbGRlciBaaGFuZ0VyIHNhbGFyeSAyMDAgYWRkcmVzcyB0aGlz LXdvcmxkKQoKKioqKiBET05FIGIKICAgICBDTE9TRUQ6IFsyMDE5LTEwLTExIEZyaSAyMDoyMl0K CiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dCA6bm93ZWIt cmVmIGluc2F0aWFibGUtYgogIChkZWZpbmUgKGdldC1zYWxhcnkgcmVjb3JkcyBrZXkpCiAgICAo bGV0ICgocmVjb3JkIChnZXQtcmVjb3JkIHJlY29yZHMga2V5KSkpCiAgICAgIChpZiByZWNvcmQK CSAgKChnZXQgJ2dldC1zYWxhcnkgKGNhciByZWNvcmRzKSkgcmVjb3JkKQoJICAjZikpKQojK2Vu ZF9zcmMKCiMrUkVTVUxUUzoKCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVz dWx0cyBvdXRwdXQKPDxwdXQtYW5kLWdldD4+Cjw8aW5zYXRpYWJsZS1lbnRlcnByaXNlcy1kYXRh Pj4KPDxpbnNhdGlhYmxlLWE+Pgo8PGluc2F0aWFibGUtYj4+CihzaG93ICN0ICJTYWxhcnkgd3Jv bmcgIDogIiAoZ2V0LXNhbGFyeSBkaXZpc2lvbi0yLXNldC1vZi1yZWNvcmRzICdKaWxsKSAiXG4i KQooc2hvdyAjdCAiU2FsYXJ5IGNvcnJlY3Q6ICIgKGdldC1zYWxhcnkgZGl2aXNpb24tMS1zZXQt b2YtcmVjb3JkcyAnSmlsbCkgIlxuIikKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogU2FsYXJ5IHdy b25nICA6ICNmCjogU2FsYXJ5IGNvcnJlY3Q6IDIwMAoKQmVjYXVzZSBhbGwgdGhlIGRpc3BhdGNo IGlzIG9yZ2FuaXplZCBvbiBhIHRhZyBpbiB0aGUgZmlsZSByZWNvcmRzLCB0aGVyZSBpcwpubyBz cGVjaWZpYyByZXF1aXJlbWVudHMgdG8gdGhlIHJlY29yZCBzdHJ1Y3R1cmUuCgoqKioqIERPTkUg YwogICAgIENMT1NFRDogWzIwMTktMTAtMTEgRnJpIDIwOjU0XQoKIytiZWdpbl9zcmMgc2NoZW1l IDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpub3dlYi1yZWYgaW5zYXRpYWJsZS1maW5k LWVtcGxveWVlLXJlY29yZAogICAgPDxhY2N1bXVsYXRlPj4KICAgICAgKGRlZmluZSAoZmluZC1l bXBsb3llZS1yZWNvcmQga2V5IC4gcmVjb3JkLWZpbGVzKQoJKGNhciAoYWNjdW11bGF0ZQoJICAg ICAgYXBwZW5kCgkgICAgICAnKCkKCSAgICAgIChtYXAgKGxhbWJkYSAoeCkKCQkgICAgIChsaXN0 IChnZXQtcmVjb3JkIHgga2V5KSkpIHJlY29yZC1maWxlcykpKSkKIytlbmRfc3JjCgojK2JlZ2lu X3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKPDxwdXQtYW5kLWdldD4+ Cjw8aW5zYXRpYWJsZS1lbnRlcnByaXNlcy1kYXRhPj4KPDxpbnNhdGlhYmxlLWE+Pgo8PGluc2F0 aWFibGUtYj4+Cjw8aW5zYXRpYWJsZS1maW5kLWVtcGxveWVlLXJlY29yZD4+CihzaG93ICN0ICJS ZXN1bHQ6ICIgKGZpbmQtZW1wbG95ZWUtcmVjb3JkICdKaWxsIGRpdmlzaW9uLTEtc2V0LW9mLXJl Y29yZHMgZGl2aXNpb24tMi1zZXQtb2YtcmVjb3JkcykgIlxuIikKIytlbmRfc3JjCgojK1JFU1VM VFM6CjogUmVzdWx0OiAoSmlsbCAoc2FsYXJ5IC4gMjAwKSAoYWRkcmVzcyAjdCkpCgoqKioqIERP TkUgZAogICAgIENMT1NFRDogWzIwMTktMTAtMTEgRnJpIDIwOjU2XQpUaGUgbmV3IGNvbXBhbnkg d291bGQgbmVlZCB0byBwcmVwZW5kIHRoZWlyIGZpbGVzIHdpdGggfignY29tcGFueW5hbWUpfiwg YW5kCnRoZWlyIGZ1bmN0aW9ucyB+Z2V0LXJlY29yZH4gYW5kIH5nZXQtc2FsYXJ5fiBuZWVkIHRv IGJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUKbmV3IHRoZSBmdW5jdGlvbiB0YWJsZS4KCioqKiBET05F IEV4ZXJjaXNlIDIuNzUgbWFrZS1mcm9tLW1hZy1hbmcgbWVzc2FnZSBwYXNzaW5nCiAgICBDTE9T RUQ6IFsyMDE5LTEwLTExIEZyaSAyMToyNF0KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBi b3RoIDpyZXN1bHRzIG91dHB1dCA6bm93ZWItcmVmIG1lc3NhZ2UtbWFnLWFuZ2xlCiAgICAgKGRl ZmluZSAobWFrZS1mcm9tLW1hZy1hbmdsZSBtYWcgYW5nbGUpCiAgICAgICAoZGVmaW5lIChkaXNw YXRjaCBvcCkKICAgICAgICAgKGNvbmQgKChlcT8gb3AgJ3JlYWwtcGFydCkgKCogbWFnIChjb3Mg YW5nbGUpKSkKICAgICAgICAgICAgICAgKChlcT8gb3AgJ2ltYWctcGFydCkgKCogbWFnIChzaW4g YW5nbGUpKSkKICAgICAgICAgICAgICAgKChlcT8gb3AgJ21hZ25pdHVkZSkgbWFnKQogICAgICAg ICAgICAgICAoKGVxPyBvcCAnYW5nbGUpIGFuZ2xlKQogICAgICAgICAgICAgICAoZWxzZQogICAg ICAgICAgICAgICAgKGVycm9yICJVbmtub3duIG9wIC0tIE1BS0UtRlJPTS1SRUFMLUlNQUciIG9w KSkpKQogICAgICAgZGlzcGF0Y2gpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBv cnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8bWVzc2FnZS1tYWctYW5nbGU+Pgooc2hvdyAjdCAi TWFnbml0dWRlOiAiICgobWFrZS1mcm9tLW1hZy1hbmdsZSAxIDEpICdtYWduaXR1ZGUpICJcbiIp CihzaG93ICN0ICJBbmdsZSAgICA6ICIgKChtYWtlLWZyb20tbWFnLWFuZ2xlIDEgMSkgJ2FuZ2xl ICAgICkgIlxuIikKKHNob3cgI3QgIlJlYWwtcGFydDogIiAoKG1ha2UtZnJvbS1tYWctYW5nbGUg MSAxKSAncmVhbC1wYXJ0KSAiXG4iKQooc2hvdyAjdCAiSW1hZy1wYXJ0OiAiICgobWFrZS1mcm9t LW1hZy1hbmdsZSAxIDEpICdpbWFnLXBhcnQpICJcbiIpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6 IE1hZ25pdHVkZTogMQo6IEFuZ2xlICAgIDogMQo6IFJlYWwtcGFydDogMC41NDAzMDIzMDU4Njgx Mzk4CjogSW1hZy1wYXJ0OiAwLjg0MTQ3MDk4NDgwNzg5NjUKCioqKiBET05FIEV4ZXJjaXNlIDIu NzYgdHlwZXMgb3IgZnVuY3Rpb25zPwogICAgQ0xPU0VEOiBbMjAxOS0xMC0xMSBGcmkgMjE6Mjld CgpEaXNwYXRjaGluZyBvbiB0aGUgdHlwZXMgc2VlbXMgbW9yZSBhcHByb3ByaWF0ZSBmb3IgdGhl IGNhc2Ugd2hlbiB0aGVyZSBhcmUKbW9yZSBvcGVyYXRpb25zIHRoYXQgdHlwZXMuIFRoaXMgd2F5 IHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRqdXN0IHR5cGVzIHdoZW4KbmV3IG9wZXJhdGlvbnMgYXJl IGNyZWF0ZWQuIEp1c3QgYWRkIG5ldyBvcGVyYXRpb25zIHRvIHRoZSB0YWJsZS4KClRoZSBtZXNz YWdlLXBhc3Npbmcgc3R5bGUgc2VlbXMgbW9yZSBhcHByb3ByaWF0ZSBmb3IgdGhlIHNpdHVhdGlv bnMgd2hlbgpuZXcgb3BlcmF0aW9ucyBhcmUgcmVsYXRpdmVseSByYXJlLCBidXQgbmV3IHR5cGVz IGFwcGVhciBvZnRlbi4gRXhpc3RpbmcKb3BlcmF0aW9ucyB3b3VsZCB3b3JrIHdpdGggdGhlIG5l dyB0eXBlcywgaWYgdGhlIHR5cGVzIHNhdGlzZnkgc29tZSBjb250cmFjdC4KCioqKiBSZW1hcmsg VGhyZWUgYXJpdGhtZXRpYyBwYWNrYWdlcwojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90 aCA6cmVzdWx0cyBvdXRwdXQgOm5vd2ViLXJlZiBnZW5lcmljLWFyaXRobWV0aWMtcGFja2FnZXMK ICAgICAoZGVmaW5lIChhZGQgeCB5KSAoYXBwbHktZ2VuZXJpYyAnYWRkIHggeSkpCiAgICAgKGRl ZmluZSAoc3ViIHggeSkgKGFwcGx5LWdlbmVyaWMgJ3N1YiB4IHkpKQogICAgIChkZWZpbmUgKG11 bCB4IHkpIChhcHBseS1nZW5lcmljICdtdWwgeCB5KSkKICAgICAoZGVmaW5lIChkaXYgeCB5KSAo YXBwbHktZ2VuZXJpYyAnZGl2IHggeSkpCgogICAgIChkZWZpbmUgKGluc3RhbGwtc2NoZW1lLW51 bWJlci1wYWNrYWdlKQogICAgICAgKGRlZmluZSAodGFnIHgpCiAgICAgICAgIChhdHRhY2gtdGFn ICdzY2hlbWUtbnVtYmVyIHgpKQogICAgICAgKHB1dCAnYWRkICcoc2NoZW1lLW51bWJlciBzY2hl bWUtbnVtYmVyKQogICAgICAgICAgICAobGFtYmRhICh4IHkpICh0YWcgKCsgeCB5KSkpKQogICAg ICAgKHB1dCAnc3ViICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQogICAgICAgICAgICAo bGFtYmRhICh4IHkpICh0YWcgKC0geCB5KSkpKQogICAgICAgKHB1dCAnbXVsICcoc2NoZW1lLW51 bWJlciBzY2hlbWUtbnVtYmVyKQogICAgICAgICAgICAobGFtYmRhICh4IHkpICh0YWcgKCogeCB5 KSkpKQogICAgICAgKHB1dCAnZGl2ICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQogICAg ICAgICAgICAobGFtYmRhICh4IHkpICh0YWcgKC8geCB5KSkpKQogICAgICAgKHB1dCAnbWFrZSAn c2NoZW1lLW51bWJlcgogICAgICAgICAgICAobGFtYmRhICh4KSAodGFnIHgpKSkKICAgICAgICdk b25lKQoKICAgICAoZGVmaW5lIChtYWtlLXNjaGVtZS1udW1iZXIgbikKICAgICAgICgoZ2V0ICdt YWtlICdzY2hlbWUtbnVtYmVyKSBuKSkKCiAgICAgKGRlZmluZSAoaW5zdGFsbC1yYXRpb25hbC1w YWNrYWdlKQogICAgICAgKGRlZmluZSAobnVtZXIgeCkgKGNhciB4KSkKICAgICAgIChkZWZpbmUg KGRlbm9tIHgpIChjZHIgeCkpCiAgICAgICAoZGVmaW5lIChtYWtlLXJhdCBuIGQpCiAgICAgICAg IChsZXQgKChnIChnY2QgbiBkKSkpCiAgICAgICAgICAgKGNvbnMgKC8gbiBnKSAoLyBkIGcpKSkp CiAgICAgICAoZGVmaW5lIChhZGQtcmF0IHggeSkKICAgICAgICAgKG1ha2UtcmF0ICgrICgqIChu dW1lciB4KSAoZGVub20geSkpCiAgICAgICAgICAgICAgICAgICAgICAoKiAobnVtZXIgeSkgKGRl bm9tIHgpKSkKICAgICAgICAgICAgICAgICAgICgqIChkZW5vbSB4KSAoZGVub20geSkpKSkKICAg ICAgIChkZWZpbmUgKHN1Yi1yYXQgeCB5KQogICAgICAgICAobWFrZS1yYXQgKC0gKCogKG51bWVy IHgpIChkZW5vbSB5KSkKICAgICAgICAgICAgICAgICAgICAgICgqIChudW1lciB5KSAoZGVub20g eCkpKQogICAgICAgICAgICAgICAgICAgKCogKGRlbm9tIHgpIChkZW5vbSB5KSkpKQogICAgICAg KGRlZmluZSAobXVsLXJhdCB4IHkpCiAgICAgICAgIChtYWtlLXJhdCAoKiAobnVtZXIgeCkgKG51 bWVyIHkpKQogICAgICAgICAgICAgICAgICAgKCogKGRlbm9tIHgpIChkZW5vbSB5KSkpKQogICAg ICAgKGRlZmluZSAoZGl2LXJhdCB4IHkpCiAgICAgICAgIChtYWtlLXJhdCAoKiAobnVtZXIgeCkg KGRlbm9tIHkpKQogICAgICAgICAgICAgICAgICAgKCogKGRlbm9tIHgpIChudW1lciB5KSkpKQoK ICAgICAgIChkZWZpbmUgKHRhZyB4KSAoYXR0YWNoLXRhZyAncmF0aW9uYWwgeCkpCiAgICAgICAo cHV0ICdhZGQgJyhyYXRpb25hbCByYXRpb25hbCkKICAgICAgICAgICAgKGxhbWJkYSAoeCB5KSAo dGFnIChhZGQtcmF0IHggeSkpKSkKICAgICAgIChwdXQgJ3N1YiAnKHJhdGlvbmFsIHJhdGlvbmFs KQogICAgICAgICAgICAobGFtYmRhICh4IHkpICh0YWcgKHN1Yi1yYXQgeCB5KSkpKQogICAgICAg KHB1dCAnbXVsICcocmF0aW9uYWwgcmF0aW9uYWwpCiAgICAgICAgICAgIChsYW1iZGEgKHggeSkg KHRhZyAobXVsLXJhdCB4IHkpKSkpCiAgICAgICAocHV0ICdkaXYgJyhyYXRpb25hbCByYXRpb25h bCkKICAgICAgICAgICAgKGxhbWJkYSAoeCB5KSAodGFnIChkaXYtcmF0IHggeSkpKSkKCiAgICAg ICAocHV0ICdtYWtlICdyYXRpb25hbAogICAgICAgICAgICAobGFtYmRhIChuIGQpICh0YWcgKG1h a2UtcmF0IG4gZCkpKSkKICAgICAgICdkb25lKQoKICAgICAoZGVmaW5lIChtYWtlLXJhdGlvbmFs IG4gZCkKICAgICAgICgoZ2V0ICdtYWtlICdyYXRpb25hbCkgbiBkKSkKCiAgICAgKGRlZmluZSAo aW5zdGFsbC1yZWN0YW5ndWxhci1wYWNrYWdlKQoKICAgICAgIChkZWZpbmUgKHJlYWwtcGFydCB6 KSAoY2FyIHopKQogICAgICAgKGRlZmluZSAoaW1hZy1wYXJ0IHopIChjZHIgeikpCiAgICAgICAo ZGVmaW5lIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkgKGNvbnMgeCB5KSkKICAgICAgIChkZWZp bmUgKG1hZ25pdHVkZSB6KQogICAgICAgICAoc3FydCAoKyAoc3F1YXJlIChyZWFsLXBhcnQgeikp CiAgICAgICAgICAgICAgICAgIChzcXVhcmUgKGltYWctcGFydCB6KSkpKSkKICAgICAgIChkZWZp bmUgKGFuZ2xlIHopCiAgICAgICAgIChhdGFuIChpbWFnLXBhcnQgeikgKHJlYWwtcGFydCB6KSkp CiAgICAgICAoZGVmaW5lIChtYWtlLWZyb20tbWFnLWFuZyByIGEpCiAgICAgICAgIChjb25zICgq IHIgKGNvcyBhKSkgKCogciAoc2luIGEpKSkpCgogICAgICAgKGRlZmluZSAodGFnIHgpIChhdHRh Y2gtdGFnICdyZWN0YW5ndWxhciB4KSkKICAgICAgIChwdXQgJ3JlYWwtcGFydCAnKHJlY3Rhbmd1 bGFyKSByZWFsLXBhcnQpCiAgICAgICAocHV0ICdpbWFnLXBhcnQgJyhyZWN0YW5ndWxhcikgaW1h Zy1wYXJ0KQogICAgICAgKHB1dCAnbWFnbml0dWRlICcocmVjdGFuZ3VsYXIpIG1hZ25pdHVkZSkK ICAgICAgIChwdXQgJ2FuZ2xlICcocmVjdGFuZ3VsYXIpIGFuZ2xlKQogICAgICAgKHB1dCAnbWFr ZS1mcm9tLXJlYWwtaW1hZyAncmVjdGFuZ3VsYXIKICAgICAgICAgICAgKGxhbWJkYSAoeCB5KSAo dGFnIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkpKSkKICAgICAgIChwdXQgJ21ha2UtZnJvbS1t YWctYW5nICdyZWN0YW5ndWxhcgogICAgICAgICAgICAobGFtYmRhIChyIGEpICh0YWcgKG1ha2Ut ZnJvbS1tYWctYW5nIHIgYSkpKSkKICAgICAgICdkb25lKQoKICAgICAoZGVmaW5lIChpbnN0YWxs LXBvbGFyLXBhY2thZ2UpCgogICAgICAgKGRlZmluZSAobWFnbml0dWRlIHopIChjYXIgeikpCiAg ICAgICAoZGVmaW5lIChhbmdsZSB6KSAoY2RyIHopKQogICAgICAgKGRlZmluZSAobWFrZS1mcm9t LW1hZy1hbmcgciBhKSAoY29ucyByIGEpKQogICAgICAgKGRlZmluZSAocmVhbC1wYXJ0IHopCiAg ICAgICAgICgqIChtYWduaXR1ZGUgeikgKGNvcyAoYW5nbGUgeikpKSkKICAgICAgIChkZWZpbmUg KGltYWctcGFydCB6KQogICAgICAgICAoKiAobWFnbml0dWRlIHopIChzaW4gKGFuZ2xlIHopKSkp CiAgICAgICAoZGVmaW5lIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkKICAgICAgICAgKGNvbnMg KHNxcnQgKCsgKHNxdWFyZSB4KSAoc3F1YXJlIHkpKSkKICAgICAgICAgICAgICAgKGF0YW4geSB4 KSkpCgogICAgICAgKGRlZmluZSAodGFnIHgpIChhdHRhY2gtdGFnICdwb2xhciB4KSkKICAgICAg IChwdXQgJ3JlYWwtcGFydCAnKHBvbGFyKSByZWFsLXBhcnQpCiAgICAgICAocHV0ICdpbWFnLXBh cnQgJyhwb2xhcikgaW1hZy1wYXJ0KQogICAgICAgKHB1dCAnbWFnbml0dWRlICcocG9sYXIpIG1h Z25pdHVkZSkKICAgICAgIChwdXQgJ2FuZ2xlICcocG9sYXIpIGFuZ2xlKQogICAgICAgKHB1dCAn bWFrZS1mcm9tLXJlYWwtaW1hZyAncG9sYXIKICAgICAgICAgICAgKGxhbWJkYSAoeCB5KSAodGFn IChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkpKSkKICAgICAgIChwdXQgJ21ha2UtZnJvbS1tYWct YW5nICdwb2xhcgogICAgICAgICAgICAobGFtYmRhIChyIGEpICh0YWcgKG1ha2UtZnJvbS1tYWct YW5nIHIgYSkpKSkKICAgICAgICdkb25lKQoKICAgICAoZGVmaW5lIChpbnN0YWxsLWNvbXBsZXgt cGFja2FnZSkKICAgICAgIChkZWZpbmUgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KQogICAgICAg ICAoKGdldCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAncmVjdGFuZ3VsYXIpIHggeSkpCiAgICAgICAo ZGVmaW5lIChtYWtlLWZyb20tbWFnLWFuZyByIGEpCiAgICAgICAgICgoZ2V0ICdtYWtlLWZyb20t bWFnLWFuZyAncG9sYXIpIHIgYSkpCiAgICAgICAoZGVmaW5lIChhZGQtY29tcGxleCB6MSB6MikK ICAgICAgICAgKG1ha2UtZnJvbS1yZWFsLWltYWcgKCsgKHJlYWwtcGFydCB6MSkgKHJlYWwtcGFy dCB6MikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrIChpbWFnLXBhcnQgejEpIChp bWFnLXBhcnQgejIpKSkpCiAgICAgICAoZGVmaW5lIChzdWItY29tcGxleCB6MSB6MikKICAgICAg ICAgKG1ha2UtZnJvbS1yZWFsLWltYWcgKC0gKHJlYWwtcGFydCB6MSkgKHJlYWwtcGFydCB6Mikp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtIChpbWFnLXBhcnQgejEpIChpbWFnLXBh cnQgejIpKSkpCiAgICAgICAoZGVmaW5lIChtdWwtY29tcGxleCB6MSB6MikKICAgICAgICAgKG1h a2UtZnJvbS1tYWctYW5nICgqIChtYWduaXR1ZGUgejEpIChtYWduaXR1ZGUgejIpKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgKCsgKGFuZ2xlIHoxKSAoYW5nbGUgejIpKSkpCiAgICAgICAo ZGVmaW5lIChkaXYtY29tcGxleCB6MSB6MikKICAgICAgICAgKG1ha2UtZnJvbS1tYWctYW5nICgv IChtYWduaXR1ZGUgejEpIChtYWduaXR1ZGUgejIpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgKC0gKGFuZ2xlIHoxKSAoYW5nbGUgejIpKSkpCiAgICAgICAoZGVmaW5lICh0YWcgeikgKGF0 dGFjaC10YWcgJ2NvbXBsZXggeikpCiAgICAgICAocHV0ICdhZGQgJyhjb21wbGV4IGNvbXBsZXgp CiAgICAgICAgICAgIChsYW1iZGEgKHoxIHoyKSAodGFnIChhZGQtY29tcGxleCB6MSB6MikpKSkK ICAgICAgIChwdXQgJ3N1YiAnKGNvbXBsZXggY29tcGxleCkKICAgICAgICAgICAgKGxhbWJkYSAo ejEgejIpICh0YWcgKHN1Yi1jb21wbGV4IHoxIHoyKSkpKQogICAgICAgKHB1dCAnbXVsICcoY29t cGxleCBjb21wbGV4KQogICAgICAgICAgICAobGFtYmRhICh6MSB6MikgKHRhZyAobXVsLWNvbXBs ZXggejEgejIpKSkpCiAgICAgICAocHV0ICdkaXYgJyhjb21wbGV4IGNvbXBsZXgpCiAgICAgICAg ICAgIChsYW1iZGEgKHoxIHoyKSAodGFnIChkaXYtY29tcGxleCB6MSB6MikpKSkKICAgICAgIChw dXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ2NvbXBsZXgKICAgICAgICAgICAgKGxhbWJkYSAoeCB5 KSAodGFnIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkpKSkKICAgICAgIChwdXQgJ21ha2UtZnJv bS1tYWctYW5nICdjb21wbGV4CiAgICAgICAgICAgIChsYW1iZGEgKHIgYSkgKHRhZyAobWFrZS1m cm9tLW1hZy1hbmcgciBhKSkpKQogICAgICAgJ2RvbmUpCgogICAgIChkZWZpbmUgKG1ha2UtY29t cGxleC1mcm9tLXJlYWwtaW1hZyB4IHkpCiAgICAgICAoKGdldCAnbWFrZS1mcm9tLXJlYWwtaW1h ZyAnY29tcGxleCkgeCB5KSkKCiAgICAgKGRlZmluZSAobWFrZS1jb21wbGV4LWZyb20tbWFnLWFu ZyByIGEpCiAgICAgICAoKGdldCAnbWFrZS1mcm9tLW1hZy1hbmcgJ2NvbXBsZXgpIHIgYSkpCgoK IytlbmRfc3JjCgojK1JFU1VMVFM6CgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGgg OnJlc3VsdHMgb3V0cHV0IDpub3dlYi1yZWYgYXBwbHktZ2VuZXJpYwogICAgIChkZWZpbmUgKGF0 dGFjaC10YWcgdHlwZS10YWcgY29udGVudHMpCiAgICAgICAoY29ucyB0eXBlLXRhZyBjb250ZW50 cykpCgogICAgIChkZWZpbmUgKHR5cGUtdGFnIGRhdHVtKQogICAgICAgKGlmIChwYWlyPyBkYXR1 bSkKICAgICAgICAgICAoY2FyIGRhdHVtKQogICAgICAgICAgIChlcnJvciAiQmFkIHRhZ2dlZCBk YXR1bSAtLSBUWVBFLVRBRyIgZGF0dW0pKSkKCiAgICAgKGRlZmluZSAoY29udGVudHMgZGF0dW0p CiAgICAgICAoaWYgKHBhaXI/IGRhdHVtKQogICAgICAgICAgIChjZHIgZGF0dW0pCiAgICAgICAg ICAgKGVycm9yICJCYWQgdGFnZ2VkIGRhdHVtIC0tIENPTlRFTlRTIiBkYXR1bSkpKQoKICAgICAo ZGVmaW5lIChyZWN0YW5ndWxhcj8geikKICAgICAgIChlcT8gKHR5cGUtdGFnIHopICdyZWN0YW5n dWxhcikpCgogICAgIChkZWZpbmUgKHBvbGFyPyB6KQogICAgICAgKGVxPyAodHlwZS10YWcgeikg J3BvbGFyKSkKCiAgICAgKGRlZmluZSAoYXBwbHktZ2VuZXJpYyBvcCAuIGFyZ3MpCiAgICAgICAo bGV0ICgodHlwZS10YWdzIChtYXAgdHlwZS10YWcgYXJncykpKQogICAgICAgICAobGV0ICgocHJv YyAoZ2V0IG9wIHR5cGUtdGFncykpKQogICAgICAgICAgIChpZiBwcm9jCiAgICAgICAgICAgICAg IChhcHBseSBwcm9jIChtYXAgY29udGVudHMgYXJncykpCiAgICAgICAgICAgICAgIChlcnJvcgog ICAgICAgICAgICAgICAgICJObyBtZXRob2QgZm9yIHRoZXNlIHR5cGVzIC0tIEFQUExZLUdFTkVS SUMiCiAgICAgICAgICAgICAgICAgKGxpc3Qgb3AgdHlwZS10YWdzKSkpKSkpCgogICAgIChkZWZp bmUgKHJlYWwtcGFydCB6KSAoYXBwbHktZ2VuZXJpYyAncmVhbC1wYXJ0IHopKQogICAgIChkZWZp bmUgKGltYWctcGFydCB6KSAoYXBwbHktZ2VuZXJpYyAnaW1hZy1wYXJ0IHopKQogICAgIChkZWZp bmUgKG1hZ25pdHVkZSB6KSAoYXBwbHktZ2VuZXJpYyAnbWFnbml0dWRlIHopKQogICAgIChkZWZp bmUgKGFuZ2xlIHopIChhcHBseS1nZW5lcmljICdhbmdsZSB6KSkKCiMrZW5kX3NyYwoKKioqIERP TkUgRXhlcmNpc2UgMi43NyBnZW5lcmljLWFsZ2VicmEtbWFnbml0dWRlCiAgICBDTE9TRUQ6IFsy MDE5LTEwLTEyIFNhdCAxNjowMV0KWWVhaCwgZ3JlYXQsIERyLiBBYmVsc29uLiBZb3UncmUgY2Fz dWFsbHkgcmVmZXJyaW5nIHRvIHRoZSB+YXBwbHktZ2VuZXJpY34sCm5vdCByZWFsbHkgc3BlY2lm eWluZyB3aGljaCBvbmUgdG8gdXNlLiBBbHNvLCBJIG5ldmVyIGhhZCB0byB1c2UgdGhlCn50eXBl LXRhZ34gYW5kIH5jb250ZW50c34sIHdoaWNoIHN1ZGRlbmx5IGFwcGVhciBoZXJlLgoKIytiZWdp bl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpub3dlYi1yZWYgYWx5 c3NhLWNvbXBsZXgtc3VnZ2VzdGlvbgogICAgICAgICAgKHB1dCAncmVhbC1wYXJ0ICcoY29tcGxl eCkgcmVhbC1wYXJ0KQogICAgICAgICAgKHB1dCAnaW1hZy1wYXJ0ICcoY29tcGxleCkgaW1hZy1w YXJ0KQogICAgICAgICAgKHB1dCAnbWFnbml0dWRlICcoY29tcGxleCkgbWFnbml0dWRlKQogICAg ICAgICAgKHB1dCAnYW5nbGUgJyhjb21wbGV4KSBhbmdsZSkKIytlbmRfc3JjCgojK2JlZ2luX3Ny YyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKKGRlZmluZSBmYWxzZSAjZikK KGRlZmluZSB0cnVlICAjdCkKPDxwdXQtYW5kLWdldD4+Cjw8YXBwbHktZ2VuZXJpYz4+Cgo8PGdl bmVyaWMtYXJpdGhtZXRpYy1wYWNrYWdlcz4+CgooaW5zdGFsbC1yZWN0YW5ndWxhci1wYWNrYWdl KQooaW5zdGFsbC1jb21wbGV4LXBhY2thZ2UpCgo8PGFseXNzYS1jb21wbGV4LXN1Z2dlc3Rpb24+ PgoKKHNob3cgI3QgIkxvdWlzJ3MgcmVzdWx0OiAiIChtYWduaXR1ZGUgKG1ha2UtY29tcGxleC1m cm9tLXJlYWwtaW1hZyAzIDQpKSAiXG4iKQoKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogTG91aXMn cyByZXN1bHQ6IDUKClRoaXMgZXhhbXBsZSBpbGx1c3RyYXRlcyB3aGF0IGNhbiwgcGVyaGFwcywg YmUgY2FsbGVkICJkb3VibGUKZGlzcGF0Y2giLiBJbmRlZWQsICBvdXIgImNvbXBsZXgiIGltcGxl bWVudGF0aW9uIHN0aWxsIGtlZXBzIHRoZSAncmVjdGFuZ3VsYXIKYW5kICdwb2xhciB0YWdzLCBz byB0aGUgb25seSB0aGluZyB0aGF0IHRoZSBjb21wbGV4IH5tYWduaXR1ZGV+IHNob3VsZCBkbyBp cwp0byBjYWxsICh0aHJvdWdoIHRoZSBkaXNwYXRjaCB0YWJsZSkgdGhlIG9sZCBmdW5jdGlvbiB+ bWFnbml0dWRlfiwgd2hpY2gKd2lsbCwgYnkgaXRzZWxmLCBkaXNwYXRjaCBvbiB0aGUgb2xkIHRh Z3MuIH5hcHBseS1nZW5lcmljfiBpcyBjYWxsZWQgdHdpY2UsCmZpcnN0IGZvciBhICdjb21wbGV4 IHRhZywgYW4gbGF0ZXIgZm9yIHRoZSAncG9sYXIgdGFnLiAKClJlbWFyazogdGhpcyAiZWFzeSIg ZXhlcmNpc2UgdG9vayBtb3JlIHRoYW4gNCBob3VycyB0byBkZWJ1ZyBhbmQgY29uc2lzdHMgb2YK MjI3IGxpbmVzIG9mIGNvZGUuCgoqKiogRE9ORSBFeGVyY2lzZSAyLjc4IE9yZGluYXJ5IG51bWJl cnMgZm9yIHNjaGVtZQogICAgQ0xPU0VEOiBbMjAxOS0xMC0xMiBTYXQgMjE6MDZdCgojK2JlZ2lu X3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQgOm5vd2ViLXJlZiBzaW1w bGlmaWVkLXNjaGVtZS1udW1iZXIKICAgICAoZGVmaW5lIChhZGQgeCB5KSAoYXBwbHktZ2VuZXJp YyAnYWRkIHggeSkpCiAgICAgKGRlZmluZSAoc3ViIHggeSkgKGFwcGx5LWdlbmVyaWMgJ3N1YiB4 IHkpKQogICAgIChkZWZpbmUgKG11bCB4IHkpIChhcHBseS1nZW5lcmljICdtdWwgeCB5KSkKICAg ICAoZGVmaW5lIChkaXYgeCB5KSAoYXBwbHktZ2VuZXJpYyAnZGl2IHggeSkpCiAgICAgKGRlZmlu ZSAoYXR0YWNoLXRhZyB0eXBlLXRhZyBjb250ZW50cykKICAgICAgIChpZiAoZXE/IHR5cGUtdGFn ICdzY2hlbWUtbnVtYmVyKQogICAgICAgICAgIGNvbnRlbnRzCiAgICAgICAgICAgKGNvbnMgdHlw ZS10YWcgY29udGVudHMpKSkKCiAgICAgKGRlZmluZSAodHlwZS10YWcgZGF0dW0pCiAgICAgICAo Y29uZCAoKHBhaXI/IGRhdHVtKSAoY2FyIGRhdHVtKSkKICAgICAgICAgICAgICgobnVtYmVyPyBk YXR1bSkgJ3NjaGVtZS1udW1iZXIpCiAgICAgICAgICAgICAoZWxzZSAoZXJyb3IgIkJhZCB0YWdn ZWQgZGF0dW0gLS0gVFlQRS1UQUciIGRhdHVtKSkpKQoKICAgICAoZGVmaW5lIChjb250ZW50cyBk YXR1bSkKICAgICAgIChjb25kICgocGFpcj8gZGF0dW0pIChjZHIgZGF0dW0pKQogICAgICAgICAg ICAgKChudW1iZXI/IGRhdHVtKSBkYXR1bSkKICAgICAgICAgICAgIChlbHNlIChlcnJvciAiQmFk IHRhZ2dlZCBkYXR1bSAtLSBDT05URU5UUyIgZGF0dW0pKSkpCgogICAgIChkZWZpbmUgKGFwcGx5 LWdlbmVyaWMgb3AgLiBhcmdzKQogICAgICAgKGxldCAoKHR5cGUtdGFncyAobWFwIHR5cGUtdGFn IGFyZ3MpKSkKICAgICAgICAgKGxldCAoKHByb2MgKGdldCBvcCB0eXBlLXRhZ3MpKSkKICAgICAg ICAgICAoaWYgcHJvYwogICAgICAgICAgICAgICAoYXBwbHkgcHJvYyAobWFwIGNvbnRlbnRzIGFy Z3MpKQogICAgICAgICAgICAgICAoZXJyb3IKICAgICAgICAgICAgICAgICAiTm8gbWV0aG9kIGZv ciB0aGVzZSB0eXBlcyAtLSBBUFBMWS1HRU5FUklDIgogICAgICAgICAgICAgICAgIChsaXN0IG9w IHR5cGUtdGFncykpKSkpKQoKICAgICAoZGVmaW5lIChpbnN0YWxsLXNjaGVtZS1udW1iZXItcGFj a2FnZSkKICAgICAgIChkZWZpbmUgKHRhZyB4KQogICAgICAgICAoYXR0YWNoLXRhZyAnc2NoZW1l LW51bWJlciB4KSkKICAgICAgIChwdXQgJ2FkZCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJl cikKICAgICAgICAgICAgKGxhbWJkYSAoeCB5KSAodGFnICgrIHggeSkpKSkKICAgICAgIChwdXQg J3N1YiAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKICAgICAgICAgICAgKGxhbWJkYSAo eCB5KSAodGFnICgtIHggeSkpKSkKICAgICAgIChwdXQgJ211bCAnKHNjaGVtZS1udW1iZXIgc2No ZW1lLW51bWJlcikKICAgICAgICAgICAgKGxhbWJkYSAoeCB5KSAodGFnICgqIHggeSkpKSkKICAg ICAgIChwdXQgJ2RpdiAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKICAgICAgICAgICAg KGxhbWJkYSAoeCB5KSAodGFnICgvIHggeSkpKSkKICAgICAgIChwdXQgJ21ha2UgJ3NjaGVtZS1u dW1iZXIKICAgICAgICAgICAgKGxhbWJkYSAoeCkgKHRhZyB4KSkpCiAgICAgICAnZG9uZSkKCiAg ICAgKGRlZmluZSAobWFrZS1zY2hlbWUtbnVtYmVyIG4pCiAgICAgICAoKGdldCAnbWFrZSAnc2No ZW1lLW51bWJlcikgbikpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJv dGggOnJlc3VsdHMgb3V0cHV0Cjw8cHV0LWFuZC1nZXQ+Pgo8PHNpbXBsaWZpZWQtc2NoZW1lLW51 bWJlcj4+CihpbnN0YWxsLXNjaGVtZS1udW1iZXItcGFja2FnZSkKKHNob3cgI3QgIkFkZGluZzog KCsgMSAyKSA6ICIgKGFkZCAobWFrZS1zY2hlbWUtbnVtYmVyIDEpIChtYWtlLXNjaGVtZS1udW1i ZXIgMikpICJcbiIpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IEFkZGluZzogKCsgMSAyKSA6IDMK ClRoZSB0YXNrIGlzIHRvICJNb2RpZnkgdGhlIGRlZmluaXRpb25zIG9mIGB0eXBlLXRhZycsIGBj b250ZW50cycsIGFuZApgYXR0YWNoLXRhZyciLCB0aGVyZWZvcmUgKGFzIHRoaXMgZG9lc24ndCBz ZWVtIHJlYWxseSB1c2VmdWwpLCBJIGFtIG9ubHkKY29weWluZyB0aG9zZSBmdW5jdGlvbnMgZm9y IG1vZGlmaWNhdGlvbiBpbiB0aGlzIHBhcnRpY3VsYXIgZXhlcmNpc2UuCgoqKiogRE9ORSBFeGVy Y2lzZSAyLjc5IGdlbmVyaWMtZXF1YWxpdHkKICAgIENMT1NFRDogWzIwMTktMTAtMTQgTW9uIDE1 OjU4XQoKSW4gdGhpcyBleGVyY2lzZSBJIGFtIGNvcHlpbmcgdGhlIHdob2xlIHBhY2thZ2UgYWdh aW4sIGFzIGR1ZSB0byB0aGUgcG9vcgphcmNoaXRlY3R1cmUgb2YgdGhlIGFsZ2VicmEgc3lzdGVt LCBhZGRpbmcgc3VjaCBhIHRpbnkgZmVhdHVyZSBpcyBub3QgYWRkaXRpdmUuCgojK2JlZ2luX3Ny YyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKCiAgKGRlZmluZSBmYWxzZSAj ZikKICAoZGVmaW5lIHRydWUgICN0KQogIChkZWZpbmUgKG1ha2UtdGFibGUpCiAgICAobGV0ICgo bG9jYWwtdGFibGUgKGxpc3QgJyp0YWJsZSopKSkKICAgICAgKGRlZmluZSAobG9va3VwIGtleS0x IGtleS0yKQoJKGxldCAoKHN1YnRhYmxlIChhc3NvYyBrZXktMSAoY2RyIGxvY2FsLXRhYmxlKSkp KQoJICAoaWYgc3VidGFibGUKCSAgICAgIChsZXQgKChyZWNvcmQgKGFzc29jIGtleS0yIChjZHIg c3VidGFibGUpKSkpCgkJKGlmIHJlY29yZAoJCSAgICAoY2RyIHJlY29yZCkKCQkgICAgZmFsc2Up KQoJICAgICAgZmFsc2UpKSkKICAgICAgKGRlZmluZSAoaW5zZXJ0ISBrZXktMSBrZXktMiB2YWx1 ZSkKCShsZXQgKChzdWJ0YWJsZSAoYXNzb2Mga2V5LTEgKGNkciBsb2NhbC10YWJsZSkpKSkKCSAg KGlmIHN1YnRhYmxlCgkgICAgICAobGV0ICgocmVjb3JkIChhc3NvYyBrZXktMiAoY2RyIHN1YnRh YmxlKSkpKQoJCShpZiByZWNvcmQKCQkgICAgKHNldC1jZHIhIHJlY29yZCB2YWx1ZSkKCQkgICAg KHNldC1jZHIhIHN1YnRhYmxlCgkJCSAgICAgIChjb25zIChjb25zIGtleS0yIHZhbHVlKQoJCQkJ ICAgIChjZHIgc3VidGFibGUpKSkpKQoJICAgICAgKHNldC1jZHIhIGxvY2FsLXRhYmxlCgkJCShj b25zIChsaXN0IGtleS0xCgkJCQkgICAgKGNvbnMga2V5LTIgdmFsdWUpKQoJCQkgICAgICAoY2Ry IGxvY2FsLXRhYmxlKSkpKSkKCSdvaykKICAgICAgKGRlZmluZSAoZGlzcGF0Y2ggbSkKCShjb25k ICgoZXE/IG0gJ2xvb2t1cC1wcm9jKSBsb29rdXApCgkgICAgICAoKGVxPyBtICdpbnNlcnQtcHJv YyEpIGluc2VydCEpCgkgICAgICAoZWxzZSAoZXJyb3IgIlVua25vd24gb3BlcmF0aW9uIC0tIFRB QkxFIiBtKSkpKQogICAgICBkaXNwYXRjaCkpCgogIChkZWZpbmUgb3BlcmF0aW9uLXRhYmxlICht YWtlLXRhYmxlKSkKICAoZGVmaW5lIGdldCAob3BlcmF0aW9uLXRhYmxlICdsb29rdXAtcHJvYykp CiAgKGRlZmluZSBwdXQgKG9wZXJhdGlvbi10YWJsZSAnaW5zZXJ0LXByb2MhKSkKICAoZGVmaW5l IChhdHRhY2gtdGFnIHR5cGUtdGFnIGNvbnRlbnRzKQogICAgKGNvbnMgdHlwZS10YWcgY29udGVu dHMpKQoKICAoZGVmaW5lICh0eXBlLXRhZyBkYXR1bSkKICAgIChpZiAocGFpcj8gZGF0dW0pCgko Y2FyIGRhdHVtKQoJKGVycm9yICJCYWQgdGFnZ2VkIGRhdHVtIC0tIFRZUEUtVEFHIiBkYXR1bSkp KQoKICAoZGVmaW5lIChjb250ZW50cyBkYXR1bSkKICAgIChpZiAocGFpcj8gZGF0dW0pCgkoY2Ry IGRhdHVtKQoJKGVycm9yICJCYWQgdGFnZ2VkIGRhdHVtIC0tIENPTlRFTlRTIiBkYXR1bSkpKQoK ICAoZGVmaW5lIChyZWN0YW5ndWxhcj8geikKICAgIChlcT8gKHR5cGUtdGFnIHopICdyZWN0YW5n dWxhcikpCgogIChkZWZpbmUgKHBvbGFyPyB6KQogICAgKGVxPyAodHlwZS10YWcgeikgJ3BvbGFy KSkKCiAgKGRlZmluZSAoYXBwbHktZ2VuZXJpYyBvcCAuIGFyZ3MpCiAgICAobGV0ICgodHlwZS10 YWdzIChtYXAgdHlwZS10YWcgYXJncykpKQogICAgICAobGV0ICgocHJvYyAoZ2V0IG9wIHR5cGUt dGFncykpKQoJKGlmIHByb2MKCSAgICAoYXBwbHkgcHJvYyAobWFwIGNvbnRlbnRzIGFyZ3MpKQoJ ICAgIChlcnJvcgoJICAgICAgIk5vIG1ldGhvZCBmb3IgdGhlc2UgdHlwZXMgLS0gQVBQTFktR0VO RVJJQyIKCSAgICAgIChsaXN0IG9wIHR5cGUtdGFncykpKSkpKQoKICAoZGVmaW5lIChyZWFsLXBh cnQgeikgKGFwcGx5LWdlbmVyaWMgJ3JlYWwtcGFydCB6KSkKICAoZGVmaW5lIChpbWFnLXBhcnQg eikgKGFwcGx5LWdlbmVyaWMgJ2ltYWctcGFydCB6KSkKICAoZGVmaW5lIChtYWduaXR1ZGUgeikg KGFwcGx5LWdlbmVyaWMgJ21hZ25pdHVkZSB6KSkKICAoZGVmaW5lIChhbmdsZSB6KSAoYXBwbHkt Z2VuZXJpYyAnYW5nbGUgeikpCgogIChkZWZpbmUgKGFkZCB4IHkpIChhcHBseS1nZW5lcmljICdh ZGQgeCB5KSkKICAoZGVmaW5lIChzdWIgeCB5KSAoYXBwbHktZ2VuZXJpYyAnc3ViIHggeSkpCiAg KGRlZmluZSAobXVsIHggeSkgKGFwcGx5LWdlbmVyaWMgJ211bCB4IHkpKQogIChkZWZpbmUgKGRp diB4IHkpIChhcHBseS1nZW5lcmljICdkaXYgeCB5KSkKICAgCiAgKGRlZmluZSAoZXF1PyB4IHkp IChhcHBseS1nZW5lcmljICdlcXU/IHggeSkpCgogIChkZWZpbmUgKGluc3RhbGwtc2NoZW1lLW51 bWJlci1wYWNrYWdlKQogICAgKGRlZmluZSAodGFnIHgpCiAgICAgIChhdHRhY2gtdGFnICdzY2hl bWUtbnVtYmVyIHgpKQogICAgKHB1dCAnYWRkICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVy KQoJIChsYW1iZGEgKHggeSkgKHRhZyAoKyB4IHkpKSkpCiAgICAocHV0ICdzdWIgJyhzY2hlbWUt bnVtYmVyIHNjaGVtZS1udW1iZXIpCgkgKGxhbWJkYSAoeCB5KSAodGFnICgtIHggeSkpKSkKICAg IChwdXQgJ211bCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAobGFtYmRhICh4IHkp ICh0YWcgKCogeCB5KSkpKQogICAgKHB1dCAnZGl2ICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVt YmVyKQoJIChsYW1iZGEgKHggeSkgKHRhZyAoLyB4IHkpKSkpCiAgICAocHV0ICdtYWtlICdzY2hl bWUtbnVtYmVyCgkgKGxhbWJkYSAoeCkgKHRhZyB4KSkpCiAgICAocHV0ICdlcXU/ICcoc2NoZW1l LW51bWJlciBzY2hlbWUtbnVtYmVyKQogICAgICAgICAobGFtYmRhICh4IHkpICg9IHggeSkpKQog ICAgJ2RvbmUpCgogIChkZWZpbmUgKG1ha2Utc2NoZW1lLW51bWJlciBuKQogICAgKChnZXQgJ21h a2UgJ3NjaGVtZS1udW1iZXIpIG4pKQoKICAoZGVmaW5lIChpbnN0YWxsLXJhdGlvbmFsLXBhY2th Z2UpCiAgICAoZGVmaW5lIChudW1lciB4KSAoY2FyIHgpKQogICAgKGRlZmluZSAoZGVub20geCkg KGNkciB4KSkKICAgIChkZWZpbmUgKG1ha2UtcmF0IG4gZCkKICAgICAgKGxldCAoKGcgKGdjZCBu IGQpKSkKCShjb25zICgvIG4gZykgKC8gZCBnKSkpKQogICAgKGRlZmluZSAoYWRkLXJhdCB4IHkp CiAgICAgIChtYWtlLXJhdCAoKyAoKiAobnVtZXIgeCkgKGRlbm9tIHkpKQoJCSAgICgqIChudW1l ciB5KSAoZGVub20geCkpKQoJCSgqIChkZW5vbSB4KSAoZGVub20geSkpKSkKICAgIChkZWZpbmUg KHN1Yi1yYXQgeCB5KQogICAgICAobWFrZS1yYXQgKC0gKCogKG51bWVyIHgpIChkZW5vbSB5KSkK CQkgICAoKiAobnVtZXIgeSkgKGRlbm9tIHgpKSkKCQkoKiAoZGVub20geCkgKGRlbm9tIHkpKSkp CiAgICAoZGVmaW5lIChtdWwtcmF0IHggeSkKICAgICAgKG1ha2UtcmF0ICgqIChudW1lciB4KSAo bnVtZXIgeSkpCgkJKCogKGRlbm9tIHgpIChkZW5vbSB5KSkpKQogICAgKGRlZmluZSAoZGl2LXJh dCB4IHkpCiAgICAgIChtYWtlLXJhdCAoKiAobnVtZXIgeCkgKGRlbm9tIHkpKQoJCSgqIChkZW5v bSB4KSAobnVtZXIgeSkpKSkKCiAgICAoZGVmaW5lICh0YWcgeCkgKGF0dGFjaC10YWcgJ3JhdGlv bmFsIHgpKQogICAgKHB1dCAnYWRkICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgKGxhbWJkYSAoeCB5 KSAodGFnIChhZGQtcmF0IHggeSkpKSkKICAgIChwdXQgJ3N1YiAnKHJhdGlvbmFsIHJhdGlvbmFs KQoJIChsYW1iZGEgKHggeSkgKHRhZyAoc3ViLXJhdCB4IHkpKSkpCiAgICAocHV0ICdtdWwgJyhy YXRpb25hbCByYXRpb25hbCkKCSAobGFtYmRhICh4IHkpICh0YWcgKG11bC1yYXQgeCB5KSkpKQog ICAgKHB1dCAnZGl2ICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgKGxhbWJkYSAoeCB5KSAodGFnIChk aXYtcmF0IHggeSkpKSkKCiAgICAocHV0ICdtYWtlICdyYXRpb25hbAoJIChsYW1iZGEgKG4gZCkg KHRhZyAobWFrZS1yYXQgbiBkKSkpKQogICAgKHB1dCAnZXF1PyAnKHJhdGlvbmFsIHJhdGlvbmFs KQogICAgICAgICAobGFtYmRhICh4IHkpICg9IDAgKG51bWVyIChzdWItcmF0IHggeSkpKSkpCiAg ICAnZG9uZSkKCiAgKGRlZmluZSAobWFrZS1yYXRpb25hbCBuIGQpCiAgICAoKGdldCAnbWFrZSAn cmF0aW9uYWwpIG4gZCkpCgogIChkZWZpbmUgKGluc3RhbGwtcmVjdGFuZ3VsYXItcGFja2FnZSkK CiAgICAoZGVmaW5lIChyZWFsLXBhcnQgeikgKGNhciB6KSkKICAgIChkZWZpbmUgKGltYWctcGFy dCB6KSAoY2RyIHopKQogICAgKGRlZmluZSAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpIChjb25z IHggeSkpCiAgICAoZGVmaW5lIChtYWduaXR1ZGUgeikKICAgICAgKHNxcnQgKCsgKHNxdWFyZSAo cmVhbC1wYXJ0IHopKQoJICAgICAgIChzcXVhcmUgKGltYWctcGFydCB6KSkpKSkKICAgIChkZWZp bmUgKGFuZ2xlIHopCiAgICAgIChhdGFuIChpbWFnLXBhcnQgeikgKHJlYWwtcGFydCB6KSkpCiAg ICAoZGVmaW5lIChtYWtlLWZyb20tbWFnLWFuZyByIGEpCiAgICAgIChjb25zICgqIHIgKGNvcyBh KSkgKCogciAoc2luIGEpKSkpCgogICAgKGRlZmluZSAodGFnIHgpIChhdHRhY2gtdGFnICdyZWN0 YW5ndWxhciB4KSkKICAgIChwdXQgJ3JlYWwtcGFydCAnKHJlY3Rhbmd1bGFyKSByZWFsLXBhcnQp CiAgICAocHV0ICdpbWFnLXBhcnQgJyhyZWN0YW5ndWxhcikgaW1hZy1wYXJ0KQogICAgKHB1dCAn bWFnbml0dWRlICcocmVjdGFuZ3VsYXIpIG1hZ25pdHVkZSkKICAgIChwdXQgJ2FuZ2xlICcocmVj dGFuZ3VsYXIpIGFuZ2xlKQogICAgKHB1dCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAncmVjdGFuZ3Vs YXIKCSAobGFtYmRhICh4IHkpICh0YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSkpKQogICAg KHB1dCAnbWFrZS1mcm9tLW1hZy1hbmcgJ3JlY3Rhbmd1bGFyCgkgKGxhbWJkYSAociBhKSAodGFn IChtYWtlLWZyb20tbWFnLWFuZyByIGEpKSkpCiAgICAnZG9uZSkKCiAgKGRlZmluZSAoaW5zdGFs bC1wb2xhci1wYWNrYWdlKQoKICAgIChkZWZpbmUgKG1hZ25pdHVkZSB6KSAoY2FyIHopKQogICAg KGRlZmluZSAoYW5nbGUgeikgKGNkciB6KSkKICAgIChkZWZpbmUgKG1ha2UtZnJvbS1tYWctYW5n IHIgYSkgKGNvbnMgciBhKSkKICAgIChkZWZpbmUgKHJlYWwtcGFydCB6KQogICAgICAoKiAobWFn bml0dWRlIHopIChjb3MgKGFuZ2xlIHopKSkpCiAgICAoZGVmaW5lIChpbWFnLXBhcnQgeikKICAg ICAgKCogKG1hZ25pdHVkZSB6KSAoc2luIChhbmdsZSB6KSkpKQogICAgKGRlZmluZSAobWFrZS1m cm9tLXJlYWwtaW1hZyB4IHkpCiAgICAgIChjb25zIChzcXJ0ICgrIChzcXVhcmUgeCkgKHNxdWFy ZSB5KSkpCgkgICAgKGF0YW4geSB4KSkpCgogICAgKGRlZmluZSAodGFnIHgpIChhdHRhY2gtdGFn ICdwb2xhciB4KSkKICAgIChwdXQgJ3JlYWwtcGFydCAnKHBvbGFyKSByZWFsLXBhcnQpCiAgICAo cHV0ICdpbWFnLXBhcnQgJyhwb2xhcikgaW1hZy1wYXJ0KQogICAgKHB1dCAnbWFnbml0dWRlICco cG9sYXIpIG1hZ25pdHVkZSkKICAgIChwdXQgJ2FuZ2xlICcocG9sYXIpIGFuZ2xlKQogICAgKHB1 dCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAncG9sYXIKCSAobGFtYmRhICh4IHkpICh0YWcgKG1ha2Ut ZnJvbS1yZWFsLWltYWcgeCB5KSkpKQogICAgKHB1dCAnbWFrZS1mcm9tLW1hZy1hbmcgJ3BvbGFy CgkgKGxhbWJkYSAociBhKSAodGFnIChtYWtlLWZyb20tbWFnLWFuZyByIGEpKSkpCiAgICAnZG9u ZSkKCiAgKGRlZmluZSAoaW5zdGFsbC1jb21wbGV4LXBhY2thZ2UpCiAgICAoZGVmaW5lIChtYWtl LWZyb20tcmVhbC1pbWFnIHggeSkKICAgICAgKChnZXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ3Jl Y3Rhbmd1bGFyKSB4IHkpKQogICAgKGRlZmluZSAobWFrZS1mcm9tLW1hZy1hbmcgciBhKQogICAg ICAoKGdldCAnbWFrZS1mcm9tLW1hZy1hbmcgJ3BvbGFyKSByIGEpKQogICAgKGRlZmluZSAoYWRk LWNvbXBsZXggejEgejIpCiAgICAgIChtYWtlLWZyb20tcmVhbC1pbWFnICgrIChyZWFsLXBhcnQg ejEpIChyZWFsLXBhcnQgejIpKQoJCQkgICAoKyAoaW1hZy1wYXJ0IHoxKSAoaW1hZy1wYXJ0IHoy KSkpKQogICAgKGRlZmluZSAoc3ViLWNvbXBsZXggejEgejIpCiAgICAgIChtYWtlLWZyb20tcmVh bC1pbWFnICgtIChyZWFsLXBhcnQgejEpIChyZWFsLXBhcnQgejIpKQoJCQkgICAoLSAoaW1hZy1w YXJ0IHoxKSAoaW1hZy1wYXJ0IHoyKSkpKQogICAgKGRlZmluZSAobXVsLWNvbXBsZXggejEgejIp CiAgICAgIChtYWtlLWZyb20tbWFnLWFuZyAoKiAobWFnbml0dWRlIHoxKSAobWFnbml0dWRlIHoy KSkKCQkJICgrIChhbmdsZSB6MSkgKGFuZ2xlIHoyKSkpKQogICAgKGRlZmluZSAoZGl2LWNvbXBs ZXggejEgejIpCiAgICAgIChtYWtlLWZyb20tbWFnLWFuZyAoLyAobWFnbml0dWRlIHoxKSAobWFn bml0dWRlIHoyKSkKCQkJICgtIChhbmdsZSB6MSkgKGFuZ2xlIHoyKSkpKQogICAgKGRlZmluZSAo dGFnIHopIChhdHRhY2gtdGFnICdjb21wbGV4IHopKQogICAgKHB1dCAnYWRkICcoY29tcGxleCBj b21wbGV4KQoJIChsYW1iZGEgKHoxIHoyKSAodGFnIChhZGQtY29tcGxleCB6MSB6MikpKSkKICAg IChwdXQgJ3N1YiAnKGNvbXBsZXggY29tcGxleCkKCSAobGFtYmRhICh6MSB6MikgKHRhZyAoc3Vi LWNvbXBsZXggejEgejIpKSkpCiAgICAocHV0ICdtdWwgJyhjb21wbGV4IGNvbXBsZXgpCgkgKGxh bWJkYSAoejEgejIpICh0YWcgKG11bC1jb21wbGV4IHoxIHoyKSkpKQogICAgKHB1dCAnZGl2ICco Y29tcGxleCBjb21wbGV4KQoJIChsYW1iZGEgKHoxIHoyKSAodGFnIChkaXYtY29tcGxleCB6MSB6 MikpKSkKICAgIChwdXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ2NvbXBsZXgKCSAobGFtYmRhICh4 IHkpICh0YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSkpKQogICAgKHB1dCAnbWFrZS1mcm9t LW1hZy1hbmcgJ2NvbXBsZXgKCSAobGFtYmRhIChyIGEpICh0YWcgKG1ha2UtZnJvbS1tYWctYW5n IHIgYSkpKSkKICAgIChwdXQgJ2VxdT8gJyhjb21wbGV4IGNvbXBsZXgpCiAgICAgICAgIChsYW1i ZGEgKHggeSkgKGFuZCAoPSAwIChyZWFsLXBhcnQgKHN1Yi1jb21wbGV4IHggeSkpKQogICAgICAg ICAgICAgICAgICAgICAgKD0gMCAoaW1hZy1wYXJ0IChzdWItY29tcGxleCB4IHkpKSkpKSkKICAg ICdkb25lKQoKICAoZGVmaW5lIChtYWtlLWNvbXBsZXgtZnJvbS1yZWFsLWltYWcgeCB5KQogICAg KChnZXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ2NvbXBsZXgpIHggeSkpCgogIChkZWZpbmUgKG1h a2UtY29tcGxleC1mcm9tLW1hZy1hbmcgciBhKQogICAgKChnZXQgJ21ha2UtZnJvbS1tYWctYW5n ICdjb21wbGV4KSByIGEpKQoKCgogIChpbnN0YWxsLXJlY3Rhbmd1bGFyLXBhY2thZ2UpCiAgKGlu c3RhbGwtcG9sYXItcGFja2FnZSkKICAoaW5zdGFsbC1yYXRpb25hbC1wYWNrYWdlKQogIChpbnN0 YWxsLXNjaGVtZS1udW1iZXItcGFja2FnZSkKICAoaW5zdGFsbC1jb21wbGV4LXBhY2thZ2UpCgog IChzaG93ICN0ICJTY2hlbWUtbnVtYmVyOiAiIChlcXU/IChtYWtlLXNjaGVtZS1udW1iZXIgMSkg KG1ha2Utc2NoZW1lLW51bWJlciAyKSkgIlxuIikKICAoc2hvdyAjdCAiUmF0aW9uYWw6ICIgKGVx dT8gKG1ha2UtcmF0aW9uYWwgMSAyKSAobWFrZS1yYXRpb25hbCAyIDQpKSAiXG4iKQogIChzaG93 ICN0ICJDb21wbGV4OiAiIChlcXU/IChtYWtlLWNvbXBsZXgtZnJvbS1tYWctYW5nIDEgMCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobWFrZS1jb21wbGV4LWZyb20tcmVhbC1pbWFnIDEg MCkpICJcbiIpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IFNjaGVtZS1udW1iZXI6ICNmCjogUmF0 aW9uYWw6ICN0CjogQ29tcGxleDogI3QKCioqKiBET05FIEV4ZXJjaXNlIDIuODAgR2VuZXJpYyBh cml0aG1ldGljIHplcm8/CiAgICBDTE9TRUQ6IFsyMDE5LTEwLTE0IE1vbiAxNzoxOF0KCiMrYmVn aW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAoKICAoZGVmaW5lIGZh bHNlICNmKQogIChkZWZpbmUgdHJ1ZSAgI3QpCiAgKGRlZmluZSAobWFrZS10YWJsZSkKICAgIChs ZXQgKChsb2NhbC10YWJsZSAobGlzdCAnKnRhYmxlKikpKQogICAgICAoZGVmaW5lIChsb29rdXAg a2V5LTEga2V5LTIpCgkobGV0ICgoc3VidGFibGUgKGFzc29jIGtleS0xIChjZHIgbG9jYWwtdGFi bGUpKSkpCgkgIChpZiBzdWJ0YWJsZQoJICAgICAgKGxldCAoKHJlY29yZCAoYXNzb2Mga2V5LTIg KGNkciBzdWJ0YWJsZSkpKSkKCQkoaWYgcmVjb3JkCgkJICAgIChjZHIgcmVjb3JkKQoJCSAgICBm YWxzZSkpCgkgICAgICBmYWxzZSkpKQogICAgICAoZGVmaW5lIChpbnNlcnQhIGtleS0xIGtleS0y IHZhbHVlKQoJKGxldCAoKHN1YnRhYmxlIChhc3NvYyBrZXktMSAoY2RyIGxvY2FsLXRhYmxlKSkp KQoJICAoaWYgc3VidGFibGUKCSAgICAgIChsZXQgKChyZWNvcmQgKGFzc29jIGtleS0yIChjZHIg c3VidGFibGUpKSkpCgkJKGlmIHJlY29yZAoJCSAgICAoc2V0LWNkciEgcmVjb3JkIHZhbHVlKQoJ CSAgICAoc2V0LWNkciEgc3VidGFibGUKCQkJICAgICAgKGNvbnMgKGNvbnMga2V5LTIgdmFsdWUp CgkJCQkgICAgKGNkciBzdWJ0YWJsZSkpKSkpCgkgICAgICAoc2V0LWNkciEgbG9jYWwtdGFibGUK CQkJKGNvbnMgKGxpc3Qga2V5LTEKCQkJCSAgICAoY29ucyBrZXktMiB2YWx1ZSkpCgkJCSAgICAg IChjZHIgbG9jYWwtdGFibGUpKSkpKQoJJ29rKQogICAgICAoZGVmaW5lIChkaXNwYXRjaCBtKQoJ KGNvbmQgKChlcT8gbSAnbG9va3VwLXByb2MpIGxvb2t1cCkKCSAgICAgICgoZXE/IG0gJ2luc2Vy dC1wcm9jISkgaW5zZXJ0ISkKCSAgICAgIChlbHNlIChlcnJvciAiVW5rbm93biBvcGVyYXRpb24g LS0gVEFCTEUiIG0pKSkpCiAgICAgIGRpc3BhdGNoKSkKCiAgKGRlZmluZSBvcGVyYXRpb24tdGFi bGUgKG1ha2UtdGFibGUpKQogIChkZWZpbmUgZ2V0IChvcGVyYXRpb24tdGFibGUgJ2xvb2t1cC1w cm9jKSkKICAoZGVmaW5lIHB1dCAob3BlcmF0aW9uLXRhYmxlICdpbnNlcnQtcHJvYyEpKQogIChk ZWZpbmUgKGF0dGFjaC10YWcgdHlwZS10YWcgY29udGVudHMpCiAgICAoY29ucyB0eXBlLXRhZyBj b250ZW50cykpCgogIChkZWZpbmUgKHR5cGUtdGFnIGRhdHVtKQogICAgKGlmIChwYWlyPyBkYXR1 bSkKCShjYXIgZGF0dW0pCgkoZXJyb3IgIkJhZCB0YWdnZWQgZGF0dW0gLS0gVFlQRS1UQUciIGRh dHVtKSkpCgogIChkZWZpbmUgKGNvbnRlbnRzIGRhdHVtKQogICAgKGlmIChwYWlyPyBkYXR1bSkK CShjZHIgZGF0dW0pCgkoZXJyb3IgIkJhZCB0YWdnZWQgZGF0dW0gLS0gQ09OVEVOVFMiIGRhdHVt KSkpCgogIChkZWZpbmUgKHJlY3Rhbmd1bGFyPyB6KQogICAgKGVxPyAodHlwZS10YWcgeikgJ3Jl Y3Rhbmd1bGFyKSkKCiAgKGRlZmluZSAocG9sYXI/IHopCiAgICAoZXE/ICh0eXBlLXRhZyB6KSAn cG9sYXIpKQoKICAoZGVmaW5lIChhcHBseS1nZW5lcmljIG9wIC4gYXJncykKICAgIChsZXQgKCh0 eXBlLXRhZ3MgKG1hcCB0eXBlLXRhZyBhcmdzKSkpCiAgICAgIChsZXQgKChwcm9jIChnZXQgb3Ag dHlwZS10YWdzKSkpCgkoaWYgcHJvYwoJICAgIChhcHBseSBwcm9jIChtYXAgY29udGVudHMgYXJn cykpCgkgICAgKGVycm9yCgkgICAgICAiTm8gbWV0aG9kIGZvciB0aGVzZSB0eXBlcyAtLSBBUFBM WS1HRU5FUklDIgoJICAgICAgKGxpc3Qgb3AgdHlwZS10YWdzKSkpKSkpCgogIChkZWZpbmUgKHJl YWwtcGFydCB6KSAoYXBwbHktZ2VuZXJpYyAncmVhbC1wYXJ0IHopKQogIChkZWZpbmUgKGltYWct cGFydCB6KSAoYXBwbHktZ2VuZXJpYyAnaW1hZy1wYXJ0IHopKQogIChkZWZpbmUgKG1hZ25pdHVk ZSB6KSAoYXBwbHktZ2VuZXJpYyAnbWFnbml0dWRlIHopKQogIChkZWZpbmUgKGFuZ2xlIHopIChh cHBseS1nZW5lcmljICdhbmdsZSB6KSkKCiAgKGRlZmluZSAoYWRkIHggeSkgKGFwcGx5LWdlbmVy aWMgJ2FkZCB4IHkpKQogIChkZWZpbmUgKHN1YiB4IHkpIChhcHBseS1nZW5lcmljICdzdWIgeCB5 KSkKICAoZGVmaW5lIChtdWwgeCB5KSAoYXBwbHktZ2VuZXJpYyAnbXVsIHggeSkpCiAgKGRlZmlu ZSAoZGl2IHggeSkgKGFwcGx5LWdlbmVyaWMgJ2RpdiB4IHkpKQoKICAoZGVmaW5lIChlcXU/IHgg eSkgKGFwcGx5LWdlbmVyaWMgJ2VxdT8geCB5KSkKICAoZGVmaW5lICh6ZXJvPyB4KSAoYXBwbHkt Z2VuZXJpYyAnemVybz8geCkpCgogIChkZWZpbmUgKGluc3RhbGwtc2NoZW1lLW51bWJlci1wYWNr YWdlKQogICAgKGRlZmluZSAodGFnIHgpCiAgICAgIChhdHRhY2gtdGFnICdzY2hlbWUtbnVtYmVy IHgpKQogICAgKHB1dCAnYWRkICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJIChsYW1i ZGEgKHggeSkgKHRhZyAoKyB4IHkpKSkpCiAgICAocHV0ICdzdWIgJyhzY2hlbWUtbnVtYmVyIHNj aGVtZS1udW1iZXIpCgkgKGxhbWJkYSAoeCB5KSAodGFnICgtIHggeSkpKSkKICAgIChwdXQgJ211 bCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAobGFtYmRhICh4IHkpICh0YWcgKCog eCB5KSkpKQogICAgKHB1dCAnZGl2ICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJIChs YW1iZGEgKHggeSkgKHRhZyAoLyB4IHkpKSkpCiAgICAocHV0ICdtYWtlICdzY2hlbWUtbnVtYmVy CgkgKGxhbWJkYSAoeCkgKHRhZyB4KSkpCiAgICAocHV0ICdlcXU/ICcoc2NoZW1lLW51bWJlciBz Y2hlbWUtbnVtYmVyKQoJIChsYW1iZGEgKHggeSkgKD0geCB5KSkpCiAgICAocHV0ICd6ZXJvPyAn KHNjaGVtZS1udW1iZXIpCgkgIChsYW1iZGEgKHgpICg9IDAgeCkpKQogICAgJ2RvbmUpCgogIChk ZWZpbmUgKG1ha2Utc2NoZW1lLW51bWJlciBuKQogICAgKChnZXQgJ21ha2UgJ3NjaGVtZS1udW1i ZXIpIG4pKQoKICAoZGVmaW5lIChpbnN0YWxsLXJhdGlvbmFsLXBhY2thZ2UpCiAgICAoZGVmaW5l IChudW1lciB4KSAoY2FyIHgpKQogICAgKGRlZmluZSAoZGVub20geCkgKGNkciB4KSkKICAgIChk ZWZpbmUgKG1ha2UtcmF0IG4gZCkKICAgICAgKGxldCAoKGcgKGdjZCBuIGQpKSkKCShjb25zICgv IG4gZykgKC8gZCBnKSkpKQogICAgKGRlZmluZSAoYWRkLXJhdCB4IHkpCiAgICAgIChtYWtlLXJh dCAoKyAoKiAobnVtZXIgeCkgKGRlbm9tIHkpKQoJCSAgICgqIChudW1lciB5KSAoZGVub20geCkp KQoJCSgqIChkZW5vbSB4KSAoZGVub20geSkpKSkKICAgIChkZWZpbmUgKHN1Yi1yYXQgeCB5KQog ICAgICAobWFrZS1yYXQgKC0gKCogKG51bWVyIHgpIChkZW5vbSB5KSkKCQkgICAoKiAobnVtZXIg eSkgKGRlbm9tIHgpKSkKCQkoKiAoZGVub20geCkgKGRlbm9tIHkpKSkpCiAgICAoZGVmaW5lICht dWwtcmF0IHggeSkKICAgICAgKG1ha2UtcmF0ICgqIChudW1lciB4KSAobnVtZXIgeSkpCgkJKCog KGRlbm9tIHgpIChkZW5vbSB5KSkpKQogICAgKGRlZmluZSAoZGl2LXJhdCB4IHkpCiAgICAgICht YWtlLXJhdCAoKiAobnVtZXIgeCkgKGRlbm9tIHkpKQoJCSgqIChkZW5vbSB4KSAobnVtZXIgeSkp KSkKCiAgICAoZGVmaW5lICh0YWcgeCkgKGF0dGFjaC10YWcgJ3JhdGlvbmFsIHgpKQogICAgKHB1 dCAnYWRkICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgKGxhbWJkYSAoeCB5KSAodGFnIChhZGQtcmF0 IHggeSkpKSkKICAgIChwdXQgJ3N1YiAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJIChsYW1iZGEgKHgg eSkgKHRhZyAoc3ViLXJhdCB4IHkpKSkpCiAgICAocHV0ICdtdWwgJyhyYXRpb25hbCByYXRpb25h bCkKCSAobGFtYmRhICh4IHkpICh0YWcgKG11bC1yYXQgeCB5KSkpKQogICAgKHB1dCAnZGl2ICco cmF0aW9uYWwgcmF0aW9uYWwpCgkgKGxhbWJkYSAoeCB5KSAodGFnIChkaXYtcmF0IHggeSkpKSkK CiAgICAocHV0ICdtYWtlICdyYXRpb25hbAoJIChsYW1iZGEgKG4gZCkgKHRhZyAobWFrZS1yYXQg biBkKSkpKQogICAgKHB1dCAnZXF1PyAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJIChsYW1iZGEgKHgg eSkgKD0gMCAobnVtZXIgKHN1Yi1yYXQgeCB5KSkpKSkKICAgIChwdXQgJ3plcm8/ICcocmF0aW9u YWwpIChsYW1iZGEgKHgpICg9IDAgKG51bWVyIHgpKSkpCiAgICAnZG9uZSkKCiAgKGRlZmluZSAo bWFrZS1yYXRpb25hbCBuIGQpCiAgICAoKGdldCAnbWFrZSAncmF0aW9uYWwpIG4gZCkpCgogIChk ZWZpbmUgKGluc3RhbGwtcmVjdGFuZ3VsYXItcGFja2FnZSkKCiAgICAoZGVmaW5lIChyZWFsLXBh cnQgeikgKGNhciB6KSkKICAgIChkZWZpbmUgKGltYWctcGFydCB6KSAoY2RyIHopKQogICAgKGRl ZmluZSAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpIChjb25zIHggeSkpCiAgICAoZGVmaW5lICht YWduaXR1ZGUgeikKICAgICAgKHNxcnQgKCsgKHNxdWFyZSAocmVhbC1wYXJ0IHopKQoJICAgICAg IChzcXVhcmUgKGltYWctcGFydCB6KSkpKSkKICAgIChkZWZpbmUgKGFuZ2xlIHopCiAgICAgIChh dGFuIChpbWFnLXBhcnQgeikgKHJlYWwtcGFydCB6KSkpCiAgICAoZGVmaW5lIChtYWtlLWZyb20t bWFnLWFuZyByIGEpCiAgICAgIChjb25zICgqIHIgKGNvcyBhKSkgKCogciAoc2luIGEpKSkpCgog ICAgKGRlZmluZSAodGFnIHgpIChhdHRhY2gtdGFnICdyZWN0YW5ndWxhciB4KSkKICAgIChwdXQg J3JlYWwtcGFydCAnKHJlY3Rhbmd1bGFyKSByZWFsLXBhcnQpCiAgICAocHV0ICdpbWFnLXBhcnQg JyhyZWN0YW5ndWxhcikgaW1hZy1wYXJ0KQogICAgKHB1dCAnbWFnbml0dWRlICcocmVjdGFuZ3Vs YXIpIG1hZ25pdHVkZSkKICAgIChwdXQgJ2FuZ2xlICcocmVjdGFuZ3VsYXIpIGFuZ2xlKQogICAg KHB1dCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAncmVjdGFuZ3VsYXIKCSAobGFtYmRhICh4IHkpICh0 YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSkpKQogICAgKHB1dCAnbWFrZS1mcm9tLW1hZy1h bmcgJ3JlY3Rhbmd1bGFyCgkgKGxhbWJkYSAociBhKSAodGFnIChtYWtlLWZyb20tbWFnLWFuZyBy IGEpKSkpCiAgICAnZG9uZSkKCiAgKGRlZmluZSAoaW5zdGFsbC1wb2xhci1wYWNrYWdlKQoKICAg IChkZWZpbmUgKG1hZ25pdHVkZSB6KSAoY2FyIHopKQogICAgKGRlZmluZSAoYW5nbGUgeikgKGNk ciB6KSkKICAgIChkZWZpbmUgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkgKGNvbnMgciBhKSkKICAg IChkZWZpbmUgKHJlYWwtcGFydCB6KQogICAgICAoKiAobWFnbml0dWRlIHopIChjb3MgKGFuZ2xl IHopKSkpCiAgICAoZGVmaW5lIChpbWFnLXBhcnQgeikKICAgICAgKCogKG1hZ25pdHVkZSB6KSAo c2luIChhbmdsZSB6KSkpKQogICAgKGRlZmluZSAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpCiAg ICAgIChjb25zIChzcXJ0ICgrIChzcXVhcmUgeCkgKHNxdWFyZSB5KSkpCgkgICAgKGF0YW4geSB4 KSkpCgogICAgKGRlZmluZSAodGFnIHgpIChhdHRhY2gtdGFnICdwb2xhciB4KSkKICAgIChwdXQg J3JlYWwtcGFydCAnKHBvbGFyKSByZWFsLXBhcnQpCiAgICAocHV0ICdpbWFnLXBhcnQgJyhwb2xh cikgaW1hZy1wYXJ0KQogICAgKHB1dCAnbWFnbml0dWRlICcocG9sYXIpIG1hZ25pdHVkZSkKICAg IChwdXQgJ2FuZ2xlICcocG9sYXIpIGFuZ2xlKQogICAgKHB1dCAnbWFrZS1mcm9tLXJlYWwtaW1h ZyAncG9sYXIKCSAobGFtYmRhICh4IHkpICh0YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSkp KQogICAgKHB1dCAnbWFrZS1mcm9tLW1hZy1hbmcgJ3BvbGFyCgkgKGxhbWJkYSAociBhKSAodGFn IChtYWtlLWZyb20tbWFnLWFuZyByIGEpKSkpCiAgICAnZG9uZSkKCiAgKGRlZmluZSAoaW5zdGFs bC1jb21wbGV4LXBhY2thZ2UpCiAgICAoZGVmaW5lIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkK ICAgICAgKChnZXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ3JlY3Rhbmd1bGFyKSB4IHkpKQogICAg KGRlZmluZSAobWFrZS1mcm9tLW1hZy1hbmcgciBhKQogICAgICAoKGdldCAnbWFrZS1mcm9tLW1h Zy1hbmcgJ3BvbGFyKSByIGEpKQogICAgKGRlZmluZSAoYWRkLWNvbXBsZXggejEgejIpCiAgICAg IChtYWtlLWZyb20tcmVhbC1pbWFnICgrIChyZWFsLXBhcnQgejEpIChyZWFsLXBhcnQgejIpKQoJ CQkgICAoKyAoaW1hZy1wYXJ0IHoxKSAoaW1hZy1wYXJ0IHoyKSkpKQogICAgKGRlZmluZSAoc3Vi LWNvbXBsZXggejEgejIpCiAgICAgIChtYWtlLWZyb20tcmVhbC1pbWFnICgtIChyZWFsLXBhcnQg ejEpIChyZWFsLXBhcnQgejIpKQoJCQkgICAoLSAoaW1hZy1wYXJ0IHoxKSAoaW1hZy1wYXJ0IHoy KSkpKQogICAgKGRlZmluZSAobXVsLWNvbXBsZXggejEgejIpCiAgICAgIChtYWtlLWZyb20tbWFn LWFuZyAoKiAobWFnbml0dWRlIHoxKSAobWFnbml0dWRlIHoyKSkKCQkJICgrIChhbmdsZSB6MSkg KGFuZ2xlIHoyKSkpKQogICAgKGRlZmluZSAoZGl2LWNvbXBsZXggejEgejIpCiAgICAgIChtYWtl LWZyb20tbWFnLWFuZyAoLyAobWFnbml0dWRlIHoxKSAobWFnbml0dWRlIHoyKSkKCQkJICgtIChh bmdsZSB6MSkgKGFuZ2xlIHoyKSkpKQogICAgKGRlZmluZSAodGFnIHopIChhdHRhY2gtdGFnICdj b21wbGV4IHopKQogICAgKHB1dCAnYWRkICcoY29tcGxleCBjb21wbGV4KQoJIChsYW1iZGEgKHox IHoyKSAodGFnIChhZGQtY29tcGxleCB6MSB6MikpKSkKICAgIChwdXQgJ3N1YiAnKGNvbXBsZXgg Y29tcGxleCkKCSAobGFtYmRhICh6MSB6MikgKHRhZyAoc3ViLWNvbXBsZXggejEgejIpKSkpCiAg ICAocHV0ICdtdWwgJyhjb21wbGV4IGNvbXBsZXgpCgkgKGxhbWJkYSAoejEgejIpICh0YWcgKG11 bC1jb21wbGV4IHoxIHoyKSkpKQogICAgKHB1dCAnZGl2ICcoY29tcGxleCBjb21wbGV4KQoJIChs YW1iZGEgKHoxIHoyKSAodGFnIChkaXYtY29tcGxleCB6MSB6MikpKSkKICAgIChwdXQgJ21ha2Ut ZnJvbS1yZWFsLWltYWcgJ2NvbXBsZXgKCSAobGFtYmRhICh4IHkpICh0YWcgKG1ha2UtZnJvbS1y ZWFsLWltYWcgeCB5KSkpKQogICAgKHB1dCAnbWFrZS1mcm9tLW1hZy1hbmcgJ2NvbXBsZXgKCSAo bGFtYmRhIChyIGEpICh0YWcgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkpKSkKICAgIChwdXQgJ2Vx dT8gJyhjb21wbGV4IGNvbXBsZXgpCgkgKGxhbWJkYSAoeCB5KSAoYW5kICg9IDAgKHJlYWwtcGFy dCAoc3ViLWNvbXBsZXggeCB5KSkpCgkJICAgICAgKD0gMCAoaW1hZy1wYXJ0IChzdWItY29tcGxl eCB4IHkpKSkpKSkKICAgIChwdXQgJ2VxdT8gJyhyZWN0YW5ndWxhciBwb2xhcikgZXF1PykKICAg IChwdXQgJ2VxdT8gJyhwb2xhciByZWN0YW5ndWxhcikgZXF1PykKICAgIChwdXQgJ3plcm8/ICco Y29tcGxleCkKCSAobGFtYmRhICh4KSAoZXF1PyAodGFnIHgpICh0YWcgKG1ha2UtZnJvbS1yZWFs LWltYWcgMCAwKSkpKSkKICAgICdkb25lKQoKICAoZGVmaW5lIChtYWtlLWNvbXBsZXgtZnJvbS1y ZWFsLWltYWcgeCB5KQogICAgKChnZXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ2NvbXBsZXgpIHgg eSkpCgogIChkZWZpbmUgKG1ha2UtY29tcGxleC1mcm9tLW1hZy1hbmcgciBhKQogICAgKChnZXQg J21ha2UtZnJvbS1tYWctYW5nICdjb21wbGV4KSByIGEpKQoKCgogIChpbnN0YWxsLXJlY3Rhbmd1 bGFyLXBhY2thZ2UpCiAgKGluc3RhbGwtcG9sYXItcGFja2FnZSkKICAoaW5zdGFsbC1yYXRpb25h bC1wYWNrYWdlKQogIChpbnN0YWxsLXNjaGVtZS1udW1iZXItcGFja2FnZSkKICAoaW5zdGFsbC1j b21wbGV4LXBhY2thZ2UpCgogIChzaG93ICN0ICJTY2hlbWUtbnVtYmVyOiAiICh6ZXJvPyAobWFr ZS1zY2hlbWUtbnVtYmVyIDApKSAiXG4iKQogIChzaG93ICN0ICJSYXRpb25hbDogIiAoemVybz8g KG1ha2UtcmF0aW9uYWwgMCAyKSkgIlxuIikKICAoc2hvdyAjdCAiQ29tcGxleDogIiAoemVybz8g KG1ha2UtY29tcGxleC1mcm9tLW1hZy1hbmcgMCAwKSkgIlxuIikKIytlbmRfc3JjCgojK1JFU1VM VFM6CjogU2NoZW1lLW51bWJlcjogI3QKOiBSYXRpb25hbDogI3QKOiBDb21wbGV4OiAjdAoKKioq IFNuaXBwZXQgcHV0LWNvZXJjaW9uCkkgYWRkZWQgdGhlIH5wdXQtY29lcmNpb25+IGFuZCB+Z2V0 LWNvZXJjaW9ufiBwcm9jZWR1cmVzIHRvIHRoZQo8PHB1dC1hbmQtZ2V0Pj4gbm93ZWIgZnJhZ21l bnQuIFRoaXMgZG9lc24ndCBzZWVtIHRvIGJlIG11Y2ggb2YgYSBwcm9ibGVtLApiZWNhdXNlIHRo ZXNlIG9wZXJhdGlvbnMgYXJlIG5vdCB1c2VkIGJlZm9yZSB0aGlzIHBvaW50LgoqKiogU25pcHBl dCBjb2VyY2lvbiBwcm9jZWR1cmVzCgpXZSBhcmUgbW9kaWZ5aW5nIH5hcHBseS1nZW5lcmljfiBp biB0aGlzIHNuaXBwZXQsIHdoaWNoIG1lYW5zIHRoYXQgd2UgbWF5Cm5lZWQgdG8gZG8gYSBsb3Qg b2YgY29weWluZyBvZiB0aGUgb2xkIGNvZGUgaW4gb3JkZXIgdG8gbWFrZSBpdCB3b3JrIHdpdGgg dGhlCm5ldyBjb2RlLgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMg b3V0cHV0IDpub3dlYi1yZWYgY29lcmNpb24tcHJvY2VkdXJlcy1hcHBseS1nZW5lcmljCiAgKGRl ZmluZSAoc2NoZW1lLW51bWJlci0+Y29tcGxleCBuKQogICAgKG1ha2UtY29tcGxleC1mcm9tLXJl YWwtaW1hZyAoY29udGVudHMgbikgMCkpCiAgKHB1dC1jb2VyY2lvbiAnc2NoZW1lLW51bWJlcgoJ CSdjb21wbGV4CgkJc2NoZW1lLW51bWJlci0+Y29tcGxleCkKCiAgKGRlZmluZSAoYXBwbHktZ2Vu ZXJpYyBvcCAuIGFyZ3MpCiAgICAobGV0ICgodHlwZS10YWdzIChtYXAgdHlwZS10YWcgYXJncykp KQogICAgICAobGV0ICgocHJvYyAoZ2V0IG9wIHR5cGUtdGFncykpKQoJKGlmIHByb2MKCSAgICAo YXBwbHkgcHJvYyAobWFwIGNvbnRlbnRzIGFyZ3MpKQoJICAgIChpZiAoPSAobGVuZ3RoIGFyZ3Mp IDIpCgkJKGxldCAoKHR5cGUxIChjYXIgdHlwZS10YWdzKSkKCQkgICAgICAodHlwZTIgKGNhZHIg dHlwZS10YWdzKSkKCQkgICAgICAoYTEgKGNhciBhcmdzKSkKCQkgICAgICAoYTIgKGNhZHIgYXJn cykpKQoJCSAgKGxldCAoKHQxLT50MiAoZ2V0LWNvZXJjaW9uIHR5cGUxIHR5cGUyKSkKCQkJKHQy LT50MSAoZ2V0LWNvZXJjaW9uIHR5cGUyIHR5cGUxKSkpCgkJICAgIChjb25kICh0MS0+dDIKCQkJ ICAgKGFwcGx5LWdlbmVyaWMgb3AgKHQxLT50MiBhMSkgYTIpKQoJCQkgICh0Mi0+dDEKCQkJICAg KGFwcGx5LWdlbmVyaWMgb3AgYTEgKHQyLT50MSBhMikpKQoJCQkgIChlbHNlCgkJCSAgIChlcnJv ciAiTm8gbWV0aG9kIGZvciB0aGVzZSB0eXBlcyIKCQkJCSAgKGxpc3Qgb3AgdHlwZS10YWdzKSkp KSkpCgkJKGVycm9yICJObyBtZXRob2QgZm9yIHRoZXNlIHR5cGVzIgoJCSAgICAgICAobGlzdCBv cCB0eXBlLXRhZ3MpKSkpKSkpCgoKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogRXhjZXB0aW9uOiB7 RXhjZXB0aW9uICMxOSB1c2VyICJ1bmRlZmluZWQgdmFyaWFibGUiIChwdXQtY29lcmNpb24pICM8 cHJvY2VkdXJlICNmPiAoI2YgLiA0KX0KCioqKiBET05FIEV4ZXJjaXNlIDIuODEgY29lcmNpb24g dG8taXRzZWxmCiAgICBDTE9TRUQ6IFsyMDE5LTEwLTE1IFR1ZSAxMToxNl0KQW5vdGhlciBleHRy ZW1lbHkgaWxsLWRlZmluZWQgcHJvYmxlbS4KTGV0IHVzIHRyeSB0byBkbyBzb21lIG1pbmQtcmVh ZGluZyB0byB1bmRlcnN0YW5kIHdoaWNoIHBhcnRzIG9mIGNvZGUgd2UgbmVlZAp0byB0YW5nbGUg dG8gc29sdmUgaXQgbGV0dGVyIGJ5IGxldHRlci4KCioqKiogYQoKSSB3aWxsIHRhbmdsZSBpbiB0 aGUgdmVyc2lvbiBvZiB0aGUgYWxnZWJyYSBwYWNrYWdlIGZyb20gdGhlIEV4ZXJjaXNlLTIuODAs CmJ1dCBJIHdpbGwgcmVwbGFjZSB0aGUgfmFwcGx5LWdlbmVyaWN+IHdpdGggYSBjb2VyY2luZyB2 ZXJzaW9uLgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0 CiAgKGRlZmluZSBmYWxzZSAjZikKICAoZGVmaW5lIHRydWUgICN0KQogIChkZWZpbmUgKG1ha2Ut dGFibGUpCiAgICAobGV0ICgobG9jYWwtdGFibGUgKGxpc3QgJyp0YWJsZSopKSkKICAgICAgKGRl ZmluZSAobG9va3VwIGtleS0xIGtleS0yKQoJKGxldCAoKHN1YnRhYmxlIChhc3NvYyBrZXktMSAo Y2RyIGxvY2FsLXRhYmxlKSkpKQoJICAoaWYgc3VidGFibGUKCSAgICAgIChsZXQgKChyZWNvcmQg KGFzc29jIGtleS0yIChjZHIgc3VidGFibGUpKSkpCgkJKGlmIHJlY29yZAoJCSAgICAoY2RyIHJl Y29yZCkKCQkgICAgZmFsc2UpKQoJICAgICAgZmFsc2UpKSkKICAgICAgKGRlZmluZSAoaW5zZXJ0 ISBrZXktMSBrZXktMiB2YWx1ZSkKCShsZXQgKChzdWJ0YWJsZSAoYXNzb2Mga2V5LTEgKGNkciBs b2NhbC10YWJsZSkpKSkKCSAgKGlmIHN1YnRhYmxlCgkgICAgICAobGV0ICgocmVjb3JkIChhc3Nv YyBrZXktMiAoY2RyIHN1YnRhYmxlKSkpKQoJCShpZiByZWNvcmQKCQkgICAgKHNldC1jZHIhIHJl Y29yZCB2YWx1ZSkKCQkgICAgKHNldC1jZHIhIHN1YnRhYmxlCgkJCSAgICAgIChjb25zIChjb25z IGtleS0yIHZhbHVlKQoJCQkJICAgIChjZHIgc3VidGFibGUpKSkpKQoJICAgICAgKHNldC1jZHIh IGxvY2FsLXRhYmxlCgkJCShjb25zIChsaXN0IGtleS0xCgkJCQkgICAgKGNvbnMga2V5LTIgdmFs dWUpKQoJCQkgICAgICAoY2RyIGxvY2FsLXRhYmxlKSkpKSkKCSdvaykKICAgICAgKGRlZmluZSAo ZGlzcGF0Y2ggbSkKCShjb25kICgoZXE/IG0gJ2xvb2t1cC1wcm9jKSBsb29rdXApCgkgICAgICAo KGVxPyBtICdpbnNlcnQtcHJvYyEpIGluc2VydCEpCgkgICAgICAoZWxzZSAoZXJyb3IgIlVua25v d24gb3BlcmF0aW9uIC0tIFRBQkxFIiBtKSkpKQogICAgICBkaXNwYXRjaCkpCgogIChkZWZpbmUg b3BlcmF0aW9uLXRhYmxlIChtYWtlLXRhYmxlKSkKICAoZGVmaW5lIGdldCAob3BlcmF0aW9uLXRh YmxlICdsb29rdXAtcHJvYykpCiAgKGRlZmluZSBwdXQgKG9wZXJhdGlvbi10YWJsZSAnaW5zZXJ0 LXByb2MhKSkKCiAgKGRlZmluZSBjb2VyY2lvbi10YWJsZSAobWFrZS10YWJsZSkpCiAgKGRlZmlu ZSBnZXQtY29lcmNpb24gKGNvZXJjaW9uLXRhYmxlICdsb29rdXAtcHJvYykpCiAgKGRlZmluZSBw dXQtY29lcmNpb24gKGNvZXJjaW9uLXRhYmxlICdpbnNlcnQtcHJvYyEpKQoKICAoZGVmaW5lIChh dHRhY2gtdGFnIHR5cGUtdGFnIGNvbnRlbnRzKQogICAgKGNvbnMgdHlwZS10YWcgY29udGVudHMp KQoKICAoZGVmaW5lICh0eXBlLXRhZyBkYXR1bSkKICAgIChpZiAocGFpcj8gZGF0dW0pCgkoY2Fy IGRhdHVtKQoJKGVycm9yICJCYWQgdGFnZ2VkIGRhdHVtIC0tIFRZUEUtVEFHIiBkYXR1bSkpKQoK ICAoZGVmaW5lIChjb250ZW50cyBkYXR1bSkKICAgIChpZiAocGFpcj8gZGF0dW0pCgkoY2RyIGRh dHVtKQoJKGVycm9yICJCYWQgdGFnZ2VkIGRhdHVtIC0tIENPTlRFTlRTIiBkYXR1bSkpKQoKICAo ZGVmaW5lIChyZWN0YW5ndWxhcj8geikKICAgIChlcT8gKHR5cGUtdGFnIHopICdyZWN0YW5ndWxh cikpCgogIChkZWZpbmUgKHBvbGFyPyB6KQogICAgKGVxPyAodHlwZS10YWcgeikgJ3BvbGFyKSkK CiAgKGRlZmluZSAoYXBwbHktZ2VuZXJpYyBvcCAuIGFyZ3MpCiAgICAobGV0ICgodHlwZS10YWdz IChtYXAgdHlwZS10YWcgYXJncykpKQoJIChsZXQgKChwcm9jIChnZXQgb3AgdHlwZS10YWdzKSkp CgkgICAoaWYgcHJvYwoJICAgICAgIChhcHBseSBwcm9jIChtYXAgY29udGVudHMgYXJncykpCgkg ICAgICAgKGlmICg9IChsZW5ndGggYXJncykgMikKCQkgICAobGV0ICgodHlwZTEgKGNhciB0eXBl LXRhZ3MpKQoJCQkgKHR5cGUyIChjYWRyIHR5cGUtdGFncykpCgkJCSAoYTEgKGNhciBhcmdzKSkK CQkJIChhMiAoY2FkciBhcmdzKSkpCgkJICAgICAobGV0ICgodDEtPnQyIChnZXQtY29lcmNpb24g dHlwZTEgdHlwZTIpKQoJCQkgICAodDItPnQxIChnZXQtY29lcmNpb24gdHlwZTIgdHlwZTEpKSkK CQkgICAgICAgKGNvbmQgKHQxLT50MgoJCQkgICAgICAoYXBwbHktZ2VuZXJpYyBvcCAodDEtPnQy IGExKSBhMikpCgkJCSAgICAgKHQyLT50MQoJCQkgICAgICAoYXBwbHktZ2VuZXJpYyBvcCBhMSAo dDItPnQxIGEyKSkpCgkJCSAgICAgKGVsc2UKCQkJICAgICAgKGVycm9yICJObyBtZXRob2QgZm9y IHRoZXNlIHR5cGVzIgoJCQkJICAgICAobGlzdCBvcCB0eXBlLXRhZ3MpKSkpKSkKCQkgICAoZXJy b3IgIk5vIG1ldGhvZCBmb3IgdGhlc2UgdHlwZXMiCgkJCSAgKGxpc3Qgb3AgdHlwZS10YWdzKSkp KSkpKQoKCiAgKGRlZmluZSAocmVhbC1wYXJ0IHopIChhcHBseS1nZW5lcmljICdyZWFsLXBhcnQg eikpCiAgKGRlZmluZSAoaW1hZy1wYXJ0IHopIChhcHBseS1nZW5lcmljICdpbWFnLXBhcnQgeikp CiAgKGRlZmluZSAobWFnbml0dWRlIHopIChhcHBseS1nZW5lcmljICdtYWduaXR1ZGUgeikpCiAg KGRlZmluZSAoYW5nbGUgeikgKGFwcGx5LWdlbmVyaWMgJ2FuZ2xlIHopKQoKICAoZGVmaW5lIChh ZGQgeCB5KSAoYXBwbHktZ2VuZXJpYyAnYWRkIHggeSkpCiAgKGRlZmluZSAoc3ViIHggeSkgKGFw cGx5LWdlbmVyaWMgJ3N1YiB4IHkpKQogIChkZWZpbmUgKG11bCB4IHkpIChhcHBseS1nZW5lcmlj ICdtdWwgeCB5KSkKICAoZGVmaW5lIChkaXYgeCB5KSAoYXBwbHktZ2VuZXJpYyAnZGl2IHggeSkp CgogIChkZWZpbmUgKGVxdT8geCB5KSAoYXBwbHktZ2VuZXJpYyAnZXF1PyB4IHkpKQogIChkZWZp bmUgKHplcm8/IHgpIChhcHBseS1nZW5lcmljICd6ZXJvPyB4KSkKCiAgKGRlZmluZSAoZXhwIHgg eSkgKGFwcGx5LWdlbmVyaWMgJ2V4cCB4IHkpKQoKICAoZGVmaW5lIChpbnN0YWxsLXNjaGVtZS1u dW1iZXItcGFja2FnZSkKICAgIChkZWZpbmUgKHRhZyB4KQogICAgICAoYXR0YWNoLXRhZyAnc2No ZW1lLW51bWJlciB4KSkKICAgIChwdXQgJ2FkZCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJl cikKCSAobGFtYmRhICh4IHkpICh0YWcgKCsgeCB5KSkpKQogICAgKHB1dCAnc3ViICcoc2NoZW1l LW51bWJlciBzY2hlbWUtbnVtYmVyKQoJIChsYW1iZGEgKHggeSkgKHRhZyAoLSB4IHkpKSkpCiAg ICAocHV0ICdtdWwgJyhzY2hlbWUtbnVtYmVyIHNjaGVtZS1udW1iZXIpCgkgKGxhbWJkYSAoeCB5 KSAodGFnICgqIHggeSkpKSkKICAgIChwdXQgJ2RpdiAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51 bWJlcikKCSAobGFtYmRhICh4IHkpICh0YWcgKC8geCB5KSkpKQogICAgKHB1dCAnbWFrZSAnc2No ZW1lLW51bWJlcgoJIChsYW1iZGEgKHgpICh0YWcgeCkpKQogICAgKHB1dCAnZXF1PyAnKHNjaGVt ZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAobGFtYmRhICh4IHkpICg9IHggeSkpKQogICAgKHB1 dCAnemVybz8gJyhzY2hlbWUtbnVtYmVyKQoJICAobGFtYmRhICh4KSAoPSAwIHgpKSkKICAgIChw dXQgJ2V4cCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAgKGxhbWJkYSAoeCB5KSAo dGFnIChleHB0IHggeSkpKSkKCiAgICAnZG9uZSkKCiAgKGRlZmluZSAobWFrZS1zY2hlbWUtbnVt YmVyIG4pCiAgICAoKGdldCAnbWFrZSAnc2NoZW1lLW51bWJlcikgbikpCgogIChkZWZpbmUgKGlu c3RhbGwtcmF0aW9uYWwtcGFja2FnZSkKICAgIChkZWZpbmUgKG51bWVyIHgpIChjYXIgeCkpCiAg ICAoZGVmaW5lIChkZW5vbSB4KSAoY2RyIHgpKQogICAgKGRlZmluZSAobWFrZS1yYXQgbiBkKQog ICAgICAobGV0ICgoZyAoZ2NkIG4gZCkpKQoJKGNvbnMgKC8gbiBnKSAoLyBkIGcpKSkpCiAgICAo ZGVmaW5lIChhZGQtcmF0IHggeSkKICAgICAgKG1ha2UtcmF0ICgrICgqIChudW1lciB4KSAoZGVu b20geSkpCgkJICAgKCogKG51bWVyIHkpIChkZW5vbSB4KSkpCgkJKCogKGRlbm9tIHgpIChkZW5v bSB5KSkpKQogICAgKGRlZmluZSAoc3ViLXJhdCB4IHkpCiAgICAgIChtYWtlLXJhdCAoLSAoKiAo bnVtZXIgeCkgKGRlbm9tIHkpKQoJCSAgICgqIChudW1lciB5KSAoZGVub20geCkpKQoJCSgqIChk ZW5vbSB4KSAoZGVub20geSkpKSkKICAgIChkZWZpbmUgKG11bC1yYXQgeCB5KQogICAgICAobWFr ZS1yYXQgKCogKG51bWVyIHgpIChudW1lciB5KSkKCQkoKiAoZGVub20geCkgKGRlbm9tIHkpKSkp CiAgICAoZGVmaW5lIChkaXYtcmF0IHggeSkKICAgICAgKG1ha2UtcmF0ICgqIChudW1lciB4KSAo ZGVub20geSkpCgkJKCogKGRlbm9tIHgpIChudW1lciB5KSkpKQoKICAgIChkZWZpbmUgKHRhZyB4 KSAoYXR0YWNoLXRhZyAncmF0aW9uYWwgeCkpCiAgICAocHV0ICdhZGQgJyhyYXRpb25hbCByYXRp b25hbCkKCSAobGFtYmRhICh4IHkpICh0YWcgKGFkZC1yYXQgeCB5KSkpKQogICAgKHB1dCAnc3Vi ICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgKGxhbWJkYSAoeCB5KSAodGFnIChzdWItcmF0IHggeSkp KSkKICAgIChwdXQgJ211bCAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJIChsYW1iZGEgKHggeSkgKHRh ZyAobXVsLXJhdCB4IHkpKSkpCiAgICAocHV0ICdkaXYgJyhyYXRpb25hbCByYXRpb25hbCkKCSAo bGFtYmRhICh4IHkpICh0YWcgKGRpdi1yYXQgeCB5KSkpKQoKICAgIChwdXQgJ21ha2UgJ3JhdGlv bmFsCgkgKGxhbWJkYSAobiBkKSAodGFnIChtYWtlLXJhdCBuIGQpKSkpCiAgICAocHV0ICdlcXU/ ICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgKGxhbWJkYSAoeCB5KSAoPSAwIChudW1lciAoc3ViLXJh dCB4IHkpKSkpKQogICAgKHB1dCAnemVybz8gJyhyYXRpb25hbCkgKGxhbWJkYSAoeCkgKD0gMCAo bnVtZXIgeCkpKSkKICAgICdkb25lKQoKICAoZGVmaW5lIChtYWtlLXJhdGlvbmFsIG4gZCkKICAg ICgoZ2V0ICdtYWtlICdyYXRpb25hbCkgbiBkKSkKCiAgKGRlZmluZSAoaW5zdGFsbC1yZWN0YW5n dWxhci1wYWNrYWdlKQoKICAgIChkZWZpbmUgKHJlYWwtcGFydCB6KSAoY2FyIHopKQogICAgKGRl ZmluZSAoaW1hZy1wYXJ0IHopIChjZHIgeikpCiAgICAoZGVmaW5lIChtYWtlLWZyb20tcmVhbC1p bWFnIHggeSkgKGNvbnMgeCB5KSkKICAgIChkZWZpbmUgKG1hZ25pdHVkZSB6KQogICAgICAoc3Fy dCAoKyAoc3F1YXJlIChyZWFsLXBhcnQgeikpCgkgICAgICAgKHNxdWFyZSAoaW1hZy1wYXJ0IHop KSkpKQogICAgKGRlZmluZSAoYW5nbGUgeikKICAgICAgKGF0YW4gKGltYWctcGFydCB6KSAocmVh bC1wYXJ0IHopKSkKICAgIChkZWZpbmUgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkKICAgICAgKGNv bnMgKCogciAoY29zIGEpKSAoKiByIChzaW4gYSkpKSkKCiAgICAoZGVmaW5lICh0YWcgeCkgKGF0 dGFjaC10YWcgJ3JlY3Rhbmd1bGFyIHgpKQogICAgKHB1dCAncmVhbC1wYXJ0ICcocmVjdGFuZ3Vs YXIpIHJlYWwtcGFydCkKICAgIChwdXQgJ2ltYWctcGFydCAnKHJlY3Rhbmd1bGFyKSBpbWFnLXBh cnQpCiAgICAocHV0ICdtYWduaXR1ZGUgJyhyZWN0YW5ndWxhcikgbWFnbml0dWRlKQogICAgKHB1 dCAnYW5nbGUgJyhyZWN0YW5ndWxhcikgYW5nbGUpCiAgICAocHV0ICdtYWtlLWZyb20tcmVhbC1p bWFnICdyZWN0YW5ndWxhcgoJIChsYW1iZGEgKHggeSkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1h ZyB4IHkpKSkpCiAgICAocHV0ICdtYWtlLWZyb20tbWFnLWFuZyAncmVjdGFuZ3VsYXIKCSAobGFt YmRhIChyIGEpICh0YWcgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkpKSkKICAgICdkb25lKQoKICAo ZGVmaW5lIChpbnN0YWxsLXBvbGFyLXBhY2thZ2UpCgogICAgKGRlZmluZSAobWFnbml0dWRlIHop IChjYXIgeikpCiAgICAoZGVmaW5lIChhbmdsZSB6KSAoY2RyIHopKQogICAgKGRlZmluZSAobWFr ZS1mcm9tLW1hZy1hbmcgciBhKSAoY29ucyByIGEpKQogICAgKGRlZmluZSAocmVhbC1wYXJ0IHop CiAgICAgICgqIChtYWduaXR1ZGUgeikgKGNvcyAoYW5nbGUgeikpKSkKICAgIChkZWZpbmUgKGlt YWctcGFydCB6KQogICAgICAoKiAobWFnbml0dWRlIHopIChzaW4gKGFuZ2xlIHopKSkpCiAgICAo ZGVmaW5lIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkKICAgICAgKGNvbnMgKHNxcnQgKCsgKHNx dWFyZSB4KSAoc3F1YXJlIHkpKSkKCSAgICAoYXRhbiB5IHgpKSkKCiAgICAoZGVmaW5lICh0YWcg eCkgKGF0dGFjaC10YWcgJ3BvbGFyIHgpKQogICAgKHB1dCAncmVhbC1wYXJ0ICcocG9sYXIpIHJl YWwtcGFydCkKICAgIChwdXQgJ2ltYWctcGFydCAnKHBvbGFyKSBpbWFnLXBhcnQpCiAgICAocHV0 ICdtYWduaXR1ZGUgJyhwb2xhcikgbWFnbml0dWRlKQogICAgKHB1dCAnYW5nbGUgJyhwb2xhcikg YW5nbGUpCiAgICAocHV0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdwb2xhcgoJIChsYW1iZGEgKHgg eSkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpKSkpCiAgICAocHV0ICdtYWtlLWZyb20t bWFnLWFuZyAncG9sYXIKCSAobGFtYmRhIChyIGEpICh0YWcgKG1ha2UtZnJvbS1tYWctYW5nIHIg YSkpKSkKICAgICdkb25lKQoKICAoZGVmaW5lIChpbnN0YWxsLWNvbXBsZXgtcGFja2FnZSkKICAg IChkZWZpbmUgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KQogICAgICAoKGdldCAnbWFrZS1mcm9t LXJlYWwtaW1hZyAncmVjdGFuZ3VsYXIpIHggeSkpCiAgICAoZGVmaW5lIChtYWtlLWZyb20tbWFn LWFuZyByIGEpCiAgICAgICgoZ2V0ICdtYWtlLWZyb20tbWFnLWFuZyAncG9sYXIpIHIgYSkpCiAg ICAoZGVmaW5lIChhZGQtY29tcGxleCB6MSB6MikKICAgICAgKG1ha2UtZnJvbS1yZWFsLWltYWcg KCsgKHJlYWwtcGFydCB6MSkgKHJlYWwtcGFydCB6MikpCgkJCSAgICgrIChpbWFnLXBhcnQgejEp IChpbWFnLXBhcnQgejIpKSkpCiAgICAoZGVmaW5lIChzdWItY29tcGxleCB6MSB6MikKICAgICAg KG1ha2UtZnJvbS1yZWFsLWltYWcgKC0gKHJlYWwtcGFydCB6MSkgKHJlYWwtcGFydCB6MikpCgkJ CSAgICgtIChpbWFnLXBhcnQgejEpIChpbWFnLXBhcnQgejIpKSkpCiAgICAoZGVmaW5lIChtdWwt Y29tcGxleCB6MSB6MikKICAgICAgKG1ha2UtZnJvbS1tYWctYW5nICgqIChtYWduaXR1ZGUgejEp IChtYWduaXR1ZGUgejIpKQoJCQkgKCsgKGFuZ2xlIHoxKSAoYW5nbGUgejIpKSkpCiAgICAoZGVm aW5lIChkaXYtY29tcGxleCB6MSB6MikKICAgICAgKG1ha2UtZnJvbS1tYWctYW5nICgvIChtYWdu aXR1ZGUgejEpIChtYWduaXR1ZGUgejIpKQoJCQkgKC0gKGFuZ2xlIHoxKSAoYW5nbGUgejIpKSkp CiAgICAoZGVmaW5lICh0YWcgeikgKGF0dGFjaC10YWcgJ2NvbXBsZXggeikpCiAgICAocHV0ICdh ZGQgJyhjb21wbGV4IGNvbXBsZXgpCgkgKGxhbWJkYSAoejEgejIpICh0YWcgKGFkZC1jb21wbGV4 IHoxIHoyKSkpKQogICAgKHB1dCAnc3ViICcoY29tcGxleCBjb21wbGV4KQoJIChsYW1iZGEgKHox IHoyKSAodGFnIChzdWItY29tcGxleCB6MSB6MikpKSkKICAgIChwdXQgJ211bCAnKGNvbXBsZXgg Y29tcGxleCkKCSAobGFtYmRhICh6MSB6MikgKHRhZyAobXVsLWNvbXBsZXggejEgejIpKSkpCiAg ICAocHV0ICdkaXYgJyhjb21wbGV4IGNvbXBsZXgpCgkgKGxhbWJkYSAoejEgejIpICh0YWcgKGRp di1jb21wbGV4IHoxIHoyKSkpKQogICAgKHB1dCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAnY29tcGxl eAoJIChsYW1iZGEgKHggeSkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpKSkpCiAgICAo cHV0ICdtYWtlLWZyb20tbWFnLWFuZyAnY29tcGxleAoJIChsYW1iZGEgKHIgYSkgKHRhZyAobWFr ZS1mcm9tLW1hZy1hbmcgciBhKSkpKQogICAgKHB1dCAnZXF1PyAnKGNvbXBsZXggY29tcGxleCkK CSAobGFtYmRhICh4IHkpIChhbmQgKD0gMCAocmVhbC1wYXJ0IChzdWItY29tcGxleCB4IHkpKSkK CQkgICAgICAoPSAwIChpbWFnLXBhcnQgKHN1Yi1jb21wbGV4IHggeSkpKSkpKQogICAgKHB1dCAn ZXF1PyAnKHJlY3Rhbmd1bGFyIHBvbGFyKSBlcXU/KQogICAgKHB1dCAnZXF1PyAnKHBvbGFyIHJl Y3Rhbmd1bGFyKSBlcXU/KQogICAgKHB1dCAnemVybz8gJyhjb21wbGV4KQoJIChsYW1iZGEgKHgp IChlcXU/ICh0YWcgeCkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyAwIDApKSkpKQogICAgJ2Rv bmUpCgogIChkZWZpbmUgKG1ha2UtY29tcGxleC1mcm9tLXJlYWwtaW1hZyB4IHkpCiAgICAoKGdl dCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAnY29tcGxleCkgeCB5KSkKCiAgKGRlZmluZSAobWFrZS1j b21wbGV4LWZyb20tbWFnLWFuZyByIGEpCiAgICAoKGdldCAnbWFrZS1mcm9tLW1hZy1hbmcgJ2Nv bXBsZXgpIHIgYSkpCgoKCiAgKGluc3RhbGwtcmVjdGFuZ3VsYXItcGFja2FnZSkKICAoaW5zdGFs bC1wb2xhci1wYWNrYWdlKQogIChpbnN0YWxsLXJhdGlvbmFsLXBhY2thZ2UpCiAgKGluc3RhbGwt c2NoZW1lLW51bWJlci1wYWNrYWdlKQogIChpbnN0YWxsLWNvbXBsZXgtcGFja2FnZSkKCiAgKGRl ZmluZSAoc2NoZW1lLW51bWJlci0+c2NoZW1lLW51bWJlciBuKSBuKQogIChkZWZpbmUgKGNvbXBs ZXgtPmNvbXBsZXggeikgeikKICAocHV0LWNvZXJjaW9uICdzY2hlbWUtbnVtYmVyICdzY2hlbWUt bnVtYmVyCiAgICAgICAgICAgICAgICAgc2NoZW1lLW51bWJlci0+c2NoZW1lLW51bWJlcikKICAo cHV0LWNvZXJjaW9uICdjb21wbGV4ICdjb21wbGV4IGNvbXBsZXgtPmNvbXBsZXgpCgooc2hvdyAj dCAoZGlzcGxheWVkIChleHAgKG1ha2UtY29tcGxleC1mcm9tLW1hZy1hbmcgMiAwKSAobWFrZS1j b21wbGV4LWZyb20tbWFnLWFuZyAyIDApKSkpCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiBHZWlz ZXItZXZhbC0tcmV0b3J0LW91dHB1dCByZXR1cm5lZCBuaWwuCjogVGhlIGludGVycHJldGVyIHBy b2R1Y2VkIG5vIG91dHB1dAo6IG9yIHRoZXJlIGlzIGEgYnVnIGluIGdlaXNlciAobGlrZWx5ISkK CldlIGNhbiBzZWUgdGhhdCB0aGlzIGNvZGUgZG9lc24ndCB3b3JrIGFzIGV4cGVjdGVkLiBXaHk/ IApUaGUgYW5zd2VyIGlzIGJlY2F1c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIH5hcHBseS1nZW5lcmlj fiBvbmx5IGNoZWNrcyBpZiB0aGUKY29lcmNpb25zIGV4aXN0LCBub3Qgd2hldGhlciB0aGUgZnVu Y3Rpb24gb24gdGhlIG5ldyBjb2VyY2VkIHR5cGVzIGV4aXN0cy4KClRoaXMgc2VlbXMgbGlrZSBt YWtpbmcgc2Vuc2UsIGFzIGluIG9yZGVyIHRvICJmaW5kIGEgY29tbW9uIGRlbm9taW5hdG9yIiwK bW9yZSB0aGFuIG9uZSBjb2VyY2lvbiBtYXkgYmUgbmVlZGVkLCBidXQgdGhlIHJlc3VsdCBpcyBu b3QgZ29vZCBpbiB0aGUgc2Vuc2UKdGhhdCBpZiB0aGUgZmluYWwgZnVuY3Rpb24gZG9lc24ndCBl eGlzdCwgfmFwcGx5LWdlbmVyaWN+IGVuZHMgdXAgYXBwbHlpbmcKaXRzZWxmIG92ZXIgYW5kIG92 ZXIuIFNvIHRoZSBzdHJhdGVneSBwcm9wb3NlZCBieSBMb3VpcyBpcyBub3QgdmVyeSBnb29kLgoK KioqKiBiCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQK ICAoZGVmaW5lIGZhbHNlICNmKQogIChkZWZpbmUgdHJ1ZSAgI3QpCiAgKGRlZmluZSAobWFrZS10 YWJsZSkKICAgIChsZXQgKChsb2NhbC10YWJsZSAobGlzdCAnKnRhYmxlKikpKQogICAgICAoZGVm aW5lIChsb29rdXAga2V5LTEga2V5LTIpCgkobGV0ICgoc3VidGFibGUgKGFzc29jIGtleS0xIChj ZHIgbG9jYWwtdGFibGUpKSkpCgkgIChpZiBzdWJ0YWJsZQoJICAgICAgKGxldCAoKHJlY29yZCAo YXNzb2Mga2V5LTIgKGNkciBzdWJ0YWJsZSkpKSkKCQkoaWYgcmVjb3JkCgkJICAgIChjZHIgcmVj b3JkKQoJCSAgICBmYWxzZSkpCgkgICAgICBmYWxzZSkpKQogICAgICAoZGVmaW5lIChpbnNlcnQh IGtleS0xIGtleS0yIHZhbHVlKQoJKGxldCAoKHN1YnRhYmxlIChhc3NvYyBrZXktMSAoY2RyIGxv Y2FsLXRhYmxlKSkpKQoJICAoaWYgc3VidGFibGUKCSAgICAgIChsZXQgKChyZWNvcmQgKGFzc29j IGtleS0yIChjZHIgc3VidGFibGUpKSkpCgkJKGlmIHJlY29yZAoJCSAgICAoc2V0LWNkciEgcmVj b3JkIHZhbHVlKQoJCSAgICAoc2V0LWNkciEgc3VidGFibGUKCQkJICAgICAgKGNvbnMgKGNvbnMg a2V5LTIgdmFsdWUpCgkJCQkgICAgKGNkciBzdWJ0YWJsZSkpKSkpCgkgICAgICAoc2V0LWNkciEg bG9jYWwtdGFibGUKCQkJKGNvbnMgKGxpc3Qga2V5LTEKCQkJCSAgICAoY29ucyBrZXktMiB2YWx1 ZSkpCgkJCSAgICAgIChjZHIgbG9jYWwtdGFibGUpKSkpKQoJJ29rKQogICAgICAoZGVmaW5lIChk aXNwYXRjaCBtKQoJKGNvbmQgKChlcT8gbSAnbG9va3VwLXByb2MpIGxvb2t1cCkKCSAgICAgICgo ZXE/IG0gJ2luc2VydC1wcm9jISkgaW5zZXJ0ISkKCSAgICAgIChlbHNlIChlcnJvciAiVW5rbm93 biBvcGVyYXRpb24gLS0gVEFCTEUiIG0pKSkpCiAgICAgIGRpc3BhdGNoKSkKCiAgKGRlZmluZSBv cGVyYXRpb24tdGFibGUgKG1ha2UtdGFibGUpKQogIChkZWZpbmUgZ2V0IChvcGVyYXRpb24tdGFi bGUgJ2xvb2t1cC1wcm9jKSkKICAoZGVmaW5lIHB1dCAob3BlcmF0aW9uLXRhYmxlICdpbnNlcnQt cHJvYyEpKQoKICAoZGVmaW5lIGNvZXJjaW9uLXRhYmxlIChtYWtlLXRhYmxlKSkKICAoZGVmaW5l IGdldC1jb2VyY2lvbiAoY29lcmNpb24tdGFibGUgJ2xvb2t1cC1wcm9jKSkKICAoZGVmaW5lIHB1 dC1jb2VyY2lvbiAoY29lcmNpb24tdGFibGUgJ2luc2VydC1wcm9jISkpCgogIChkZWZpbmUgKGF0 dGFjaC10YWcgdHlwZS10YWcgY29udGVudHMpCiAgICAoY29ucyB0eXBlLXRhZyBjb250ZW50cykp CgogIChkZWZpbmUgKHR5cGUtdGFnIGRhdHVtKQogICAgKGlmIChwYWlyPyBkYXR1bSkKCShjYXIg ZGF0dW0pCgkoZXJyb3IgIkJhZCB0YWdnZWQgZGF0dW0gLS0gVFlQRS1UQUciIGRhdHVtKSkpCgog IChkZWZpbmUgKGNvbnRlbnRzIGRhdHVtKQogICAgKGlmIChwYWlyPyBkYXR1bSkKCShjZHIgZGF0 dW0pCgkoZXJyb3IgIkJhZCB0YWdnZWQgZGF0dW0gLS0gQ09OVEVOVFMiIGRhdHVtKSkpCgogIChk ZWZpbmUgKHJlY3Rhbmd1bGFyPyB6KQogICAgKGVxPyAodHlwZS10YWcgeikgJ3JlY3Rhbmd1bGFy KSkKCiAgKGRlZmluZSAocG9sYXI/IHopCiAgICAoZXE/ICh0eXBlLXRhZyB6KSAncG9sYXIpKQoK ICAoZGVmaW5lIChhcHBseS1nZW5lcmljIG9wIC4gYXJncykKICAgIChsZXQgKCh0eXBlLXRhZ3Mg KG1hcCB0eXBlLXRhZyBhcmdzKSkpCgkgKGxldCAoKHByb2MgKGdldCBvcCB0eXBlLXRhZ3MpKSkK CSAgIChpZiBwcm9jCgkgICAgICAgKGFwcGx5IHByb2MgKG1hcCBjb250ZW50cyBhcmdzKSkKCSAg ICAgICAoaWYgKD0gKGxlbmd0aCBhcmdzKSAyKQoJCSAgIChsZXQgKCh0eXBlMSAoY2FyIHR5cGUt dGFncykpCgkJCSAodHlwZTIgKGNhZHIgdHlwZS10YWdzKSkKCQkJIChhMSAoY2FyIGFyZ3MpKQoJ CQkgKGEyIChjYWRyIGFyZ3MpKSkKCQkgICAgIChsZXQgKCh0MS0+dDIgKGdldC1jb2VyY2lvbiB0 eXBlMSB0eXBlMikpCgkJCSAgICh0Mi0+dDEgKGdldC1jb2VyY2lvbiB0eXBlMiB0eXBlMSkpKQoJ CSAgICAgICAoY29uZCAodDEtPnQyCgkJCSAgICAgIChhcHBseS1nZW5lcmljIG9wICh0MS0+dDIg YTEpIGEyKSkKCQkJICAgICAodDItPnQxCgkJCSAgICAgIChhcHBseS1nZW5lcmljIG9wIGExICh0 Mi0+dDEgYTIpKSkKCQkJICAgICAoZWxzZQoJCQkgICAgICAoZXJyb3IgIk5vIG1ldGhvZCBmb3Ig dGhlc2UgdHlwZXMiCgkJCQkgICAgIChsaXN0IG9wIHR5cGUtdGFncykpKSkpKQoJCSAgIChlcnJv ciAiTm8gbWV0aG9kIGZvciB0aGVzZSB0eXBlcyIKCQkJICAobGlzdCBvcCB0eXBlLXRhZ3MpKSkp KSkpCgoKICAoZGVmaW5lIChyZWFsLXBhcnQgeikgKGFwcGx5LWdlbmVyaWMgJ3JlYWwtcGFydCB6 KSkKICAoZGVmaW5lIChpbWFnLXBhcnQgeikgKGFwcGx5LWdlbmVyaWMgJ2ltYWctcGFydCB6KSkK ICAoZGVmaW5lIChtYWduaXR1ZGUgeikgKGFwcGx5LWdlbmVyaWMgJ21hZ25pdHVkZSB6KSkKICAo ZGVmaW5lIChhbmdsZSB6KSAoYXBwbHktZ2VuZXJpYyAnYW5nbGUgeikpCgogIChkZWZpbmUgKGFk ZCB4IHkpIChhcHBseS1nZW5lcmljICdhZGQgeCB5KSkKICAoZGVmaW5lIChzdWIgeCB5KSAoYXBw bHktZ2VuZXJpYyAnc3ViIHggeSkpCiAgKGRlZmluZSAobXVsIHggeSkgKGFwcGx5LWdlbmVyaWMg J211bCB4IHkpKQogIChkZWZpbmUgKGRpdiB4IHkpIChhcHBseS1nZW5lcmljICdkaXYgeCB5KSkK CiAgKGRlZmluZSAoZXF1PyB4IHkpIChhcHBseS1nZW5lcmljICdlcXU/IHggeSkpCiAgKGRlZmlu ZSAoemVybz8geCkgKGFwcGx5LWdlbmVyaWMgJ3plcm8/IHgpKQoKICAoZGVmaW5lIChleHAgeCB5 KSAoYXBwbHktZ2VuZXJpYyAnZXhwIHggeSkpCgogIChkZWZpbmUgKGluc3RhbGwtc2NoZW1lLW51 bWJlci1wYWNrYWdlKQogICAgKGRlZmluZSAodGFnIHgpCiAgICAgIChhdHRhY2gtdGFnICdzY2hl bWUtbnVtYmVyIHgpKQogICAgKHB1dCAnYWRkICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVy KQoJIChsYW1iZGEgKHggeSkgKHRhZyAoKyB4IHkpKSkpCiAgICAocHV0ICdzdWIgJyhzY2hlbWUt bnVtYmVyIHNjaGVtZS1udW1iZXIpCgkgKGxhbWJkYSAoeCB5KSAodGFnICgtIHggeSkpKSkKICAg IChwdXQgJ211bCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAobGFtYmRhICh4IHkp ICh0YWcgKCogeCB5KSkpKQogICAgKHB1dCAnZGl2ICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVt YmVyKQoJIChsYW1iZGEgKHggeSkgKHRhZyAoLyB4IHkpKSkpCiAgICAocHV0ICdtYWtlICdzY2hl bWUtbnVtYmVyCgkgKGxhbWJkYSAoeCkgKHRhZyB4KSkpCiAgICAocHV0ICdlcXU/ICcoc2NoZW1l LW51bWJlciBzY2hlbWUtbnVtYmVyKQoJIChsYW1iZGEgKHggeSkgKD0geCB5KSkpCiAgICAocHV0 ICd6ZXJvPyAnKHNjaGVtZS1udW1iZXIpCgkgIChsYW1iZGEgKHgpICg9IDAgeCkpKQogICAgKHB1 dCAnZXhwICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJICAobGFtYmRhICh4IHkpICh0 YWcgKGV4cHQgeCB5KSkpKQoKICAgICdkb25lKQoKICAoZGVmaW5lIChtYWtlLXNjaGVtZS1udW1i ZXIgbikKICAgICgoZ2V0ICdtYWtlICdzY2hlbWUtbnVtYmVyKSBuKSkKCiAgKGRlZmluZSAoaW5z dGFsbC1yYXRpb25hbC1wYWNrYWdlKQogICAgKGRlZmluZSAobnVtZXIgeCkgKGNhciB4KSkKICAg IChkZWZpbmUgKGRlbm9tIHgpIChjZHIgeCkpCiAgICAoZGVmaW5lIChtYWtlLXJhdCBuIGQpCiAg ICAgIChsZXQgKChnIChnY2QgbiBkKSkpCgkoY29ucyAoLyBuIGcpICgvIGQgZykpKSkKICAgIChk ZWZpbmUgKGFkZC1yYXQgeCB5KQogICAgICAobWFrZS1yYXQgKCsgKCogKG51bWVyIHgpIChkZW5v bSB5KSkKCQkgICAoKiAobnVtZXIgeSkgKGRlbm9tIHgpKSkKCQkoKiAoZGVub20geCkgKGRlbm9t IHkpKSkpCiAgICAoZGVmaW5lIChzdWItcmF0IHggeSkKICAgICAgKG1ha2UtcmF0ICgtICgqIChu dW1lciB4KSAoZGVub20geSkpCgkJICAgKCogKG51bWVyIHkpIChkZW5vbSB4KSkpCgkJKCogKGRl bm9tIHgpIChkZW5vbSB5KSkpKQogICAgKGRlZmluZSAobXVsLXJhdCB4IHkpCiAgICAgIChtYWtl LXJhdCAoKiAobnVtZXIgeCkgKG51bWVyIHkpKQoJCSgqIChkZW5vbSB4KSAoZGVub20geSkpKSkK ICAgIChkZWZpbmUgKGRpdi1yYXQgeCB5KQogICAgICAobWFrZS1yYXQgKCogKG51bWVyIHgpIChk ZW5vbSB5KSkKCQkoKiAoZGVub20geCkgKG51bWVyIHkpKSkpCgogICAgKGRlZmluZSAodGFnIHgp IChhdHRhY2gtdGFnICdyYXRpb25hbCB4KSkKICAgIChwdXQgJ2FkZCAnKHJhdGlvbmFsIHJhdGlv bmFsKQoJIChsYW1iZGEgKHggeSkgKHRhZyAoYWRkLXJhdCB4IHkpKSkpCiAgICAocHV0ICdzdWIg JyhyYXRpb25hbCByYXRpb25hbCkKCSAobGFtYmRhICh4IHkpICh0YWcgKHN1Yi1yYXQgeCB5KSkp KQogICAgKHB1dCAnbXVsICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgKGxhbWJkYSAoeCB5KSAodGFn IChtdWwtcmF0IHggeSkpKSkKICAgIChwdXQgJ2RpdiAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJIChs YW1iZGEgKHggeSkgKHRhZyAoZGl2LXJhdCB4IHkpKSkpCgogICAgKHB1dCAnbWFrZSAncmF0aW9u YWwKCSAobGFtYmRhIChuIGQpICh0YWcgKG1ha2UtcmF0IG4gZCkpKSkKICAgIChwdXQgJ2VxdT8g JyhyYXRpb25hbCByYXRpb25hbCkKCSAobGFtYmRhICh4IHkpICg9IDAgKG51bWVyIChzdWItcmF0 IHggeSkpKSkpCiAgICAocHV0ICd6ZXJvPyAnKHJhdGlvbmFsKSAobGFtYmRhICh4KSAoPSAwIChu dW1lciB4KSkpKQogICAgJ2RvbmUpCgogIChkZWZpbmUgKG1ha2UtcmF0aW9uYWwgbiBkKQogICAg KChnZXQgJ21ha2UgJ3JhdGlvbmFsKSBuIGQpKQoKICAoZGVmaW5lIChpbnN0YWxsLXJlY3Rhbmd1 bGFyLXBhY2thZ2UpCgogICAgKGRlZmluZSAocmVhbC1wYXJ0IHopIChjYXIgeikpCiAgICAoZGVm aW5lIChpbWFnLXBhcnQgeikgKGNkciB6KSkKICAgIChkZWZpbmUgKG1ha2UtZnJvbS1yZWFsLWlt YWcgeCB5KSAoY29ucyB4IHkpKQogICAgKGRlZmluZSAobWFnbml0dWRlIHopCiAgICAgIChzcXJ0 ICgrIChzcXVhcmUgKHJlYWwtcGFydCB6KSkKCSAgICAgICAoc3F1YXJlIChpbWFnLXBhcnQgeikp KSkpCiAgICAoZGVmaW5lIChhbmdsZSB6KQogICAgICAoYXRhbiAoaW1hZy1wYXJ0IHopIChyZWFs LXBhcnQgeikpKQogICAgKGRlZmluZSAobWFrZS1mcm9tLW1hZy1hbmcgciBhKQogICAgICAoY29u cyAoKiByIChjb3MgYSkpICgqIHIgKHNpbiBhKSkpKQoKICAgIChkZWZpbmUgKHRhZyB4KSAoYXR0 YWNoLXRhZyAncmVjdGFuZ3VsYXIgeCkpCiAgICAocHV0ICdyZWFsLXBhcnQgJyhyZWN0YW5ndWxh cikgcmVhbC1wYXJ0KQogICAgKHB1dCAnaW1hZy1wYXJ0ICcocmVjdGFuZ3VsYXIpIGltYWctcGFy dCkKICAgIChwdXQgJ21hZ25pdHVkZSAnKHJlY3Rhbmd1bGFyKSBtYWduaXR1ZGUpCiAgICAocHV0 ICdhbmdsZSAnKHJlY3Rhbmd1bGFyKSBhbmdsZSkKICAgIChwdXQgJ21ha2UtZnJvbS1yZWFsLWlt YWcgJ3JlY3Rhbmd1bGFyCgkgKGxhbWJkYSAoeCB5KSAodGFnIChtYWtlLWZyb20tcmVhbC1pbWFn IHggeSkpKSkKICAgIChwdXQgJ21ha2UtZnJvbS1tYWctYW5nICdyZWN0YW5ndWxhcgoJIChsYW1i ZGEgKHIgYSkgKHRhZyAobWFrZS1mcm9tLW1hZy1hbmcgciBhKSkpKQogICAgJ2RvbmUpCgogIChk ZWZpbmUgKGluc3RhbGwtcG9sYXItcGFja2FnZSkKCiAgICAoZGVmaW5lIChtYWduaXR1ZGUgeikg KGNhciB6KSkKICAgIChkZWZpbmUgKGFuZ2xlIHopIChjZHIgeikpCiAgICAoZGVmaW5lIChtYWtl LWZyb20tbWFnLWFuZyByIGEpIChjb25zIHIgYSkpCiAgICAoZGVmaW5lIChyZWFsLXBhcnQgeikK ICAgICAgKCogKG1hZ25pdHVkZSB6KSAoY29zIChhbmdsZSB6KSkpKQogICAgKGRlZmluZSAoaW1h Zy1wYXJ0IHopCiAgICAgICgqIChtYWduaXR1ZGUgeikgKHNpbiAoYW5nbGUgeikpKSkKICAgIChk ZWZpbmUgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KQogICAgICAoY29ucyAoc3FydCAoKyAoc3F1 YXJlIHgpIChzcXVhcmUgeSkpKQoJICAgIChhdGFuIHkgeCkpKQoKICAgIChkZWZpbmUgKHRhZyB4 KSAoYXR0YWNoLXRhZyAncG9sYXIgeCkpCiAgICAocHV0ICdyZWFsLXBhcnQgJyhwb2xhcikgcmVh bC1wYXJ0KQogICAgKHB1dCAnaW1hZy1wYXJ0ICcocG9sYXIpIGltYWctcGFydCkKICAgIChwdXQg J21hZ25pdHVkZSAnKHBvbGFyKSBtYWduaXR1ZGUpCiAgICAocHV0ICdhbmdsZSAnKHBvbGFyKSBh bmdsZSkKICAgIChwdXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ3BvbGFyCgkgKGxhbWJkYSAoeCB5 KSAodGFnIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkpKSkKICAgIChwdXQgJ21ha2UtZnJvbS1t YWctYW5nICdwb2xhcgoJIChsYW1iZGEgKHIgYSkgKHRhZyAobWFrZS1mcm9tLW1hZy1hbmcgciBh KSkpKQogICAgJ2RvbmUpCgogIChkZWZpbmUgKGluc3RhbGwtY29tcGxleC1wYWNrYWdlKQogICAg KGRlZmluZSAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpCiAgICAgICgoZ2V0ICdtYWtlLWZyb20t cmVhbC1pbWFnICdyZWN0YW5ndWxhcikgeCB5KSkKICAgIChkZWZpbmUgKG1ha2UtZnJvbS1tYWct YW5nIHIgYSkKICAgICAgKChnZXQgJ21ha2UtZnJvbS1tYWctYW5nICdwb2xhcikgciBhKSkKICAg IChkZWZpbmUgKGFkZC1jb21wbGV4IHoxIHoyKQogICAgICAobWFrZS1mcm9tLXJlYWwtaW1hZyAo KyAocmVhbC1wYXJ0IHoxKSAocmVhbC1wYXJ0IHoyKSkKCQkJICAgKCsgKGltYWctcGFydCB6MSkg KGltYWctcGFydCB6MikpKSkKICAgIChkZWZpbmUgKHN1Yi1jb21wbGV4IHoxIHoyKQogICAgICAo bWFrZS1mcm9tLXJlYWwtaW1hZyAoLSAocmVhbC1wYXJ0IHoxKSAocmVhbC1wYXJ0IHoyKSkKCQkJ ICAgKC0gKGltYWctcGFydCB6MSkgKGltYWctcGFydCB6MikpKSkKICAgIChkZWZpbmUgKG11bC1j b21wbGV4IHoxIHoyKQogICAgICAobWFrZS1mcm9tLW1hZy1hbmcgKCogKG1hZ25pdHVkZSB6MSkg KG1hZ25pdHVkZSB6MikpCgkJCSAoKyAoYW5nbGUgejEpIChhbmdsZSB6MikpKSkKICAgIChkZWZp bmUgKGRpdi1jb21wbGV4IHoxIHoyKQogICAgICAobWFrZS1mcm9tLW1hZy1hbmcgKC8gKG1hZ25p dHVkZSB6MSkgKG1hZ25pdHVkZSB6MikpCgkJCSAoLSAoYW5nbGUgejEpIChhbmdsZSB6MikpKSkK ICAgIChkZWZpbmUgKHRhZyB6KSAoYXR0YWNoLXRhZyAnY29tcGxleCB6KSkKICAgIChwdXQgJ2Fk ZCAnKGNvbXBsZXggY29tcGxleCkKCSAobGFtYmRhICh6MSB6MikgKHRhZyAoYWRkLWNvbXBsZXgg ejEgejIpKSkpCiAgICAocHV0ICdzdWIgJyhjb21wbGV4IGNvbXBsZXgpCgkgKGxhbWJkYSAoejEg ejIpICh0YWcgKHN1Yi1jb21wbGV4IHoxIHoyKSkpKQogICAgKHB1dCAnbXVsICcoY29tcGxleCBj b21wbGV4KQoJIChsYW1iZGEgKHoxIHoyKSAodGFnIChtdWwtY29tcGxleCB6MSB6MikpKSkKICAg IChwdXQgJ2RpdiAnKGNvbXBsZXggY29tcGxleCkKCSAobGFtYmRhICh6MSB6MikgKHRhZyAoZGl2 LWNvbXBsZXggejEgejIpKSkpCiAgICAocHV0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdjb21wbGV4 CgkgKGxhbWJkYSAoeCB5KSAodGFnIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkpKSkKICAgIChw dXQgJ21ha2UtZnJvbS1tYWctYW5nICdjb21wbGV4CgkgKGxhbWJkYSAociBhKSAodGFnIChtYWtl LWZyb20tbWFnLWFuZyByIGEpKSkpCiAgICAocHV0ICdlcXU/ICcoY29tcGxleCBjb21wbGV4KQoJ IChsYW1iZGEgKHggeSkgKGFuZCAoPSAwIChyZWFsLXBhcnQgKHN1Yi1jb21wbGV4IHggeSkpKQoJ CSAgICAgICg9IDAgKGltYWctcGFydCAoc3ViLWNvbXBsZXggeCB5KSkpKSkpCiAgICAocHV0ICdl cXU/ICcocmVjdGFuZ3VsYXIgcG9sYXIpIGVxdT8pCiAgICAocHV0ICdlcXU/ICcocG9sYXIgcmVj dGFuZ3VsYXIpIGVxdT8pCiAgICAocHV0ICd6ZXJvPyAnKGNvbXBsZXgpCgkgKGxhbWJkYSAoeCkg KGVxdT8gKHRhZyB4KSAodGFnIChtYWtlLWZyb20tcmVhbC1pbWFnIDAgMCkpKSkpCiAgICAnZG9u ZSkKCiAgKGRlZmluZSAobWFrZS1jb21wbGV4LWZyb20tcmVhbC1pbWFnIHggeSkKICAgICgoZ2V0 ICdtYWtlLWZyb20tcmVhbC1pbWFnICdjb21wbGV4KSB4IHkpKQoKICAoZGVmaW5lIChtYWtlLWNv bXBsZXgtZnJvbS1tYWctYW5nIHIgYSkKICAgICgoZ2V0ICdtYWtlLWZyb20tbWFnLWFuZyAnY29t cGxleCkgciBhKSkKCgoKICAoaW5zdGFsbC1yZWN0YW5ndWxhci1wYWNrYWdlKQogIChpbnN0YWxs LXBvbGFyLXBhY2thZ2UpCiAgKGluc3RhbGwtcmF0aW9uYWwtcGFja2FnZSkKICAoaW5zdGFsbC1z Y2hlbWUtbnVtYmVyLXBhY2thZ2UpCiAgKGluc3RhbGwtY29tcGxleC1wYWNrYWdlKQoKKHNob3cg I3QgIiAiIChkaXNwbGF5ZWQgKGV4cCAobWFrZS1zY2hlbWUtbnVtYmVyIDIpIChtYWtlLXNjaGVt ZS1udW1iZXIgMikpKSAiXG4iKQooc2hvdyAjdCAiICIgKGRpc3BsYXllZCAoZXhwIChtYWtlLWNv bXBsZXgtZnJvbS1tYWctYW5nIDIgMCkgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1h a2UtY29tcGxleC1mcm9tLW1hZy1hbmcgMiAwKSkpKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAg KHNjaGVtZS1udW1iZXIgLiA0KQo6IEV4Y2VwdGlvbjoge0V4Y2VwdGlvbiAjMTkgdXNlciAiTm8g bWV0aG9kIGZvciB0aGVzZSB0eXBlcyIgKChleHAgKGNvbXBsZXggY29tcGxleCkpKSAjZiAjZn0K ClRoaXMgc2VlbXMgY29ycmVjdC4gVGhlcmUgbWF5IGJlIGEgcHJvYmxlbSB3aGVuIHRoZSBmdW5j dGlvbiBpcyBhY3R1YWxseQpkZWZpbmVkIGZvciBzb21lIHR5cGVzIHRoYXQgdGhlIGdpdmVuIG9u ZXMgYXJlIGNvZXJjZS1hYmxlIHRvLCBidXQgdGhlIHN5c3RlbQpkb2Vzbid0IHRyeSB0aGF0LgoK KioqKiBjCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQK ICAoZGVmaW5lIGZhbHNlICNmKQogIChkZWZpbmUgdHJ1ZSAgI3QpCiAgKGRlZmluZSAobWFrZS10 YWJsZSkKICAgIChsZXQgKChsb2NhbC10YWJsZSAobGlzdCAnKnRhYmxlKikpKQogICAgICAoZGVm aW5lIChsb29rdXAga2V5LTEga2V5LTIpCgkobGV0ICgoc3VidGFibGUgKGFzc29jIGtleS0xIChj ZHIgbG9jYWwtdGFibGUpKSkpCgkgIChpZiBzdWJ0YWJsZQoJICAgICAgKGxldCAoKHJlY29yZCAo YXNzb2Mga2V5LTIgKGNkciBzdWJ0YWJsZSkpKSkKCQkoaWYgcmVjb3JkCgkJICAgIChjZHIgcmVj b3JkKQoJCSAgICBmYWxzZSkpCgkgICAgICBmYWxzZSkpKQogICAgICAoZGVmaW5lIChpbnNlcnQh IGtleS0xIGtleS0yIHZhbHVlKQoJKGxldCAoKHN1YnRhYmxlIChhc3NvYyBrZXktMSAoY2RyIGxv Y2FsLXRhYmxlKSkpKQoJICAoaWYgc3VidGFibGUKCSAgICAgIChsZXQgKChyZWNvcmQgKGFzc29j IGtleS0yIChjZHIgc3VidGFibGUpKSkpCgkJKGlmIHJlY29yZAoJCSAgICAoc2V0LWNkciEgcmVj b3JkIHZhbHVlKQoJCSAgICAoc2V0LWNkciEgc3VidGFibGUKCQkJICAgICAgKGNvbnMgKGNvbnMg a2V5LTIgdmFsdWUpCgkJCQkgICAgKGNkciBzdWJ0YWJsZSkpKSkpCgkgICAgICAoc2V0LWNkciEg bG9jYWwtdGFibGUKCQkJKGNvbnMgKGxpc3Qga2V5LTEKCQkJCSAgICAoY29ucyBrZXktMiB2YWx1 ZSkpCgkJCSAgICAgIChjZHIgbG9jYWwtdGFibGUpKSkpKQoJJ29rKQogICAgICAoZGVmaW5lIChk aXNwYXRjaCBtKQoJKGNvbmQgKChlcT8gbSAnbG9va3VwLXByb2MpIGxvb2t1cCkKCSAgICAgICgo ZXE/IG0gJ2luc2VydC1wcm9jISkgaW5zZXJ0ISkKCSAgICAgIChlbHNlIChlcnJvciAiVW5rbm93 biBvcGVyYXRpb24gLS0gVEFCTEUiIG0pKSkpCiAgICAgIGRpc3BhdGNoKSkKCiAgKGRlZmluZSBv cGVyYXRpb24tdGFibGUgKG1ha2UtdGFibGUpKQogIChkZWZpbmUgZ2V0IChvcGVyYXRpb24tdGFi bGUgJ2xvb2t1cC1wcm9jKSkKICAoZGVmaW5lIHB1dCAob3BlcmF0aW9uLXRhYmxlICdpbnNlcnQt cHJvYyEpKQoKICAoZGVmaW5lIGNvZXJjaW9uLXRhYmxlIChtYWtlLXRhYmxlKSkKICAoZGVmaW5l IGdldC1jb2VyY2lvbiAoY29lcmNpb24tdGFibGUgJ2xvb2t1cC1wcm9jKSkKICAoZGVmaW5lIHB1 dC1jb2VyY2lvbiAoY29lcmNpb24tdGFibGUgJ2luc2VydC1wcm9jISkpCgogIChkZWZpbmUgKGF0 dGFjaC10YWcgdHlwZS10YWcgY29udGVudHMpCiAgICAoY29ucyB0eXBlLXRhZyBjb250ZW50cykp CgogIChkZWZpbmUgKHR5cGUtdGFnIGRhdHVtKQogICAgKGlmIChwYWlyPyBkYXR1bSkKCShjYXIg ZGF0dW0pCgkoZXJyb3IgIkJhZCB0YWdnZWQgZGF0dW0gLS0gVFlQRS1UQUciIGRhdHVtKSkpCgog IChkZWZpbmUgKGNvbnRlbnRzIGRhdHVtKQogICAgKGlmIChwYWlyPyBkYXR1bSkKCShjZHIgZGF0 dW0pCgkoZXJyb3IgIkJhZCB0YWdnZWQgZGF0dW0gLS0gQ09OVEVOVFMiIGRhdHVtKSkpCgogIChk ZWZpbmUgKHJlY3Rhbmd1bGFyPyB6KQogICAgKGVxPyAodHlwZS10YWcgeikgJ3JlY3Rhbmd1bGFy KSkKCiAgKGRlZmluZSAocG9sYXI/IHopCiAgICAoZXE/ICh0eXBlLXRhZyB6KSAncG9sYXIpKQoK ICAoZGVmaW5lIChhcHBseS1nZW5lcmljIG9wIC4gYXJncykKICAgIChsZXQgKCh0eXBlLXRhZ3Mg KG1hcCB0eXBlLXRhZyBhcmdzKSkpCgkgKGxldCAoKHByb2MgKGdldCBvcCB0eXBlLXRhZ3MpKSkK CSAgIChpZiBwcm9jCgkgICAgICAgKGFwcGx5IHByb2MgKG1hcCBjb250ZW50cyBhcmdzKSkKCSAg ICAgICAoaWYgKGFuZCAoPSAobGVuZ3RoIGFyZ3MpIDIpIChub3QgKGVxPyAoY2FyIHR5cGUtdGFn cykgKGNhZHIgdHlwZS10YWdzKSkpKQoJCSAgIChsZXQgKCh0eXBlMSAoY2FyIHR5cGUtdGFncykp CgkJCSAodHlwZTIgKGNhZHIgdHlwZS10YWdzKSkKCQkJIChhMSAoY2FyIGFyZ3MpKQoJCQkgKGEy IChjYWRyIGFyZ3MpKSkKCQkgICAgIChsZXQgKCh0MS0+dDIgKGdldC1jb2VyY2lvbiB0eXBlMSB0 eXBlMikpCgkJCSAgICh0Mi0+dDEgKGdldC1jb2VyY2lvbiB0eXBlMiB0eXBlMSkpKQoJCSAgICAg ICAoY29uZCAodDEtPnQyCgkJCSAgICAgIChhcHBseS1nZW5lcmljIG9wICh0MS0+dDIgYTEpIGEy KSkKCQkJICAgICAodDItPnQxCgkJCSAgICAgIChhcHBseS1nZW5lcmljIG9wIGExICh0Mi0+dDEg YTIpKSkKCQkJICAgICAoZWxzZQoJCQkgICAgICAoZXJyb3IgIk5vIG1ldGhvZCBmb3IgdGhlc2Ug dHlwZXMiCgkJCQkgICAgIChsaXN0IG9wIHR5cGUtdGFncykpKSkpKQoJCSAgIChlcnJvciAiTm8g bWV0aG9kIGZvciB0aGVzZSB0eXBlcyIKCQkJICAobGlzdCBvcCB0eXBlLXRhZ3MpKSkpKSkpCgoK ICAoZGVmaW5lIChyZWFsLXBhcnQgeikgKGFwcGx5LWdlbmVyaWMgJ3JlYWwtcGFydCB6KSkKICAo ZGVmaW5lIChpbWFnLXBhcnQgeikgKGFwcGx5LWdlbmVyaWMgJ2ltYWctcGFydCB6KSkKICAoZGVm aW5lIChtYWduaXR1ZGUgeikgKGFwcGx5LWdlbmVyaWMgJ21hZ25pdHVkZSB6KSkKICAoZGVmaW5l IChhbmdsZSB6KSAoYXBwbHktZ2VuZXJpYyAnYW5nbGUgeikpCgogIChkZWZpbmUgKGFkZCB4IHkp IChhcHBseS1nZW5lcmljICdhZGQgeCB5KSkKICAoZGVmaW5lIChzdWIgeCB5KSAoYXBwbHktZ2Vu ZXJpYyAnc3ViIHggeSkpCiAgKGRlZmluZSAobXVsIHggeSkgKGFwcGx5LWdlbmVyaWMgJ211bCB4 IHkpKQogIChkZWZpbmUgKGRpdiB4IHkpIChhcHBseS1nZW5lcmljICdkaXYgeCB5KSkKCiAgKGRl ZmluZSAoZXF1PyB4IHkpIChhcHBseS1nZW5lcmljICdlcXU/IHggeSkpCiAgKGRlZmluZSAoemVy bz8geCkgKGFwcGx5LWdlbmVyaWMgJ3plcm8/IHgpKQoKICAoZGVmaW5lIChleHAgeCB5KSAoYXBw bHktZ2VuZXJpYyAnZXhwIHggeSkpCgogIChkZWZpbmUgKGluc3RhbGwtc2NoZW1lLW51bWJlci1w YWNrYWdlKQogICAgKGRlZmluZSAodGFnIHgpCiAgICAgIChhdHRhY2gtdGFnICdzY2hlbWUtbnVt YmVyIHgpKQogICAgKHB1dCAnYWRkICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJIChs YW1iZGEgKHggeSkgKHRhZyAoKyB4IHkpKSkpCiAgICAocHV0ICdzdWIgJyhzY2hlbWUtbnVtYmVy IHNjaGVtZS1udW1iZXIpCgkgKGxhbWJkYSAoeCB5KSAodGFnICgtIHggeSkpKSkKICAgIChwdXQg J211bCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAobGFtYmRhICh4IHkpICh0YWcg KCogeCB5KSkpKQogICAgKHB1dCAnZGl2ICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJ IChsYW1iZGEgKHggeSkgKHRhZyAoLyB4IHkpKSkpCiAgICAocHV0ICdtYWtlICdzY2hlbWUtbnVt YmVyCgkgKGxhbWJkYSAoeCkgKHRhZyB4KSkpCiAgICAocHV0ICdlcXU/ICcoc2NoZW1lLW51bWJl ciBzY2hlbWUtbnVtYmVyKQoJIChsYW1iZGEgKHggeSkgKD0geCB5KSkpCiAgICAocHV0ICd6ZXJv PyAnKHNjaGVtZS1udW1iZXIpCgkgIChsYW1iZGEgKHgpICg9IDAgeCkpKQogICAgKHB1dCAnZXhw ICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJICAobGFtYmRhICh4IHkpICh0YWcgKGV4 cHQgeCB5KSkpKQoKICAgICdkb25lKQoKICAoZGVmaW5lIChtYWtlLXNjaGVtZS1udW1iZXIgbikK ICAgICgoZ2V0ICdtYWtlICdzY2hlbWUtbnVtYmVyKSBuKSkKCiAgKGRlZmluZSAoaW5zdGFsbC1y YXRpb25hbC1wYWNrYWdlKQogICAgKGRlZmluZSAobnVtZXIgeCkgKGNhciB4KSkKICAgIChkZWZp bmUgKGRlbm9tIHgpIChjZHIgeCkpCiAgICAoZGVmaW5lIChtYWtlLXJhdCBuIGQpCiAgICAgIChs ZXQgKChnIChnY2QgbiBkKSkpCgkoY29ucyAoLyBuIGcpICgvIGQgZykpKSkKICAgIChkZWZpbmUg KGFkZC1yYXQgeCB5KQogICAgICAobWFrZS1yYXQgKCsgKCogKG51bWVyIHgpIChkZW5vbSB5KSkK CQkgICAoKiAobnVtZXIgeSkgKGRlbm9tIHgpKSkKCQkoKiAoZGVub20geCkgKGRlbm9tIHkpKSkp CiAgICAoZGVmaW5lIChzdWItcmF0IHggeSkKICAgICAgKG1ha2UtcmF0ICgtICgqIChudW1lciB4 KSAoZGVub20geSkpCgkJICAgKCogKG51bWVyIHkpIChkZW5vbSB4KSkpCgkJKCogKGRlbm9tIHgp IChkZW5vbSB5KSkpKQogICAgKGRlZmluZSAobXVsLXJhdCB4IHkpCiAgICAgIChtYWtlLXJhdCAo KiAobnVtZXIgeCkgKG51bWVyIHkpKQoJCSgqIChkZW5vbSB4KSAoZGVub20geSkpKSkKICAgIChk ZWZpbmUgKGRpdi1yYXQgeCB5KQogICAgICAobWFrZS1yYXQgKCogKG51bWVyIHgpIChkZW5vbSB5 KSkKCQkoKiAoZGVub20geCkgKG51bWVyIHkpKSkpCgogICAgKGRlZmluZSAodGFnIHgpIChhdHRh Y2gtdGFnICdyYXRpb25hbCB4KSkKICAgIChwdXQgJ2FkZCAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJ IChsYW1iZGEgKHggeSkgKHRhZyAoYWRkLXJhdCB4IHkpKSkpCiAgICAocHV0ICdzdWIgJyhyYXRp b25hbCByYXRpb25hbCkKCSAobGFtYmRhICh4IHkpICh0YWcgKHN1Yi1yYXQgeCB5KSkpKQogICAg KHB1dCAnbXVsICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgKGxhbWJkYSAoeCB5KSAodGFnIChtdWwt cmF0IHggeSkpKSkKICAgIChwdXQgJ2RpdiAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJIChsYW1iZGEg KHggeSkgKHRhZyAoZGl2LXJhdCB4IHkpKSkpCgogICAgKHB1dCAnbWFrZSAncmF0aW9uYWwKCSAo bGFtYmRhIChuIGQpICh0YWcgKG1ha2UtcmF0IG4gZCkpKSkKICAgIChwdXQgJ2VxdT8gJyhyYXRp b25hbCByYXRpb25hbCkKCSAobGFtYmRhICh4IHkpICg9IDAgKG51bWVyIChzdWItcmF0IHggeSkp KSkpCiAgICAocHV0ICd6ZXJvPyAnKHJhdGlvbmFsKSAobGFtYmRhICh4KSAoPSAwIChudW1lciB4 KSkpKQogICAgJ2RvbmUpCgogIChkZWZpbmUgKG1ha2UtcmF0aW9uYWwgbiBkKQogICAgKChnZXQg J21ha2UgJ3JhdGlvbmFsKSBuIGQpKQoKICAoZGVmaW5lIChpbnN0YWxsLXJlY3Rhbmd1bGFyLXBh Y2thZ2UpCgogICAgKGRlZmluZSAocmVhbC1wYXJ0IHopIChjYXIgeikpCiAgICAoZGVmaW5lIChp bWFnLXBhcnQgeikgKGNkciB6KSkKICAgIChkZWZpbmUgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5 KSAoY29ucyB4IHkpKQogICAgKGRlZmluZSAobWFnbml0dWRlIHopCiAgICAgIChzcXJ0ICgrIChz cXVhcmUgKHJlYWwtcGFydCB6KSkKCSAgICAgICAoc3F1YXJlIChpbWFnLXBhcnQgeikpKSkpCiAg ICAoZGVmaW5lIChhbmdsZSB6KQogICAgICAoYXRhbiAoaW1hZy1wYXJ0IHopIChyZWFsLXBhcnQg eikpKQogICAgKGRlZmluZSAobWFrZS1mcm9tLW1hZy1hbmcgciBhKQogICAgICAoY29ucyAoKiBy IChjb3MgYSkpICgqIHIgKHNpbiBhKSkpKQoKICAgIChkZWZpbmUgKHRhZyB4KSAoYXR0YWNoLXRh ZyAncmVjdGFuZ3VsYXIgeCkpCiAgICAocHV0ICdyZWFsLXBhcnQgJyhyZWN0YW5ndWxhcikgcmVh bC1wYXJ0KQogICAgKHB1dCAnaW1hZy1wYXJ0ICcocmVjdGFuZ3VsYXIpIGltYWctcGFydCkKICAg IChwdXQgJ21hZ25pdHVkZSAnKHJlY3Rhbmd1bGFyKSBtYWduaXR1ZGUpCiAgICAocHV0ICdhbmds ZSAnKHJlY3Rhbmd1bGFyKSBhbmdsZSkKICAgIChwdXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ3Jl Y3Rhbmd1bGFyCgkgKGxhbWJkYSAoeCB5KSAodGFnIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkp KSkKICAgIChwdXQgJ21ha2UtZnJvbS1tYWctYW5nICdyZWN0YW5ndWxhcgoJIChsYW1iZGEgKHIg YSkgKHRhZyAobWFrZS1mcm9tLW1hZy1hbmcgciBhKSkpKQogICAgJ2RvbmUpCgogIChkZWZpbmUg KGluc3RhbGwtcG9sYXItcGFja2FnZSkKCiAgICAoZGVmaW5lIChtYWduaXR1ZGUgeikgKGNhciB6 KSkKICAgIChkZWZpbmUgKGFuZ2xlIHopIChjZHIgeikpCiAgICAoZGVmaW5lIChtYWtlLWZyb20t bWFnLWFuZyByIGEpIChjb25zIHIgYSkpCiAgICAoZGVmaW5lIChyZWFsLXBhcnQgeikKICAgICAg KCogKG1hZ25pdHVkZSB6KSAoY29zIChhbmdsZSB6KSkpKQogICAgKGRlZmluZSAoaW1hZy1wYXJ0 IHopCiAgICAgICgqIChtYWduaXR1ZGUgeikgKHNpbiAoYW5nbGUgeikpKSkKICAgIChkZWZpbmUg KG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KQogICAgICAoY29ucyAoc3FydCAoKyAoc3F1YXJlIHgp IChzcXVhcmUgeSkpKQoJICAgIChhdGFuIHkgeCkpKQoKICAgIChkZWZpbmUgKHRhZyB4KSAoYXR0 YWNoLXRhZyAncG9sYXIgeCkpCiAgICAocHV0ICdyZWFsLXBhcnQgJyhwb2xhcikgcmVhbC1wYXJ0 KQogICAgKHB1dCAnaW1hZy1wYXJ0ICcocG9sYXIpIGltYWctcGFydCkKICAgIChwdXQgJ21hZ25p dHVkZSAnKHBvbGFyKSBtYWduaXR1ZGUpCiAgICAocHV0ICdhbmdsZSAnKHBvbGFyKSBhbmdsZSkK ICAgIChwdXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ3BvbGFyCgkgKGxhbWJkYSAoeCB5KSAodGFn IChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkpKSkKICAgIChwdXQgJ21ha2UtZnJvbS1tYWctYW5n ICdwb2xhcgoJIChsYW1iZGEgKHIgYSkgKHRhZyAobWFrZS1mcm9tLW1hZy1hbmcgciBhKSkpKQog ICAgJ2RvbmUpCgogIChkZWZpbmUgKGluc3RhbGwtY29tcGxleC1wYWNrYWdlKQogICAgKGRlZmlu ZSAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpCiAgICAgICgoZ2V0ICdtYWtlLWZyb20tcmVhbC1p bWFnICdyZWN0YW5ndWxhcikgeCB5KSkKICAgIChkZWZpbmUgKG1ha2UtZnJvbS1tYWctYW5nIHIg YSkKICAgICAgKChnZXQgJ21ha2UtZnJvbS1tYWctYW5nICdwb2xhcikgciBhKSkKICAgIChkZWZp bmUgKGFkZC1jb21wbGV4IHoxIHoyKQogICAgICAobWFrZS1mcm9tLXJlYWwtaW1hZyAoKyAocmVh bC1wYXJ0IHoxKSAocmVhbC1wYXJ0IHoyKSkKCQkJICAgKCsgKGltYWctcGFydCB6MSkgKGltYWct cGFydCB6MikpKSkKICAgIChkZWZpbmUgKHN1Yi1jb21wbGV4IHoxIHoyKQogICAgICAobWFrZS1m cm9tLXJlYWwtaW1hZyAoLSAocmVhbC1wYXJ0IHoxKSAocmVhbC1wYXJ0IHoyKSkKCQkJICAgKC0g KGltYWctcGFydCB6MSkgKGltYWctcGFydCB6MikpKSkKICAgIChkZWZpbmUgKG11bC1jb21wbGV4 IHoxIHoyKQogICAgICAobWFrZS1mcm9tLW1hZy1hbmcgKCogKG1hZ25pdHVkZSB6MSkgKG1hZ25p dHVkZSB6MikpCgkJCSAoKyAoYW5nbGUgejEpIChhbmdsZSB6MikpKSkKICAgIChkZWZpbmUgKGRp di1jb21wbGV4IHoxIHoyKQogICAgICAobWFrZS1mcm9tLW1hZy1hbmcgKC8gKG1hZ25pdHVkZSB6 MSkgKG1hZ25pdHVkZSB6MikpCgkJCSAoLSAoYW5nbGUgejEpIChhbmdsZSB6MikpKSkKICAgIChk ZWZpbmUgKHRhZyB6KSAoYXR0YWNoLXRhZyAnY29tcGxleCB6KSkKICAgIChwdXQgJ2FkZCAnKGNv bXBsZXggY29tcGxleCkKCSAobGFtYmRhICh6MSB6MikgKHRhZyAoYWRkLWNvbXBsZXggejEgejIp KSkpCiAgICAocHV0ICdzdWIgJyhjb21wbGV4IGNvbXBsZXgpCgkgKGxhbWJkYSAoejEgejIpICh0 YWcgKHN1Yi1jb21wbGV4IHoxIHoyKSkpKQogICAgKHB1dCAnbXVsICcoY29tcGxleCBjb21wbGV4 KQoJIChsYW1iZGEgKHoxIHoyKSAodGFnIChtdWwtY29tcGxleCB6MSB6MikpKSkKICAgIChwdXQg J2RpdiAnKGNvbXBsZXggY29tcGxleCkKCSAobGFtYmRhICh6MSB6MikgKHRhZyAoZGl2LWNvbXBs ZXggejEgejIpKSkpCiAgICAocHV0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdjb21wbGV4CgkgKGxh bWJkYSAoeCB5KSAodGFnIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkpKSkKICAgIChwdXQgJ21h a2UtZnJvbS1tYWctYW5nICdjb21wbGV4CgkgKGxhbWJkYSAociBhKSAodGFnIChtYWtlLWZyb20t bWFnLWFuZyByIGEpKSkpCiAgICAocHV0ICdlcXU/ICcoY29tcGxleCBjb21wbGV4KQoJIChsYW1i ZGEgKHggeSkgKGFuZCAoPSAwIChyZWFsLXBhcnQgKHN1Yi1jb21wbGV4IHggeSkpKQoJCSAgICAg ICg9IDAgKGltYWctcGFydCAoc3ViLWNvbXBsZXggeCB5KSkpKSkpCiAgICAocHV0ICdlcXU/ICco cmVjdGFuZ3VsYXIgcG9sYXIpIGVxdT8pCiAgICAocHV0ICdlcXU/ICcocG9sYXIgcmVjdGFuZ3Vs YXIpIGVxdT8pCiAgICAocHV0ICd6ZXJvPyAnKGNvbXBsZXgpCgkgKGxhbWJkYSAoeCkgKGVxdT8g KHRhZyB4KSAodGFnIChtYWtlLWZyb20tcmVhbC1pbWFnIDAgMCkpKSkpCiAgICAnZG9uZSkKCiAg KGRlZmluZSAobWFrZS1jb21wbGV4LWZyb20tcmVhbC1pbWFnIHggeSkKICAgICgoZ2V0ICdtYWtl LWZyb20tcmVhbC1pbWFnICdjb21wbGV4KSB4IHkpKQoKICAoZGVmaW5lIChtYWtlLWNvbXBsZXgt ZnJvbS1tYWctYW5nIHIgYSkKICAgICgoZ2V0ICdtYWtlLWZyb20tbWFnLWFuZyAnY29tcGxleCkg ciBhKSkKCgoKICAoaW5zdGFsbC1yZWN0YW5ndWxhci1wYWNrYWdlKQogIChpbnN0YWxsLXBvbGFy LXBhY2thZ2UpCiAgKGluc3RhbGwtcmF0aW9uYWwtcGFja2FnZSkKICAoaW5zdGFsbC1zY2hlbWUt bnVtYmVyLXBhY2thZ2UpCiAgKGluc3RhbGwtY29tcGxleC1wYWNrYWdlKQoKKHNob3cgI3QgIiAi IChkaXNwbGF5ZWQgKGV4cCAobWFrZS1zY2hlbWUtbnVtYmVyIDIpIChtYWtlLXNjaGVtZS1udW1i ZXIgMikpKSkKCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAgKHNjaGVtZS1udW1iZXIgLiA0KQoK KioqIERPTkUgRXhlcmNpc2UgMi44MiB0aHJlZS1hcmd1bWVudC1jb2VyY2lvbgogICAgQ0xPU0VE OiBbMjAxOS0xMC0xNSBUdWUgMjE6NDBdCkkgYW0gY29weWluZyB0aGUgd2hvbGUgImFsZ2VicmEi IG1lc3MsIGJlY2F1c2UgSSBhbHJlYWR5IGxvc3QgdHJhY2sgb2Ygd2hpY2gKZnVuY3Rpb25zIGFy ZSBuZWVkZWQgZm9yIHRoZSB0ZXN0cyB0byB3b3JrLiBCYWQgcHJhY3RpY2UsIGRvbid0IGRvIHNv LgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpub3dl Yi1yZWYgZ2VuZXJpYy1hcml0aG1ldGljLXBhY2thZ2VzLW11bHRpZGlzcGF0Y2gKICAoZGVmaW5l IGZhbHNlICNmKQogIChkZWZpbmUgdHJ1ZSAgI3QpCiAgKGRlZmluZSAobWFrZS10YWJsZSkKICAg IChsZXQgKChsb2NhbC10YWJsZSAobGlzdCAnKnRhYmxlKikpKQogICAgICAoZGVmaW5lIChsb29r dXAga2V5LTEga2V5LTIpCgkobGV0ICgoc3VidGFibGUgKGFzc29jIGtleS0xIChjZHIgbG9jYWwt dGFibGUpKSkpCgkgIChpZiBzdWJ0YWJsZQoJICAgICAgKGxldCAoKHJlY29yZCAoYXNzb2Mga2V5 LTIgKGNkciBzdWJ0YWJsZSkpKSkKCQkoaWYgcmVjb3JkCgkJICAgIChjZHIgcmVjb3JkKQoJCSAg ICBmYWxzZSkpCgkgICAgICBmYWxzZSkpKQogICAgICAoZGVmaW5lIChpbnNlcnQhIGtleS0xIGtl eS0yIHZhbHVlKQoJKGxldCAoKHN1YnRhYmxlIChhc3NvYyBrZXktMSAoY2RyIGxvY2FsLXRhYmxl KSkpKQoJICAoaWYgc3VidGFibGUKCSAgICAgIChsZXQgKChyZWNvcmQgKGFzc29jIGtleS0yIChj ZHIgc3VidGFibGUpKSkpCgkJKGlmIHJlY29yZAoJCSAgICAoc2V0LWNkciEgcmVjb3JkIHZhbHVl KQoJCSAgICAoc2V0LWNkciEgc3VidGFibGUKCQkJICAgICAgKGNvbnMgKGNvbnMga2V5LTIgdmFs dWUpCgkJCQkgICAgKGNkciBzdWJ0YWJsZSkpKSkpCgkgICAgICAoc2V0LWNkciEgbG9jYWwtdGFi bGUKCQkJKGNvbnMgKGxpc3Qga2V5LTEKCQkJCSAgICAoY29ucyBrZXktMiB2YWx1ZSkpCgkJCSAg ICAgIChjZHIgbG9jYWwtdGFibGUpKSkpKQoJJ29rKQogICAgICAoZGVmaW5lIChkaXNwYXRjaCBt KQoJKGNvbmQgKChlcT8gbSAnbG9va3VwLXByb2MpIGxvb2t1cCkKCSAgICAgICgoZXE/IG0gJ2lu c2VydC1wcm9jISkgaW5zZXJ0ISkKCSAgICAgIChlbHNlIChlcnJvciAiVW5rbm93biBvcGVyYXRp b24gLS0gVEFCTEUiIG0pKSkpCiAgICAgIGRpc3BhdGNoKSkKCiAgKGRlZmluZSBvcGVyYXRpb24t dGFibGUgKG1ha2UtdGFibGUpKQogIChkZWZpbmUgZ2V0IChvcGVyYXRpb24tdGFibGUgJ2xvb2t1 cC1wcm9jKSkKICAoZGVmaW5lIHB1dCAob3BlcmF0aW9uLXRhYmxlICdpbnNlcnQtcHJvYyEpKQoK ICAoZGVmaW5lIGNvZXJjaW9uLXRhYmxlIChtYWtlLXRhYmxlKSkKICAoZGVmaW5lIGdldC1jb2Vy Y2lvbiAoY29lcmNpb24tdGFibGUgJ2xvb2t1cC1wcm9jKSkKICAoZGVmaW5lIHB1dC1jb2VyY2lv biAoY29lcmNpb24tdGFibGUgJ2luc2VydC1wcm9jISkpCgogIChkZWZpbmUgKGF0dGFjaC10YWcg dHlwZS10YWcgY29udGVudHMpCiAgICAoY29ucyB0eXBlLXRhZyBjb250ZW50cykpCgogIChkZWZp bmUgKHR5cGUtdGFnIGRhdHVtKQogICAgKGlmIChwYWlyPyBkYXR1bSkKCShjYXIgZGF0dW0pCgko ZXJyb3IgIkJhZCB0YWdnZWQgZGF0dW0gLS0gVFlQRS1UQUciIGRhdHVtKSkpCgogIChkZWZpbmUg KGNvbnRlbnRzIGRhdHVtKQogICAgKGlmIChwYWlyPyBkYXR1bSkKCShjZHIgZGF0dW0pCgkoZXJy b3IgIkJhZCB0YWdnZWQgZGF0dW0gLS0gQ09OVEVOVFMiIGRhdHVtKSkpCgogIChkZWZpbmUgKHJl Y3Rhbmd1bGFyPyB6KQogICAgKGVxPyAodHlwZS10YWcgeikgJ3JlY3Rhbmd1bGFyKSkKCiAgKGRl ZmluZSAocG9sYXI/IHopCiAgICAoZXE/ICh0eXBlLXRhZyB6KSAncG9sYXIpKQoKCiAgKGRlZmlu ZSAocmVhbC1wYXJ0IHopIChhcHBseS1nZW5lcmljICdyZWFsLXBhcnQgeikpCiAgKGRlZmluZSAo aW1hZy1wYXJ0IHopIChhcHBseS1nZW5lcmljICdpbWFnLXBhcnQgeikpCiAgKGRlZmluZSAobWFn bml0dWRlIHopIChhcHBseS1nZW5lcmljICdtYWduaXR1ZGUgeikpCiAgKGRlZmluZSAoYW5nbGUg eikgKGFwcGx5LWdlbmVyaWMgJ2FuZ2xlIHopKQoKICAoZGVmaW5lIChhZGQgeCB5KSAoYXBwbHkt Z2VuZXJpYyAnYWRkIHggeSkpCiAgKGRlZmluZSAoc3ViIHggeSkgKGFwcGx5LWdlbmVyaWMgJ3N1 YiB4IHkpKQogIChkZWZpbmUgKG11bCB4IHkpIChhcHBseS1nZW5lcmljICdtdWwgeCB5KSkKICAo ZGVmaW5lIChkaXYgeCB5KSAoYXBwbHktZ2VuZXJpYyAnZGl2IHggeSkpCgogIChkZWZpbmUgKGVx dT8geCB5KSAoYXBwbHktZ2VuZXJpYyAnZXF1PyB4IHkpKQogIChkZWZpbmUgKHplcm8/IHgpIChh cHBseS1nZW5lcmljICd6ZXJvPyB4KSkKCiAgKGRlZmluZSAoZXhwIHggeSkgKGFwcGx5LWdlbmVy aWMgJ2V4cCB4IHkpKQoKICAoZGVmaW5lIChpbnN0YWxsLXNjaGVtZS1udW1iZXItcGFja2FnZSkK ICAgIChkZWZpbmUgKHRhZyB4KQogICAgICAoYXR0YWNoLXRhZyAnc2NoZW1lLW51bWJlciB4KSkK ICAgIChwdXQgJ2FkZCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAobGFtYmRhICh4 IHkpICh0YWcgKCsgeCB5KSkpKQogICAgKHB1dCAnc3ViICcoc2NoZW1lLW51bWJlciBzY2hlbWUt bnVtYmVyKQoJIChsYW1iZGEgKHggeSkgKHRhZyAoLSB4IHkpKSkpCiAgICAocHV0ICdtdWwgJyhz Y2hlbWUtbnVtYmVyIHNjaGVtZS1udW1iZXIpCgkgKGxhbWJkYSAoeCB5KSAodGFnICgqIHggeSkp KSkKICAgIChwdXQgJ2RpdiAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAobGFtYmRh ICh4IHkpICh0YWcgKC8geCB5KSkpKQogICAgKHB1dCAnbWFrZSAnc2NoZW1lLW51bWJlcgoJIChs YW1iZGEgKHgpICh0YWcgeCkpKQogICAgKHB1dCAnZXF1PyAnKHNjaGVtZS1udW1iZXIgc2NoZW1l LW51bWJlcikKCSAobGFtYmRhICh4IHkpICg9IHggeSkpKQogICAgKHB1dCAnemVybz8gJyhzY2hl bWUtbnVtYmVyKQoJICAobGFtYmRhICh4KSAoPSAwIHgpKSkKICAgIChwdXQgJ2V4cCAnKHNjaGVt ZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAgKGxhbWJkYSAoeCB5KSAodGFnIChleHB0IHggeSkp KSkKCiAgICAnZG9uZSkKCiAgKGRlZmluZSAobWFrZS1zY2hlbWUtbnVtYmVyIG4pCiAgICAoKGdl dCAnbWFrZSAnc2NoZW1lLW51bWJlcikgbikpCgogIChkZWZpbmUgKGluc3RhbGwtcmF0aW9uYWwt cGFja2FnZSkKICAgIChkZWZpbmUgKG51bWVyIHgpIChjYXIgeCkpCiAgICAoZGVmaW5lIChkZW5v bSB4KSAoY2RyIHgpKQogICAgKGRlZmluZSAobWFrZS1yYXQgbiBkKQogICAgICAobGV0ICgoZyAo Z2NkIG4gZCkpKQoJKGNvbnMgKC8gbiBnKSAoLyBkIGcpKSkpCiAgICAoZGVmaW5lIChhZGQtcmF0 IHggeSkKICAgICAgKG1ha2UtcmF0ICgrICgqIChudW1lciB4KSAoZGVub20geSkpCgkJICAgKCog KG51bWVyIHkpIChkZW5vbSB4KSkpCgkJKCogKGRlbm9tIHgpIChkZW5vbSB5KSkpKQogICAgKGRl ZmluZSAoc3ViLXJhdCB4IHkpCiAgICAgIChtYWtlLXJhdCAoLSAoKiAobnVtZXIgeCkgKGRlbm9t IHkpKQoJCSAgICgqIChudW1lciB5KSAoZGVub20geCkpKQoJCSgqIChkZW5vbSB4KSAoZGVub20g eSkpKSkKICAgIChkZWZpbmUgKG11bC1yYXQgeCB5KQogICAgICAobWFrZS1yYXQgKCogKG51bWVy IHgpIChudW1lciB5KSkKCQkoKiAoZGVub20geCkgKGRlbm9tIHkpKSkpCiAgICAoZGVmaW5lIChk aXYtcmF0IHggeSkKICAgICAgKG1ha2UtcmF0ICgqIChudW1lciB4KSAoZGVub20geSkpCgkJKCog KGRlbm9tIHgpIChudW1lciB5KSkpKQoKICAgIChkZWZpbmUgKHRhZyB4KSAoYXR0YWNoLXRhZyAn cmF0aW9uYWwgeCkpCiAgICAocHV0ICdhZGQgJyhyYXRpb25hbCByYXRpb25hbCkKCSAobGFtYmRh ICh4IHkpICh0YWcgKGFkZC1yYXQgeCB5KSkpKQogICAgKHB1dCAnc3ViICcocmF0aW9uYWwgcmF0 aW9uYWwpCgkgKGxhbWJkYSAoeCB5KSAodGFnIChzdWItcmF0IHggeSkpKSkKICAgIChwdXQgJ211 bCAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJIChsYW1iZGEgKHggeSkgKHRhZyAobXVsLXJhdCB4IHkp KSkpCiAgICAocHV0ICdkaXYgJyhyYXRpb25hbCByYXRpb25hbCkKCSAobGFtYmRhICh4IHkpICh0 YWcgKGRpdi1yYXQgeCB5KSkpKQoKICAgIChwdXQgJ21ha2UgJ3JhdGlvbmFsCgkgKGxhbWJkYSAo biBkKSAodGFnIChtYWtlLXJhdCBuIGQpKSkpCiAgICAocHV0ICdlcXU/ICcocmF0aW9uYWwgcmF0 aW9uYWwpCgkgKGxhbWJkYSAoeCB5KSAoPSAwIChudW1lciAoc3ViLXJhdCB4IHkpKSkpKQogICAg KHB1dCAnemVybz8gJyhyYXRpb25hbCkgKGxhbWJkYSAoeCkgKD0gMCAobnVtZXIgeCkpKSkKICAg ICdkb25lKQoKICAoZGVmaW5lIChtYWtlLXJhdGlvbmFsIG4gZCkKICAgICgoZ2V0ICdtYWtlICdy YXRpb25hbCkgbiBkKSkKCiAgKGRlZmluZSAoaW5zdGFsbC1yZWN0YW5ndWxhci1wYWNrYWdlKQoK ICAgIChkZWZpbmUgKHJlYWwtcGFydCB6KSAoY2FyIHopKQogICAgKGRlZmluZSAoaW1hZy1wYXJ0 IHopIChjZHIgeikpCiAgICAoZGVmaW5lIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkgKGNvbnMg eCB5KSkKICAgIChkZWZpbmUgKG1hZ25pdHVkZSB6KQogICAgICAoc3FydCAoKyAoc3F1YXJlIChy ZWFsLXBhcnQgeikpCgkgICAgICAgKHNxdWFyZSAoaW1hZy1wYXJ0IHopKSkpKQogICAgKGRlZmlu ZSAoYW5nbGUgeikKICAgICAgKGF0YW4gKGltYWctcGFydCB6KSAocmVhbC1wYXJ0IHopKSkKICAg IChkZWZpbmUgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkKICAgICAgKGNvbnMgKCogciAoY29zIGEp KSAoKiByIChzaW4gYSkpKSkKCiAgICAoZGVmaW5lICh0YWcgeCkgKGF0dGFjaC10YWcgJ3JlY3Rh bmd1bGFyIHgpKQogICAgKHB1dCAncmVhbC1wYXJ0ICcocmVjdGFuZ3VsYXIpIHJlYWwtcGFydCkK ICAgIChwdXQgJ2ltYWctcGFydCAnKHJlY3Rhbmd1bGFyKSBpbWFnLXBhcnQpCiAgICAocHV0ICdt YWduaXR1ZGUgJyhyZWN0YW5ndWxhcikgbWFnbml0dWRlKQogICAgKHB1dCAnYW5nbGUgJyhyZWN0 YW5ndWxhcikgYW5nbGUpCiAgICAocHV0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdyZWN0YW5ndWxh cgoJIChsYW1iZGEgKHggeSkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpKSkpCiAgICAo cHV0ICdtYWtlLWZyb20tbWFnLWFuZyAncmVjdGFuZ3VsYXIKCSAobGFtYmRhIChyIGEpICh0YWcg KG1ha2UtZnJvbS1tYWctYW5nIHIgYSkpKSkKICAgICdkb25lKQoKICAoZGVmaW5lIChpbnN0YWxs LXBvbGFyLXBhY2thZ2UpCgogICAgKGRlZmluZSAobWFnbml0dWRlIHopIChjYXIgeikpCiAgICAo ZGVmaW5lIChhbmdsZSB6KSAoY2RyIHopKQogICAgKGRlZmluZSAobWFrZS1mcm9tLW1hZy1hbmcg ciBhKSAoY29ucyByIGEpKQogICAgKGRlZmluZSAocmVhbC1wYXJ0IHopCiAgICAgICgqIChtYWdu aXR1ZGUgeikgKGNvcyAoYW5nbGUgeikpKSkKICAgIChkZWZpbmUgKGltYWctcGFydCB6KQogICAg ICAoKiAobWFnbml0dWRlIHopIChzaW4gKGFuZ2xlIHopKSkpCiAgICAoZGVmaW5lIChtYWtlLWZy b20tcmVhbC1pbWFnIHggeSkKICAgICAgKGNvbnMgKHNxcnQgKCsgKHNxdWFyZSB4KSAoc3F1YXJl IHkpKSkKCSAgICAoYXRhbiB5IHgpKSkKCiAgICAoZGVmaW5lICh0YWcgeCkgKGF0dGFjaC10YWcg J3BvbGFyIHgpKQogICAgKHB1dCAncmVhbC1wYXJ0ICcocG9sYXIpIHJlYWwtcGFydCkKICAgIChw dXQgJ2ltYWctcGFydCAnKHBvbGFyKSBpbWFnLXBhcnQpCiAgICAocHV0ICdtYWduaXR1ZGUgJyhw b2xhcikgbWFnbml0dWRlKQogICAgKHB1dCAnYW5nbGUgJyhwb2xhcikgYW5nbGUpCiAgICAocHV0 ICdtYWtlLWZyb20tcmVhbC1pbWFnICdwb2xhcgoJIChsYW1iZGEgKHggeSkgKHRhZyAobWFrZS1m cm9tLXJlYWwtaW1hZyB4IHkpKSkpCiAgICAocHV0ICdtYWtlLWZyb20tbWFnLWFuZyAncG9sYXIK CSAobGFtYmRhIChyIGEpICh0YWcgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkpKSkKICAgICdkb25l KQoKICAoZGVmaW5lIChpbnN0YWxsLWNvbXBsZXgtcGFja2FnZSkKICAgIChkZWZpbmUgKG1ha2Ut ZnJvbS1yZWFsLWltYWcgeCB5KQogICAgICAoKGdldCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAncmVj dGFuZ3VsYXIpIHggeSkpCiAgICAoZGVmaW5lIChtYWtlLWZyb20tbWFnLWFuZyByIGEpCiAgICAg ICgoZ2V0ICdtYWtlLWZyb20tbWFnLWFuZyAncG9sYXIpIHIgYSkpCiAgICAoZGVmaW5lIChhZGQt Y29tcGxleCB6MSB6MikKICAgICAgKG1ha2UtZnJvbS1yZWFsLWltYWcgKCsgKHJlYWwtcGFydCB6 MSkgKHJlYWwtcGFydCB6MikpCgkJCSAgICgrIChpbWFnLXBhcnQgejEpIChpbWFnLXBhcnQgejIp KSkpCiAgICAoZGVmaW5lIChzdWItY29tcGxleCB6MSB6MikKICAgICAgKG1ha2UtZnJvbS1yZWFs LWltYWcgKC0gKHJlYWwtcGFydCB6MSkgKHJlYWwtcGFydCB6MikpCgkJCSAgICgtIChpbWFnLXBh cnQgejEpIChpbWFnLXBhcnQgejIpKSkpCiAgICAoZGVmaW5lIChtdWwtY29tcGxleCB6MSB6MikK ICAgICAgKG1ha2UtZnJvbS1tYWctYW5nICgqIChtYWduaXR1ZGUgejEpIChtYWduaXR1ZGUgejIp KQoJCQkgKCsgKGFuZ2xlIHoxKSAoYW5nbGUgejIpKSkpCiAgICAoZGVmaW5lIChkaXYtY29tcGxl eCB6MSB6MikKICAgICAgKG1ha2UtZnJvbS1tYWctYW5nICgvIChtYWduaXR1ZGUgejEpIChtYWdu aXR1ZGUgejIpKQoJCQkgKC0gKGFuZ2xlIHoxKSAoYW5nbGUgejIpKSkpCiAgICAoZGVmaW5lICh0 YWcgeikgKGF0dGFjaC10YWcgJ2NvbXBsZXggeikpCiAgICAocHV0ICdhZGQgJyhjb21wbGV4IGNv bXBsZXgpCgkgKGxhbWJkYSAoejEgejIpICh0YWcgKGFkZC1jb21wbGV4IHoxIHoyKSkpKQogICAg KHB1dCAnc3ViICcoY29tcGxleCBjb21wbGV4KQoJIChsYW1iZGEgKHoxIHoyKSAodGFnIChzdWIt Y29tcGxleCB6MSB6MikpKSkKICAgIChwdXQgJ211bCAnKGNvbXBsZXggY29tcGxleCkKCSAobGFt YmRhICh6MSB6MikgKHRhZyAobXVsLWNvbXBsZXggejEgejIpKSkpCiAgICAocHV0ICdkaXYgJyhj b21wbGV4IGNvbXBsZXgpCgkgKGxhbWJkYSAoejEgejIpICh0YWcgKGRpdi1jb21wbGV4IHoxIHoy KSkpKQogICAgKHB1dCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAnY29tcGxleAoJIChsYW1iZGEgKHgg eSkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpKSkpCiAgICAocHV0ICdtYWtlLWZyb20t bWFnLWFuZyAnY29tcGxleAoJIChsYW1iZGEgKHIgYSkgKHRhZyAobWFrZS1mcm9tLW1hZy1hbmcg ciBhKSkpKQogICAgKHB1dCAnZXF1PyAnKGNvbXBsZXggY29tcGxleCkKCSAobGFtYmRhICh4IHkp IChhbmQgKD0gMCAocmVhbC1wYXJ0IChzdWItY29tcGxleCB4IHkpKSkKCQkgICAgICAoPSAwIChp bWFnLXBhcnQgKHN1Yi1jb21wbGV4IHggeSkpKSkpKQogICAgKHB1dCAnZXF1PyAnKHJlY3Rhbmd1 bGFyIHBvbGFyKSBlcXU/KQogICAgKHB1dCAnZXF1PyAnKHBvbGFyIHJlY3Rhbmd1bGFyKSBlcXU/ KQogICAgKHB1dCAnemVybz8gJyhjb21wbGV4KQoJIChsYW1iZGEgKHgpIChlcXU/ICh0YWcgeCkg KHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyAwIDApKSkpKQogICAgJ2RvbmUpCgogIChkZWZpbmUg KG1ha2UtY29tcGxleC1mcm9tLXJlYWwtaW1hZyB4IHkpCiAgICAoKGdldCAnbWFrZS1mcm9tLXJl YWwtaW1hZyAnY29tcGxleCkgeCB5KSkKCiAgKGRlZmluZSAobWFrZS1jb21wbGV4LWZyb20tbWFn LWFuZyByIGEpCiAgICAoKGdldCAnbWFrZS1mcm9tLW1hZy1hbmcgJ2NvbXBsZXgpIHIgYSkpCgog IChpbnN0YWxsLXJlY3Rhbmd1bGFyLXBhY2thZ2UpCiAgKGluc3RhbGwtcG9sYXItcGFja2FnZSkK ICAoaW5zdGFsbC1yYXRpb25hbC1wYWNrYWdlKQogIChpbnN0YWxsLXNjaGVtZS1udW1iZXItcGFj a2FnZSkKICAoaW5zdGFsbC1jb21wbGV4LXBhY2thZ2UpCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoK OiAgKHNjaGVtZS1udW1iZXIgLiA0KQoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGgg OnJlc3VsdHMgb3V0cHV0IDpub3dlYi1yZWYgYXBwbHktZ2VuZXJpYy1tYW55LWFyZ3MKICAoZGVm aW5lIChhcHBseS1nZW5lcmljIG9wIC4gYXJncykKICAgIChkZWZpbmUgKGFsbC1hcmd0eXBlcy1z YW1lPyAuIGFyZ3MpCiAgICAgIChsZXQgKCh0eXBlICh0eXBlLXRhZyAoY2FyIGFyZ3MpKSkpCgko YWNjdW11bGF0ZSAobGFtYmRhICh4IHkpIChhbmQgeCB5KSkgI3QgKG1hcCAobGFtYmRhICh4KSAo ZXE/IHR5cGUgeCkpIGFyZ3MpKSkpCiAgICAoZGVmaW5lIChjb2VyY2lvbi1pZi1leGlzdHM/IHR5 cGUgYXJnLXRhZ3MpCiAgICAgIChsZXQgKChjb2VyY2lvbi1saXN0IChtYXAgKGxhbWJkYSAoeCkg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChlcT8gdHlwZSB4KQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZGVudGl0eQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZ2V0LWNvZXJjaW9uIHggdHlwZSkpKSBhcmctdGFncykpKQoJKGlmIChhY2N1bXVs YXRlIChsYW1iZGEgKHggeSkgKGFuZCB4IHkpKSAjdCBjb2VyY2lvbi1saXN0KQoJICAgIGNvZXJj aW9uLWxpc3QKCSAgICAjZikpKQogICAgKGxldCAoKHR5cGUtdGFncyAobWFwIHR5cGUtdGFnIGFy Z3MpKSkKCSAobGV0ICgocHJvYyAoZ2V0IG9wIHR5cGUtdGFncykpKQoJICAgKGlmIHByb2MKCSAg ICAgICAoYXBwbHkgcHJvYyAobWFwIGNvbnRlbnRzIGFyZ3MpKQoJICAgICAgIChpZiAoYW5kICg+ PSAobGVuZ3RoIGFyZ3MpIDIpIChub3QgKGFsbC1hcmd0eXBlcy1zYW1lPyBhcmdzKSkpCgkJICAg KGxldCB0eXBlcy1sb29wICgodHlwZXMgdHlwZS10YWdzKSkKCQkgICAgIChsZXQgKChsaXN0LW9m LWNvZXJjaW9uLWZ1bmN0aW9ucwoJCQkgICAgKGNvZXJjaW9uLWlmLWV4aXN0cz8gKGNhciB0eXBl cykgdHlwZS10YWdzKSkpCgkJICAgICAgIChpZiBsaXN0LW9mLWNvZXJjaW9uLWZ1bmN0aW9ucwoJ CQkgICAoYXBwbHkgYXBwbHktZ2VuZXJpYyAoY29ucyBvcCAobWFwIChsYW1iZGEgKGZ1biBhcmcp IChmdW4gYXJnKSkKCQkJCQkJICBsaXN0LW9mLWNvZXJjaW9uLWZ1bmN0aW9ucwoJCQkJCQkgIGFy Z3MpKSkKCQkgICAgICAgKGlmIChub3QgKG51bGw/IChjZHIgdHlwZXMpKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHR5cGVzLWxvb3AgKGNkciB0eXBlcykpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIChlcnJvciAiRXZlbiBjb2VyY2lvbnMgZmFpbGVkLiBObyBtZXRob2QgZm9yIHRo ZXNlIHR5cGVzLiIpKSkpKQoJCSAgIChlcnJvciAiTm8gbWV0aG9kIGZvciB0aGVzZSB0eXBlcyIK CQkJICAobGlzdCBvcCB0eXBlLXRhZ3MpKSkpKSkpCihkZWZpbmUgKHNjaGVtZS1udW1iZXItPmNv bXBsZXggbikKICAgIChtYWtlLWNvbXBsZXgtZnJvbS1yZWFsLWltYWcgKGNvbnRlbnRzIG4pIDAp KQogIChwdXQtY29lcmNpb24gJ3NjaGVtZS1udW1iZXIKCQknY29tcGxleAoJCXNjaGVtZS1udW1i ZXItPmNvbXBsZXgpCgoocHV0ICdtYXgzLW1hZ25pdHVkZSAnKGNvbXBsZXggY29tcGxleCBjb21w bGV4KSAobGFtYmRhICh6MSB6MiB6MykKICAgKG1heCAobWFnbml0dWRlIHoxKSAobWFnbml0dWRl IHoyKSAobWFnbml0dWRlIHozKSkpKQooZGVmaW5lIChtYXgzLW1hZ25pdHVkZSB4MSB4MiB4Mykg KGFwcGx5LWdlbmVyaWMgJ21heDMtbWFnbml0dWRlIHgxIHgyIHgzKSkKKGRlZmluZSAoaWRlbnRp dHkgeCkgeCkKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVz dWx0cyBvdXRwdXQKPDxhY2N1bXVsYXRlPj4KPDxnZW5lcmljLWFyaXRobWV0aWMtcGFja2FnZXMt bXVsdGlkaXNwYXRjaD4+Cjw8YWx5c3NhLWNvbXBsZXgtc3VnZ2VzdGlvbj4+Cjw8YXBwbHktZ2Vu ZXJpYy1tYW55LWFyZ3M+Pgooc2hvdyAjdCAiICIgKGRpc3BsYXllZCAKICAgICAgICAgICAgICAg KG1heDMtbWFnbml0dWRlIAogICAgICAgICAgICAgICAgICAobWFrZS1zY2hlbWUtbnVtYmVyIDEp IAogICAgICAgICAgICAgICAgICAobWFrZS1zY2hlbWUtbnVtYmVyIDIpCiAgICAgICAgICAgICAg ICAgIChtYWtlLWNvbXBsZXgtZnJvbS1yZWFsLWltYWcgMyAwKSkpKQojK2VuZF9zcmMKCiMrUkVT VUxUUzoKOiAgMwoKV2VsbCwgdGhpcyBzb2x1dGlvbiB3b3JrcywgYnV0IGlzIG5vdCBwZXJmZWN0 LiBJbmRlZWQsIHdlIGNhbiBwcm9tb3RlIHRoZQpudW1iZXJzIHRvIG9uZSBvZiB0aGUgYXJndW1l bnRzLCBidXQgdGhpcyBpbXBsZW1lbnRhdGlvbiB3b3VsZCBmYWlsIGlmIHRoZQp0eXBlcyBhcmUg Y29lcmNlLWFibGUsIGJ1dCB0aGUgb3BlcmF0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZC4KCioqKiBE T05FIEV4ZXJjaXNlIDIuODMgTnVtZXJpYyBUb3dlciBhbmQgKHJhaXNlKQogICAgQ0xPU0VEOiBb MjAxOS0xMC0xNiBXZWQgMTQ6NTNdCgpUaGlzIGV4ZXJjaXNlIGhhcyBhIHByb2JsZW06IHRoZSBu YW1lIG9mIHRoZSB+KHJhaXNlKX4gZnVuY3Rpb24gY29pbmNpZGVzCndpdGggdGhlIFI3UlMnIGJ1 aWx0LWluIG5hbWUgZm9yIGFuIG9wZXJhdGlvbiB0byByYWlzZSBleGNlcHRpb25zLiBUaGVyZWZv cmUsCkkgaGF2ZSB0byBuYW1lIG15IG9wZXJhdGlvbiB+cmFpc2UtdHlwZX4uCgojK2JlZ2luX3Ny YyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKKGRlZmluZSBudW1lcmljLXRv d2VyIChsaXN0ICdpbnRlZ2VyICdyYXRpb25hbCAnc2NoZW1lLW51bWJlciAnY29tcGxleCkpCgoo ZGVmaW5lIChoaWdoZXItdHlwZSB4KQogICAoZGVmaW5lIChmaW5kLWhpZ2hlci10eXBlIHggdHlw ZXMpCiAgICAgIChjb25kICgob3IgKG51bGw/IHR5cGVzKSAobnVsbD8gKGNkciB0eXBlcykpKSAo ZXJyb3IgIk5vIHR5cGUgaGlnaGVyIHRoYW4gZ2l2ZW4iIHgpKQogICAgICAgICAgICAoKGVxPyB4 IChjYXIgdHlwZXMpKSAoY2FkciB0eXBlcykpCiAgICAgICAgICAgIChlbHNlIChmaW5kLWhpZ2hl ci10eXBlIHggKGNkciB0eXBlcykpKSkpKQoKKGRlZmluZSAoaW50ZWdlci0+cmF0aW9uYWwgeCkK ICAobWFrZS1yYXRpb25hbCBpbnRlZ2VyIDEpKQoKKGRlZmluZSAocmF0aW9uYWwtPnNjaGVtZS1u dW1iZXIgeCkKICAoLyAobnVtZXIgeCkgKGRlbm9tIHgpKSkKKHB1dC1jb2VyY2lvbiAnaW50ZWdl ciAncmF0aW9uYWwgaW50ZWdlci0+cmF0aW9uYWwpCihwdXQtY29lcmNpb24gJ3JhdGlvbmFsICdz Y2hlbWUtbnVtYmVyIHJhdGlvbmFsLT5zY2hlbWUtbnVtYmVyKQoKKGRlZmluZSAocmFpc2UtdHlw ZSB4KSAoKGdldC1jb2VyY2lvbiAodHlwZS10YWcgeCkgKGhpZ2hlci10eXBlICh0eXBlLXRhZyB4 KSkpIHgpKQoKIytlbmRfc3JjCgoqKiogRE9ORSBFeGVyY2lzZSAyLjg0IFVzaW5nIH5yYWlzZX4g KH5yYWlzZS10eXBlfikgaW4gfmFwcGx5LWdlbmVyaWN+CiAgICBDTE9TRUQ6IFsyMDE5LTEwLTE3 IFRodSAxMTozOV0KClRoaXMgZXhlcmNpc2UgaXMgYWxzbyBleHRyZW1lbHkgY29uZnVzaW5nLiBT Y2hlbWUtbnVtYmVyLCBJIGd1ZXNzLCBjYW4KZWZmZWN0aXZlbHkgYmUgY29uc2lkZXJlZCAicmVh bCIsIHNvICJyYXRpb25hbCIgbnVtYmVycyBzaG91bGQgYmUgbG93ZXIgaW4KdGhlIGhpZXJhcmNo eSB0aGFuICJzY2hlbWUtbnVtYmVyInMuIEJ1dCB3aGF0IGFib3V0IGludGVnZXJzPyBXZSBuZXZl ciBoYWQKYW55IG9wZXJhdGlvbnMgY29uY2VybmluZyBpbnRlZ2Vycy4gCgpJbiB0aGlzIGV4ZXJj aXNlIEkgd2lsbCB0cnkgdG8gaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgc3RyYXRlZ3k6CiAxLiBN b2RpZnkgfnR5cGUtdGFnfiB0byByZXR1cm4gfidpbnRlZ2VyfiBmb3Igc2NoZW1lIGludGVnZXJz LgogMi4gV2lsbCBub3QgaW1wbGVtZW50IGFueSBvcGVyYXRpb25zIGZvciB+J2ludGVnZXJ+J3Ms IGJlY2F1c2UgdGhvc2Ugd2lsbCBiZQogICAgY292ZXJlZCBieSB0aGUgfidyYXRpb25hbH4gY2xh c3MuCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKICAo ZGVmaW5lIChhY2N1bXVsYXRlIG9wIGluaXRpYWwgc2VxdWVuY2UpCiAgICAoaWYgKG51bGw/IHNl cXVlbmNlKQoJaW5pdGlhbAoJKGFjY3VtdWxhdGUgb3AgKG9wIGluaXRpYWwgKGNhciBzZXF1ZW5j ZSkpIChjZHIgc2VxdWVuY2UpKSkpCiAgKGRlZmluZSBmYWxzZSAjZikKICAoZGVmaW5lIHRydWUg ICN0KQogIChkZWZpbmUgKG1ha2UtdGFibGUpCiAgICAobGV0ICgobG9jYWwtdGFibGUgKGxpc3Qg Jyp0YWJsZSopKSkKICAgICAgKGRlZmluZSAobG9va3VwIGtleS0xIGtleS0yKQoJKGxldCAoKHN1 YnRhYmxlIChhc3NvYyBrZXktMSAoY2RyIGxvY2FsLXRhYmxlKSkpKQoJICAoaWYgc3VidGFibGUK CSAgICAgIChsZXQgKChyZWNvcmQgKGFzc29jIGtleS0yIChjZHIgc3VidGFibGUpKSkpCgkJKGlm IHJlY29yZAoJCSAgICAoY2RyIHJlY29yZCkKCQkgICAgZmFsc2UpKQoJICAgICAgZmFsc2UpKSkK ICAgICAgKGRlZmluZSAoaW5zZXJ0ISBrZXktMSBrZXktMiB2YWx1ZSkKCShsZXQgKChzdWJ0YWJs ZSAoYXNzb2Mga2V5LTEgKGNkciBsb2NhbC10YWJsZSkpKSkKCSAgKGlmIHN1YnRhYmxlCgkgICAg ICAobGV0ICgocmVjb3JkIChhc3NvYyBrZXktMiAoY2RyIHN1YnRhYmxlKSkpKQoJCShpZiByZWNv cmQKCQkgICAgKHNldC1jZHIhIHJlY29yZCB2YWx1ZSkKCQkgICAgKHNldC1jZHIhIHN1YnRhYmxl CgkJCSAgICAgIChjb25zIChjb25zIGtleS0yIHZhbHVlKQoJCQkJICAgIChjZHIgc3VidGFibGUp KSkpKQoJICAgICAgKHNldC1jZHIhIGxvY2FsLXRhYmxlCgkJCShjb25zIChsaXN0IGtleS0xCgkJ CQkgICAgKGNvbnMga2V5LTIgdmFsdWUpKQoJCQkgICAgICAoY2RyIGxvY2FsLXRhYmxlKSkpKSkK CSdvaykKICAgICAgKGRlZmluZSAoZGlzcGF0Y2ggbSkKCShjb25kICgoZXE/IG0gJ2xvb2t1cC1w cm9jKSBsb29rdXApCgkgICAgICAoKGVxPyBtICdpbnNlcnQtcHJvYyEpIGluc2VydCEpCgkgICAg ICAoZWxzZSAoZXJyb3IgIlVua25vd24gb3BlcmF0aW9uIC0tIFRBQkxFIiBtKSkpKQogICAgICBk aXNwYXRjaCkpCgogIChkZWZpbmUgb3BlcmF0aW9uLXRhYmxlIChtYWtlLXRhYmxlKSkKICAoZGVm aW5lIGdldCAob3BlcmF0aW9uLXRhYmxlICdsb29rdXAtcHJvYykpCiAgKGRlZmluZSBwdXQgKG9w ZXJhdGlvbi10YWJsZSAnaW5zZXJ0LXByb2MhKSkKCiAgKGRlZmluZSBjb2VyY2lvbi10YWJsZSAo bWFrZS10YWJsZSkpCiAgKGRlZmluZSBnZXQtY29lcmNpb24gKGNvZXJjaW9uLXRhYmxlICdsb29r dXAtcHJvYykpCiAgKGRlZmluZSBwdXQtY29lcmNpb24gKGNvZXJjaW9uLXRhYmxlICdpbnNlcnQt cHJvYyEpKQoKICAoZGVmaW5lIChhdHRhY2gtdGFnIHR5cGUtdGFnIGNvbnRlbnRzKQogICAgKGNv bnMgdHlwZS10YWcgY29udGVudHMpKQoKICAoZGVmaW5lICh0eXBlLXRhZyBkYXR1bSkKICAgIChj b25kICgocGFpcj8gZGF0dW0pIChjYXIgZGF0dW0pKQoJICAoKGV4YWN0LWludGVnZXI/IGRhdHVt KSAnaW50ZWdlcikKCSAgKGVycm9yICJCYWQgdGFnZ2VkIGRhdHVtIC0tIFRZUEUtVEFHIiBkYXR1 bSkpKQoKICAoZGVmaW5lIChjb250ZW50cyBkYXR1bSkKICAgIChjb25kICgocGFpcj8gZGF0dW0p IChjZHIgZGF0dW0pKQoJICAoKGludGVnZXI/IGRhdHVtKSBkYXR1bSkKCSAgKGVsc2UgKGVycm9y ICJCYWQgdGFnZ2VkIGRhdHVtIC0tIENPTlRFTlRTIiBkYXR1bSkpKSkKCiAgKGRlZmluZSAoaW50 ZWdlcj8geCkKICAgIChlcT8gKHR5cGUtdGFnIHgpICdpbnRlZ2VyKSkKICAoZGVmaW5lIChyZWN0 YW5ndWxhcj8geikKICAgIChlcT8gKHR5cGUtdGFnIHopICdyZWN0YW5ndWxhcikpCgogIChkZWZp bmUgKHBvbGFyPyB6KQogICAgKGVxPyAodHlwZS10YWcgeikgJ3BvbGFyKSkKCgogIChkZWZpbmUg KHJlYWwtcGFydCB6KSAoYXBwbHktZ2VuZXJpYyAncmVhbC1wYXJ0IHopKQogIChkZWZpbmUgKGlt YWctcGFydCB6KSAoYXBwbHktZ2VuZXJpYyAnaW1hZy1wYXJ0IHopKQogIChkZWZpbmUgKG1hZ25p dHVkZSB6KSAoYXBwbHktZ2VuZXJpYyAnbWFnbml0dWRlIHopKQogIChkZWZpbmUgKGFuZ2xlIHop IChhcHBseS1nZW5lcmljICdhbmdsZSB6KSkKCiAgKGRlZmluZSAoYWRkIHggeSkgKGFwcGx5LWdl bmVyaWMgJ2FkZCB4IHkpKQogIChkZWZpbmUgKHN1YiB4IHkpIChhcHBseS1nZW5lcmljICdzdWIg eCB5KSkKICAoZGVmaW5lIChtdWwgeCB5KSAoYXBwbHktZ2VuZXJpYyAnbXVsIHggeSkpCiAgKGRl ZmluZSAoZGl2IHggeSkgKGFwcGx5LWdlbmVyaWMgJ2RpdiB4IHkpKQoKICAoZGVmaW5lIChlcXU/ IHggeSkgKGFwcGx5LWdlbmVyaWMgJ2VxdT8geCB5KSkKICAoZGVmaW5lICh6ZXJvPyB4KSAoYXBw bHktZ2VuZXJpYyAnemVybz8geCkpCgogIChkZWZpbmUgKGV4cCB4IHkpIChhcHBseS1nZW5lcmlj ICdleHAgeCB5KSkKCiAgKGRlZmluZSAoaW5zdGFsbC1zY2hlbWUtbnVtYmVyLXBhY2thZ2UpCiAg ICAoZGVmaW5lICh0YWcgeCkKICAgICAgKGF0dGFjaC10YWcgJ3NjaGVtZS1udW1iZXIgeCkpCiAg ICAocHV0ICdhZGQgJyhzY2hlbWUtbnVtYmVyIHNjaGVtZS1udW1iZXIpCgkgKGxhbWJkYSAoeCB5 KSAodGFnICgrIHggeSkpKSkKICAgIChwdXQgJ3N1YiAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51 bWJlcikKCSAobGFtYmRhICh4IHkpICh0YWcgKC0geCB5KSkpKQogICAgKHB1dCAnbXVsICcoc2No ZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJIChsYW1iZGEgKHggeSkgKHRhZyAoKiB4IHkpKSkp CiAgICAocHV0ICdkaXYgJyhzY2hlbWUtbnVtYmVyIHNjaGVtZS1udW1iZXIpCgkgKGxhbWJkYSAo eCB5KSAodGFnICgvIHggeSkpKSkKICAgIChwdXQgJ21ha2UgJ3NjaGVtZS1udW1iZXIKCSAobGFt YmRhICh4KSAodGFnIHgpKSkKICAgIChwdXQgJ2VxdT8gJyhzY2hlbWUtbnVtYmVyIHNjaGVtZS1u dW1iZXIpCgkgKGxhbWJkYSAoeCB5KSAoPSB4IHkpKSkKICAgIChwdXQgJ3plcm8/ICcoc2NoZW1l LW51bWJlcikKCSAobGFtYmRhICh4KSAoPSAwIHgpKSkKICAgIChwdXQgJ2V4cCAnKHNjaGVtZS1u dW1iZXIgc2NoZW1lLW51bWJlcikKCSAobGFtYmRhICh4IHkpICh0YWcgKGV4cHQgeCB5KSkpKQoK ICAgICdkb25lKQoKICAoZGVmaW5lIChtYWtlLXNjaGVtZS1udW1iZXIgbikKICAgICgoZ2V0ICdt YWtlICdzY2hlbWUtbnVtYmVyKSBuKSkKCiAgKGRlZmluZSAoaW5zdGFsbC1yYXRpb25hbC1wYWNr YWdlKQogICAgKGRlZmluZSAobnVtZXIgeCkgKGNhciB4KSkKICAgIChkZWZpbmUgKGRlbm9tIHgp IChjZHIgeCkpCiAgICAoZGVmaW5lIChtYWtlLXJhdCBuIGQpCiAgICAgIChsZXQgKChnIChnY2Qg biBkKSkpCgkoY29ucyAoLyBuIGcpICgvIGQgZykpKSkKICAgIChkZWZpbmUgKGFkZC1yYXQgeCB5 KQogICAgICAobWFrZS1yYXQgKCsgKCogKG51bWVyIHgpIChkZW5vbSB5KSkKCQkgICAoKiAobnVt ZXIgeSkgKGRlbm9tIHgpKSkKCQkoKiAoZGVub20geCkgKGRlbm9tIHkpKSkpCiAgICAoZGVmaW5l IChzdWItcmF0IHggeSkKICAgICAgKG1ha2UtcmF0ICgtICgqIChudW1lciB4KSAoZGVub20geSkp CgkJICAgKCogKG51bWVyIHkpIChkZW5vbSB4KSkpCgkJKCogKGRlbm9tIHgpIChkZW5vbSB5KSkp KQogICAgKGRlZmluZSAobXVsLXJhdCB4IHkpCiAgICAgIChtYWtlLXJhdCAoKiAobnVtZXIgeCkg KG51bWVyIHkpKQoJCSgqIChkZW5vbSB4KSAoZGVub20geSkpKSkKICAgIChkZWZpbmUgKGRpdi1y YXQgeCB5KQogICAgICAobWFrZS1yYXQgKCogKG51bWVyIHgpIChkZW5vbSB5KSkKCQkoKiAoZGVu b20geCkgKG51bWVyIHkpKSkpCgogICAgKGRlZmluZSAodGFnIHgpIChhdHRhY2gtdGFnICdyYXRp b25hbCB4KSkKICAgIChwdXQgJ2FkZCAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJIChsYW1iZGEgKHgg eSkgKHRhZyAoYWRkLXJhdCB4IHkpKSkpCiAgICAocHV0ICdzdWIgJyhyYXRpb25hbCByYXRpb25h bCkKCSAobGFtYmRhICh4IHkpICh0YWcgKHN1Yi1yYXQgeCB5KSkpKQogICAgKHB1dCAnbXVsICco cmF0aW9uYWwgcmF0aW9uYWwpCgkgKGxhbWJkYSAoeCB5KSAodGFnIChtdWwtcmF0IHggeSkpKSkK ICAgIChwdXQgJ2RpdiAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJIChsYW1iZGEgKHggeSkgKHRhZyAo ZGl2LXJhdCB4IHkpKSkpCgogICAgKHB1dCAnbWFrZSAncmF0aW9uYWwKCSAobGFtYmRhIChuIGQp ICh0YWcgKG1ha2UtcmF0IG4gZCkpKSkKICAgIChwdXQgJ2VxdT8gJyhyYXRpb25hbCByYXRpb25h bCkKCSAobGFtYmRhICh4IHkpICg9IDAgKG51bWVyIChzdWItcmF0IHggeSkpKSkpCiAgICAocHV0 ICd6ZXJvPyAnKHJhdGlvbmFsKSAobGFtYmRhICh4KSAoPSAwIChudW1lciB4KSkpKQogICAgKHB1 dCAndG8tcmVhbCAnKHJhdGlvbmFsKSAobGFtYmRhICh4KSAoLyAobnVtZXIgeCkgKGRlbm9tIHgp KSkpCiAgICAnZG9uZSkKCiAgKGRlZmluZSAobWFrZS1yYXRpb25hbCBuIGQpCiAgICAoKGdldCAn bWFrZSAncmF0aW9uYWwpIG4gZCkpCgogIChkZWZpbmUgKGluc3RhbGwtcmVjdGFuZ3VsYXItcGFj a2FnZSkKCiAgICAoZGVmaW5lIChyZWFsLXBhcnQgeikgKGNhciB6KSkKICAgIChkZWZpbmUgKGlt YWctcGFydCB6KSAoY2RyIHopKQogICAgKGRlZmluZSAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkp IChjb25zIHggeSkpCiAgICAoZGVmaW5lIChtYWduaXR1ZGUgeikKICAgICAgKHNxcnQgKCsgKHNx dWFyZSAocmVhbC1wYXJ0IHopKQoJICAgICAgIChzcXVhcmUgKGltYWctcGFydCB6KSkpKSkKICAg IChkZWZpbmUgKGFuZ2xlIHopCiAgICAgIChhdGFuIChpbWFnLXBhcnQgeikgKHJlYWwtcGFydCB6 KSkpCiAgICAoZGVmaW5lIChtYWtlLWZyb20tbWFnLWFuZyByIGEpCiAgICAgIChjb25zICgqIHIg KGNvcyBhKSkgKCogciAoc2luIGEpKSkpCgogICAgKGRlZmluZSAodGFnIHgpIChhdHRhY2gtdGFn ICdyZWN0YW5ndWxhciB4KSkKICAgIChwdXQgJ3JlYWwtcGFydCAnKHJlY3Rhbmd1bGFyKSByZWFs LXBhcnQpCiAgICAocHV0ICdpbWFnLXBhcnQgJyhyZWN0YW5ndWxhcikgaW1hZy1wYXJ0KQogICAg KHB1dCAnbWFnbml0dWRlICcocmVjdGFuZ3VsYXIpIG1hZ25pdHVkZSkKICAgIChwdXQgJ2FuZ2xl ICcocmVjdGFuZ3VsYXIpIGFuZ2xlKQogICAgKHB1dCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAncmVj dGFuZ3VsYXIKCSAobGFtYmRhICh4IHkpICh0YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSkp KQogICAgKHB1dCAnbWFrZS1mcm9tLW1hZy1hbmcgJ3JlY3Rhbmd1bGFyCgkgKGxhbWJkYSAociBh KSAodGFnIChtYWtlLWZyb20tbWFnLWFuZyByIGEpKSkpCiAgICAnZG9uZSkKCiAgKGRlZmluZSAo aW5zdGFsbC1wb2xhci1wYWNrYWdlKQoKICAgIChkZWZpbmUgKG1hZ25pdHVkZSB6KSAoY2FyIHop KQogICAgKGRlZmluZSAoYW5nbGUgeikgKGNkciB6KSkKICAgIChkZWZpbmUgKG1ha2UtZnJvbS1t YWctYW5nIHIgYSkgKGNvbnMgciBhKSkKICAgIChkZWZpbmUgKHJlYWwtcGFydCB6KQogICAgICAo KiAobWFnbml0dWRlIHopIChjb3MgKGFuZ2xlIHopKSkpCiAgICAoZGVmaW5lIChpbWFnLXBhcnQg eikKICAgICAgKCogKG1hZ25pdHVkZSB6KSAoc2luIChhbmdsZSB6KSkpKQogICAgKGRlZmluZSAo bWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpCiAgICAgIChjb25zIChzcXJ0ICgrIChzcXVhcmUgeCkg KHNxdWFyZSB5KSkpCgkgICAgKGF0YW4geSB4KSkpCgogICAgKGRlZmluZSAodGFnIHgpIChhdHRh Y2gtdGFnICdwb2xhciB4KSkKICAgIChwdXQgJ3JlYWwtcGFydCAnKHBvbGFyKSByZWFsLXBhcnQp CiAgICAocHV0ICdpbWFnLXBhcnQgJyhwb2xhcikgaW1hZy1wYXJ0KQogICAgKHB1dCAnbWFnbml0 dWRlICcocG9sYXIpIG1hZ25pdHVkZSkKICAgIChwdXQgJ2FuZ2xlICcocG9sYXIpIGFuZ2xlKQog ICAgKHB1dCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAncG9sYXIKCSAobGFtYmRhICh4IHkpICh0YWcg KG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSkpKQogICAgKHB1dCAnbWFrZS1mcm9tLW1hZy1hbmcg J3BvbGFyCgkgKGxhbWJkYSAociBhKSAodGFnIChtYWtlLWZyb20tbWFnLWFuZyByIGEpKSkpCiAg ICAnZG9uZSkKCiAgKGRlZmluZSAoaW5zdGFsbC1jb21wbGV4LXBhY2thZ2UpCiAgICAoZGVmaW5l IChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkKICAgICAgKChnZXQgJ21ha2UtZnJvbS1yZWFsLWlt YWcgJ3JlY3Rhbmd1bGFyKSB4IHkpKQogICAgKGRlZmluZSAobWFrZS1mcm9tLW1hZy1hbmcgciBh KQogICAgICAoKGdldCAnbWFrZS1mcm9tLW1hZy1hbmcgJ3BvbGFyKSByIGEpKQogICAgKGRlZmlu ZSAoYWRkLWNvbXBsZXggejEgejIpCiAgICAgIChtYWtlLWZyb20tcmVhbC1pbWFnICgrIChyZWFs LXBhcnQgejEpIChyZWFsLXBhcnQgejIpKQoJCQkgICAoKyAoaW1hZy1wYXJ0IHoxKSAoaW1hZy1w YXJ0IHoyKSkpKQogICAgKGRlZmluZSAoc3ViLWNvbXBsZXggejEgejIpCiAgICAgIChtYWtlLWZy b20tcmVhbC1pbWFnICgtIChyZWFsLXBhcnQgejEpIChyZWFsLXBhcnQgejIpKQoJCQkgICAoLSAo aW1hZy1wYXJ0IHoxKSAoaW1hZy1wYXJ0IHoyKSkpKQogICAgKGRlZmluZSAobXVsLWNvbXBsZXgg ejEgejIpCiAgICAgIChtYWtlLWZyb20tbWFnLWFuZyAoKiAobWFnbml0dWRlIHoxKSAobWFnbml0 dWRlIHoyKSkKCQkJICgrIChhbmdsZSB6MSkgKGFuZ2xlIHoyKSkpKQogICAgKGRlZmluZSAoZGl2 LWNvbXBsZXggejEgejIpCiAgICAgIChtYWtlLWZyb20tbWFnLWFuZyAoLyAobWFnbml0dWRlIHox KSAobWFnbml0dWRlIHoyKSkKCQkJICgtIChhbmdsZSB6MSkgKGFuZ2xlIHoyKSkpKQogICAgKGRl ZmluZSAodGFnIHopIChhdHRhY2gtdGFnICdjb21wbGV4IHopKQogICAgKHB1dCAnYWRkICcoY29t cGxleCBjb21wbGV4KQoJIChsYW1iZGEgKHoxIHoyKSAodGFnIChhZGQtY29tcGxleCB6MSB6Mikp KSkKICAgIChwdXQgJ3N1YiAnKGNvbXBsZXggY29tcGxleCkKCSAobGFtYmRhICh6MSB6MikgKHRh ZyAoc3ViLWNvbXBsZXggejEgejIpKSkpCiAgICAocHV0ICdtdWwgJyhjb21wbGV4IGNvbXBsZXgp CgkgKGxhbWJkYSAoejEgejIpICh0YWcgKG11bC1jb21wbGV4IHoxIHoyKSkpKQogICAgKHB1dCAn ZGl2ICcoY29tcGxleCBjb21wbGV4KQoJIChsYW1iZGEgKHoxIHoyKSAodGFnIChkaXYtY29tcGxl eCB6MSB6MikpKSkKICAgIChwdXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ2NvbXBsZXgKCSAobGFt YmRhICh4IHkpICh0YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSkpKQogICAgKHB1dCAnbWFr ZS1mcm9tLW1hZy1hbmcgJ2NvbXBsZXgKCSAobGFtYmRhIChyIGEpICh0YWcgKG1ha2UtZnJvbS1t YWctYW5nIHIgYSkpKSkKICAgIChwdXQgJ2VxdT8gJyhjb21wbGV4IGNvbXBsZXgpCgkgKGxhbWJk YSAoeCB5KSAoYW5kICg9IDAgKHJlYWwtcGFydCAoc3ViLWNvbXBsZXggeCB5KSkpCgkJCSAgICAo PSAwIChpbWFnLXBhcnQgKHN1Yi1jb21wbGV4IHggeSkpKSkpKQogICAgKHB1dCAnZXF1PyAnKHJl Y3Rhbmd1bGFyIHBvbGFyKSBlcXU/KQogICAgKHB1dCAnZXF1PyAnKHBvbGFyIHJlY3Rhbmd1bGFy KSBlcXU/KQogICAgKHB1dCAnemVybz8gJyhjb21wbGV4KQoJIChsYW1iZGEgKHgpIChlcXU/ICh0 YWcgeCkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyAwIDApKSkpKQogICAgJ2RvbmUpCgogIChk ZWZpbmUgKG1ha2UtY29tcGxleC1mcm9tLXJlYWwtaW1hZyB4IHkpCiAgICAoKGdldCAnbWFrZS1m cm9tLXJlYWwtaW1hZyAnY29tcGxleCkgeCB5KSkKCiAgKGRlZmluZSAobWFrZS1jb21wbGV4LWZy b20tbWFnLWFuZyByIGEpCiAgICAoKGdldCAnbWFrZS1mcm9tLW1hZy1hbmcgJ2NvbXBsZXgpIHIg YSkpCgogIChpbnN0YWxsLXJlY3Rhbmd1bGFyLXBhY2thZ2UpCiAgKGluc3RhbGwtcG9sYXItcGFj a2FnZSkKICAoaW5zdGFsbC1yYXRpb25hbC1wYWNrYWdlKQogIChpbnN0YWxsLXNjaGVtZS1udW1i ZXItcGFja2FnZSkKICAoaW5zdGFsbC1jb21wbGV4LXBhY2thZ2UpCgogIChwdXQgJ3JlYWwtcGFy dCAnKGNvbXBsZXgpIHJlYWwtcGFydCkKICAocHV0ICdpbWFnLXBhcnQgJyhjb21wbGV4KSBpbWFn LXBhcnQpCiAgKHB1dCAnbWFnbml0dWRlICcoY29tcGxleCkgbWFnbml0dWRlKQogIChwdXQgJ2Fu Z2xlICcoY29tcGxleCkgYW5nbGUpCiAgKGRlZmluZSAoYXBwbHktZ2VuZXJpYyBvcCAuIGFyZ3Mp CiAgICAoZGVmaW5lIChhbGwtYXJndHlwZXMtc2FtZT8gLiBhcmdzKQogICAgICAobGV0ICgodHlw ZSAodHlwZS10YWcgKGNhciBhcmdzKSkpKQoJKGFjY3VtdWxhdGUgKGxhbWJkYSAoeCB5KSAoYW5k IHggeSkpICN0IChtYXAgKGxhbWJkYSAoeCkgKGVxPyB0eXBlIHgpKSBhcmdzKSkpKQogICAgKGRl ZmluZSAoY29lcmNpb24taWYtZXhpc3RzPyB0eXBlIGFyZy10YWdzKQogICAgICAobGV0ICgoY29l cmNpb24tbGlzdCAobWFwIChsYW1iZGEgKHgpIAoJCQkJICAoaWYgKGVxPyB0eXBlIHgpCgkJCQkg ICAgICBpZGVudGl0eQoJCQkJICAgICAgKGdldC1jb2VyY2lvbiB4IHR5cGUpKSkgYXJnLXRhZ3Mp KSkKCShpZiAoYWNjdW11bGF0ZSAobGFtYmRhICh4IHkpIChhbmQgeCB5KSkgI3QgY29lcmNpb24t bGlzdCkKCSAgICBjb2VyY2lvbi1saXN0CgkgICAgI2YpKSkKICAgIChsZXQqICgodHlwZS10YWdz IChtYXAgdHlwZS10YWcgYXJncykpCgkgICAocHJvYyAoZ2V0IG9wIHR5cGUtdGFncykpKQogICAg ICAoY29uZCAocHJvYyAoYXBwbHkgcHJvYyAobWFwIGNvbnRlbnRzIGFyZ3MpKSkKCSAgICAoKD0g MiAobGVuZ3RoIGFyZ3MpKQoJICAgICAoaWYgKHR5cGUxPD10eXBlMj8gKGNhciB0eXBlLXRhZ3Mp IChjYWRyIHR5cGUtdGFncykpCgkJIChhcHBseS1nZW5lcmljIG9wIChyYWlzZS10eXBlIChjYXIg YXJncykpIChjYWRyIGFyZ3MpKQoJCSAoYXBwbHktZ2VuZXJpYyBvcCAoY2FyIGFyZ3MpICAocmFp c2UtdHlwZSAoY2FkciBhcmdzKSkpKSkKCSAgICAoKGFuZCAoPj0gKGxlbmd0aCBhcmdzKSAyKSAo bm90IChhbGwtYXJndHlwZXMtc2FtZT8gYXJncykpKQoJICAgICAobGV0IHR5cGVzLWxvb3AgKCh0 eXBlcyB0eXBlLXRhZ3MpKQoJICAgICAgIChsZXQgKChsaXN0LW9mLWNvZXJjaW9uLWZ1bmN0aW9u cwoJCSAgICAgIChjb2VyY2lvbi1pZi1leGlzdHM/IChjYXIgdHlwZXMpIHR5cGUtdGFncykpKQoJ CSAoaWYgbGlzdC1vZi1jb2VyY2lvbi1mdW5jdGlvbnMKCQkgICAgIChhcHBseSBhcHBseS1nZW5l cmljIChjb25zIG9wIChtYXAgKGxhbWJkYSAoZnVuIGFyZykgKGZ1biBhcmcpKQoJCQkJCQkJbGlz dC1vZi1jb2VyY2lvbi1mdW5jdGlvbnMKCQkJCQkJCWFyZ3MpKSkKCQkgICAgIChpZiAobm90IChu dWxsPyAoY2RyIHR5cGVzKSkpCgkJCSAodHlwZXMtbG9vcCAoY2RyIHR5cGVzKSkKCQkJIChlcnJv ciAiRXZlbiBjb2VyY2lvbnMgZmFpbGVkLiBObyBtZXRob2QgZm9yIHRoZXNlIHR5cGVzLiIpKSkp KSkKCSAgICAoZWxzZSAoZXJyb3IgIk5vIG1ldGhvZCBmb3IgdGhlc2UgdHlwZXMiCgkJCSAobGlz dCBvcCB0eXBlLXRhZ3MpKSkpKSkKICAoZGVmaW5lIChzY2hlbWUtbnVtYmVyLT5jb21wbGV4IG4p CiAgICAobWFrZS1jb21wbGV4LWZyb20tcmVhbC1pbWFnIChjb250ZW50cyBuKSAwKSkKICAocHV0 LWNvZXJjaW9uICdzY2hlbWUtbnVtYmVyCgkJJ2NvbXBsZXgKCQlzY2hlbWUtbnVtYmVyLT5jb21w bGV4KQoKICAocHV0ICdtYXgzLW1hZ25pdHVkZSAnKGNvbXBsZXggY29tcGxleCBjb21wbGV4KQog ICAgICAgKGxhbWJkYSAoejEgejIgejMpCgkgKG1heCAobWFnbml0dWRlIHoxKSAobWFnbml0dWRl IHoyKSAobWFnbml0dWRlIHozKSkpKQogIChkZWZpbmUgKG1heDMtbWFnbml0dWRlIHgxIHgyIHgz KSAoYXBwbHktZ2VuZXJpYyAnbWF4My1tYWduaXR1ZGUgeDEgeDIgeDMpKQogIChkZWZpbmUgKGlk ZW50aXR5IHgpIHgpCgogIChkZWZpbmUgbnVtZXJpYy10b3dlciAobGlzdCAnaW50ZWdlciAncmF0 aW9uYWwgJ3NjaGVtZS1udW1iZXIgJ2NvbXBsZXgpKQoKICAoZGVmaW5lIChoaWdoZXItdHlwZSB4 KQogICAgKGRlZmluZSAoZmluZC1oaWdoZXItdHlwZSB4IHR5cGVzKQogICAgICAoY29uZCAoKG9y IChudWxsPyB0eXBlcykgKG51bGw/IChjZHIgdHlwZXMpKSkgKGVycm9yICJObyB0eXBlIGhpZ2hl ciB0aGFuIGdpdmVuIiB4KSkKCSAgICAoKGVxPyB4IChjYXIgdHlwZXMpKSAoY2FkciB0eXBlcykp CgkgICAgKGVsc2UgKGZpbmQtaGlnaGVyLXR5cGUgeCAoY2RyIHR5cGVzKSkpKSkKICAgIChmaW5k LWhpZ2hlci10eXBlIHggbnVtZXJpYy10b3dlcikpCgogIChkZWZpbmUgKHR5cGUxPD10eXBlMj8g dHlwZTEgdHlwZTIpCiAgICAoaWYgKG5vdCAobWVtcSB0eXBlMSBudW1lcmljLXRvd2VyKSkKCShl cnJvciAiVHlwZSAxIG5vdCBpbiB0aGUgbnVtZXJpYyB0b3dlciIpKQogICAgKGlmIChub3QgKG1l bXEgdHlwZTIgbnVtZXJpYy10b3dlcikpCgkoZXJyb3IgIlR5cGUgMiBub3QgaW4gdGhlIG51bWVy aWMgdG93ZXIiKSkKICAgIChsZXQgbG9vcCAoKHR5cGVzIG51bWVyaWMtdG93ZXIpKQogICAgICAo Y29uZCAoKG51bGw/IHR5cGVzKSAoZXJyb3IgIlR5cGUgMSBhbmQgdHlwZSAyIGFyZSBpbmNvbXBh cmFibGUiIHR5cGUxIHR5cGUyKSkKCSAgICAoKGVxPyAoY2FyIHR5cGVzKSB0eXBlMSkgI3QpCgkg ICAgKChlcT8gKGNhciB0eXBlcykgdHlwZTIpICNmKQoJICAgIChlbHNlIChsb29wIChjZHIgdHlw ZXMpKSkpKSkKCiAgKGRlZmluZSAoaW50ZWdlci0+cmF0aW9uYWwgeCkKICAgIChtYWtlLXJhdGlv bmFsIHggMSkpCgogIChkZWZpbmUgKHJhdGlvbmFsLT5zY2hlbWUtbnVtYmVyIHgpCiAgICAobWFr ZS1zY2hlbWUtbnVtYmVyICgoZ2V0ICd0by1yZWFsICdyYXRpb25hbCkgeCkpKQogIChwdXQtY29l cmNpb24gJ2ludGVnZXIgJ3JhdGlvbmFsIGludGVnZXItPnJhdGlvbmFsKQogIChwdXQtY29lcmNp b24gJ3JhdGlvbmFsICdzY2hlbWUtbnVtYmVyIHJhdGlvbmFsLT5zY2hlbWUtbnVtYmVyKQoKICAo ZGVmaW5lIChyYWlzZS10eXBlIHgpCiAgICAobGV0ICgoY29udmVydGVyIChnZXQtY29lcmNpb24g KHR5cGUtdGFnIHgpIChoaWdoZXItdHlwZSAodHlwZS10YWcgeCkpKSkpCiAgICAgIChpZiBjb252 ZXJ0ZXIKCSAgKGNvbnZlcnRlciB4KQoJICAoZXJyb3IgIk5vIGNvZXJjaW9uIGZvdW5kIGZvciB4 IiAodHlwZS10YWcgeCkgeCkpKSkKCgogIChkZWZpbmUgKHJlbWFpbmRlci1pbnRlZ2VyIGEgYikK ICAgICh3aGVuIChvciAobm90IChpbnRlZ2VyPyBhKSkgKG5vdCAoaW50ZWdlcj8gYikpKQogICAg ICAoZXJyb3IgIkFyZ3VtZW50cyBtdXN0IGJlIGludGVnZXJzIiBhIGIpKQogICAgKHJlbWFpbmRl ciBhIGIpKQoKICAocHV0ICdyZW1haW5kZXIgJyhpbnRlZ2VyIGludGVnZXIpIHJlbWFpbmRlci1p bnRlZ2VyKQogIChkZWZpbmUgKHJlbWFpbmRlci1nZW5lcmFsaXplZCBhIGIpIChhcHBseS1nZW5l cmljICdyZW1haW5kZXIgYSBiKSkKCgogIChzaG93ICN0ICJSZW1haW5kZXItaW50ZWdlciAgICAg ICAgICAgIDogIiAocmVtYWluZGVyLWdlbmVyYWxpemVkIDQgMikgIlxuIikKICAoc2hvdyAjdCAi QWRkaW5nIChjb2VyY2lvbiB0byByYXRpb25hbCk6ICIgKGFkZCA1IDYpKQojK2VuZF9zcmMKCiMr UkVTVUxUUzoKOiBSZW1haW5kZXItaW50ZWdlciAgICAgICAgICAgIDogMAo6IEFkZGluZyAoY29l cmNpb24gdG8gcmF0aW9uYWwpOiAocmF0aW9uYWwgMTEgLiAxKQoKVGhpcyBzZWVtcyB0byBkbyB0 aGUgam9iLiAKCioqKiBET05FIEV4ZXJjaXNlIDIuODUgRHJvcHBpbmcgYSB0eXBlIAogICAgQ0xP U0VEOiBbMjAxOS0xMC0yMCBTdW4gMTM6NDddCgooSSBkaWRuJ3QgY291bnQgdGhlIHRpbWUgc3Bl bnQgb24gZXZlcnkgZXhlcmNpc2UgaW5kaXZpZHVhbGx5IChhbHRob3VnaCBpdApjYW4gYmUgZGVk dWNlZCBmcm9tIHRoZSB0b3RhbCB0aW1lIHNwZW50IGJldHdlZW4gdGhlIENMT1NFRCBvcGVyYXRp b25zLiksIGJ1dAp0aGlzIGV4ZXJjaXNlIHRvb2sgbWUgYSBsb3Qgb2YgdGltZS4pCgpJbiB0aGlz IGV4ZXJjaXNlIEkgd2lsbCB1c2UgdGhlIHI3cnMgc3RhbmRhcmQgbGlicmFyeSBwcm9jZWR1cmVz IH5udW1lcmF0b3J+CmFuZCB+ZGVub21pbmF0b3J+IGluIG9yZGVyIHRvIHByb2plY3QgbnVtYmVy cyBmcm9tIH4nc2NoZW1lLW51bWJlcn4gdG8KfidyYXRpb25hbH4uIAoKT25jZSBhZ2FpbiwgaXQg dGFuZ2xpbmcgZG9lc24ndCBoZWxwIG11Y2ggaW4gZGVhbGluZyB3aXRoIHBhY2thZ2VzLCBzbyBJ IHdpbGwKY29weSB0aGUgd2hvbGUgc291cmNlIGNvZGUgYWdhaW4uCgpJbiB0aGlzIGV4ZXJjaXNl LCBJIHNwZW50IHF1aXRlIGEgbG90IG9mIHRpbWUgZGVidWdnaW5nIHRoZSB+KHByb2plY3QpfiwK d2hpY2ggaXMgaG93IHlvdXIgbGlmZSBpbiBwcm9ncmFtbWluZyB3aWxsIGJlIGFueSB3YXkuIFlv dSBzcGVuZCBtb3N0IG9mIHlvdXIKdGltZSBkZWJ1Z2dpbmcgc2VlbWluZ2x5IG9idmlvdXMgdGhp bmdzIGFuZCBmaW5kaW5nIGJ1Z3MgaW4gdGhlIGNvZGUgeW91CmJlbGlldmVkIHRvIGJlIHdvcmtp bmcgZmluZS4gSXQgdHVybnMgb3V0IHRoYXQgSSBoYWQgdG8gZml4IHNldmVyYWwgYnVncyBpbgp0 aGUgY29lcmNpb24gZnVuY3Rpb25zIGZyb20gdGhlIHByZXZpb3VzIGV4ZXJjaXNlcy4gSSBhbSBu b3QgZGVzY3JpYmluZyB0aG9zZQpmaXhlZCBleHBsaWNpdGx5LCBidXQgeW91IG1heSBnZXQgdGhl bSBieSBjb21wYXJpbmcgdGhlIGNvZGUuCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90 aCA6cmVzdWx0cyBvdXRwdXQKICAoZGVmaW5lIChhY2N1bXVsYXRlIG9wIGluaXRpYWwgc2VxdWVu Y2UpCiAgICAoaWYgKG51bGw/IHNlcXVlbmNlKQoJaW5pdGlhbAoJKGFjY3VtdWxhdGUgb3AgKG9w IGluaXRpYWwgKGNhciBzZXF1ZW5jZSkpIChjZHIgc2VxdWVuY2UpKSkpCiAgKGRlZmluZSBmYWxz ZSAjZikKICAoZGVmaW5lIHRydWUgICN0KQogIChkZWZpbmUgKG1ha2UtdGFibGUpCiAgICAobGV0 ICgobG9jYWwtdGFibGUgKGxpc3QgJyp0YWJsZSopKSkKICAgICAgKGRlZmluZSAobG9va3VwIGtl eS0xIGtleS0yKQoJKGxldCAoKHN1YnRhYmxlIChhc3NvYyBrZXktMSAoY2RyIGxvY2FsLXRhYmxl KSkpKQoJICAoaWYgc3VidGFibGUKCSAgICAgIChsZXQgKChyZWNvcmQgKGFzc29jIGtleS0yIChj ZHIgc3VidGFibGUpKSkpCgkJKGlmIHJlY29yZAoJCSAgICAoY2RyIHJlY29yZCkKCQkgICAgZmFs c2UpKQoJICAgICAgZmFsc2UpKSkKICAgICAgKGRlZmluZSAoaW5zZXJ0ISBrZXktMSBrZXktMiB2 YWx1ZSkKCShsZXQgKChzdWJ0YWJsZSAoYXNzb2Mga2V5LTEgKGNkciBsb2NhbC10YWJsZSkpKSkK CSAgKGlmIHN1YnRhYmxlCgkgICAgICAobGV0ICgocmVjb3JkIChhc3NvYyBrZXktMiAoY2RyIHN1 YnRhYmxlKSkpKQoJCShpZiByZWNvcmQKCQkgICAgKHNldC1jZHIhIHJlY29yZCB2YWx1ZSkKCQkg ICAgKHNldC1jZHIhIHN1YnRhYmxlCgkJCSAgICAgIChjb25zIChjb25zIGtleS0yIHZhbHVlKQoJ CQkJICAgIChjZHIgc3VidGFibGUpKSkpKQoJICAgICAgKHNldC1jZHIhIGxvY2FsLXRhYmxlCgkJ CShjb25zIChsaXN0IGtleS0xCgkJCQkgICAgKGNvbnMga2V5LTIgdmFsdWUpKQoJCQkgICAgICAo Y2RyIGxvY2FsLXRhYmxlKSkpKSkKCSdvaykKICAgICAgKGRlZmluZSAoZGlzcGF0Y2ggbSkKCShj b25kICgoZXE/IG0gJ2xvb2t1cC1wcm9jKSBsb29rdXApCgkgICAgICAoKGVxPyBtICdpbnNlcnQt cHJvYyEpIGluc2VydCEpCgkgICAgICAoZWxzZSAoZXJyb3IgIlVua25vd24gb3BlcmF0aW9uIC0t IFRBQkxFIiBtKSkpKQogICAgICBkaXNwYXRjaCkpCgogIChkZWZpbmUgb3BlcmF0aW9uLXRhYmxl IChtYWtlLXRhYmxlKSkKICAoZGVmaW5lIGdldCAob3BlcmF0aW9uLXRhYmxlICdsb29rdXAtcHJv YykpCiAgKGRlZmluZSBwdXQgKG9wZXJhdGlvbi10YWJsZSAnaW5zZXJ0LXByb2MhKSkKCiAgKGRl ZmluZSBjb2VyY2lvbi10YWJsZSAobWFrZS10YWJsZSkpCiAgKGRlZmluZSBnZXQtY29lcmNpb24g KGNvZXJjaW9uLXRhYmxlICdsb29rdXAtcHJvYykpCiAgKGRlZmluZSBwdXQtY29lcmNpb24gKGNv ZXJjaW9uLXRhYmxlICdpbnNlcnQtcHJvYyEpKQoKICAoZGVmaW5lIChhdHRhY2gtdGFnIHR5cGUt dGFnIGNvbnRlbnRzKQogICAgKGNvbnMgdHlwZS10YWcgY29udGVudHMpKQoKICAoZGVmaW5lICh0 eXBlLXRhZyBkYXR1bSkKICAgIChjb25kICgocGFpcj8gZGF0dW0pIChjYXIgZGF0dW0pKQoJICAo KGV4YWN0LWludGVnZXI/IGRhdHVtKSAnaW50ZWdlcikKCSAgKGVycm9yICJCYWQgdGFnZ2VkIGRh dHVtIC0tIFRZUEUtVEFHIiBkYXR1bSkpKQoKICAoZGVmaW5lIChjb250ZW50cyBkYXR1bSkKICAg IChjb25kICgocGFpcj8gZGF0dW0pIChjZHIgZGF0dW0pKQoJICAoKGludGVnZXI/IGRhdHVtKSBk YXR1bSkKCSAgKGVsc2UgKGVycm9yICJCYWQgdGFnZ2VkIGRhdHVtIC0tIENPTlRFTlRTIiBkYXR1 bSkpKSkKCiAgKGRlZmluZSAoaW50ZWdlcj8geCkKICAgIChlcT8gKHR5cGUtdGFnIHgpICdpbnRl Z2VyKSkKICAoZGVmaW5lIChyZWN0YW5ndWxhcj8geikKICAgIChlcT8gKHR5cGUtdGFnIHopICdy ZWN0YW5ndWxhcikpCgogIChkZWZpbmUgKHBvbGFyPyB6KQogICAgKGVxPyAodHlwZS10YWcgeikg J3BvbGFyKSkKCgogIChkZWZpbmUgKHJlYWwtcGFydCB6KSAoYXBwbHktZ2VuZXJpYyAncmVhbC1w YXJ0IHopKQogIChkZWZpbmUgKGltYWctcGFydCB6KSAoYXBwbHktZ2VuZXJpYyAnaW1hZy1wYXJ0 IHopKQogIChkZWZpbmUgKG1hZ25pdHVkZSB6KSAoYXBwbHktZ2VuZXJpYyAnbWFnbml0dWRlIHop KQogIChkZWZpbmUgKGFuZ2xlIHopIChhcHBseS1nZW5lcmljICdhbmdsZSB6KSkKCiAgKGRlZmlu ZSAoYWRkIHggeSkgKGFwcGx5LWdlbmVyaWMgJ2FkZCB4IHkpKQogIChkZWZpbmUgKHN1YiB4IHkp IChhcHBseS1nZW5lcmljICdzdWIgeCB5KSkKICAoZGVmaW5lIChtdWwgeCB5KSAoYXBwbHktZ2Vu ZXJpYyAnbXVsIHggeSkpCiAgKGRlZmluZSAoZGl2IHggeSkgKGFwcGx5LWdlbmVyaWMgJ2RpdiB4 IHkpKQoKICAoZGVmaW5lIChlcXU/IHggeSkKICAgIChhcHBseS1nZW5lcmljICdlcXU/IHggeSkp CiAgKGRlZmluZSAoemVybz8geCkgKGFwcGx5LWdlbmVyaWMgJ3plcm8/IHgpKQoKICAoZGVmaW5l IChleHAgeCB5KSAoYXBwbHktZ2VuZXJpYyAnZXhwIHggeSkpCgogIChkZWZpbmUgKGluc3RhbGwt c2NoZW1lLW51bWJlci1wYWNrYWdlKQogICAgKGRlZmluZSAodGFnIHgpCiAgICAgIChhdHRhY2gt dGFnICdzY2hlbWUtbnVtYmVyIHgpKQogICAgKHB1dCAnYWRkICcoc2NoZW1lLW51bWJlciBzY2hl bWUtbnVtYmVyKQoJIChsYW1iZGEgKHggeSkgKHRhZyAoKyB4IHkpKSkpCiAgICAocHV0ICdzdWIg JyhzY2hlbWUtbnVtYmVyIHNjaGVtZS1udW1iZXIpCgkgKGxhbWJkYSAoeCB5KSAodGFnICgtIHgg eSkpKSkKICAgIChwdXQgJ211bCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAobGFt YmRhICh4IHkpICh0YWcgKCogeCB5KSkpKQogICAgKHB1dCAnZGl2ICcoc2NoZW1lLW51bWJlciBz Y2hlbWUtbnVtYmVyKQoJIChsYW1iZGEgKHggeSkgKHRhZyAoLyB4IHkpKSkpCiAgICAocHV0ICdt YWtlICdzY2hlbWUtbnVtYmVyCgkgKGxhbWJkYSAoeCkgKHRhZyB4KSkpCiAgICAocHV0ICdlcXU/ ICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJIChsYW1iZGEgKHggeSkgKD0geCB5KSkp CiAgICAocHV0ICd6ZXJvPyAnKHNjaGVtZS1udW1iZXIpCgkgKGxhbWJkYSAoeCkgKD0gMCB4KSkp CiAgICAocHV0ICdleHAgJyhzY2hlbWUtbnVtYmVyIHNjaGVtZS1udW1iZXIpCgkgKGxhbWJkYSAo eCB5KSAodGFnIChleHB0IHggeSkpKSkKICAgIChwdXQgJ3Byb2plY3QgJyhzY2hlbWUtbnVtYmVy KQoJIChsYW1iZGEgKHgpCgkgICAobWFrZS1yYXRpb25hbAoJICAgIChleGFjdCAobnVtZXJhdG9y IHgpKQoJICAgIChleGFjdCAoZGVub21pbmF0b3IgeCkpKSkpCiAgICAnZG9uZSkKCiAgKGRlZmlu ZSAobWFrZS1zY2hlbWUtbnVtYmVyIG4pCiAgICAoKGdldCAnbWFrZSAnc2NoZW1lLW51bWJlcikg bikpCgogIChkZWZpbmUgKGluc3RhbGwtcmF0aW9uYWwtcGFja2FnZSkKICAgIChkZWZpbmUgKG51 bWVyIHgpIChjYXIgeCkpCiAgICAoZGVmaW5lIChkZW5vbSB4KSAoY2RyIHgpKQogICAgKGRlZmlu ZSAobWFrZS1yYXQgbiBkKQogICAgICAobGV0ICgoZyAoZ2NkIG4gZCkpKQoJKGNvbnMgKC8gbiBn KSAoLyBkIGcpKSkpCiAgICAoZGVmaW5lIChhZGQtcmF0IHggeSkKICAgICAgKG1ha2UtcmF0ICgr ICgqIChudW1lciB4KSAoZGVub20geSkpCgkJICAgKCogKG51bWVyIHkpIChkZW5vbSB4KSkpCgkJ KCogKGRlbm9tIHgpIChkZW5vbSB5KSkpKQogICAgKGRlZmluZSAoc3ViLXJhdCB4IHkpCiAgICAg IChtYWtlLXJhdCAoLSAoKiAobnVtZXIgeCkgKGRlbm9tIHkpKQoJCSAgICgqIChudW1lciB5KSAo ZGVub20geCkpKQoJCSgqIChkZW5vbSB4KSAoZGVub20geSkpKSkKICAgIChkZWZpbmUgKG11bC1y YXQgeCB5KQogICAgICAobWFrZS1yYXQgKCogKG51bWVyIHgpIChudW1lciB5KSkKCQkoKiAoZGVu b20geCkgKGRlbm9tIHkpKSkpCiAgICAoZGVmaW5lIChkaXYtcmF0IHggeSkKICAgICAgKG1ha2Ut cmF0ICgqIChudW1lciB4KSAoZGVub20geSkpCgkJKCogKGRlbm9tIHgpIChudW1lciB5KSkpKQoK ICAgIChkZWZpbmUgKHRhZyB4KSAoYXR0YWNoLXRhZyAncmF0aW9uYWwgeCkpCiAgICAocHV0ICdh ZGQgJyhyYXRpb25hbCByYXRpb25hbCkKCSAobGFtYmRhICh4IHkpICh0YWcgKGFkZC1yYXQgeCB5 KSkpKQogICAgKHB1dCAnc3ViICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgKGxhbWJkYSAoeCB5KSAo dGFnIChzdWItcmF0IHggeSkpKSkKICAgIChwdXQgJ211bCAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJ IChsYW1iZGEgKHggeSkgKHRhZyAobXVsLXJhdCB4IHkpKSkpCiAgICAocHV0ICdkaXYgJyhyYXRp b25hbCByYXRpb25hbCkKCSAobGFtYmRhICh4IHkpICh0YWcgKGRpdi1yYXQgeCB5KSkpKQoKICAg IChwdXQgJ21ha2UgJ3JhdGlvbmFsCgkgKGxhbWJkYSAobiBkKSAodGFnIChtYWtlLXJhdCBuIGQp KSkpCiAgICAocHV0ICdlcXU/ICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgKGxhbWJkYSAoeCB5KSAo PSAwIChudW1lciAoc3ViLXJhdCB4IHkpKSkpKQogICAgKHB1dCAnemVybz8gJyhyYXRpb25hbCkg KGxhbWJkYSAoeCkgKD0gMCAobnVtZXIgeCkpKSkKICAgIChwdXQgJ3Byb2plY3QgJyhyYXRpb25h bCkgKGxhbWJkYSAoeCkgKGV4YWN0ICh0cnVuY2F0ZSAoLyAobnVtZXIgeCkgKGRlbm9tIHgpKSkp KSkKICAgIChwdXQgJ3RvLXJlYWwgJyhyYXRpb25hbCkgKGxhbWJkYSAoeCkgKC8gKG51bWVyIChj b250ZW50cyB4KSkgKGRlbm9tIChjb250ZW50cyB4KSkpKSkKICAgICdkb25lKQoKICAoZGVmaW5l IChtYWtlLXJhdGlvbmFsIG4gZCkKICAgICgoZ2V0ICdtYWtlICdyYXRpb25hbCkgbiBkKSkKCiAg KGRlZmluZSAoaW5zdGFsbC1yZWN0YW5ndWxhci1wYWNrYWdlKQoKICAgIChkZWZpbmUgKHJlYWwt cGFydCB6KSAoY2FyIHopKQogICAgKGRlZmluZSAoaW1hZy1wYXJ0IHopIChjZHIgeikpCiAgICAo ZGVmaW5lIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkgKGNvbnMgeCB5KSkKICAgIChkZWZpbmUg KG1hZ25pdHVkZSB6KQogICAgICAoc3FydCAoKyAoc3F1YXJlIChyZWFsLXBhcnQgeikpCgkgICAg ICAgKHNxdWFyZSAoaW1hZy1wYXJ0IHopKSkpKQogICAgKGRlZmluZSAoYW5nbGUgeikKICAgICAg KGF0YW4gKGltYWctcGFydCB6KSAocmVhbC1wYXJ0IHopKSkKICAgIChkZWZpbmUgKG1ha2UtZnJv bS1tYWctYW5nIHIgYSkKICAgICAgKGNvbnMgKCogciAoY29zIGEpKSAoKiByIChzaW4gYSkpKSkK CiAgICAoZGVmaW5lICh0YWcgeCkgKGF0dGFjaC10YWcgJ3JlY3Rhbmd1bGFyIHgpKQogICAgKHB1 dCAncmVhbC1wYXJ0ICcocmVjdGFuZ3VsYXIpIHJlYWwtcGFydCkKICAgIChwdXQgJ2ltYWctcGFy dCAnKHJlY3Rhbmd1bGFyKSBpbWFnLXBhcnQpCiAgICAocHV0ICdtYWduaXR1ZGUgJyhyZWN0YW5n dWxhcikgbWFnbml0dWRlKQogICAgKHB1dCAnYW5nbGUgJyhyZWN0YW5ndWxhcikgYW5nbGUpCiAg ICAocHV0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdyZWN0YW5ndWxhcgoJIChsYW1iZGEgKHggeSkg KHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpKSkpCiAgICAocHV0ICdtYWtlLWZyb20tbWFn LWFuZyAncmVjdGFuZ3VsYXIKCSAobGFtYmRhIChyIGEpICh0YWcgKG1ha2UtZnJvbS1tYWctYW5n IHIgYSkpKSkKICAgICdkb25lKQoKICAoZGVmaW5lIChpbnN0YWxsLXBvbGFyLXBhY2thZ2UpCgog ICAgKGRlZmluZSAobWFnbml0dWRlIHopIChjYXIgeikpCiAgICAoZGVmaW5lIChhbmdsZSB6KSAo Y2RyIHopKQogICAgKGRlZmluZSAobWFrZS1mcm9tLW1hZy1hbmcgciBhKSAoY29ucyByIGEpKQog ICAgKGRlZmluZSAocmVhbC1wYXJ0IHopCiAgICAgICgqIChtYWduaXR1ZGUgeikgKGNvcyAoYW5n bGUgeikpKSkKICAgIChkZWZpbmUgKGltYWctcGFydCB6KQogICAgICAoKiAobWFnbml0dWRlIHop IChzaW4gKGFuZ2xlIHopKSkpCiAgICAoZGVmaW5lIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkK ICAgICAgKGNvbnMgKHNxcnQgKCsgKHNxdWFyZSB4KSAoc3F1YXJlIHkpKSkKCSAgICAoYXRhbiB5 IHgpKSkKCiAgICAoZGVmaW5lICh0YWcgeCkgKGF0dGFjaC10YWcgJ3BvbGFyIHgpKQogICAgKHB1 dCAncmVhbC1wYXJ0ICcocG9sYXIpIHJlYWwtcGFydCkKICAgIChwdXQgJ2ltYWctcGFydCAnKHBv bGFyKSBpbWFnLXBhcnQpCiAgICAocHV0ICdtYWduaXR1ZGUgJyhwb2xhcikgbWFnbml0dWRlKQog ICAgKHB1dCAnYW5nbGUgJyhwb2xhcikgYW5nbGUpCiAgICAocHV0ICdtYWtlLWZyb20tcmVhbC1p bWFnICdwb2xhcgoJIChsYW1iZGEgKHggeSkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkp KSkpCiAgICAocHV0ICdtYWtlLWZyb20tbWFnLWFuZyAncG9sYXIKCSAobGFtYmRhIChyIGEpICh0 YWcgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkpKSkKICAgICdkb25lKQoKICAoZGVmaW5lIChpbnN0 YWxsLWNvbXBsZXgtcGFja2FnZSkKICAgIChkZWZpbmUgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5 KQogICAgICAoKGdldCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAncmVjdGFuZ3VsYXIpIHggeSkpCiAg ICAoZGVmaW5lIChtYWtlLWZyb20tbWFnLWFuZyByIGEpCiAgICAgICgoZ2V0ICdtYWtlLWZyb20t bWFnLWFuZyAncG9sYXIpIHIgYSkpCiAgICAoZGVmaW5lIChhZGQtY29tcGxleCB6MSB6MikKICAg ICAgKG1ha2UtZnJvbS1yZWFsLWltYWcgKCsgKHJlYWwtcGFydCB6MSkgKHJlYWwtcGFydCB6Mikp CgkJCSAgICgrIChpbWFnLXBhcnQgejEpIChpbWFnLXBhcnQgejIpKSkpCiAgICAoZGVmaW5lIChz dWItY29tcGxleCB6MSB6MikKICAgICAgKG1ha2UtZnJvbS1yZWFsLWltYWcgKC0gKHJlYWwtcGFy dCB6MSkgKHJlYWwtcGFydCB6MikpCgkJCSAgICgtIChpbWFnLXBhcnQgejEpIChpbWFnLXBhcnQg ejIpKSkpCiAgICAoZGVmaW5lIChtdWwtY29tcGxleCB6MSB6MikKICAgICAgKG1ha2UtZnJvbS1t YWctYW5nICgqIChtYWduaXR1ZGUgejEpIChtYWduaXR1ZGUgejIpKQoJCQkgKCsgKGFuZ2xlIHox KSAoYW5nbGUgejIpKSkpCiAgICAoZGVmaW5lIChkaXYtY29tcGxleCB6MSB6MikKICAgICAgKG1h a2UtZnJvbS1tYWctYW5nICgvIChtYWduaXR1ZGUgejEpIChtYWduaXR1ZGUgejIpKQoJCQkgKC0g KGFuZ2xlIHoxKSAoYW5nbGUgejIpKSkpCiAgICAoZGVmaW5lICh0YWcgeikgKGF0dGFjaC10YWcg J2NvbXBsZXggeikpCiAgICAocHV0ICdhZGQgJyhjb21wbGV4IGNvbXBsZXgpCgkgKGxhbWJkYSAo ejEgejIpICh0YWcgKGFkZC1jb21wbGV4IHoxIHoyKSkpKQogICAgKHB1dCAnc3ViICcoY29tcGxl eCBjb21wbGV4KQoJIChsYW1iZGEgKHoxIHoyKSAodGFnIChzdWItY29tcGxleCB6MSB6MikpKSkK ICAgIChwdXQgJ211bCAnKGNvbXBsZXggY29tcGxleCkKCSAobGFtYmRhICh6MSB6MikgKHRhZyAo bXVsLWNvbXBsZXggejEgejIpKSkpCiAgICAocHV0ICdkaXYgJyhjb21wbGV4IGNvbXBsZXgpCgkg KGxhbWJkYSAoejEgejIpICh0YWcgKGRpdi1jb21wbGV4IHoxIHoyKSkpKQogICAgKHB1dCAnbWFr ZS1mcm9tLXJlYWwtaW1hZyAnY29tcGxleAoJIChsYW1iZGEgKHggeSkgKHRhZyAobWFrZS1mcm9t LXJlYWwtaW1hZyB4IHkpKSkpCiAgICAocHV0ICdtYWtlLWZyb20tbWFnLWFuZyAnY29tcGxleAoJ IChsYW1iZGEgKHIgYSkgKHRhZyAobWFrZS1mcm9tLW1hZy1hbmcgciBhKSkpKQogICAgKHB1dCAn ZXF1PyAnKGNvbXBsZXggY29tcGxleCkKCSAobGFtYmRhICh4IHkpIChhbmQgKD0gMCAocmVhbC1w YXJ0IChzdWItY29tcGxleCB4IHkpKSkKCQkJICAgICg9IDAgKGltYWctcGFydCAoc3ViLWNvbXBs ZXggeCB5KSkpKSkpCiAgICAocHV0ICdlcXU/ICcocmVjdGFuZ3VsYXIgcG9sYXIpIGVxdT8pCiAg ICAocHV0ICdlcXU/ICcocG9sYXIgcmVjdGFuZ3VsYXIpIGVxdT8pCiAgICAocHV0ICd6ZXJvPyAn KGNvbXBsZXgpCgkgKGxhbWJkYSAoeCkgKGVxdT8gKHRhZyB4KSAodGFnIChtYWtlLWZyb20tcmVh bC1pbWFnIDAgMCkpKSkpCiAgICAocHV0ICdwcm9qZWN0ICcoY29tcGxleCkgKGxhbWJkYSAoeikg KG1ha2Utc2NoZW1lLW51bWJlciAocmVhbC1wYXJ0IHopKSkpCiAgICAnZG9uZSkKCiAgKGRlZmlu ZSAobWFrZS1jb21wbGV4LWZyb20tcmVhbC1pbWFnIHggeSkKICAgICgoZ2V0ICdtYWtlLWZyb20t cmVhbC1pbWFnICdjb21wbGV4KSB4IHkpKQoKICAoZGVmaW5lIChtYWtlLWNvbXBsZXgtZnJvbS1t YWctYW5nIHIgYSkKICAgICgoZ2V0ICdtYWtlLWZyb20tbWFnLWFuZyAnY29tcGxleCkgciBhKSkK CiAgKGluc3RhbGwtcmVjdGFuZ3VsYXItcGFja2FnZSkKICAoaW5zdGFsbC1wb2xhci1wYWNrYWdl KQogIChpbnN0YWxsLXJhdGlvbmFsLXBhY2thZ2UpCiAgKGluc3RhbGwtc2NoZW1lLW51bWJlci1w YWNrYWdlKQogIChpbnN0YWxsLWNvbXBsZXgtcGFja2FnZSkKCiAgKHB1dCAncmVhbC1wYXJ0ICco Y29tcGxleCkgcmVhbC1wYXJ0KQogIChwdXQgJ2ltYWctcGFydCAnKGNvbXBsZXgpIGltYWctcGFy dCkKICAocHV0ICdtYWduaXR1ZGUgJyhjb21wbGV4KSBtYWduaXR1ZGUpCiAgKHB1dCAnYW5nbGUg Jyhjb21wbGV4KSBhbmdsZSkKCiAgKGRlZmluZSAoYXBwbHktZ2VuZXJpYyBvcCAuIGFyZ3MpCiAg ICAoZGVmaW5lIChhbGwtYXJndHlwZXMtc2FtZT8gLiBhcmdzKQogICAgICAobGV0ICgodHlwZSAo dHlwZS10YWcgKGNhciBhcmdzKSkpKQoJKGFjY3VtdWxhdGUgKGxhbWJkYSAoeCB5KSAoYW5kIHgg eSkpICN0IChtYXAgKGxhbWJkYSAoeCkgKGVxPyB0eXBlIHgpKSBhcmdzKSkpKQogICAgKGRlZmlu ZSAoY29lcmNpb24taWYtZXhpc3RzPyB0eXBlIGFyZy10YWdzKQogICAgICAobGV0ICgoY29lcmNp b24tbGlzdCAobWFwIChsYW1iZGEgKHgpIAoJCQkJICAoaWYgKGVxPyB0eXBlIHgpCgkJCQkgICAg ICBpZGVudGl0eQoJCQkJICAgICAgKGdldC1jb2VyY2lvbiB4IHR5cGUpKSkgYXJnLXRhZ3MpKSkK CShpZiAoYWNjdW11bGF0ZSAobGFtYmRhICh4IHkpIChhbmQgeCB5KSkgI3QgY29lcmNpb24tbGlz dCkKCSAgICBjb2VyY2lvbi1saXN0CgkgICAgI2YpKSkKICAgIChkcm9wIChsZXQqICgodHlwZS10 YWdzIChtYXAgdHlwZS10YWcgYXJncykpCgkJCSAocHJvYyAoZ2V0IG9wIHR5cGUtdGFncykpKQoJ CSAgICAoY29uZCAocHJvYyAoYXBwbHkgcHJvYyAobWFwIGNvbnRlbnRzIGFyZ3MpKSkKCQkJICAo KD0gMiAobGVuZ3RoIGFyZ3MpKQoJCQkgICAoaWYgKHR5cGUxPD10eXBlMj8gKGNhciB0eXBlLXRh Z3MpIChjYWRyIHR5cGUtdGFncykpCgkJCSAgICAgICAoYXBwbHktZ2VuZXJpYyBvcCAocmFpc2Ut dHlwZSAoY2FyIGFyZ3MpKSAoY2FkciBhcmdzKSkKCQkJICAgICAgIChhcHBseS1nZW5lcmljIG9w IChjYXIgYXJncykgIChyYWlzZS10eXBlIChjYWRyIGFyZ3MpKSkpKQoJCQkgICgoYW5kICg+PSAo bGVuZ3RoIGFyZ3MpIDIpIChub3QgKGFsbC1hcmd0eXBlcy1zYW1lPyBhcmdzKSkpCgkJCSAgIChs ZXQgdHlwZXMtbG9vcCAoKHR5cGVzIHR5cGUtdGFncykpCgkJCSAgICAgKGxldCAoKGxpc3Qtb2Yt Y29lcmNpb24tZnVuY3Rpb25zCgkJCQkgICAgKGNvZXJjaW9uLWlmLWV4aXN0cz8gKGNhciB0eXBl cykgdHlwZS10YWdzKSkpCgkJCSAgICAgICAoaWYgbGlzdC1vZi1jb2VyY2lvbi1mdW5jdGlvbnMK CQkJCSAgIChhcHBseSBhcHBseS1nZW5lcmljIChjb25zIG9wIChtYXAgKGxhbWJkYSAoZnVuIGFy ZykgKGZ1biBhcmcpKQoJCQkJCQkJCSAgICAgIGxpc3Qtb2YtY29lcmNpb24tZnVuY3Rpb25zCgkJ CQkJCQkJICAgICAgYXJncykpKQoJCQkJICAgKGlmIChub3QgKG51bGw/IChjZHIgdHlwZXMpKSkK CQkJCSAgICAgICAodHlwZXMtbG9vcCAoY2RyIHR5cGVzKSkKCQkJCSAgICAgICAoZXJyb3IgImFw cGx5LWdlbmVyaWM6RXZlbiBjb2VyY2lvbnMgZmFpbGVkLiBObyBtZXRob2QgZm9yIHRoZXNlIHR5 cGVzLiIpKSkpKSkKCQkJICAoZWxzZSAoZXJyb3IgImFwcGx5LWdlbmVyaWM6Tm8gbWV0aG9kIGZv ciB0aGVzZSB0eXBlcyIKCQkJCSAgICAgICAobGlzdCBvcCB0eXBlLXRhZ3MpKSkpKSkpCiAgKGRl ZmluZSAoc2NoZW1lLW51bWJlci0+Y29tcGxleCBuKQogICAgKG1ha2UtY29tcGxleC1mcm9tLXJl YWwtaW1hZyAoY29udGVudHMgbikgMCkpCiAgKHB1dC1jb2VyY2lvbiAnc2NoZW1lLW51bWJlcgoJ CSdjb21wbGV4CgkJc2NoZW1lLW51bWJlci0+Y29tcGxleCkKCiAgKHB1dCAnbWF4My1tYWduaXR1 ZGUgJyhjb21wbGV4IGNvbXBsZXggY29tcGxleCkgKGxhbWJkYSAoejEgejIgejMpCgkJCQkJCSAg ICAobWF4IChtYWduaXR1ZGUgejEpIChtYWduaXR1ZGUgejIpIChtYWduaXR1ZGUgejMpKSkpCiAg KGRlZmluZSAobWF4My1tYWduaXR1ZGUgeDEgeDIgeDMpIChhcHBseS1nZW5lcmljICdtYXgzLW1h Z25pdHVkZSB4MSB4MiB4MykpCiAgKGRlZmluZSAoaWRlbnRpdHkgeCkgeCkKCiAgKGRlZmluZSBu dW1lcmljLXRvd2VyIChsaXN0ICdpbnRlZ2VyICdyYXRpb25hbCAnc2NoZW1lLW51bWJlciAnY29t cGxleCkpCgogIChkZWZpbmUgKGhpZ2hlci10eXBlIHgpCiAgICAoZGVmaW5lIChmaW5kLWhpZ2hl ci10eXBlIHggdHlwZXMpCiAgICAgIChjb25kICgob3IgKG51bGw/IHR5cGVzKSAobnVsbD8gKGNk ciB0eXBlcykpKSAoZXJyb3IgIk5vIHR5cGUgaGlnaGVyIHRoYW4gZ2l2ZW4iIHgpKQoJICAgICgo ZXE/IHggKGNhciB0eXBlcykpIChjYWRyIHR5cGVzKSkKCSAgICAoZWxzZSAoZmluZC1oaWdoZXIt dHlwZSB4IChjZHIgdHlwZXMpKSkpKQogICAgKGZpbmQtaGlnaGVyLXR5cGUgeCBudW1lcmljLXRv d2VyKSkKCiAgKGRlZmluZSAodHlwZTE8PXR5cGUyPyB0eXBlMSB0eXBlMikKICAgIChpZiAobm90 IChtZW1xIHR5cGUxIG51bWVyaWMtdG93ZXIpKQoJKGVycm9yICJUeXBlIDEgbm90IGluIHRoZSBu dW1lcmljIHRvd2VyIikpCiAgICAoaWYgKG5vdCAobWVtcSB0eXBlMiBudW1lcmljLXRvd2VyKSkK CShlcnJvciAiVHlwZSAyIG5vdCBpbiB0aGUgbnVtZXJpYyB0b3dlciIpKQogICAgKGxldCBsb29w ICgodHlwZXMgbnVtZXJpYy10b3dlcikpCiAgICAgIChjb25kICgobnVsbD8gdHlwZXMpIChlcnJv ciAiVHlwZSAxIGFuZCB0eXBlIDIgYXJlIGluY29tcGFyYWJsZSIgdHlwZTEgdHlwZTIpKQoJICAg ICgoZXE/IChjYXIgdHlwZXMpIHR5cGUxKSAjdCkKCSAgICAoKGVxPyAoY2FyIHR5cGVzKSB0eXBl MikgI2YpCgkgICAgKGVsc2UgKGxvb3AgKGNkciB0eXBlcykpKSkpKQoKICAoZGVmaW5lIChpbnRl Z2VyLT5yYXRpb25hbCB4KQogICAgKG1ha2UtcmF0aW9uYWwgeCAxKSkKCiAgKGRlZmluZSAocmF0 aW9uYWwtPnNjaGVtZS1udW1iZXIgeCkKICAgIChtYWtlLXNjaGVtZS1udW1iZXIgKChnZXQgJ3Rv LXJlYWwgJyhyYXRpb25hbCkpIHgpKSkKICAocHV0LWNvZXJjaW9uICdpbnRlZ2VyICdyYXRpb25h bCBpbnRlZ2VyLT5yYXRpb25hbCkKICAocHV0LWNvZXJjaW9uICdyYXRpb25hbCAnc2NoZW1lLW51 bWJlciByYXRpb25hbC0+c2NoZW1lLW51bWJlcikKCiAgKGRlZmluZSAocmFpc2UtdHlwZSB4KQog ICAgKGxldCAoKGNvbnZlcnRlciAoZ2V0LWNvZXJjaW9uICh0eXBlLXRhZyB4KSAoaGlnaGVyLXR5 cGUgKHR5cGUtdGFnIHgpKSkpKQogICAgICAoaWYgY29udmVydGVyCgkgIChjb252ZXJ0ZXIgeCkK CSAgKGVycm9yICJObyBjb2VyY2lvbiBmb3VuZCBmb3IgeCIgKHR5cGUtdGFnIHgpIHgpKSkpCgoK ICAoZGVmaW5lIChyZW1haW5kZXItaW50ZWdlciBhIGIpCiAgICAod2hlbiAob3IgKG5vdCAoaW50 ZWdlcj8gYSkpIChub3QgKGludGVnZXI/IGIpKSkKICAgICAgKGVycm9yICJBcmd1bWVudHMgbXVz dCBiZSBpbnRlZ2VycyIgYSBiKSkKICAgIChyZW1haW5kZXIgYSBiKSkKCiAgKHB1dCAncmVtYWlu ZGVyICcoaW50ZWdlciBpbnRlZ2VyKSByZW1haW5kZXItaW50ZWdlcikKICAoZGVmaW5lIChyZW1h aW5kZXItZ2VuZXJhbGl6ZWQgYSBiKSAoYXBwbHktZ2VuZXJpYyAncmVtYWluZGVyIGEgYikpCgog IChkZWZpbmUgKHByb2plY3Qgb2JqKSAoYXBwbHktZ2VuZXJpYyAncHJvamVjdCBvYmopKQogIChk ZWZpbmUgKGRyb3BwYWJsZT8gb2JqKQogICAgKGNvbmQgKChub3QgKG1lbXEgKHR5cGUtdGFnIG9i aikgbnVtZXJpYy10b3dlcikpICNmKQoJICAoKGVxPyAodHlwZS10YWcgb2JqKSAoY2FyIG51bWVy aWMtdG93ZXIpKSAjZikKCSAgKChlcXU/IG9iaiAocmFpc2UtdHlwZSAocHJvamVjdCBvYmopKSkg I3QpCgkgIChlbHNlICNmKSkpCiAgKGRlZmluZSAoZHJvcCBvYmopIAogICAgIChpZiAoZHJvcHBh YmxlPyBvYmopCgkgKGRyb3AgKHByb2plY3Qgb2JqKSkKCSBvYmopKQoKICAjOyhzaG93ICN0ICJU ZXN0OiAiIChkcm9wcGFibGU/IChtYWtlLWNvbXBsZXgtZnJvbS1yZWFsLWltYWcgMSAwKSkpCiAg Izsoc2hvdyAjdCAiVGVzdCAyOiBwcm9qZWN0aW5nIGEgJ3NjaGVtZS1udW1iZXI6ICIgKGRpc3Bs YXllZCAocHJvamVjdCAobWFrZS1zY2hlbWUtbnVtYmVyIDEpKSkgIlxuIikKICAjOyhzaG93ICN0 ICJUZXN0IDM6IiAoZHJvcCAobWFrZS1jb21wbGV4LWZyb20tcmVhbC1pbWFnIDEgMCkpICJcbiIp CiAgKHNob3cgI3QgIlN1YnRyYWN0aW5nIGNvbXBsZXggbnVtYmVyczogIgoJKHN1YgoJIChtYWtl LWNvbXBsZXgtZnJvbS1yZWFsLWltYWcgMSAyKQoJIChtYWtlLWNvbXBsZXgtZnJvbS1yZWFsLWlt YWcgMCAyKSkgIlxuIikKICAgIzsoc2hvdyAjdCAiRHJvcHBpbmcgI3Q6ICIgKGRyb3AgI3QpICJc biIpCiAgICM7KHNob3cgI3QgIkRyb3BwaW5nICNmOiAiIChkcm9wICNmKSAiXG4iKQogICAjOyhz aG93ICN0CgkiKGVxdT8gKHJhaXNlLXR5cGUgKHByb2plY3QgJyhjb21wbGV4IHJlY3Rhbmd1bGFy IDEgMCkpKSAnKGNvbXBsZXggcmVjdGFuZ3VsYXIgMSAwKSkiIAoJIChlcXU/IChyYWlzZS10eXBl IChwcm9qZWN0ICcoY29tcGxleCByZWN0YW5ndWxhciAxIDApKSkgJyhjb21wbGV4IHJlY3Rhbmd1 bGFyIDEgMCkpKQogICAgIzsoc2hvdyAjdCAoZHJvcCAnKGNvbXBsZXggcmVjdGFuZ3VsYXIgMSAw KSkgIlxuIikKICAgIzsoc2hvdyAjdCAiVGVzdGluZyBwcm9qZWN0OiAiIChkaXNwbGF5ZWQgKHBy b2plY3QgKG1ha2UtY29tcGxleC1mcm9tLXJlYWwtaW1hZyAxIDApKSkgIlxuIikKICAgIzsoc2hv dyAjdCAiVGVzdGluZzogIiAoZGlzcGxheWVkIChlcXU/IChtYWtlLWNvbXBsZXgtZnJvbS1yZWFs LWltYWcgMiAwKSAocmFpc2UtdHlwZSAocHJvamVjdCAobWFrZS1jb21wbGV4LWZyb20tcmVhbC1p bWFnIDIgMSkpKSkpICJcbiIpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IFN1YnRyYWN0aW5nIGNv bXBsZXggbnVtYmVyczogMQoKKioqIERPTkUgRXhlcmNpc2UgMi44NiBDb21wb3VuZCBjb21wbGV4 IG51bWJlcnMKICAgIENMT1NFRDogWzIwMTktMTAtMjAgU3VuIDIwOjIyXQoKQXQgdGhlIG1vbWVu dCwgb3VyIGNvbXBsZXggbnVtYmVycyBhcmUgcGFpcnMgb2YgdHdvIGJ1aWx0LWluIHJlYWwgbnVt YmVycy4gV2UKbmVlZCB0byBiZSBhYmxlIHRvIGJ1aWxkIHRoZW0gZnJvbSByYXRpb25hbCBhbmQg aW50ZWdlciBudW1iZXJzIHRvby4KCkFnYWluLCBzaW5jZSB0aGUgY2hhbmdlcyB3ZSBhcmUgZG9p bmcgaGVyZSBhcmUgbm90IGFkZGl0aXZlLCBJIHdpbGwganVzdCBjb3B5CnRoZSB3aG9sZSBzeXN0 ZW0gaW4gb25lIGJsb2NrLgoKSXQgc2VlbXMgdGhhdCBpbXBsZW1lbnRpbmcgc2luZXMgYW5kIGNv c2luZXMgb3ZlciAnc2NoZW1lLW51bWJlcidzIGlzIGVub3VnaCwKYmVjYXVzZSB0aGUgb3RoZXIg dHlwZXMgc2hvdWxkIGJlIGNvdmVyZWQgYnkgY29lcmNpb24uCgojK2JlZ2luX3NyYyBzY2hlbWUg OmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKICAgIChkZWZpbmUgKGFjY3VtdWxhdGUgb3Ag aW5pdGlhbCBzZXF1ZW5jZSkKICAgICAgKGlmIChudWxsPyBzZXF1ZW5jZSkKCSAgaW5pdGlhbAoJ ICAoYWNjdW11bGF0ZSBvcCAob3AgaW5pdGlhbCAoY2FyIHNlcXVlbmNlKSkgKGNkciBzZXF1ZW5j ZSkpKSkKICAgIChkZWZpbmUgZmFsc2UgI2YpCiAgICAoZGVmaW5lIHRydWUgICN0KQogICAgKGRl ZmluZSAobWFrZS10YWJsZSkKICAgICAgKGxldCAoKGxvY2FsLXRhYmxlIChsaXN0ICcqdGFibGUq KSkpCgkoZGVmaW5lIChsb29rdXAga2V5LTEga2V5LTIpCgkgIChsZXQgKChzdWJ0YWJsZSAoYXNz b2Mga2V5LTEgKGNkciBsb2NhbC10YWJsZSkpKSkKCSAgICAoaWYgc3VidGFibGUKCQkobGV0ICgo cmVjb3JkIChhc3NvYyBrZXktMiAoY2RyIHN1YnRhYmxlKSkpKQoJCSAgKGlmIHJlY29yZAoJCSAg ICAgIChjZHIgcmVjb3JkKQoJCSAgICAgIGZhbHNlKSkKCQlmYWxzZSkpKQoJKGRlZmluZSAoaW5z ZXJ0ISBrZXktMSBrZXktMiB2YWx1ZSkKCSAgKGxldCAoKHN1YnRhYmxlIChhc3NvYyBrZXktMSAo Y2RyIGxvY2FsLXRhYmxlKSkpKQoJICAgIChpZiBzdWJ0YWJsZQoJCShsZXQgKChyZWNvcmQgKGFz c29jIGtleS0yIChjZHIgc3VidGFibGUpKSkpCgkJICAoaWYgcmVjb3JkCgkJICAgICAgKHNldC1j ZHIhIHJlY29yZCB2YWx1ZSkKCQkgICAgICAoc2V0LWNkciEgc3VidGFibGUKCQkJCShjb25zIChj b25zIGtleS0yIHZhbHVlKQoJCQkJICAgICAgKGNkciBzdWJ0YWJsZSkpKSkpCgkJKHNldC1jZHIh IGxvY2FsLXRhYmxlCgkJCSAgKGNvbnMgKGxpc3Qga2V5LTEKCQkJCSAgICAgIChjb25zIGtleS0y IHZhbHVlKSkKCQkJCShjZHIgbG9jYWwtdGFibGUpKSkpKQoJICAnb2spCgkoZGVmaW5lIChkaXNw YXRjaCBtKQoJICAoY29uZCAoKGVxPyBtICdsb29rdXAtcHJvYykgbG9va3VwKQoJCSgoZXE/IG0g J2luc2VydC1wcm9jISkgaW5zZXJ0ISkKCQkoZWxzZSAoZXJyb3IgIlVua25vd24gb3BlcmF0aW9u IC0tIFRBQkxFIiBtKSkpKQoJZGlzcGF0Y2gpKQoKICAgIChkZWZpbmUgb3BlcmF0aW9uLXRhYmxl IChtYWtlLXRhYmxlKSkKICAgIChkZWZpbmUgZ2V0IChvcGVyYXRpb24tdGFibGUgJ2xvb2t1cC1w cm9jKSkKICAgIChkZWZpbmUgcHV0IChvcGVyYXRpb24tdGFibGUgJ2luc2VydC1wcm9jISkpCgog ICAgKGRlZmluZSBjb2VyY2lvbi10YWJsZSAobWFrZS10YWJsZSkpCiAgICAoZGVmaW5lIGdldC1j b2VyY2lvbiAoY29lcmNpb24tdGFibGUgJ2xvb2t1cC1wcm9jKSkKICAgIChkZWZpbmUgcHV0LWNv ZXJjaW9uIChjb2VyY2lvbi10YWJsZSAnaW5zZXJ0LXByb2MhKSkKCiAgICAoZGVmaW5lIChhdHRh Y2gtdGFnIHR5cGUtdGFnIGNvbnRlbnRzKQogICAgICAoY29ucyB0eXBlLXRhZyBjb250ZW50cykp CgogICAgKGRlZmluZSAodHlwZS10YWcgZGF0dW0pCiAgICAgIChjb25kICgocGFpcj8gZGF0dW0p IChjYXIgZGF0dW0pKQoJICAgICgoZXhhY3QtaW50ZWdlcj8gZGF0dW0pICdpbnRlZ2VyKQoJICAg ICgocmVhbD8gZGF0dW0pICdzY2hlbWUtbnVtYmVyKQoJICAgIChlcnJvciAiQmFkIHRhZ2dlZCBk YXR1bSAtLSBUWVBFLVRBRyIgZGF0dW0pKSkKCiAgICAoZGVmaW5lIChjb250ZW50cyBkYXR1bSkK ICAgICAgKGNvbmQgKChwYWlyPyBkYXR1bSkgKGNkciBkYXR1bSkpCgkgICAgKChpbnRlZ2VyPyBk YXR1bSkgZGF0dW0pCgkgICAgKChyZWFsPyBkYXR1bSkgZGF0dW0pCgkgICAgKGVsc2UgKGVycm9y ICJCYWQgdGFnZ2VkIGRhdHVtIC0tIENPTlRFTlRTIiBkYXR1bSkpKSkKCiAgICAoZGVmaW5lIChp bnRlZ2VyPyB4KQogICAgICAoZXE/ICh0eXBlLXRhZyB4KSAnaW50ZWdlcikpCiAgICAoZGVmaW5l IChyZWN0YW5ndWxhcj8geikKICAgICAgKGVxPyAodHlwZS10YWcgeikgJ3JlY3Rhbmd1bGFyKSkK CiAgICAoZGVmaW5lIChwb2xhcj8geikKICAgICAgKGVxPyAodHlwZS10YWcgeikgJ3BvbGFyKSkK CgogICAgKGRlZmluZSAocmVhbC1wYXJ0IHopIChhcHBseS1nZW5lcmljICdyZWFsLXBhcnQgeikp CiAgICAoZGVmaW5lIChpbWFnLXBhcnQgeikgKGFwcGx5LWdlbmVyaWMgJ2ltYWctcGFydCB6KSkK ICAgIChkZWZpbmUgKG1hZ25pdHVkZSB6KSAoYXBwbHktZ2VuZXJpYyAnbWFnbml0dWRlIHopKQog ICAgKGRlZmluZSAoYW5nbGUgeikgKGFwcGx5LWdlbmVyaWMgJ2FuZ2xlIHopKQoKICAgIChkZWZp bmUgKGFkZCB4IHkpIChhcHBseS1nZW5lcmljICdhZGQgeCB5KSkKICAgIChkZWZpbmUgKHN1YiB4 IHkpIChhcHBseS1nZW5lcmljICdzdWIgeCB5KSkKICAgIChkZWZpbmUgKG11bCB4IHkpIChhcHBs eS1nZW5lcmljICdtdWwgeCB5KSkKICAgIChkZWZpbmUgKGRpdiB4IHkpIChhcHBseS1nZW5lcmlj ICdkaXYgeCB5KSkKCiAgICAoZGVmaW5lIChlcXU/IHggeSkKICAgICAgKGFwcGx5LWdlbmVyaWMg J2VxdT8geCB5KSkKICAgIChkZWZpbmUgKHplcm8/IHgpIChhcHBseS1nZW5lcmljICd6ZXJvPyB4 KSkKCiAgICAoZGVmaW5lIChleHAgeCB5KSAoYXBwbHktZ2VuZXJpYyAnZXhwIHggeSkpCgogICAg KGRlZmluZSAoaW5zdGFsbC1zY2hlbWUtbnVtYmVyLXBhY2thZ2UpCiAgICAgIChkZWZpbmUgKHRh ZyB4KQoJKGF0dGFjaC10YWcgJ3NjaGVtZS1udW1iZXIgeCkpCiAgICAgIChwdXQgJ2FkZCAnKHNj aGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAgIChsYW1iZGEgKHggeSkgKHRhZyAoKyB4IHkp KSkpCiAgICAgIChwdXQgJ3N1YiAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAgIChs YW1iZGEgKHggeSkgKHRhZyAoLSB4IHkpKSkpCiAgICAgIChwdXQgJ211bCAnKHNjaGVtZS1udW1i ZXIgc2NoZW1lLW51bWJlcikKCSAgIChsYW1iZGEgKHggeSkgKHRhZyAoKiB4IHkpKSkpCiAgICAg IChwdXQgJ2RpdiAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAgIChsYW1iZGEgKHgg eSkgKHRhZyAoLyB4IHkpKSkpCiAgICAgIChwdXQgJ21ha2UgJ3NjaGVtZS1udW1iZXIKCSAgIChs YW1iZGEgKHgpICh0YWcgeCkpKQogICAgICAocHV0ICdlcXU/ICcoc2NoZW1lLW51bWJlciBzY2hl bWUtbnVtYmVyKQoJICAgKGxhbWJkYSAoeCB5KSAoPSB4IHkpKSkKICAgICAgKHB1dCAnemVybz8g JyhzY2hlbWUtbnVtYmVyKQoJICAgKGxhbWJkYSAoeCkgKD0gMCB4KSkpCiAgICAgIChwdXQgJ2V4 cCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAgIChsYW1iZGEgKHggeSkgKHRhZyAo ZXhwdCB4IHkpKSkpCiAgICAgIChwdXQgJ3Byb2plY3QgJyhzY2hlbWUtbnVtYmVyKQoJICAgKGxh bWJkYSAoeCkKCSAgICAgKHNob3cgI3QgIkNhbGxpbmcgcHJvamVjdCAnc2NoZW1lLW51bWJlclxu IikKCSAgICAgKG1ha2UtcmF0aW9uYWwKCSAgICAgIChleGFjdCAobnVtZXJhdG9yIHgpKQoJICAg ICAgKGV4YWN0IChkZW5vbWluYXRvciB4KSkpKSkKICAgICAgKHB1dCAnc2luZSAnKHNjaGVtZS1u dW1iZXIpIHNpbikKICAgICAgKHB1dCAnY29zaW5lICcoc2NoZW1lLW51bWJlcikgY29zKQogICAg ICAocHV0ICdzcXVhcmUtcm9vdCAnKHNjaGVtZS1udW1iZXIpIHNxcnQpCiAgICAgIChwdXQgJ2Fy Y3RhbmdlbnQgJyhzY2hlbWVyLW51bWJlcikgYXRhbikKICAgICAgJ2RvbmUpCgogIChkZWZpbmUg KHNpbmUgeCkgKGFwcGx5LWdlbmVyaWMgJ3NpbmUgeCkpCiAgKGRlZmluZSAoY29zaW5lIHgpIChh cHBseS1nZW5lcmljICdjb3NpbmUgeCkpCiAgKGRlZmluZSAoc3F1YXJlLXJvb3QgeCkgKGFwcGx5 LWdlbmVyaWMgJ3NxdWFyZS1yb290IHgpKQogIChkZWZpbmUgKGFyY3RhbmdlbnQgeCkgKGFwcGx5 LWdlbmVyaWMgJ2FyY3RhbmdlbnQgeCkpCgogICAgKGRlZmluZSAobWFrZS1zY2hlbWUtbnVtYmVy IG4pCiAgICAgICgoZ2V0ICdtYWtlICdzY2hlbWUtbnVtYmVyKSBuKSkKCiAgICAoZGVmaW5lIChp bnN0YWxsLXJhdGlvbmFsLXBhY2thZ2UpCiAgICAgIChkZWZpbmUgKG51bWVyIHgpIChjYXIgeCkp CiAgICAgIChkZWZpbmUgKGRlbm9tIHgpIChjZHIgeCkpCiAgICAgIChkZWZpbmUgKG1ha2UtcmF0 IG4gZCkKCShsZXQgKChnIChnY2QgbiBkKSkpCgkgIChjb25zICgvIG4gZykgKC8gZCBnKSkpKQog ICAgICAoZGVmaW5lIChhZGQtcmF0IHggeSkKCShtYWtlLXJhdCAoKyAoKiAobnVtZXIgeCkgKGRl bm9tIHkpKQoJCSAgICAgKCogKG51bWVyIHkpIChkZW5vbSB4KSkpCgkJICAoKiAoZGVub20geCkg KGRlbm9tIHkpKSkpCiAgICAgIChkZWZpbmUgKHN1Yi1yYXQgeCB5KQoJKG1ha2UtcmF0ICgtICgq IChudW1lciB4KSAoZGVub20geSkpCgkJICAgICAoKiAobnVtZXIgeSkgKGRlbm9tIHgpKSkKCQkg ICgqIChkZW5vbSB4KSAoZGVub20geSkpKSkKICAgICAgKGRlZmluZSAobXVsLXJhdCB4IHkpCgko bWFrZS1yYXQgKCogKG51bWVyIHgpIChudW1lciB5KSkKCQkgICgqIChkZW5vbSB4KSAoZGVub20g eSkpKSkKICAgICAgKGRlZmluZSAoZGl2LXJhdCB4IHkpCgkobWFrZS1yYXQgKCogKG51bWVyIHgp IChkZW5vbSB5KSkKCQkgICgqIChkZW5vbSB4KSAobnVtZXIgeSkpKSkKCiAgICAgIChkZWZpbmUg KHRhZyB4KSAoYXR0YWNoLXRhZyAncmF0aW9uYWwgeCkpCiAgICAgIChwdXQgJ2FkZCAnKHJhdGlv bmFsIHJhdGlvbmFsKQoJICAgKGxhbWJkYSAoeCB5KSAodGFnIChhZGQtcmF0IHggeSkpKSkKICAg ICAgKHB1dCAnc3ViICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgICAobGFtYmRhICh4IHkpICh0YWcg KHN1Yi1yYXQgeCB5KSkpKQogICAgICAocHV0ICdtdWwgJyhyYXRpb25hbCByYXRpb25hbCkKCSAg IChsYW1iZGEgKHggeSkgKHRhZyAobXVsLXJhdCB4IHkpKSkpCiAgICAgIChwdXQgJ2RpdiAnKHJh dGlvbmFsIHJhdGlvbmFsKQoJICAgKGxhbWJkYSAoeCB5KSAodGFnIChkaXYtcmF0IHggeSkpKSkK CiAgICAgIChwdXQgJ21ha2UgJ3JhdGlvbmFsCgkgICAobGFtYmRhIChuIGQpICh0YWcgKG1ha2Ut cmF0IG4gZCkpKSkKICAgICAgKHB1dCAnZXF1PyAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJICAgKGxh bWJkYSAoeCB5KSAoPSAwIChudW1lciAoc3ViLXJhdCB4IHkpKSkpKQogICAgICAocHV0ICd6ZXJv PyAnKHJhdGlvbmFsKSAobGFtYmRhICh4KSAoPSAwIChudW1lciB4KSkpKQogICAgICAocHV0ICdw cm9qZWN0ICcocmF0aW9uYWwpIChsYW1iZGEgKHgpIChzaG93ICN0ICJDYWxsaW5nIHByb2plY3Qg cmF0aW9uYWwsIHg9IiB4ICJcbiIpCgkJCQkgICAoZXhhY3QgKHRydW5jYXRlICgvIChudW1lciB4 KSAoZGVub20geCkpKSkpKQogICAgICAocHV0ICd0by1yZWFsICcocmF0aW9uYWwpIChsYW1iZGEg KHgpICgvIChudW1lciAoY29udGVudHMgeCkpIChkZW5vbSAoY29udGVudHMgeCkpKSkpCiAgICAg ICdkb25lKQoKICAgIChkZWZpbmUgKG1ha2UtcmF0aW9uYWwgbiBkKQogICAgICAoKGdldCAnbWFr ZSAncmF0aW9uYWwpIG4gZCkpCgogICAgKGRlZmluZSAoaW5zdGFsbC1yZWN0YW5ndWxhci1wYWNr YWdlKQoKICAgICAgKGRlZmluZSAocmVhbC1wYXJ0IHopIChjYXIgeikpCiAgICAgIChkZWZpbmUg KGltYWctcGFydCB6KSAoY2RyIHopKQogICAgICAoZGVmaW5lIChtYWtlLWZyb20tcmVhbC1pbWFn IHggeSkgKGNvbnMgeCB5KSkKICAgICAgKGRlZmluZSAobWFnbml0dWRlIHopCgkoc3F1YXJlLXJv b3QgKGFkZCAoc3F1YXJlIChyZWFsLXBhcnQgeikpCgkJCSAgKHNxdWFyZSAoaW1hZy1wYXJ0IHop KSkpKQogICAgICAoZGVmaW5lIChhbmdsZSB6KQoJKGFyY3RhbmdlbnQgKGltYWctcGFydCB6KSAo cmVhbC1wYXJ0IHopKSkKICAgICAgKGRlZmluZSAobWFrZS1mcm9tLW1hZy1hbmcgciBhKQoJKGNv bnMgKG11bCByIChjb3NpbmUgYSkpIChtdWwgciAoc2luZSBhKSkpKQoKICAgICAgKGRlZmluZSAo dGFnIHgpIChhdHRhY2gtdGFnICdyZWN0YW5ndWxhciB4KSkKICAgICAgKHB1dCAncmVhbC1wYXJ0 ICcocmVjdGFuZ3VsYXIpIHJlYWwtcGFydCkKICAgICAgKHB1dCAnaW1hZy1wYXJ0ICcocmVjdGFu Z3VsYXIpIGltYWctcGFydCkKICAgICAgKHB1dCAnbWFnbml0dWRlICcocmVjdGFuZ3VsYXIpIG1h Z25pdHVkZSkKICAgICAgKHB1dCAnYW5nbGUgJyhyZWN0YW5ndWxhcikgYW5nbGUpCiAgICAgIChw dXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ3JlY3Rhbmd1bGFyCgkgICAobGFtYmRhICh4IHkpICh0 YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSkpKQogICAgICAocHV0ICdtYWtlLWZyb20tbWFn LWFuZyAncmVjdGFuZ3VsYXIKCSAgIChsYW1iZGEgKHIgYSkgKHRhZyAobWFrZS1mcm9tLW1hZy1h bmcgciBhKSkpKQogICAgICAnZG9uZSkKCiAgICAoZGVmaW5lIChpbnN0YWxsLXBvbGFyLXBhY2th Z2UpCgogICAgICAoZGVmaW5lIChtYWduaXR1ZGUgeikgKGNhciB6KSkKICAgICAgKGRlZmluZSAo YW5nbGUgeikgKGNkciB6KSkKICAgICAgKGRlZmluZSAobWFrZS1mcm9tLW1hZy1hbmcgciBhKSAo Y29ucyByIGEpKQogICAgICAoZGVmaW5lIChyZWFsLXBhcnQgeikKCShtdWwgKG1hZ25pdHVkZSB6 KSAoY29zaW5lIChhbmdsZSB6KSkpKQogICAgICAoZGVmaW5lIChpbWFnLXBhcnQgeikKCShtdWwg KG1hZ25pdHVkZSB6KSAoc2luZSAoYW5nbGUgeikpKSkKICAgICAgKGRlZmluZSAobWFrZS1mcm9t LXJlYWwtaW1hZyB4IHkpCgkoY29ucyAoc3F1YXJlLXJvb3QgKGFkZCAoc3F1YXJlIHgpIChzcXVh cmUgeSkpKQoJICAgICAgKGFyY3RhbmdlbnQgeSB4KSkpCgogICAgICAoZGVmaW5lICh0YWcgeCkg KGF0dGFjaC10YWcgJ3BvbGFyIHgpKQogICAgICAocHV0ICdyZWFsLXBhcnQgJyhwb2xhcikgcmVh bC1wYXJ0KQogICAgICAocHV0ICdpbWFnLXBhcnQgJyhwb2xhcikgaW1hZy1wYXJ0KQogICAgICAo cHV0ICdtYWduaXR1ZGUgJyhwb2xhcikgbWFnbml0dWRlKQogICAgICAocHV0ICdhbmdsZSAnKHBv bGFyKSBhbmdsZSkKICAgICAgKHB1dCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAncG9sYXIKCSAgIChs YW1iZGEgKHggeSkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpKSkpCiAgICAgIChwdXQg J21ha2UtZnJvbS1tYWctYW5nICdwb2xhcgoJICAgKGxhbWJkYSAociBhKSAodGFnIChtYWtlLWZy b20tbWFnLWFuZyByIGEpKSkpCiAgICAgICdkb25lKQoKICAgIChkZWZpbmUgKGluc3RhbGwtY29t cGxleC1wYWNrYWdlKQogICAgICAoZGVmaW5lIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkKCSgo Z2V0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdyZWN0YW5ndWxhcikgeCB5KSkKICAgICAgKGRlZmlu ZSAobWFrZS1mcm9tLW1hZy1hbmcgciBhKQoJKChnZXQgJ21ha2UtZnJvbS1tYWctYW5nICdwb2xh cikgciBhKSkKICAgICAgKGRlZmluZSAoYWRkLWNvbXBsZXggejEgejIpCgkobWFrZS1mcm9tLXJl YWwtaW1hZyAoYWRkIChyZWFsLXBhcnQgejEpIChyZWFsLXBhcnQgejIpKQoJCQkgICAgIChhZGQg KGltYWctcGFydCB6MSkgKGltYWctcGFydCB6MikpKSkKICAgICAgKGRlZmluZSAoc3ViLWNvbXBs ZXggejEgejIpCgkobWFrZS1mcm9tLXJlYWwtaW1hZyAoc3ViIChyZWFsLXBhcnQgejEpIChyZWFs LXBhcnQgejIpKQoJCQkgICAgIChzdWIgKGltYWctcGFydCB6MSkgKGltYWctcGFydCB6MikpKSkK ICAgICAgKGRlZmluZSAobXVsLWNvbXBsZXggejEgejIpCgkobWFrZS1mcm9tLW1hZy1hbmcgKG11 bCAobWFnbml0dWRlIHoxKSAobWFnbml0dWRlIHoyKSkKCQkJICAgKGFkZCAoYW5nbGUgejEpIChh bmdsZSB6MikpKSkKICAgICAgKGRlZmluZSAoZGl2LWNvbXBsZXggejEgejIpCgkobWFrZS1mcm9t LW1hZy1hbmcgKGRpdiAobWFnbml0dWRlIHoxKSAobWFnbml0dWRlIHoyKSkKCQkJICAgKHN1YiAo YW5nbGUgejEpIChhbmdsZSB6MikpKSkKICAgICAgKGRlZmluZSAodGFnIHopIChhdHRhY2gtdGFn ICdjb21wbGV4IHopKQogICAgICAocHV0ICdhZGQgJyhjb21wbGV4IGNvbXBsZXgpCgkgICAobGFt YmRhICh6MSB6MikgKHRhZyAoYWRkLWNvbXBsZXggejEgejIpKSkpCiAgICAgIChwdXQgJ3N1YiAn KGNvbXBsZXggY29tcGxleCkKCSAgIChsYW1iZGEgKHoxIHoyKSAodGFnIChzdWItY29tcGxleCB6 MSB6MikpKSkKICAgICAgKHB1dCAnbXVsICcoY29tcGxleCBjb21wbGV4KQoJICAgKGxhbWJkYSAo ejEgejIpICh0YWcgKG11bC1jb21wbGV4IHoxIHoyKSkpKQogICAgICAocHV0ICdkaXYgJyhjb21w bGV4IGNvbXBsZXgpCgkgICAobGFtYmRhICh6MSB6MikgKHRhZyAoZGl2LWNvbXBsZXggejEgejIp KSkpCiAgICAgIChwdXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ2NvbXBsZXgKCSAgIChsYW1iZGEg KHggeSkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpKSkpCiAgICAgIChwdXQgJ21ha2Ut ZnJvbS1tYWctYW5nICdjb21wbGV4CgkgICAobGFtYmRhIChyIGEpICh0YWcgKG1ha2UtZnJvbS1t YWctYW5nIHIgYSkpKSkKICAgICAgKHB1dCAnZXF1PyAnKGNvbXBsZXggY29tcGxleCkKCSAgIChs YW1iZGEgKHggeSkgKGFuZCAoPSAwIChyZWFsLXBhcnQgKHN1Yi1jb21wbGV4IHggeSkpKQoJCQkg ICAgICAoPSAwIChpbWFnLXBhcnQgKHN1Yi1jb21wbGV4IHggeSkpKSkpKQogICAgICAocHV0ICdl cXU/ICcocmVjdGFuZ3VsYXIgcG9sYXIpIGVxdT8pCiAgICAgIChwdXQgJ2VxdT8gJyhwb2xhciBy ZWN0YW5ndWxhcikgZXF1PykKICAgICAgKHB1dCAnemVybz8gJyhjb21wbGV4KQoJICAgKGxhbWJk YSAoeCkgKGVxdT8gKHRhZyB4KSAodGFnIChtYWtlLWZyb20tcmVhbC1pbWFnIDAgMCkpKSkpCiAg ICAgIChwdXQgJ3Byb2plY3QgJyhjb21wbGV4KSAobGFtYmRhICh6KSAocmVhbC1wYXJ0IHopKSkK ICAgICAgJ2RvbmUpCgogICAgKGRlZmluZSAobWFrZS1jb21wbGV4LWZyb20tcmVhbC1pbWFnIHgg eSkKICAgICAgKChnZXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ2NvbXBsZXgpIHggeSkpCgogICAg KGRlZmluZSAobWFrZS1jb21wbGV4LWZyb20tbWFnLWFuZyByIGEpCiAgICAgICgoZ2V0ICdtYWtl LWZyb20tbWFnLWFuZyAnY29tcGxleCkgciBhKSkKCiAgICAoaW5zdGFsbC1yZWN0YW5ndWxhci1w YWNrYWdlKQogICAgKGluc3RhbGwtcG9sYXItcGFja2FnZSkKICAgIChpbnN0YWxsLXJhdGlvbmFs LXBhY2thZ2UpCiAgICAoaW5zdGFsbC1zY2hlbWUtbnVtYmVyLXBhY2thZ2UpCiAgICAoaW5zdGFs bC1jb21wbGV4LXBhY2thZ2UpCgogICAgKHB1dCAncmVhbC1wYXJ0ICcoY29tcGxleCkgcmVhbC1w YXJ0KQogICAgKHB1dCAnaW1hZy1wYXJ0ICcoY29tcGxleCkgaW1hZy1wYXJ0KQogICAgKHB1dCAn bWFnbml0dWRlICcoY29tcGxleCkgbWFnbml0dWRlKQogICAgKHB1dCAnYW5nbGUgJyhjb21wbGV4 KSBhbmdsZSkKCiAgICAoZGVmaW5lIChhcHBseS1nZW5lcmljIG9wIC4gYXJncykKICAgICAgKGRl ZmluZSAoYWxsLWFyZ3R5cGVzLXNhbWU/IC4gYXJncykKCShsZXQgKCh0eXBlICh0eXBlLXRhZyAo Y2FyIGFyZ3MpKSkpCgkgIChhY2N1bXVsYXRlIChsYW1iZGEgKHggeSkgKGFuZCB4IHkpKSAjdCAo bWFwIChsYW1iZGEgKHgpIChlcT8gdHlwZSB4KSkgYXJncykpKSkKICAgICAgKGRlZmluZSAoY29l cmNpb24taWYtZXhpc3RzPyB0eXBlIGFyZy10YWdzKQoJKGxldCAoKGNvZXJjaW9uLWxpc3QgKG1h cCAobGFtYmRhICh4KSAKCQkJCSAgICAoaWYgKGVxPyB0eXBlIHgpCgkJCQkJaWRlbnRpdHkKCQkJ CQkoZ2V0LWNvZXJjaW9uIHggdHlwZSkpKSBhcmctdGFncykpKQoJICAoaWYgKGFjY3VtdWxhdGUg KGxhbWJkYSAoeCB5KSAoYW5kIHggeSkpICN0IGNvZXJjaW9uLWxpc3QpCgkgICAgICBjb2VyY2lv bi1saXN0CgkgICAgICAjZikpKQogICAgICAoZHJvcCAobGV0KiAoKHR5cGUtdGFncyAobWFwIHR5 cGUtdGFnIGFyZ3MpKQoJCSAgIChwcm9jIChnZXQgb3AgdHlwZS10YWdzKSkpCgkgICAgICAoY29u ZCAocHJvYyAoYXBwbHkgcHJvYyAobWFwIGNvbnRlbnRzIGFyZ3MpKSkKCQkgICAgKCg9IDEgKGxl bmd0aCBhcmdzKSkKCQkgICAgIChhcHBseS1nZW5lcmljIG9wIChyYWlzZS10eXBlIChjYXIgYXJn cykpKSkKCQkgICAgKCg9IDIgKGxlbmd0aCBhcmdzKSkKCQkgICAgIChpZiAodHlwZTE8PXR5cGUy PyAoY2FyIHR5cGUtdGFncykgKGNhZHIgdHlwZS10YWdzKSkKCQkJIChhcHBseS1nZW5lcmljIG9w IChyYWlzZS10eXBlIChjYXIgYXJncykpIChjYWRyIGFyZ3MpKQoJCQkgKGFwcGx5LWdlbmVyaWMg b3AgKGNhciBhcmdzKSAgKHJhaXNlLXR5cGUgKGNhZHIgYXJncykpKSkpCgkJICAgICgoYW5kICg+ PSAobGVuZ3RoIGFyZ3MpIDIpIChub3QgKGFsbC1hcmd0eXBlcy1zYW1lPyBhcmdzKSkpCgkJICAg ICAobGV0IHR5cGVzLWxvb3AgKCh0eXBlcyB0eXBlLXRhZ3MpKQoJCSAgICAgICAobGV0ICgobGlz dC1vZi1jb2VyY2lvbi1mdW5jdGlvbnMKCQkJICAgICAgKGNvZXJjaW9uLWlmLWV4aXN0cz8gKGNh ciB0eXBlcykgdHlwZS10YWdzKSkpCgkJCSAoaWYgbGlzdC1vZi1jb2VyY2lvbi1mdW5jdGlvbnMK CQkJICAgICAoYXBwbHkgYXBwbHktZ2VuZXJpYyAoY29ucyBvcCAobWFwIChsYW1iZGEgKGZ1biBh cmcpIChmdW4gYXJnKSkKCQkJCQkJCQlsaXN0LW9mLWNvZXJjaW9uLWZ1bmN0aW9ucwoJCQkJCQkJ CWFyZ3MpKSkKCQkJICAgICAoaWYgKG5vdCAobnVsbD8gKGNkciB0eXBlcykpKQoJCQkJICh0eXBl cy1sb29wIChjZHIgdHlwZXMpKQoJCQkJIChlcnJvciAiYXBwbHktZ2VuZXJpYzpFdmVuIGNvZXJj aW9ucyBmYWlsZWQuIE5vIG1ldGhvZCBmb3IgdGhlc2UgdHlwZXMuIikpKSkpKQoJCSAgICAoZWxz ZSAoZXJyb3IgImFwcGx5LWdlbmVyaWM6Tm8gbWV0aG9kIGZvciB0aGVzZSB0eXBlcyIKCQkJCSAo bGlzdCBvcCB0eXBlLXRhZ3MpKSkpKSkpCiAgICAoZGVmaW5lIChzY2hlbWUtbnVtYmVyLT5jb21w bGV4IG4pCiAgICAgIChtYWtlLWNvbXBsZXgtZnJvbS1yZWFsLWltYWcgKGNvbnRlbnRzIG4pIDAp KQogICAgKHB1dC1jb2VyY2lvbiAnc2NoZW1lLW51bWJlcgoJCSAgJ2NvbXBsZXgKCQkgIHNjaGVt ZS1udW1iZXItPmNvbXBsZXgpCgogICAgKHB1dCAnbWF4My1tYWduaXR1ZGUgJyhjb21wbGV4IGNv bXBsZXggY29tcGxleCkgKGxhbWJkYSAoejEgejIgejMpCgkJCQkJCSAgICAgIChtYXggKG1hZ25p dHVkZSB6MSkgKG1hZ25pdHVkZSB6MikgKG1hZ25pdHVkZSB6MykpKSkKICAgIChkZWZpbmUgKG1h eDMtbWFnbml0dWRlIHgxIHgyIHgzKSAoYXBwbHktZ2VuZXJpYyAnbWF4My1tYWduaXR1ZGUgeDEg eDIgeDMpKQogICAgKGRlZmluZSAoaWRlbnRpdHkgeCkgeCkKCiAgICAoZGVmaW5lIG51bWVyaWMt dG93ZXIgKGxpc3QgJ2ludGVnZXIgJ3JhdGlvbmFsICdzY2hlbWUtbnVtYmVyICdjb21wbGV4KSkK CiAgICAoZGVmaW5lIChoaWdoZXItdHlwZSB4KQogICAgICAoZGVmaW5lIChmaW5kLWhpZ2hlci10 eXBlIHggdHlwZXMpCgkoY29uZCAoKG9yIChudWxsPyB0eXBlcykgKG51bGw/IChjZHIgdHlwZXMp KSkgKGVycm9yICJObyB0eXBlIGhpZ2hlciB0aGFuIGdpdmVuIiB4KSkKCSAgICAgICgoZXE/IHgg KGNhciB0eXBlcykpIChjYWRyIHR5cGVzKSkKCSAgICAgIChlbHNlIChmaW5kLWhpZ2hlci10eXBl IHggKGNkciB0eXBlcykpKSkpCiAgICAgIChmaW5kLWhpZ2hlci10eXBlIHggbnVtZXJpYy10b3dl cikpCgogICAgKGRlZmluZSAodHlwZTE8PXR5cGUyPyB0eXBlMSB0eXBlMikKICAgICAgKGlmIChu b3QgKG1lbXEgdHlwZTEgbnVtZXJpYy10b3dlcikpCgkgIChlcnJvciAiVHlwZSAxIG5vdCBpbiB0 aGUgbnVtZXJpYyB0b3dlciIpKQogICAgICAoaWYgKG5vdCAobWVtcSB0eXBlMiBudW1lcmljLXRv d2VyKSkKCSAgKGVycm9yICJUeXBlIDIgbm90IGluIHRoZSBudW1lcmljIHRvd2VyIikpCiAgICAg IChsZXQgbG9vcCAoKHR5cGVzIG51bWVyaWMtdG93ZXIpKQoJKGNvbmQgKChudWxsPyB0eXBlcykg KGVycm9yICJUeXBlIDEgYW5kIHR5cGUgMiBhcmUgaW5jb21wYXJhYmxlIiB0eXBlMSB0eXBlMikp CgkgICAgICAoKGVxPyAoY2FyIHR5cGVzKSB0eXBlMSkgI3QpCgkgICAgICAoKGVxPyAoY2FyIHR5 cGVzKSB0eXBlMikgI2YpCgkgICAgICAoZWxzZSAobG9vcCAoY2RyIHR5cGVzKSkpKSkpCgogICAg KGRlZmluZSAoaW50ZWdlci0+cmF0aW9uYWwgeCkKICAgICAgKG1ha2UtcmF0aW9uYWwgeCAxKSkK CiAgICAoZGVmaW5lIChyYXRpb25hbC0+c2NoZW1lLW51bWJlciB4KQogICAgICAobWFrZS1zY2hl bWUtbnVtYmVyICgoZ2V0ICd0by1yZWFsICcocmF0aW9uYWwpKSB4KSkpCiAgICAocHV0LWNvZXJj aW9uICdpbnRlZ2VyICdyYXRpb25hbCBpbnRlZ2VyLT5yYXRpb25hbCkKICAgIChwdXQtY29lcmNp b24gJ3JhdGlvbmFsICdzY2hlbWUtbnVtYmVyIHJhdGlvbmFsLT5zY2hlbWUtbnVtYmVyKQoKICAg IChkZWZpbmUgKHJhaXNlLXR5cGUgeCkKICAgICAgKGxldCAoKGNvbnZlcnRlciAoZ2V0LWNvZXJj aW9uICh0eXBlLXRhZyB4KSAoaGlnaGVyLXR5cGUgKHR5cGUtdGFnIHgpKSkpKQoJKGlmIGNvbnZl cnRlcgoJICAgIChjb252ZXJ0ZXIgeCkKCSAgICAoZXJyb3IgIk5vIGNvZXJjaW9uIGZvdW5kIGZv ciB4IiAodHlwZS10YWcgeCkgeCkpKSkKCgogICAgKGRlZmluZSAocmVtYWluZGVyLWludGVnZXIg YSBiKQogICAgICAod2hlbiAob3IgKG5vdCAoaW50ZWdlcj8gYSkpIChub3QgKGludGVnZXI/IGIp KSkKCShlcnJvciAiQXJndW1lbnRzIG11c3QgYmUgaW50ZWdlcnMiIGEgYikpCiAgICAgIChyZW1h aW5kZXIgYSBiKSkKCiAgICAocHV0ICdyZW1haW5kZXIgJyhpbnRlZ2VyIGludGVnZXIpIHJlbWFp bmRlci1pbnRlZ2VyKQogICAgKGRlZmluZSAocmVtYWluZGVyLWdlbmVyYWxpemVkIGEgYikgKGFw cGx5LWdlbmVyaWMgJ3JlbWFpbmRlciBhIGIpKQoKICAoZGVmaW5lIChwcm9qZWN0IG9iaikKICAg IChzaG93ICN0ICJQcm9qZWN0IGZ1bmN0aW9uOiAiIG9iaiAiXG4iKQogICAgKGFwcGx5LWdlbmVy aWMgJ3Byb2plY3Qgb2JqKSkKICAoZGVmaW5lIChkcm9wcGFibGU/IG9iaikKICAgIChjb25kICgo bm90IChtZW1xICh0eXBlLXRhZyBvYmopIG51bWVyaWMtdG93ZXIpKSAjZikKCSAgKChlcT8gKHR5 cGUtdGFnIG9iaikgKGNhciBudW1lcmljLXRvd2VyKSkgI2YpCgkgICgoZXF1PyBvYmogKHJhaXNl LXR5cGUgKHByb2plY3Qgb2JqKSkpICN0KQoJICAoZWxzZSAjZikpKQogIChkZWZpbmUgKGRyb3Ag b2JqKSAKICAgICAgIChpZiAoZHJvcHBhYmxlPyBvYmopCgkgICAoZHJvcCAocHJvamVjdCBvYmop KQoJICAgb2JqKSkKCiAgICAoc2hvdyAjdCAiU3VidHJhY3RpbmcgY29tcGxleCBudW1iZXJzOiAi CgkgIChzdWIKCSAgIChtYWtlLWNvbXBsZXgtZnJvbS1yZWFsLWltYWcgMS4xIDIpCgkgICAobWFr ZS1jb21wbGV4LWZyb20tcmVhbC1pbWFnIDAgMikpICJcbiIpCgojK2VuZF9zcmMKCiMrUkVTVUxU UzoKIytiZWdpbl9leGFtcGxlClByb2plY3QgZnVuY3Rpb246IChyYXRpb25hbCAwIC4gMSkKQ2Fs bGluZyBwcm9qZWN0IHJhdGlvbmFsLCB4PSgwIC4gMSkKUHJvamVjdCBmdW5jdGlvbjogKHJhdGlv bmFsIDAgLiAxKQpDYWxsaW5nIHByb2plY3QgcmF0aW9uYWwsIHg9KDAgLiAxKQpQcm9qZWN0IGZ1 bmN0aW9uOiAxLjEKQ2FsbGluZyBwcm9qZWN0ICdzY2hlbWUtbnVtYmVyClByb2plY3QgZnVuY3Rp b246IChyYXRpb25hbCAyNDc2OTc5Nzk1MDUzNzczIC4gMjI1MTc5OTgxMzY4NTI0OCkKQ2FsbGlu ZyBwcm9qZWN0IHJhdGlvbmFsLCB4PSgyNDc2OTc5Nzk1MDUzNzczIC4gMjI1MTc5OTgxMzY4NTI0 OCkKUHJvamVjdCBmdW5jdGlvbjogMS4xCkNhbGxpbmcgcHJvamVjdCAnc2NoZW1lLW51bWJlcgpQ cm9qZWN0IGZ1bmN0aW9uOiAocmF0aW9uYWwgMjQ3Njk3OTc5NTA1Mzc3MyAuIDIyNTE3OTk4MTM2 ODUyNDgpCkNhbGxpbmcgcHJvamVjdCByYXRpb25hbCwgeD0oMjQ3Njk3OTc5NTA1Mzc3MyAuIDIy NTE3OTk4MTM2ODUyNDgpClByb2plY3QgZnVuY3Rpb246IChyYXRpb25hbCAyNDc2OTc5Nzk1MDUz NzczIC4gMjI1MTc5OTgxMzY4NTI0OCkKQ2FsbGluZyBwcm9qZWN0IHJhdGlvbmFsLCB4PSgyNDc2 OTc5Nzk1MDUzNzczIC4gMjI1MTc5OTgxMzY4NTI0OCkKUHJvamVjdCBmdW5jdGlvbjogKHJhdGlv bmFsIDI0NzY5Nzk3OTUwNTM3NzMgLiAyMjUxNzk5ODEzNjg1MjQ4KQpDYWxsaW5nIHByb2plY3Qg cmF0aW9uYWwsIHg9KDI0NzY5Nzk3OTUwNTM3NzMgLiAyMjUxNzk5ODEzNjg1MjQ4KQpQcm9qZWN0 IGZ1bmN0aW9uOiAocmF0aW9uYWwgMjQ3Njk3OTc5NTA1Mzc3MyAuIDIyNTE3OTk4MTM2ODUyNDgp CkNhbGxpbmcgcHJvamVjdCByYXRpb25hbCwgeD0oMjQ3Njk3OTc5NTA1Mzc3MyAuIDIyNTE3OTk4 MTM2ODUyNDgpClByb2plY3QgZnVuY3Rpb246IChjb21wbGV4IHJlY3Rhbmd1bGFyIChyYXRpb25h bCAyNDc2OTc5Nzk1MDUzNzczIC4gMjI1MTc5OTgxMzY4NTI0OCkgLiAwKQpQcm9qZWN0IGZ1bmN0 aW9uOiAocmF0aW9uYWwgMjQ3Njk3OTc5NTA1Mzc3MyAuIDIyNTE3OTk4MTM2ODUyNDgpCkNhbGxp bmcgcHJvamVjdCByYXRpb25hbCwgeD0oMjQ3Njk3OTc5NTA1Mzc3MyAuIDIyNTE3OTk4MTM2ODUy NDgpClByb2plY3QgZnVuY3Rpb246IChyYXRpb25hbCAyNDc2OTc5Nzk1MDUzNzczIC4gMjI1MTc5 OTgxMzY4NTI0OCkKQ2FsbGluZyBwcm9qZWN0IHJhdGlvbmFsLCB4PSgyNDc2OTc5Nzk1MDUzNzcz IC4gMjI1MTc5OTgxMzY4NTI0OCkKUHJvamVjdCBmdW5jdGlvbjogKHJhdGlvbmFsIDAgLiAxKQpD YWxsaW5nIHByb2plY3QgcmF0aW9uYWwsIHg9KDAgLiAxKQpQcm9qZWN0IGZ1bmN0aW9uOiAocmF0 aW9uYWwgMCAuIDEpCkNhbGxpbmcgcHJvamVjdCByYXRpb25hbCwgeD0oMCAuIDEpClByb2plY3Qg ZnVuY3Rpb246IDI0NzY5Nzk3OTUwNTM3NzMvMjI1MTc5OTgxMzY4NTI0OApDYWxsaW5nIHByb2pl Y3QgJ3NjaGVtZS1udW1iZXIKUHJvamVjdCBmdW5jdGlvbjogKHJhdGlvbmFsIDI0NzY5Nzk3OTUw NTM3NzMgLiAyMjUxNzk5ODEzNjg1MjQ4KQpDYWxsaW5nIHByb2plY3QgcmF0aW9uYWwsIHg9KDI0 NzY5Nzk3OTUwNTM3NzMgLiAyMjUxNzk5ODEzNjg1MjQ4KQpQcm9qZWN0IGZ1bmN0aW9uOiAyNDc2 OTc5Nzk1MDUzNzczLzIyNTE3OTk4MTM2ODUyNDgKQ2FsbGluZyBwcm9qZWN0ICdzY2hlbWUtbnVt YmVyClByb2plY3QgZnVuY3Rpb246IChyYXRpb25hbCAyNDc2OTc5Nzk1MDUzNzczIC4gMjI1MTc5 OTgxMzY4NTI0OCkKQ2FsbGluZyBwcm9qZWN0IHJhdGlvbmFsLCB4PSgyNDc2OTc5Nzk1MDUzNzcz IC4gMjI1MTc5OTgxMzY4NTI0OCkKUHJvamVjdCBmdW5jdGlvbjogKHJhdGlvbmFsIDI0NzY5Nzk3 OTUwNTM3NzMgLiAyMjUxNzk5ODEzNjg1MjQ4KQpDYWxsaW5nIHByb2plY3QgcmF0aW9uYWwsIHg9 KDI0NzY5Nzk3OTUwNTM3NzMgLiAyMjUxNzk5ODEzNjg1MjQ4KQpQcm9qZWN0IGZ1bmN0aW9uOiAo cmF0aW9uYWwgMjQ3Njk3OTc5NTA1Mzc3MyAuIDIyNTE3OTk4MTM2ODUyNDgpCkNhbGxpbmcgcHJv amVjdCByYXRpb25hbCwgeD0oMjQ3Njk3OTc5NTA1Mzc3MyAuIDIyNTE3OTk4MTM2ODUyNDgpClBy b2plY3QgZnVuY3Rpb246IChyYXRpb25hbCAwIC4gMSkKQ2FsbGluZyBwcm9qZWN0IHJhdGlvbmFs LCB4PSgwIC4gMSkKUHJvamVjdCBmdW5jdGlvbjogKHJhdGlvbmFsIDAgLiAxKQpDYWxsaW5nIHBy b2plY3QgcmF0aW9uYWwsIHg9KDAgLiAxKQpQcm9qZWN0IGZ1bmN0aW9uOiAocmF0aW9uYWwgMCAu IDEpCkNhbGxpbmcgcHJvamVjdCByYXRpb25hbCwgeD0oMCAuIDEpClByb2plY3QgZnVuY3Rpb246 IChyYXRpb25hbCAwIC4gMSkKQ2FsbGluZyBwcm9qZWN0IHJhdGlvbmFsLCB4PSgwIC4gMSkKUHJv amVjdCBmdW5jdGlvbjogMjQ3Njk3OTc5NTA1Mzc3My8yMjUxNzk5ODEzNjg1MjQ4CkNhbGxpbmcg cHJvamVjdCAnc2NoZW1lLW51bWJlcgpQcm9qZWN0IGZ1bmN0aW9uOiAocmF0aW9uYWwgMjQ3Njk3 OTc5NTA1Mzc3MyAuIDIyNTE3OTk4MTM2ODUyNDgpCkNhbGxpbmcgcHJvamVjdCByYXRpb25hbCwg eD0oMjQ3Njk3OTc5NTA1Mzc3MyAuIDIyNTE3OTk4MTM2ODUyNDgpClByb2plY3QgZnVuY3Rpb246 IDI0NzY5Nzk3OTUwNTM3NzMvMjI1MTc5OTgxMzY4NTI0OApDYWxsaW5nIHByb2plY3QgJ3NjaGVt ZS1udW1iZXIKUHJvamVjdCBmdW5jdGlvbjogKHJhdGlvbmFsIDI0NzY5Nzk3OTUwNTM3NzMgLiAy MjUxNzk5ODEzNjg1MjQ4KQpDYWxsaW5nIHByb2plY3QgcmF0aW9uYWwsIHg9KDI0NzY5Nzk3OTUw NTM3NzMgLiAyMjUxNzk5ODEzNjg1MjQ4KQpQcm9qZWN0IGZ1bmN0aW9uOiAocmF0aW9uYWwgMjQ3 Njk3OTc5NTA1Mzc3MyAuIDIyNTE3OTk4MTM2ODUyNDgpCkNhbGxpbmcgcHJvamVjdCByYXRpb25h bCwgeD0oMjQ3Njk3OTc5NTA1Mzc3MyAuIDIyNTE3OTk4MTM2ODUyNDgpClByb2plY3QgZnVuY3Rp b246IChyYXRpb25hbCAyNDc2OTc5Nzk1MDUzNzczIC4gMjI1MTc5OTgxMzY4NTI0OCkKQ2FsbGlu ZyBwcm9qZWN0IHJhdGlvbmFsLCB4PSgyNDc2OTc5Nzk1MDUzNzczIC4gMjI1MTc5OTgxMzY4NTI0 OCkKUHJvamVjdCBmdW5jdGlvbjogKHJhdGlvbmFsIDAgLiAxKQpDYWxsaW5nIHByb2plY3QgcmF0 aW9uYWwsIHg9KDAgLiAxKQpQcm9qZWN0IGZ1bmN0aW9uOiAocmF0aW9uYWwgMCAuIDEpCkNhbGxp bmcgcHJvamVjdCByYXRpb25hbCwgeD0oMCAuIDEpClByb2plY3QgZnVuY3Rpb246IChjb21wbGV4 IHJlY3Rhbmd1bGFyIChyYXRpb25hbCAyNDc2OTc5Nzk1MDUzNzczIC4gMjI1MTc5OTgxMzY4NTI0 OCkgLiAwKQpQcm9qZWN0IGZ1bmN0aW9uOiAocmF0aW9uYWwgMjQ3Njk3OTc5NTA1Mzc3MyAuIDIy NTE3OTk4MTM2ODUyNDgpCkNhbGxpbmcgcHJvamVjdCByYXRpb25hbCwgeD0oMjQ3Njk3OTc5NTA1 Mzc3MyAuIDIyNTE3OTk4MTM2ODUyNDgpClByb2plY3QgZnVuY3Rpb246IChyYXRpb25hbCAyNDc2 OTc5Nzk1MDUzNzczIC4gMjI1MTc5OTgxMzY4NTI0OCkKQ2FsbGluZyBwcm9qZWN0IHJhdGlvbmFs LCB4PSgyNDc2OTc5Nzk1MDUzNzczIC4gMjI1MTc5OTgxMzY4NTI0OCkKUHJvamVjdCBmdW5jdGlv bjogKHJhdGlvbmFsIDI0NzY5Nzk3OTUwNTM3NzMgLiAyMjUxNzk5ODEzNjg1MjQ4KQpDYWxsaW5n IHByb2plY3QgcmF0aW9uYWwsIHg9KDI0NzY5Nzk3OTUwNTM3NzMgLiAyMjUxNzk5ODEzNjg1MjQ4 KQpTdWJ0cmFjdGluZyBjb21wbGV4IG51bWJlcnM6IChyYXRpb25hbCAyNDc2OTc5Nzk1MDUzNzcz IC4gMjI1MTc5OTgxMzY4NTI0OCkKIytlbmRfZXhhbXBsZQoKQWxsIHJpZ2h0LCB0aGlzIHNlZW1z IHN1cGVyIGZyYWdpbGUsIGJ1dCBzb21laG93IHdvcmtzLgoKClRoaXMgcGllY2Ugd2lsbCBwcm9i YWJseSBhbHNvIGJlIHF1aXRlIGhhaXJ5LCBzbyBpdCBwcm9iYWJseSB3aWxsIGJlIGEgZ29vZApp ZGVhIHRvIHdyaXRlIGRvd24gdGhlIGNvZGUgZXhhbXBsZXMuCgojK2JlZ2luX3NyYyBzY2hlbWUg OmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQgcG9seW5vbWlhbC1wYWNrYWdlCiAgKGRlZmlu ZSAoaW5zdGFsbC1wb2x5bm9taWFsLXBhY2thZ2UpCiAgICAjOyhpbnRlcm5hbCBwcm9jZWR1cmVz KQogICAgIzsocmVwcmVzZW50YXRpb24gb2YgcG9seSkKICAgIChkZWZpbmUgKG1ha2UtcG9seSB2 YXJpYWJsZSB0ZXJtLWxpc3QpCiAgICAgIChjb25zIHZhcmlhYmxlIHRlcm0tbGlzdCkpCiAgICAo ZGVmaW5lICh2YXJpYWJsZSBwKSAoY2FyIHApKQogICAgKGRlZmluZSAodGVybS1saXN0IHApIChj ZHIgcCkpCgogICAgKGRlZmluZSAodmFyaWFibGU/IHgpIChzeW1ib2w/IHgpKQogICAgKGRlZmlu ZSAoc2FtZS12YXJpYWJsZT8gdjEgdjIpCiAgICAgIChhbmQgKHZhcmlhYmxlPyB2MSkgKHZhcmlh YmxlPyB2MikgKGVxPyB2MSB2MikpKQogICAgKGRlZmluZSAoPW51bWJlcj8gZXhwIG51bSkKICAg ICAgKGFuZCAobnVtYmVyPyBleHApICg9IGV4cCBudW0pKSkKCiAgICAjOyhyZXByZXNlbnRhdGlv biBvZiB0ZXJtcyBhbmQgdGVybSBsaXN0cykKCiAgICAgKGRlZmluZSAoYWRqb2luLXRlcm0gdGVy bSB0ZXJtLWxpc3QpCiAgICAgICAoaWYgKD16ZXJvPyAoY29lZmYgdGVybSkpCiAgICAgICAgICAg dGVybS1saXN0CiAgICAgICAgICAgKGNvbnMgdGVybSB0ZXJtLWxpc3QpKSkKCiAgICAgKGRlZmlu ZSAodGhlLWVtcHR5LXRlcm1saXN0KSAnKCkpCiAgICAgKGRlZmluZSAoZmlyc3QtdGVybSB0ZXJt LWxpc3QpIChjYXIgdGVybS1saXN0KSkKICAgICAoZGVmaW5lIChyZXN0LXRlcm1zIHRlcm0tbGlz dCkgKGNkciB0ZXJtLWxpc3QpKQogICAgIChkZWZpbmUgKGVtcHR5LXRlcm1saXN0PyB0ZXJtLWxp c3QpIChudWxsPyB0ZXJtLWxpc3QpKQoKICAgICAoZGVmaW5lIChtYWtlLXRlcm0gb3JkZXIgY29l ZmYpIChsaXN0IG9yZGVyIGNvZWZmKSkKICAgICAoZGVmaW5lIChvcmRlciB0ZXJtKSAoY2FyIHRl cm0pKQogICAgIChkZWZpbmUgKGNvZWZmIHRlcm0pIChjYWRyIHRlcm0pKQoKICAgICM7KGNvbnRp bnVlZCBvbiBuZXh0IHBhZ2UpCgogICAgIChkZWZpbmUgKGFkZC1wb2x5IHAxIHAyKQogICAgICAg KGlmIChzYW1lLXZhcmlhYmxlPyAodmFyaWFibGUgcDEpICh2YXJpYWJsZSBwMikpCiAgICAgICAg ICAgKG1ha2UtcG9seSAodmFyaWFibGUgcDEpCiAgICAgICAgICAgICAgICAgICAgICAoYWRkLXRl cm1zICh0ZXJtLWxpc3QgcDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXJt LWxpc3QgcDIpKSkKICAgICAgICAgICAoZXJyb3IgIlBvbHlzIG5vdCBpbiBzYW1lIHZhciAtLSBB REQtUE9MWSIKICAgICAgICAgICAgICAgICAgKGxpc3QgcDEgcDIpKSkpCgogICAgIChkZWZpbmUg KG11bC1wb2x5IHAxIHAyKQogICAgICAgKGlmIChzYW1lLXZhcmlhYmxlPyAodmFyaWFibGUgcDEp ICh2YXJpYWJsZSBwMikpCiAgICAgICAgICAgKG1ha2UtcG9seSAodmFyaWFibGUgcDEpCiAgICAg ICAgICAgICAgICAgICAgICAobXVsLXRlcm1zICh0ZXJtLWxpc3QgcDEpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh0ZXJtLWxpc3QgcDIpKSkKICAgICAgICAgICAoZXJyb3IgIlBv bHlzIG5vdCBpbiBzYW1lIHZhciAtLSBNVUwtUE9MWSIKICAgICAgICAgICAgICAgICAgKGxpc3Qg cDEgcDIpKSkpCgogICAgIzsoaW50ZXJmYWNlIHRvIHJlc3Qgb2YgdGhlIHN5c3RlbSkKICAgIChk ZWZpbmUgKHRhZyBwKSAoYXR0YWNoLXRhZyAncG9seW5vbWlhbCBwKSkKICAgIChwdXQgJ2FkZCAn KHBvbHlub21pYWwgcG9seW5vbWlhbCkKCSAobGFtYmRhIChwMSBwMikgKHRhZyAoYWRkLXBvbHkg cDEgcDIpKSkpCiAgICAocHV0ICdtdWwgJyhwb2x5bm9taWFsIHBvbHlub21pYWwpCgkgKGxhbWJk YSAocDEgcDIpICh0YWcgKG11bC1wb2x5IHAxIHAyKSkpKQogICAgKHB1dCAnbWFrZSAncG9seW5v bWlhbAoJIChsYW1iZGEgKHZhciB0ZXJtcykgKHRhZyAobWFrZS1wb2x5IHZhciB0ZXJtcykpKSkK ICAgICdkb25lKQoKICAgICAoZGVmaW5lIChhZGQtdGVybXMgTDEgTDIpCiAgICAgICAoY29uZCAo KGVtcHR5LXRlcm1saXN0PyBMMSkgTDIpCiAgICAgICAgICAgICAoKGVtcHR5LXRlcm1saXN0PyBM MikgTDEpCiAgICAgICAgICAgICAoZWxzZQogICAgICAgICAgICAgIChsZXQgKCh0MSAoZmlyc3Qt dGVybSBMMSkpICh0MiAoZmlyc3QtdGVybSBMMikpKQogICAgICAgICAgICAgICAgKGNvbmQgKCg+ IChvcmRlciB0MSkgKG9yZGVyIHQyKSkKICAgICAgICAgICAgICAgICAgICAgICAoYWRqb2luLXRl cm0KICAgICAgICAgICAgICAgICAgICAgICAgdDEgKGFkZC10ZXJtcyAocmVzdC10ZXJtcyBMMSkg TDIpKSkKICAgICAgICAgICAgICAgICAgICAgICgoPCAob3JkZXIgdDEpIChvcmRlciB0MikpCiAg ICAgICAgICAgICAgICAgICAgICAgKGFkam9pbi10ZXJtCiAgICAgICAgICAgICAgICAgICAgICAg IHQyIChhZGQtdGVybXMgTDEgKHJlc3QtdGVybXMgTDIpKSkpCiAgICAgICAgICAgICAgICAgICAg ICAoZWxzZQogICAgICAgICAgICAgICAgICAgICAgIChhZGpvaW4tdGVybQogICAgICAgICAgICAg ICAgICAgICAgICAobWFrZS10ZXJtIChvcmRlciB0MSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoYWRkIChjb2VmZiB0MSkgKGNvZWZmIHQyKSkpCiAgICAgICAgICAgICAgICAg ICAgICAgIChhZGQtdGVybXMgKHJlc3QtdGVybXMgTDEpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHJlc3QtdGVybXMgTDIpKSkpKSkpKSkKICAgICAoZGVmaW5lIChtdWwtdGVy bXMgTDEgTDIpCiAgICAgICAoaWYgKGVtcHR5LXRlcm1saXN0PyBMMSkKICAgICAgICAgICAodGhl LWVtcHR5LXRlcm1saXN0KQogICAgICAgICAgIChhZGQtdGVybXMgKG11bC10ZXJtLWJ5LWFsbC10 ZXJtcyAoZmlyc3QtdGVybSBMMSkgTDIpCiAgICAgICAgICAgICAgICAgICAgICAobXVsLXRlcm1z IChyZXN0LXRlcm1zIEwxKSBMMikpKSkKCiAgICAgKGRlZmluZSAobXVsLXRlcm0tYnktYWxsLXRl cm1zIHQxIEwpCiAgICAgICAoaWYgKGVtcHR5LXRlcm1saXN0PyBMKQogICAgICAgICAgICh0aGUt ZW1wdHktdGVybWxpc3QpCiAgICAgICAgICAgKGxldCAoKHQyIChmaXJzdC10ZXJtIEwpKSkKICAg ICAgICAgICAgIChhZGpvaW4tdGVybQogICAgICAgICAgICAgIChtYWtlLXRlcm0gKCsgKG9yZGVy IHQxKSAob3JkZXIgdDIpKQogICAgICAgICAgICAgICAgICAgICAgICAgKG11bCAoY29lZmYgdDEp IChjb2VmZiB0MikpKQogICAgICAgICAgICAgIChtdWwtdGVybS1ieS1hbGwtdGVybXMgdDEgKHJl c3QtdGVybXMgTCkpKSkpKQoKICAgICAoZGVmaW5lIChtYWtlLXBvbHlub21pYWwgdmFyIHRlcm1z KQogICAgICAgKChnZXQgJ21ha2UgJ3BvbHlub21pYWwpIHZhciB0ZXJtcykpCgoKIytlbmRfc3Jj CgojK1JFU1VMVFM6CgoqKiogRE9ORSBFeGVyY2lzZSAyLjg3IEdlbmVyYWxpemVkIHplcm8/CiAg ICBDTE9TRUQ6IFsyMDE5LTEwLTIxIE1vbiAxODoyNV0KClJlbWFyayAxOiBFdmVuIGJlZm9yZSBJ IHN0YXJ0ZWQgc29sdmluZyBhbnl0aGluZywgaXQgcmVxdWlyZWQgbWUgMi41IGhvdXJzIGluCm9y ZGVyIHRvIGp1c3QgbWFrZSB0aGUgZXhhbXBsZXMgcnVuIGFuZCBhZGQgYSBjb3VwbGUgb2Ygc2lt cGxlIHBvbHlub21pYWxzLgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3Vs dHMgb3V0cHV0CgkoZGVmaW5lIChhY2N1bXVsYXRlIG9wIGluaXRpYWwgc2VxdWVuY2UpCgkgIChp ZiAobnVsbD8gc2VxdWVuY2UpCgkgICAgICBpbml0aWFsCgkgICAgICAoYWNjdW11bGF0ZSBvcCAo b3AgaW5pdGlhbCAoY2FyIHNlcXVlbmNlKSkgKGNkciBzZXF1ZW5jZSkpKSkKCShkZWZpbmUgZmFs c2UgI2YpCgkoZGVmaW5lIHRydWUgICN0KQoJKGRlZmluZSAobWFrZS10YWJsZSkKCSAgKGxldCAo KGxvY2FsLXRhYmxlIChsaXN0ICcqdGFibGUqKSkpCgkgICAgKGRlZmluZSAobG9va3VwIGtleS0x IGtleS0yKQoJICAgICAgKGxldCAoKHN1YnRhYmxlIChhc3NvYyBrZXktMSAoY2RyIGxvY2FsLXRh YmxlKSkpKQoJCShpZiBzdWJ0YWJsZQoJCSAgICAobGV0ICgocmVjb3JkIChhc3NvYyBrZXktMiAo Y2RyIHN1YnRhYmxlKSkpKQoJCSAgICAgIChpZiByZWNvcmQKCQkJICAoY2RyIHJlY29yZCkKCQkJ ICBmYWxzZSkpCgkJICAgIGZhbHNlKSkpCgkgICAgKGRlZmluZSAoaW5zZXJ0ISBrZXktMSBrZXkt MiB2YWx1ZSkKCSAgICAgIChsZXQgKChzdWJ0YWJsZSAoYXNzb2Mga2V5LTEgKGNkciBsb2NhbC10 YWJsZSkpKSkKCQkoaWYgc3VidGFibGUKCQkgICAgKGxldCAoKHJlY29yZCAoYXNzb2Mga2V5LTIg KGNkciBzdWJ0YWJsZSkpKSkKCQkgICAgICAoaWYgcmVjb3JkCgkJCSAgKHNldC1jZHIhIHJlY29y ZCB2YWx1ZSkKCQkJICAoc2V0LWNkciEgc3VidGFibGUKCQkJCSAgICAoY29ucyAoY29ucyBrZXkt MiB2YWx1ZSkKCQkJCQkgIChjZHIgc3VidGFibGUpKSkpKQoJCSAgICAoc2V0LWNkciEgbG9jYWwt dGFibGUKCQkJICAgICAgKGNvbnMgKGxpc3Qga2V5LTEKCQkJCQkgIChjb25zIGtleS0yIHZhbHVl KSkKCQkJCSAgICAoY2RyIGxvY2FsLXRhYmxlKSkpKSkKCSAgICAgICdvaykKCSAgICAoZGVmaW5l IChkaXNwYXRjaCBtKQoJICAgICAgKGNvbmQgKChlcT8gbSAnbG9va3VwLXByb2MpIGxvb2t1cCkK CQkgICAgKChlcT8gbSAnaW5zZXJ0LXByb2MhKSBpbnNlcnQhKQoJCSAgICAoZWxzZSAoZXJyb3Ig IlVua25vd24gb3BlcmF0aW9uIC0tIFRBQkxFIiBtKSkpKQoJICAgIGRpc3BhdGNoKSkKCgkoZGVm aW5lIG9wZXJhdGlvbi10YWJsZSAobWFrZS10YWJsZSkpCgkoZGVmaW5lIGdldCAob3BlcmF0aW9u LXRhYmxlICdsb29rdXAtcHJvYykpCgkoZGVmaW5lIHB1dCAob3BlcmF0aW9uLXRhYmxlICdpbnNl cnQtcHJvYyEpKQoKCShkZWZpbmUgY29lcmNpb24tdGFibGUgKG1ha2UtdGFibGUpKQoJKGRlZmlu ZSBnZXQtY29lcmNpb24gKGNvZXJjaW9uLXRhYmxlICdsb29rdXAtcHJvYykpCgkoZGVmaW5lIHB1 dC1jb2VyY2lvbiAoY29lcmNpb24tdGFibGUgJ2luc2VydC1wcm9jISkpCgoJKGRlZmluZSAoYXR0 YWNoLXRhZyB0eXBlLXRhZyBjb250ZW50cykKCSAgKGNvbnMgdHlwZS10YWcgY29udGVudHMpKQoK CShkZWZpbmUgKHR5cGUtdGFnIGRhdHVtKQoJICAoY29uZCAoKHBhaXI/IGRhdHVtKSAoY2FyIGRh dHVtKSkKCQkoKGV4YWN0LWludGVnZXI/IGRhdHVtKSAnaW50ZWdlcikKCQkoKHJlYWw/IGRhdHVt KSAnc2NoZW1lLW51bWJlcikKCQkoZXJyb3IgIkJhZCB0YWdnZWQgZGF0dW0gLS0gVFlQRS1UQUci IGRhdHVtKSkpCgoJKGRlZmluZSAoY29udGVudHMgZGF0dW0pCgkgIChjb25kICgocGFpcj8gZGF0 dW0pIChjZHIgZGF0dW0pKQoJCSgoaW50ZWdlcj8gZGF0dW0pIGRhdHVtKQoJCSgocmVhbD8gZGF0 dW0pIGRhdHVtKQoJCShlbHNlIChlcnJvciAiQmFkIHRhZ2dlZCBkYXR1bSAtLSBDT05URU5UUyIg ZGF0dW0pKSkpCgoJKGRlZmluZSAoaW50ZWdlcj8geCkKCSAgKGVxPyAodHlwZS10YWcgeCkgJ2lu dGVnZXIpKQoJKGRlZmluZSAocmVjdGFuZ3VsYXI/IHopCgkgIChlcT8gKHR5cGUtdGFnIHopICdy ZWN0YW5ndWxhcikpCgoJKGRlZmluZSAocG9sYXI/IHopCgkgIChlcT8gKHR5cGUtdGFnIHopICdw b2xhcikpCgoKCShkZWZpbmUgKHJlYWwtcGFydCB6KSAoYXBwbHktZ2VuZXJpYyAncmVhbC1wYXJ0 IHopKQoJKGRlZmluZSAoaW1hZy1wYXJ0IHopIChhcHBseS1nZW5lcmljICdpbWFnLXBhcnQgeikp CgkoZGVmaW5lIChtYWduaXR1ZGUgeikgKGFwcGx5LWdlbmVyaWMgJ21hZ25pdHVkZSB6KSkKCShk ZWZpbmUgKGFuZ2xlIHopIChhcHBseS1nZW5lcmljICdhbmdsZSB6KSkKCgkoZGVmaW5lIChhZGQg eCB5KSAoYXBwbHktZ2VuZXJpYyAnYWRkIHggeSkpCgkoZGVmaW5lIChzdWIgeCB5KSAoYXBwbHkt Z2VuZXJpYyAnc3ViIHggeSkpCgkoZGVmaW5lIChtdWwgeCB5KSAoYXBwbHktZ2VuZXJpYyAnbXVs IHggeSkpCgkoZGVmaW5lIChkaXYgeCB5KSAoYXBwbHktZ2VuZXJpYyAnZGl2IHggeSkpCgoJKGRl ZmluZSAoZXF1PyB4IHkpCgkgIChhcHBseS1nZW5lcmljICdlcXU/IHggeSkpCgkoZGVmaW5lICh6 ZXJvPyB4KSAoYXBwbHktZ2VuZXJpYyAnemVybz8geCkpCgoJKGRlZmluZSAoZXhwIHggeSkgKGFw cGx5LWdlbmVyaWMgJ2V4cCB4IHkpKQoKCShkZWZpbmUgKGluc3RhbGwtc2NoZW1lLW51bWJlci1w YWNrYWdlKQoJICAoZGVmaW5lICh0YWcgeCkKCSAgICAoYXR0YWNoLXRhZyAnc2NoZW1lLW51bWJl ciB4KSkKCSAgKHB1dCAnYWRkICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJICAgICAg IChsYW1iZGEgKHggeSkgKHRhZyAoKyB4IHkpKSkpCgkgIChwdXQgJ3N1YiAnKHNjaGVtZS1udW1i ZXIgc2NoZW1lLW51bWJlcikKCSAgICAgICAobGFtYmRhICh4IHkpICh0YWcgKC0geCB5KSkpKQoJ ICAocHV0ICdtdWwgJyhzY2hlbWUtbnVtYmVyIHNjaGVtZS1udW1iZXIpCgkgICAgICAgKGxhbWJk YSAoeCB5KSAodGFnICgqIHggeSkpKSkKCSAgKHB1dCAnZGl2ICcoc2NoZW1lLW51bWJlciBzY2hl bWUtbnVtYmVyKQoJICAgICAgIChsYW1iZGEgKHggeSkgKHRhZyAoLyB4IHkpKSkpCgkgIChwdXQg J21ha2UgJ3NjaGVtZS1udW1iZXIKCSAgICAgICAobGFtYmRhICh4KSAodGFnIHgpKSkKCSAgKHB1 dCAnZXF1PyAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAgICAgICAobGFtYmRhICh4 IHkpICg9IHggeSkpKQoJICAocHV0ICd6ZXJvPyAnKHNjaGVtZS1udW1iZXIpCgkgICAgICAgKGxh bWJkYSAoeCkgKD0gMCB4KSkpCgkgIChwdXQgJ2V4cCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51 bWJlcikKCSAgICAgICAobGFtYmRhICh4IHkpICh0YWcgKGV4cHQgeCB5KSkpKQoJICAocHV0ICdw cm9qZWN0ICcoc2NoZW1lLW51bWJlcikKCSAgICAgICAobGFtYmRhICh4KQoJCSAobWFrZS1yYXRp b25hbAoJCSAgKGV4YWN0IChudW1lcmF0b3IgeCkpCgkJICAoZXhhY3QgKGRlbm9taW5hdG9yIHgp KSkpKQoJICAocHV0ICdzaW5lICcoc2NoZW1lLW51bWJlcikgc2luKQoJICAocHV0ICdjb3NpbmUg JyhzY2hlbWUtbnVtYmVyKSBjb3MpCgkgIChwdXQgJ3NxdWFyZS1yb290ICcoc2NoZW1lLW51bWJl cikgc3FydCkKCSAgKHB1dCAnYXJjdGFuZ2VudCAnKHNjaGVtZXItbnVtYmVyKSBhdGFuKQoJICAn ZG9uZSkKCiAgICAgIChkZWZpbmUgKHNpbmUgeCkgKGFwcGx5LWdlbmVyaWMgJ3NpbmUgeCkpCiAg ICAgIChkZWZpbmUgKGNvc2luZSB4KSAoYXBwbHktZ2VuZXJpYyAnY29zaW5lIHgpKQogICAgICAo ZGVmaW5lIChzcXVhcmUtcm9vdCB4KSAoYXBwbHktZ2VuZXJpYyAnc3F1YXJlLXJvb3QgeCkpCiAg ICAgIChkZWZpbmUgKGFyY3RhbmdlbnQgeCkgKGFwcGx5LWdlbmVyaWMgJ2FyY3RhbmdlbnQgeCkp CgoJKGRlZmluZSAobWFrZS1zY2hlbWUtbnVtYmVyIG4pCgkgICgoZ2V0ICdtYWtlICdzY2hlbWUt bnVtYmVyKSBuKSkKCgkoZGVmaW5lIChpbnN0YWxsLXJhdGlvbmFsLXBhY2thZ2UpCgkgIChkZWZp bmUgKG51bWVyIHgpIChjYXIgeCkpCgkgIChkZWZpbmUgKGRlbm9tIHgpIChjZHIgeCkpCgkgIChk ZWZpbmUgKG1ha2UtcmF0IG4gZCkKCSAgICAobGV0ICgoZyAoZ2NkIG4gZCkpKQoJICAgICAgKGNv bnMgKC8gbiBnKSAoLyBkIGcpKSkpCgkgIChkZWZpbmUgKGFkZC1yYXQgeCB5KQoJICAgIChtYWtl LXJhdCAoKyAoKiAobnVtZXIgeCkgKGRlbm9tIHkpKQoJCQkgKCogKG51bWVyIHkpIChkZW5vbSB4 KSkpCgkJICAgICAgKCogKGRlbm9tIHgpIChkZW5vbSB5KSkpKQoJICAoZGVmaW5lIChzdWItcmF0 IHggeSkKCSAgICAobWFrZS1yYXQgKC0gKCogKG51bWVyIHgpIChkZW5vbSB5KSkKCQkJICgqIChu dW1lciB5KSAoZGVub20geCkpKQoJCSAgICAgICgqIChkZW5vbSB4KSAoZGVub20geSkpKSkKCSAg KGRlZmluZSAobXVsLXJhdCB4IHkpCgkgICAgKG1ha2UtcmF0ICgqIChudW1lciB4KSAobnVtZXIg eSkpCgkJICAgICAgKCogKGRlbm9tIHgpIChkZW5vbSB5KSkpKQoJICAoZGVmaW5lIChkaXYtcmF0 IHggeSkKCSAgICAobWFrZS1yYXQgKCogKG51bWVyIHgpIChkZW5vbSB5KSkKCQkgICAgICAoKiAo ZGVub20geCkgKG51bWVyIHkpKSkpCgoJICAoZGVmaW5lICh0YWcgeCkgKGF0dGFjaC10YWcgJ3Jh dGlvbmFsIHgpKQoJICAocHV0ICdhZGQgJyhyYXRpb25hbCByYXRpb25hbCkKCSAgICAgICAobGFt YmRhICh4IHkpICh0YWcgKGFkZC1yYXQgeCB5KSkpKQoJICAocHV0ICdzdWIgJyhyYXRpb25hbCBy YXRpb25hbCkKCSAgICAgICAobGFtYmRhICh4IHkpICh0YWcgKHN1Yi1yYXQgeCB5KSkpKQoJICAo cHV0ICdtdWwgJyhyYXRpb25hbCByYXRpb25hbCkKCSAgICAgICAobGFtYmRhICh4IHkpICh0YWcg KG11bC1yYXQgeCB5KSkpKQoJICAocHV0ICdkaXYgJyhyYXRpb25hbCByYXRpb25hbCkKCSAgICAg ICAobGFtYmRhICh4IHkpICh0YWcgKGRpdi1yYXQgeCB5KSkpKQoKCSAgKHB1dCAnbWFrZSAncmF0 aW9uYWwKCSAgICAgICAobGFtYmRhIChuIGQpICh0YWcgKG1ha2UtcmF0IG4gZCkpKSkKCSAgKHB1 dCAnZXF1PyAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJICAgICAgIChsYW1iZGEgKHggeSkgKD0gMCAo bnVtZXIgKHN1Yi1yYXQgeCB5KSkpKSkKCSAgKHB1dCAnemVybz8gJyhyYXRpb25hbCkgKGxhbWJk YSAoeCkgKD0gMCAobnVtZXIgeCkpKSkKCSAgKHB1dCAncHJvamVjdCAnKHJhdGlvbmFsKSAobGFt YmRhICh4KSAKCQkJCSAgICAgICAoZXhhY3QgKHRydW5jYXRlICgvIChudW1lciB4KSAoZGVub20g eCkpKSkpKQoJICAocHV0ICd0by1yZWFsICcocmF0aW9uYWwpIChsYW1iZGEgKHgpICgvIChudW1l ciAoY29udGVudHMgeCkpIChkZW5vbSAoY29udGVudHMgeCkpKSkpCgkgICdkb25lKQoKCShkZWZp bmUgKG1ha2UtcmF0aW9uYWwgbiBkKQoJICAoKGdldCAnbWFrZSAncmF0aW9uYWwpIG4gZCkpCgoJ KGRlZmluZSAoaW5zdGFsbC1yZWN0YW5ndWxhci1wYWNrYWdlKQoKCSAgKGRlZmluZSAocmVhbC1w YXJ0IHopIChjYXIgeikpCgkgIChkZWZpbmUgKGltYWctcGFydCB6KSAoY2RyIHopKQoJICAoZGVm aW5lIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkgKGNvbnMgeCB5KSkKCSAgKGRlZmluZSAobWFn bml0dWRlIHopCgkgICAgKHNxdWFyZS1yb290IChhZGQgKHNxdWFyZSAocmVhbC1wYXJ0IHopKQoJ CQkgICAgICAoc3F1YXJlIChpbWFnLXBhcnQgeikpKSkpCgkgIChkZWZpbmUgKGFuZ2xlIHopCgkg ICAgKGFyY3RhbmdlbnQgKGltYWctcGFydCB6KSAocmVhbC1wYXJ0IHopKSkKCSAgKGRlZmluZSAo bWFrZS1mcm9tLW1hZy1hbmcgciBhKQoJICAgIChjb25zIChtdWwgciAoY29zaW5lIGEpKSAobXVs IHIgKHNpbmUgYSkpKSkKCgkgIChkZWZpbmUgKHRhZyB4KSAoYXR0YWNoLXRhZyAncmVjdGFuZ3Vs YXIgeCkpCgkgIChwdXQgJ3JlYWwtcGFydCAnKHJlY3Rhbmd1bGFyKSByZWFsLXBhcnQpCgkgIChw dXQgJ2ltYWctcGFydCAnKHJlY3Rhbmd1bGFyKSBpbWFnLXBhcnQpCgkgIChwdXQgJ21hZ25pdHVk ZSAnKHJlY3Rhbmd1bGFyKSBtYWduaXR1ZGUpCgkgIChwdXQgJ2FuZ2xlICcocmVjdGFuZ3VsYXIp IGFuZ2xlKQoJICAocHV0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdyZWN0YW5ndWxhcgoJICAgICAg IChsYW1iZGEgKHggeSkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpKSkpCgkgIChwdXQg J21ha2UtZnJvbS1tYWctYW5nICdyZWN0YW5ndWxhcgoJICAgICAgIChsYW1iZGEgKHIgYSkgKHRh ZyAobWFrZS1mcm9tLW1hZy1hbmcgciBhKSkpKQoJICAnZG9uZSkKCgkoZGVmaW5lIChpbnN0YWxs LXBvbGFyLXBhY2thZ2UpCgoJICAoZGVmaW5lIChtYWduaXR1ZGUgeikgKGNhciB6KSkKCSAgKGRl ZmluZSAoYW5nbGUgeikgKGNkciB6KSkKCSAgKGRlZmluZSAobWFrZS1mcm9tLW1hZy1hbmcgciBh KSAoY29ucyByIGEpKQoJICAoZGVmaW5lIChyZWFsLXBhcnQgeikKCSAgICAobXVsIChtYWduaXR1 ZGUgeikgKGNvc2luZSAoYW5nbGUgeikpKSkKCSAgKGRlZmluZSAoaW1hZy1wYXJ0IHopCgkgICAg KG11bCAobWFnbml0dWRlIHopIChzaW5lIChhbmdsZSB6KSkpKQoJICAoZGVmaW5lIChtYWtlLWZy b20tcmVhbC1pbWFnIHggeSkKCSAgICAoY29ucyAoc3F1YXJlLXJvb3QgKGFkZCAoc3F1YXJlIHgp IChzcXVhcmUgeSkpKQoJCSAgKGFyY3RhbmdlbnQgeSB4KSkpCgoJICAoZGVmaW5lICh0YWcgeCkg KGF0dGFjaC10YWcgJ3BvbGFyIHgpKQoJICAocHV0ICdyZWFsLXBhcnQgJyhwb2xhcikgcmVhbC1w YXJ0KQoJICAocHV0ICdpbWFnLXBhcnQgJyhwb2xhcikgaW1hZy1wYXJ0KQoJICAocHV0ICdtYWdu aXR1ZGUgJyhwb2xhcikgbWFnbml0dWRlKQoJICAocHV0ICdhbmdsZSAnKHBvbGFyKSBhbmdsZSkK CSAgKHB1dCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAncG9sYXIKCSAgICAgICAobGFtYmRhICh4IHkp ICh0YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSkpKQoJICAocHV0ICdtYWtlLWZyb20tbWFn LWFuZyAncG9sYXIKCSAgICAgICAobGFtYmRhIChyIGEpICh0YWcgKG1ha2UtZnJvbS1tYWctYW5n IHIgYSkpKSkKCSAgJ2RvbmUpCgoJKGRlZmluZSAoaW5zdGFsbC1jb21wbGV4LXBhY2thZ2UpCgkg IChkZWZpbmUgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KQoJICAgICgoZ2V0ICdtYWtlLWZyb20t cmVhbC1pbWFnICdyZWN0YW5ndWxhcikgeCB5KSkKCSAgKGRlZmluZSAobWFrZS1mcm9tLW1hZy1h bmcgciBhKQoJICAgICgoZ2V0ICdtYWtlLWZyb20tbWFnLWFuZyAncG9sYXIpIHIgYSkpCgkgIChk ZWZpbmUgKGFkZC1jb21wbGV4IHoxIHoyKQoJICAgIChtYWtlLWZyb20tcmVhbC1pbWFnIChhZGQg KHJlYWwtcGFydCB6MSkgKHJlYWwtcGFydCB6MikpCgkJCQkgKGFkZCAoaW1hZy1wYXJ0IHoxKSAo aW1hZy1wYXJ0IHoyKSkpKQoJICAoZGVmaW5lIChzdWItY29tcGxleCB6MSB6MikKCSAgICAobWFr ZS1mcm9tLXJlYWwtaW1hZyAoc3ViIChyZWFsLXBhcnQgejEpIChyZWFsLXBhcnQgejIpKQoJCQkJ IChzdWIgKGltYWctcGFydCB6MSkgKGltYWctcGFydCB6MikpKSkKCSAgKGRlZmluZSAobXVsLWNv bXBsZXggejEgejIpCgkgICAgKG1ha2UtZnJvbS1tYWctYW5nIChtdWwgKG1hZ25pdHVkZSB6MSkg KG1hZ25pdHVkZSB6MikpCgkJCSAgICAgICAoYWRkIChhbmdsZSB6MSkgKGFuZ2xlIHoyKSkpKQoJ ICAoZGVmaW5lIChkaXYtY29tcGxleCB6MSB6MikKCSAgICAobWFrZS1mcm9tLW1hZy1hbmcgKGRp diAobWFnbml0dWRlIHoxKSAobWFnbml0dWRlIHoyKSkKCQkJICAgICAgIChzdWIgKGFuZ2xlIHox KSAoYW5nbGUgejIpKSkpCgkgIChkZWZpbmUgKHRhZyB6KSAoYXR0YWNoLXRhZyAnY29tcGxleCB6 KSkKCSAgKHB1dCAnYWRkICcoY29tcGxleCBjb21wbGV4KQoJICAgICAgIChsYW1iZGEgKHoxIHoy KSAodGFnIChhZGQtY29tcGxleCB6MSB6MikpKSkKCSAgKHB1dCAnc3ViICcoY29tcGxleCBjb21w bGV4KQoJICAgICAgIChsYW1iZGEgKHoxIHoyKSAodGFnIChzdWItY29tcGxleCB6MSB6MikpKSkK CSAgKHB1dCAnbXVsICcoY29tcGxleCBjb21wbGV4KQoJICAgICAgIChsYW1iZGEgKHoxIHoyKSAo dGFnIChtdWwtY29tcGxleCB6MSB6MikpKSkKCSAgKHB1dCAnZGl2ICcoY29tcGxleCBjb21wbGV4 KQoJICAgICAgIChsYW1iZGEgKHoxIHoyKSAodGFnIChkaXYtY29tcGxleCB6MSB6MikpKSkKCSAg KHB1dCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAnY29tcGxleAoJICAgICAgIChsYW1iZGEgKHggeSkg KHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpKSkpCgkgIChwdXQgJ21ha2UtZnJvbS1tYWct YW5nICdjb21wbGV4CgkgICAgICAgKGxhbWJkYSAociBhKSAodGFnIChtYWtlLWZyb20tbWFnLWFu ZyByIGEpKSkpCgkgIChwdXQgJ2VxdT8gJyhjb21wbGV4IGNvbXBsZXgpCgkgICAgICAgKGxhbWJk YSAoeCB5KSAoYW5kICg9IDAgKHJlYWwtcGFydCAoc3ViLWNvbXBsZXggeCB5KSkpCgkJCQkgICg9 IDAgKGltYWctcGFydCAoc3ViLWNvbXBsZXggeCB5KSkpKSkpCgkgIChwdXQgJ2VxdT8gJyhyZWN0 YW5ndWxhciBwb2xhcikgZXF1PykKCSAgKHB1dCAnZXF1PyAnKHBvbGFyIHJlY3Rhbmd1bGFyKSBl cXU/KQoJICAocHV0ICd6ZXJvPyAnKGNvbXBsZXgpCgkgICAgICAgKGxhbWJkYSAoeCkgKGVxdT8g KHRhZyB4KSAodGFnIChtYWtlLWZyb20tcmVhbC1pbWFnIDAgMCkpKSkpCgkgIChwdXQgJ3Byb2pl Y3QgJyhjb21wbGV4KSAobGFtYmRhICh6KSAocmVhbC1wYXJ0IHopKSkKCSAgJ2RvbmUpCgoJKGRl ZmluZSAobWFrZS1jb21wbGV4LWZyb20tcmVhbC1pbWFnIHggeSkKCSAgKChnZXQgJ21ha2UtZnJv bS1yZWFsLWltYWcgJ2NvbXBsZXgpIHggeSkpCgoJKGRlZmluZSAobWFrZS1jb21wbGV4LWZyb20t bWFnLWFuZyByIGEpCgkgICgoZ2V0ICdtYWtlLWZyb20tbWFnLWFuZyAnY29tcGxleCkgciBhKSkK CgkoaW5zdGFsbC1yZWN0YW5ndWxhci1wYWNrYWdlKQoJKGluc3RhbGwtcG9sYXItcGFja2FnZSkK CShpbnN0YWxsLXJhdGlvbmFsLXBhY2thZ2UpCgkoaW5zdGFsbC1zY2hlbWUtbnVtYmVyLXBhY2th Z2UpCgkoaW5zdGFsbC1jb21wbGV4LXBhY2thZ2UpCgoJKHB1dCAncmVhbC1wYXJ0ICcoY29tcGxl eCkgcmVhbC1wYXJ0KQoJKHB1dCAnaW1hZy1wYXJ0ICcoY29tcGxleCkgaW1hZy1wYXJ0KQoJKHB1 dCAnbWFnbml0dWRlICcoY29tcGxleCkgbWFnbml0dWRlKQoJKHB1dCAnYW5nbGUgJyhjb21wbGV4 KSBhbmdsZSkKCgkoZGVmaW5lIChhcHBseS1nZW5lcmljIG9wIC4gYXJncykKCSAgKGRlZmluZSAo YWxsLWFyZ3R5cGVzLXNhbWU/IC4gYXJncykKCSAgICAobGV0ICgodHlwZSAodHlwZS10YWcgKGNh ciBhcmdzKSkpKQoJICAgICAgKGFjY3VtdWxhdGUgKGxhbWJkYSAoeCB5KSAoYW5kIHggeSkpICN0 IChtYXAgKGxhbWJkYSAoeCkgKGVxPyB0eXBlIHgpKSBhcmdzKSkpKQoJICAoZGVmaW5lIChjb2Vy Y2lvbi1pZi1leGlzdHM/IHR5cGUgYXJnLXRhZ3MpCgkgICAgKGxldCAoKGNvZXJjaW9uLWxpc3Qg KG1hcCAobGFtYmRhICh4KSAKCQkJCQkoaWYgKGVxPyB0eXBlIHgpCgkJCQkJICAgIGlkZW50aXR5 CgkJCQkJICAgIChnZXQtY29lcmNpb24geCB0eXBlKSkpIGFyZy10YWdzKSkpCgkgICAgICAoaWYg KGFjY3VtdWxhdGUgKGxhbWJkYSAoeCB5KSAoYW5kIHggeSkpICN0IGNvZXJjaW9uLWxpc3QpCgkJ ICBjb2VyY2lvbi1saXN0CgkJICAjZikpKQoJICAoZHJvcCAobGV0KiAoKHR5cGUtdGFncyAobWFw IHR5cGUtdGFnIGFyZ3MpKQoJCSAgICAgICAocHJvYyAoZ2V0IG9wIHR5cGUtdGFncykpKQoJCSAg KGNvbmQgKHByb2MgKGFwcGx5IHByb2MgKG1hcCBjb250ZW50cyBhcmdzKSkpCgkJCSgoPSAxIChs ZW5ndGggYXJncykpCgkJCSAoc2hvdyAjdCAiTm8gcHJvYyBmb3VuZCBmb3Igb3A9IiBvcCAiLCB0 eXBlLXRhZ3M9IiB0eXBlLXRhZ3MgIlxuIikKCQkJIChhcHBseS1nZW5lcmljIG9wIChyYWlzZS10 eXBlIChjYXIgYXJncykpKSkKCQkJKCg9IDIgKGxlbmd0aCBhcmdzKSkKCQkJIChpZiAodHlwZTE8 PXR5cGUyPyAoY2FyIHR5cGUtdGFncykgKGNhZHIgdHlwZS10YWdzKSkKCQkJICAgICAoYXBwbHkt Z2VuZXJpYyBvcCAocmFpc2UtdHlwZSAoY2FyIGFyZ3MpKSAoY2FkciBhcmdzKSkKCQkJICAgICAo YXBwbHktZ2VuZXJpYyBvcCAoY2FyIGFyZ3MpICAocmFpc2UtdHlwZSAoY2FkciBhcmdzKSkpKSkK CQkJKChhbmQgKD49IChsZW5ndGggYXJncykgMikgKG5vdCAoYWxsLWFyZ3R5cGVzLXNhbWU/IGFy Z3MpKSkKCQkJIChsZXQgdHlwZXMtbG9vcCAoKHR5cGVzIHR5cGUtdGFncykpCgkJCSAgIChsZXQg KChsaXN0LW9mLWNvZXJjaW9uLWZ1bmN0aW9ucwoJCQkJICAoY29lcmNpb24taWYtZXhpc3RzPyAo Y2FyIHR5cGVzKSB0eXBlLXRhZ3MpKSkKCQkJICAgICAoaWYgbGlzdC1vZi1jb2VyY2lvbi1mdW5j dGlvbnMKCQkJCSAoYXBwbHkgYXBwbHktZ2VuZXJpYyAoY29ucyBvcCAobWFwIChsYW1iZGEgKGZ1 biBhcmcpIChmdW4gYXJnKSkKCQkJCQkJCQkgICAgbGlzdC1vZi1jb2VyY2lvbi1mdW5jdGlvbnMK CQkJCQkJCQkgICAgYXJncykpKQoJCQkJIChpZiAobm90IChudWxsPyAoY2RyIHR5cGVzKSkpCgkJ CQkgICAgICh0eXBlcy1sb29wIChjZHIgdHlwZXMpKQoJCQkJICAgICAoZXJyb3IgImFwcGx5LWdl bmVyaWM6RXZlbiBjb2VyY2lvbnMgZmFpbGVkLiBObyBtZXRob2QgZm9yIHRoZXNlIHR5cGVzLiIp KSkpKSkKCQkJKGVsc2UgKGVycm9yICJhcHBseS1nZW5lcmljOk5vIG1ldGhvZCBmb3IgdGhlc2Ug dHlwZXMiCgkJCQkgICAgIChsaXN0IG9wIHR5cGUtdGFncykpKSkpKSkKCShkZWZpbmUgKHNjaGVt ZS1udW1iZXItPmNvbXBsZXggbikKCSAgKG1ha2UtY29tcGxleC1mcm9tLXJlYWwtaW1hZyAoY29u dGVudHMgbikgMCkpCgkocHV0LWNvZXJjaW9uICdzY2hlbWUtbnVtYmVyCgkJICAgICAgJ2NvbXBs ZXgKCQkgICAgICBzY2hlbWUtbnVtYmVyLT5jb21wbGV4KQoKCShwdXQgJ21heDMtbWFnbml0dWRl ICcoY29tcGxleCBjb21wbGV4IGNvbXBsZXgpIChsYW1iZGEgKHoxIHoyIHozKQoJCQkJCQkJICAo bWF4IChtYWduaXR1ZGUgejEpIChtYWduaXR1ZGUgejIpIChtYWduaXR1ZGUgejMpKSkpCgkoZGVm aW5lIChtYXgzLW1hZ25pdHVkZSB4MSB4MiB4MykgKGFwcGx5LWdlbmVyaWMgJ21heDMtbWFnbml0 dWRlIHgxIHgyIHgzKSkKCShkZWZpbmUgKGlkZW50aXR5IHgpIHgpCgoJKGRlZmluZSBudW1lcmlj LXRvd2VyIChsaXN0ICdpbnRlZ2VyICdyYXRpb25hbCAnc2NoZW1lLW51bWJlciAnY29tcGxleCkp CgoJKGRlZmluZSAoaGlnaGVyLXR5cGUgeCkKCSAgKGRlZmluZSAoZmluZC1oaWdoZXItdHlwZSB4 IHR5cGVzKQoJICAgIChjb25kICgob3IgKG51bGw/IHR5cGVzKSAobnVsbD8gKGNkciB0eXBlcykp KSAoZXJyb3IgIk5vIHR5cGUgaGlnaGVyIHRoYW4gZ2l2ZW4iIHgpKQoJCSAgKChlcT8geCAoY2Fy IHR5cGVzKSkgKGNhZHIgdHlwZXMpKQoJCSAgKGVsc2UgKGZpbmQtaGlnaGVyLXR5cGUgeCAoY2Ry IHR5cGVzKSkpKSkKCSAgKGZpbmQtaGlnaGVyLXR5cGUgeCBudW1lcmljLXRvd2VyKSkKCgkoZGVm aW5lICh0eXBlMTw9dHlwZTI/IHR5cGUxIHR5cGUyKQoJICAoaWYgKG5vdCAobWVtcSB0eXBlMSBu dW1lcmljLXRvd2VyKSkKCSAgICAgIChlcnJvciAiVHlwZSAxIG5vdCBpbiB0aGUgbnVtZXJpYyB0 b3dlciIpKQoJICAoaWYgKG5vdCAobWVtcSB0eXBlMiBudW1lcmljLXRvd2VyKSkKCSAgICAgIChl cnJvciAiVHlwZSAyIG5vdCBpbiB0aGUgbnVtZXJpYyB0b3dlciIpKQoJICAobGV0IGxvb3AgKCh0 eXBlcyBudW1lcmljLXRvd2VyKSkKCSAgICAoY29uZCAoKG51bGw/IHR5cGVzKSAoZXJyb3IgIlR5 cGUgMSBhbmQgdHlwZSAyIGFyZSBpbmNvbXBhcmFibGUiIHR5cGUxIHR5cGUyKSkKCQkgICgoZXE/ IChjYXIgdHlwZXMpIHR5cGUxKSAjdCkKCQkgICgoZXE/IChjYXIgdHlwZXMpIHR5cGUyKSAjZikK CQkgIChlbHNlIChsb29wIChjZHIgdHlwZXMpKSkpKSkKCgkoZGVmaW5lIChpbnRlZ2VyLT5yYXRp b25hbCB4KQoJICAobWFrZS1yYXRpb25hbCB4IDEpKQoKCShkZWZpbmUgKHJhdGlvbmFsLT5zY2hl bWUtbnVtYmVyIHgpCgkgIChtYWtlLXNjaGVtZS1udW1iZXIgKChnZXQgJ3RvLXJlYWwgJyhyYXRp b25hbCkpIHgpKSkKCShwdXQtY29lcmNpb24gJ2ludGVnZXIgJ3JhdGlvbmFsIGludGVnZXItPnJh dGlvbmFsKQoJKHB1dC1jb2VyY2lvbiAncmF0aW9uYWwgJ3NjaGVtZS1udW1iZXIgcmF0aW9uYWwt PnNjaGVtZS1udW1iZXIpCgoJKGRlZmluZSAocmFpc2UtdHlwZSB4KQoJICAobGV0ICgoY29udmVy dGVyIChnZXQtY29lcmNpb24gKHR5cGUtdGFnIHgpIChoaWdoZXItdHlwZSAodHlwZS10YWcgeCkp KSkpCgkgICAgKGlmIGNvbnZlcnRlcgoJCShjb252ZXJ0ZXIgeCkKCQkoZXJyb3IgIk5vIGNvZXJj aW9uIGZvdW5kIGZvciB4IiAodHlwZS10YWcgeCkgeCkpKSkKCgoJKGRlZmluZSAocmVtYWluZGVy LWludGVnZXIgYSBiKQoJICAod2hlbiAob3IgKG5vdCAoaW50ZWdlcj8gYSkpIChub3QgKGludGVn ZXI/IGIpKSkKCSAgICAoZXJyb3IgIkFyZ3VtZW50cyBtdXN0IGJlIGludGVnZXJzIiBhIGIpKQoJ ICAocmVtYWluZGVyIGEgYikpCgoJKHB1dCAncmVtYWluZGVyICcoaW50ZWdlciBpbnRlZ2VyKSBy ZW1haW5kZXItaW50ZWdlcikKCShkZWZpbmUgKHJlbWFpbmRlci1nZW5lcmFsaXplZCBhIGIpIChh cHBseS1nZW5lcmljICdyZW1haW5kZXIgYSBiKSkKCiAgICAgIChkZWZpbmUgKHByb2plY3Qgb2Jq KQoJKGFwcGx5LWdlbmVyaWMgJ3Byb2plY3Qgb2JqKSkKICAgICAgKGRlZmluZSAoZHJvcHBhYmxl PyBvYmopCgkoY29uZCAoKG5vdCAobWVtcSAodHlwZS10YWcgb2JqKSBudW1lcmljLXRvd2VyKSkg I2YpCgkgICAgICAoKGVxPyAodHlwZS10YWcgb2JqKSAoY2FyIG51bWVyaWMtdG93ZXIpKSAjZikK CSAgICAgICgoZXF1PyBvYmogKHJhaXNlLXR5cGUgKHByb2plY3Qgb2JqKSkpICN0KQoJICAgICAg KGVsc2UgI2YpKSkKICAgICAgKGRlZmluZSAoZHJvcCBvYmopIAoJICAgKGlmIChkcm9wcGFibGU/ IG9iaikKCSAgICAgICAoZHJvcCAocHJvamVjdCBvYmopKQoJICAgICAgIG9iaikpCgoJKHNob3cg I3QgIlRlc3QgMTogU3VidHJhY3RpbmcgY29tcGxleCBudW1iZXJzOiAiCgkgICAgICAoc3ViCgkg ICAgICAgKG1ha2UtY29tcGxleC1mcm9tLXJlYWwtaW1hZyAxLjEgMikKCSAgICAgICAobWFrZS1j b21wbGV4LWZyb20tcmVhbC1pbWFnIDAgMikpICJcbiIpCgoKCShkZWZpbmUgKGluc3RhbGwtcG9s eW5vbWlhbC1wYWNrYWdlKQoJICAjOyhpbnRlcm5hbCBwcm9jZWR1cmVzKQoJICAjOyhyZXByZXNl bnRhdGlvbiBvZiBwb2x5KQoJICAoZGVmaW5lIChtYWtlLXBvbHkgdmFyaWFibGUgdGVybS1saXN0 KQoJICAgIChjb25zIHZhcmlhYmxlIHRlcm0tbGlzdCkpCgkgIChkZWZpbmUgKHZhcmlhYmxlIHAp IChjYXIgcCkpCgkgIChkZWZpbmUgKHRlcm0tbGlzdCBwKQoJICAgIChjZHIgcCkpCgoJICAoZGVm aW5lICh2YXJpYWJsZT8geCkgKHN5bWJvbD8geCkpCgkgIChkZWZpbmUgKHNhbWUtdmFyaWFibGU/ IHYxIHYyKQoJICAgIChhbmQgKHZhcmlhYmxlPyB2MSkgKHZhcmlhYmxlPyB2MikgKGVxPyB2MSB2 MikpKQoJICAoZGVmaW5lICg9bnVtYmVyPyBleHAgbnVtKQoJICAgIChhbmQgKG51bWJlcj8gZXhw KSAoPSBleHAgbnVtKSkpCgoJICAjOyhyZXByZXNlbnRhdGlvbiBvZiB0ZXJtcyBhbmQgdGVybSBs aXN0cykKCgkgICAoZGVmaW5lIChhZGpvaW4tdGVybSB0ZXJtIHRlcm0tbGlzdCkKCSAgICAgKGlm ICh6ZXJvPyAoY29lZmYgdGVybSkpCgkJIHRlcm0tbGlzdAoJCSAoY29ucyB0ZXJtIHRlcm0tbGlz dCkpKQoKCSAgIChkZWZpbmUgKHRoZS1lbXB0eS10ZXJtbGlzdCkgJygpKQoJICAgKGRlZmluZSAo Zmlyc3QtdGVybSB0ZXJtLWxpc3QpIChjYXIgdGVybS1saXN0KSkKCSAgIChkZWZpbmUgKHJlc3Qt dGVybXMgdGVybS1saXN0KSAoY2RyIHRlcm0tbGlzdCkpCgkgICAoZGVmaW5lIChlbXB0eS10ZXJt bGlzdD8gdGVybS1saXN0KSAobnVsbD8gdGVybS1saXN0KSkKCgkgICAoZGVmaW5lIChtYWtlLXRl cm0gb3JkZXIgY29lZmYpIChsaXN0IG9yZGVyIGNvZWZmKSkKCSAgIChkZWZpbmUgKG9yZGVyIHRl cm0pIChjYXIgdGVybSkpCgkgICAoZGVmaW5lIChjb2VmZiB0ZXJtKSAoY2FkciB0ZXJtKSkKCgkg ICM7KGNvbnRpbnVlZCBvbiBuZXh0IHBhZ2UpCgoJICAgKGRlZmluZSAoYWRkLXBvbHkgcDEgcDIp CgkgICAgIChpZiAoc2FtZS12YXJpYWJsZT8gKHZhcmlhYmxlIHAxKSAodmFyaWFibGUgcDIpKQoJ CSAobWFrZS1wb2x5ICh2YXJpYWJsZSBwMSkKCQkJICAgIChhZGQtdGVybXMgKHRlcm0tbGlzdCBw MSkKCQkJCSAgICAgICAodGVybS1saXN0IHAyKSkpCgkJIChlcnJvciAiUG9seXMgbm90IGluIHNh bWUgdmFyIC0tIEFERC1QT0xZIgoJCQkobGlzdCBwMSBwMikpKSkKCSAgIChkZWZpbmUgKGFkZC10 ZXJtcyBMMSBMMikKCSAgICAgKGNvbmQgKChlbXB0eS10ZXJtbGlzdD8gTDEpIEwyKQoJCSAgICgo ZW1wdHktdGVybWxpc3Q/IEwyKSBMMSkKCQkgICAoZWxzZQoJCSAgICAobGV0ICgodDEgKGZpcnN0 LXRlcm0gTDEpKSAodDIgKGZpcnN0LXRlcm0gTDIpKSkKCQkgICAgICAoY29uZCAoKD4gKG9yZGVy IHQxKSAob3JkZXIgdDIpKQoJCQkgICAgIChhZGpvaW4tdGVybQoJCQkgICAgICB0MSAoYWRkLXRl cm1zIChyZXN0LXRlcm1zIEwxKSBMMikpKQoJCQkgICAgKCg8IChvcmRlciB0MSkgKG9yZGVyIHQy KSkKCQkJICAgICAoYWRqb2luLXRlcm0KCQkJICAgICAgdDIgKGFkZC10ZXJtcyBMMSAocmVzdC10 ZXJtcyBMMikpKSkKCQkJICAgIChlbHNlCgkJCSAgICAgKGFkam9pbi10ZXJtCgkJCSAgICAgICht YWtlLXRlcm0gKG9yZGVyIHQxKQoJCQkJCSAoYWRkIChjb2VmZiB0MSkgKGNvZWZmIHQyKSkpCgkJ CSAgICAgIChhZGQtdGVybXMgKHJlc3QtdGVybXMgTDEpCgkJCQkJIChyZXN0LXRlcm1zIEwyKSkp KSkpKSkpCgoJICAgKGRlZmluZSAobXVsLXBvbHkgcDEgcDIpCgkgICAgIChpZiAoc2FtZS12YXJp YWJsZT8gKHZhcmlhYmxlIHAxKSAodmFyaWFibGUgcDIpKQoJCSAobWFrZS1wb2x5ICh2YXJpYWJs ZSBwMSkKCQkJICAgIChtdWwtdGVybXMgKHRlcm0tbGlzdCBwMSkKCQkJCSAgICAgICAodGVybS1s aXN0IHAyKSkpCgkJIChlcnJvciAiUG9seXMgbm90IGluIHNhbWUgdmFyIC0tIE1VTC1QT0xZIgoJ CQkobGlzdCBwMSBwMikpKSkKCSAgIChkZWZpbmUgKG11bC10ZXJtcyBMMSBMMikKCSAgICAgKGlm IChlbXB0eS10ZXJtbGlzdD8gTDEpCgkJICh0aGUtZW1wdHktdGVybWxpc3QpCgkJIChhZGQtdGVy bXMgKG11bC10ZXJtLWJ5LWFsbC10ZXJtcyAoZmlyc3QtdGVybSBMMSkgTDIpCgkJCSAgICAobXVs LXRlcm1zIChyZXN0LXRlcm1zIEwxKSBMMikpKSkKCgkgICAoZGVmaW5lIChtdWwtdGVybS1ieS1h bGwtdGVybXMgdDEgTCkKCSAgICAgKGlmIChlbXB0eS10ZXJtbGlzdD8gTCkKCQkgKHRoZS1lbXB0 eS10ZXJtbGlzdCkKCQkgKGxldCAoKHQyIChmaXJzdC10ZXJtIEwpKSkKCQkgICAoYWRqb2luLXRl cm0KCQkgICAgKG1ha2UtdGVybSAoKyAob3JkZXIgdDEpIChvcmRlciB0MikpCgkJCSAgICAgICAo bXVsIChjb2VmZiB0MSkgKGNvZWZmIHQyKSkpCgkJICAgIChtdWwtdGVybS1ieS1hbGwtdGVybXMg dDEgKHJlc3QtdGVybXMgTCkpKSkpKQoJICAoZGVmaW5lICh6ZXJvLXBvbHk/IHBvbHkpCgkgICAg KHNob3cgI3QgInplcm8tcG9seT86IHBvbHk9IiBwb2x5ICJcbiIpCgkgICAgKGNvbmQgKChlbXB0 eS10ZXJtbGlzdD8gKHRlcm0tbGlzdCBwb2x5KSkgI3QpCgkJICAoKGV2ZXJ5IChsYW1iZGEgKHgp IChhcHBseS1nZW5lcmljICd6ZXJvPyAoY29lZmYgeCkpKSAodGVybS1saXN0IHBvbHkpKSAjdCkK CQkgIChlbHNlICNmKSkpCgkgICM7KGludGVyZmFjZSB0byByZXN0IG9mIHRoZSBzeXN0ZW0pCgkg IChkZWZpbmUgKHRhZyBwKSAoYXR0YWNoLXRhZyAncG9seW5vbWlhbCBwKSkKCSAgKHB1dCAnYWRk ICcocG9seW5vbWlhbCBwb2x5bm9taWFsKQoJICAgICAgIChsYW1iZGEgKHAxIHAyKSAodGFnIChh ZGQtcG9seSBwMSBwMikpKSkKCSAgKHB1dCAnbXVsICcocG9seW5vbWlhbCBwb2x5bm9taWFsKQoJ ICAgICAgIChsYW1iZGEgKHAxIHAyKSAodGFnIChtdWwtcG9seSBwMSBwMikpKSkKCSAgKHB1dCAn bWFrZSAncG9seW5vbWlhbAoJICAgICAgIChsYW1iZGEgKHZhciB0ZXJtcykgKHRhZyAobWFrZS1w b2x5IHZhciB0ZXJtcykpKSkKCSAgKHB1dCAnemVybz8gJyhwb2x5bm9taWFsKSB6ZXJvLXBvbHk/ KQoJICAnZG9uZSkKICAgIChpbnN0YWxsLXBvbHlub21pYWwtcGFja2FnZSkKCgkgICAoZGVmaW5l IChtYWtlLXBvbHlub21pYWwgdmFyIHRlcm1zKQoJICAgICAoKGdldCAnbWFrZSAncG9seW5vbWlh bCkgdmFyIHRlcm1zKSkKICAgICAgKHNob3cgI3QgIlRlc3QgMjogTWFraW5nIHBvbHlub21pYWxz OiAiIAoJICAgIChtYWtlLXBvbHlub21pYWwgJ3ggKGxpc3QgKGxpc3QgNSAxKSAobGlzdCA0IDIp KSkgIlxuIikKICAgICAgKHNob3cgI3QgIlRlc3QgMzogQWRkaW5nIHBvbHlub21pYWxzOiAiCgkg ICAgKGFkZCAobWFrZS1wb2x5bm9taWFsICd4ICcoKDUgMSkgKDQgMikgKDAgMSkpKQoJCSAobWFr ZS1wb2x5bm9taWFsICd4ICcoKDUgMSkpKSkgIlxuIikKICAgICAgKHNob3cgI3QgIlRlc3QgNDog WmVybz86ICIgKHplcm8/IChtYWtlLXBvbHlub21pYWwgJ3ggJygoNSAwKSAoMyAxKSkpKSAiXG4i KQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiBUZXN0IDE6IFN1YnRyYWN0aW5nIGNvbXBsZXggbnVt YmVyczogKHJhdGlvbmFsIDI0NzY5Nzk3OTUwNTM3NzMgLiAyMjUxNzk5ODEzNjg1MjQ4KQo6IFRl c3QgMjogTWFraW5nIHBvbHlub21pYWxzOiAocG9seW5vbWlhbCB4ICg1IDEpICg0IDIpKQo6IE5v IHByb2MgZm91bmQgZm9yIG9wPXplcm8/LCB0eXBlLXRhZ3M9KGludGVnZXIpCjogVGVzdCAzOiBB ZGRpbmcgcG9seW5vbWlhbHM6IChwb2x5bm9taWFsIHggKDUgMikgKDQgMikgKDAgMSkpCjogemVy by1wb2x5PzogcG9seT0oeCAoNSAwKSAoMyAxKSkKOiBObyBwcm9jIGZvdW5kIGZvciBvcD16ZXJv PywgdHlwZS10YWdzPShpbnRlZ2VyKQo6IE5vIHByb2MgZm91bmQgZm9yIG9wPXplcm8/LCB0eXBl LXRhZ3M9KGludGVnZXIpCjogVGVzdCA0OiBaZXJvPzogI2YKCkV2ZW4gdGhvdWdoIG1ha2luZyB0 aGUgZXhhbXBsZSBjb2RlIHR1cm5lZCBvdXQgdG8gYmUgYSBodWdlIHBhaW4sIGFjdHVhbGx5CnNv bHZpbmcgdGhlIHB1enpsZSB3YXNuJ3QgdGhhdCBoYXJkLiBKdXN0IGFkZGVkIGEgcHJlZGljYXRl IHRvIGNoZWNrIGlmIGV2ZXJ5CmNvZWZmaWNpZW50IG9mIGEgcG9seW5vbWlhbCBpcyB6ZXJvLgoK KioqIERPTkUgRXhlcmNpc2UgMi44OCBTdWJ0cmFjdGlvbiBvZiBwb2x5bm9taWFscwogICAgQ0xP U0VEOiBbMjAxOS0xMC0yMiBUdWUgMDk6NTVdCgpJIGFtIGNvcHlpbmcgdGhlIGNvZGUgYWdhaW4u IFdlIHdvdWxkIG5lZWQgdG8gaW1wbGVtZW50IGEgZ2VuZXJhbGl6ZWQKc3VidHJhY3Rpb24gZnVu Y3Rpb24uCgpUaGlzIHRhc2sgdHVybmVkIG91dCB0byBiZSBzdXBlci1lYXN5LgoKIytiZWdpbl9z cmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CiAgKGRlZmluZSAoYWNjdW11 bGF0ZSBvcCBpbml0aWFsIHNlcXVlbmNlKQogICAgKGlmIChudWxsPyBzZXF1ZW5jZSkKCWluaXRp YWwKCShhY2N1bXVsYXRlIG9wIChvcCBpbml0aWFsIChjYXIgc2VxdWVuY2UpKSAoY2RyIHNlcXVl bmNlKSkpKQogIChkZWZpbmUgZmFsc2UgI2YpCiAgKGRlZmluZSB0cnVlICAjdCkKICAoZGVmaW5l IChtYWtlLXRhYmxlKQogICAgKGxldCAoKGxvY2FsLXRhYmxlIChsaXN0ICcqdGFibGUqKSkpCiAg ICAgIChkZWZpbmUgKGxvb2t1cCBrZXktMSBrZXktMikKCShsZXQgKChzdWJ0YWJsZSAoYXNzb2Mg a2V5LTEgKGNkciBsb2NhbC10YWJsZSkpKSkKCSAgKGlmIHN1YnRhYmxlCgkgICAgICAobGV0ICgo cmVjb3JkIChhc3NvYyBrZXktMiAoY2RyIHN1YnRhYmxlKSkpKQoJCShpZiByZWNvcmQKCQkgICAg KGNkciByZWNvcmQpCgkJICAgIGZhbHNlKSkKCSAgICAgIGZhbHNlKSkpCiAgICAgIChkZWZpbmUg KGluc2VydCEga2V5LTEga2V5LTIgdmFsdWUpCgkobGV0ICgoc3VidGFibGUgKGFzc29jIGtleS0x IChjZHIgbG9jYWwtdGFibGUpKSkpCgkgIChpZiBzdWJ0YWJsZQoJICAgICAgKGxldCAoKHJlY29y ZCAoYXNzb2Mga2V5LTIgKGNkciBzdWJ0YWJsZSkpKSkKCQkoaWYgcmVjb3JkCgkJICAgIChzZXQt Y2RyISByZWNvcmQgdmFsdWUpCgkJICAgIChzZXQtY2RyISBzdWJ0YWJsZQoJCQkgICAgICAoY29u cyAoY29ucyBrZXktMiB2YWx1ZSkKCQkJCSAgICAoY2RyIHN1YnRhYmxlKSkpKSkKCSAgICAgIChz ZXQtY2RyISBsb2NhbC10YWJsZQoJCQkoY29ucyAobGlzdCBrZXktMQoJCQkJICAgIChjb25zIGtl eS0yIHZhbHVlKSkKCQkJICAgICAgKGNkciBsb2NhbC10YWJsZSkpKSkpCgknb2spCiAgICAgIChk ZWZpbmUgKGRpc3BhdGNoIG0pCgkoY29uZCAoKGVxPyBtICdsb29rdXAtcHJvYykgbG9va3VwKQoJ ICAgICAgKChlcT8gbSAnaW5zZXJ0LXByb2MhKSBpbnNlcnQhKQoJICAgICAgKGVsc2UgKGVycm9y ICJVbmtub3duIG9wZXJhdGlvbiAtLSBUQUJMRSIgbSkpKSkKICAgICAgZGlzcGF0Y2gpKQoKICAo ZGVmaW5lIG9wZXJhdGlvbi10YWJsZSAobWFrZS10YWJsZSkpCiAgKGRlZmluZSBnZXQgKG9wZXJh dGlvbi10YWJsZSAnbG9va3VwLXByb2MpKQogIChkZWZpbmUgcHV0IChvcGVyYXRpb24tdGFibGUg J2luc2VydC1wcm9jISkpCgogIChkZWZpbmUgY29lcmNpb24tdGFibGUgKG1ha2UtdGFibGUpKQog IChkZWZpbmUgZ2V0LWNvZXJjaW9uIChjb2VyY2lvbi10YWJsZSAnbG9va3VwLXByb2MpKQogIChk ZWZpbmUgcHV0LWNvZXJjaW9uIChjb2VyY2lvbi10YWJsZSAnaW5zZXJ0LXByb2MhKSkKCiAgKGRl ZmluZSAoYXR0YWNoLXRhZyB0eXBlLXRhZyBjb250ZW50cykKICAgIChjb25zIHR5cGUtdGFnIGNv bnRlbnRzKSkKCiAgKGRlZmluZSAodHlwZS10YWcgZGF0dW0pCiAgICAoY29uZCAoKHBhaXI/IGRh dHVtKSAoY2FyIGRhdHVtKSkKCSAgKChleGFjdC1pbnRlZ2VyPyBkYXR1bSkgJ2ludGVnZXIpCgkg ICgocmVhbD8gZGF0dW0pICdzY2hlbWUtbnVtYmVyKQoJICAoZXJyb3IgIkJhZCB0YWdnZWQgZGF0 dW0gLS0gVFlQRS1UQUciIGRhdHVtKSkpCgogIChkZWZpbmUgKGNvbnRlbnRzIGRhdHVtKQogICAg KGNvbmQgKChwYWlyPyBkYXR1bSkgKGNkciBkYXR1bSkpCgkgICgoaW50ZWdlcj8gZGF0dW0pIGRh dHVtKQoJICAoKHJlYWw/IGRhdHVtKSBkYXR1bSkKCSAgKGVsc2UgKGVycm9yICJCYWQgdGFnZ2Vk IGRhdHVtIC0tIENPTlRFTlRTIiBkYXR1bSkpKSkKCiAgKGRlZmluZSAoaW50ZWdlcj8geCkKICAg IChlcT8gKHR5cGUtdGFnIHgpICdpbnRlZ2VyKSkKICAoZGVmaW5lIChyZWN0YW5ndWxhcj8geikK ICAgIChlcT8gKHR5cGUtdGFnIHopICdyZWN0YW5ndWxhcikpCgogIChkZWZpbmUgKHBvbGFyPyB6 KQogICAgKGVxPyAodHlwZS10YWcgeikgJ3BvbGFyKSkKCgogIChkZWZpbmUgKHJlYWwtcGFydCB6 KSAoYXBwbHktZ2VuZXJpYyAncmVhbC1wYXJ0IHopKQogIChkZWZpbmUgKGltYWctcGFydCB6KSAo YXBwbHktZ2VuZXJpYyAnaW1hZy1wYXJ0IHopKQogIChkZWZpbmUgKG1hZ25pdHVkZSB6KSAoYXBw bHktZ2VuZXJpYyAnbWFnbml0dWRlIHopKQogIChkZWZpbmUgKGFuZ2xlIHopIChhcHBseS1nZW5l cmljICdhbmdsZSB6KSkKCiAgKGRlZmluZSAoYWRkIHggeSkgKGFwcGx5LWdlbmVyaWMgJ2FkZCB4 IHkpKQogIChkZWZpbmUgKHN1YiB4IHkpIChhcHBseS1nZW5lcmljICdzdWIgeCB5KSkKICAoZGVm aW5lIChtdWwgeCB5KSAoYXBwbHktZ2VuZXJpYyAnbXVsIHggeSkpCiAgKGRlZmluZSAoZGl2IHgg eSkgKGFwcGx5LWdlbmVyaWMgJ2RpdiB4IHkpKQoKICAoZGVmaW5lIChlcXU/IHggeSkKICAgIChh cHBseS1nZW5lcmljICdlcXU/IHggeSkpCiAgKGRlZmluZSAoemVybz8geCkgKGFwcGx5LWdlbmVy aWMgJ3plcm8/IHgpKQoKICAoZGVmaW5lIChleHAgeCB5KSAoYXBwbHktZ2VuZXJpYyAnZXhwIHgg eSkpCgogIChkZWZpbmUgKGluc3RhbGwtc2NoZW1lLW51bWJlci1wYWNrYWdlKQogICAgKGRlZmlu ZSAodGFnIHgpCiAgICAgIChhdHRhY2gtdGFnICdzY2hlbWUtbnVtYmVyIHgpKQogICAgKHB1dCAn YWRkICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJIChsYW1iZGEgKHggeSkgKHRhZyAo KyB4IHkpKSkpCiAgICAocHV0ICdzdWIgJyhzY2hlbWUtbnVtYmVyIHNjaGVtZS1udW1iZXIpCgkg KGxhbWJkYSAoeCB5KSAodGFnICgtIHggeSkpKSkKICAgIChwdXQgJ211bCAnKHNjaGVtZS1udW1i ZXIgc2NoZW1lLW51bWJlcikKCSAobGFtYmRhICh4IHkpICh0YWcgKCogeCB5KSkpKQogICAgKHB1 dCAnZGl2ICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJIChsYW1iZGEgKHggeSkgKHRh ZyAoLyB4IHkpKSkpCiAgICAocHV0ICdtYWtlICdzY2hlbWUtbnVtYmVyCgkgKGxhbWJkYSAoeCkg KHRhZyB4KSkpCiAgICAocHV0ICdlcXU/ICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJ IChsYW1iZGEgKHggeSkgKD0geCB5KSkpCiAgICAocHV0ICd6ZXJvPyAnKHNjaGVtZS1udW1iZXIp CgkgKGxhbWJkYSAoeCkgKD0gMCB4KSkpCiAgICAocHV0ICdleHAgJyhzY2hlbWUtbnVtYmVyIHNj aGVtZS1udW1iZXIpCgkgKGxhbWJkYSAoeCB5KSAodGFnIChleHB0IHggeSkpKSkKICAgIChwdXQg J3Byb2plY3QgJyhzY2hlbWUtbnVtYmVyKQoJIChsYW1iZGEgKHgpCgkgICAobWFrZS1yYXRpb25h bAoJICAgIChleGFjdCAobnVtZXJhdG9yIHgpKQoJICAgIChleGFjdCAoZGVub21pbmF0b3IgeCkp KSkpCiAgICAocHV0ICdzaW5lICcoc2NoZW1lLW51bWJlcikgc2luKQogICAgKHB1dCAnY29zaW5l ICcoc2NoZW1lLW51bWJlcikgY29zKQogICAgKHB1dCAnc3F1YXJlLXJvb3QgJyhzY2hlbWUtbnVt YmVyKSBzcXJ0KQogICAgKHB1dCAnYXJjdGFuZ2VudCAnKHNjaGVtZXItbnVtYmVyKSBhdGFuKQog ICAgJ2RvbmUpCgogIChkZWZpbmUgKHNpbmUgeCkgKGFwcGx5LWdlbmVyaWMgJ3NpbmUgeCkpCiAg KGRlZmluZSAoY29zaW5lIHgpIChhcHBseS1nZW5lcmljICdjb3NpbmUgeCkpCiAgKGRlZmluZSAo c3F1YXJlLXJvb3QgeCkgKGFwcGx5LWdlbmVyaWMgJ3NxdWFyZS1yb290IHgpKQogIChkZWZpbmUg KGFyY3RhbmdlbnQgeCkgKGFwcGx5LWdlbmVyaWMgJ2FyY3RhbmdlbnQgeCkpCgogIChkZWZpbmUg KG1ha2Utc2NoZW1lLW51bWJlciBuKQogICAgKChnZXQgJ21ha2UgJ3NjaGVtZS1udW1iZXIpIG4p KQoKICAoZGVmaW5lIChpbnN0YWxsLXJhdGlvbmFsLXBhY2thZ2UpCiAgICAoZGVmaW5lIChudW1l ciB4KSAoY2FyIHgpKQogICAgKGRlZmluZSAoZGVub20geCkgKGNkciB4KSkKICAgIChkZWZpbmUg KG1ha2UtcmF0IG4gZCkKICAgICAgKGxldCAoKGcgKGdjZCBuIGQpKSkKCShjb25zICgvIG4gZykg KC8gZCBnKSkpKQogICAgKGRlZmluZSAoYWRkLXJhdCB4IHkpCiAgICAgIChtYWtlLXJhdCAoKyAo KiAobnVtZXIgeCkgKGRlbm9tIHkpKQoJCSAgICgqIChudW1lciB5KSAoZGVub20geCkpKQoJCSgq IChkZW5vbSB4KSAoZGVub20geSkpKSkKICAgIChkZWZpbmUgKHN1Yi1yYXQgeCB5KQogICAgICAo bWFrZS1yYXQgKC0gKCogKG51bWVyIHgpIChkZW5vbSB5KSkKCQkgICAoKiAobnVtZXIgeSkgKGRl bm9tIHgpKSkKCQkoKiAoZGVub20geCkgKGRlbm9tIHkpKSkpCiAgICAoZGVmaW5lIChtdWwtcmF0 IHggeSkKICAgICAgKG1ha2UtcmF0ICgqIChudW1lciB4KSAobnVtZXIgeSkpCgkJKCogKGRlbm9t IHgpIChkZW5vbSB5KSkpKQogICAgKGRlZmluZSAoZGl2LXJhdCB4IHkpCiAgICAgIChtYWtlLXJh dCAoKiAobnVtZXIgeCkgKGRlbm9tIHkpKQoJCSgqIChkZW5vbSB4KSAobnVtZXIgeSkpKSkKCiAg ICAoZGVmaW5lICh0YWcgeCkgKGF0dGFjaC10YWcgJ3JhdGlvbmFsIHgpKQogICAgKHB1dCAnYWRk ICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgKGxhbWJkYSAoeCB5KSAodGFnIChhZGQtcmF0IHggeSkp KSkKICAgIChwdXQgJ3N1YiAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJIChsYW1iZGEgKHggeSkgKHRh ZyAoc3ViLXJhdCB4IHkpKSkpCiAgICAocHV0ICdtdWwgJyhyYXRpb25hbCByYXRpb25hbCkKCSAo bGFtYmRhICh4IHkpICh0YWcgKG11bC1yYXQgeCB5KSkpKQogICAgKHB1dCAnZGl2ICcocmF0aW9u YWwgcmF0aW9uYWwpCgkgKGxhbWJkYSAoeCB5KSAodGFnIChkaXYtcmF0IHggeSkpKSkKCiAgICAo cHV0ICdtYWtlICdyYXRpb25hbAoJIChsYW1iZGEgKG4gZCkgKHRhZyAobWFrZS1yYXQgbiBkKSkp KQogICAgKHB1dCAnZXF1PyAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJIChsYW1iZGEgKHggeSkgKD0g MCAobnVtZXIgKHN1Yi1yYXQgeCB5KSkpKSkKICAgIChwdXQgJ3plcm8/ICcocmF0aW9uYWwpIChs YW1iZGEgKHgpICg9IDAgKG51bWVyIHgpKSkpCiAgICAocHV0ICdwcm9qZWN0ICcocmF0aW9uYWwp IChsYW1iZGEgKHgpIAoJCQkJKGV4YWN0ICh0cnVuY2F0ZSAoLyAobnVtZXIgeCkgKGRlbm9tIHgp KSkpKSkKICAgIChwdXQgJ3RvLXJlYWwgJyhyYXRpb25hbCkgKGxhbWJkYSAoeCkgKC8gKG51bWVy IChjb250ZW50cyB4KSkgKGRlbm9tIChjb250ZW50cyB4KSkpKSkKICAgICdkb25lKQoKICAoZGVm aW5lIChtYWtlLXJhdGlvbmFsIG4gZCkKICAgICgoZ2V0ICdtYWtlICdyYXRpb25hbCkgbiBkKSkK CiAgKGRlZmluZSAoaW5zdGFsbC1yZWN0YW5ndWxhci1wYWNrYWdlKQoKICAgIChkZWZpbmUgKHJl YWwtcGFydCB6KSAoY2FyIHopKQogICAgKGRlZmluZSAoaW1hZy1wYXJ0IHopIChjZHIgeikpCiAg ICAoZGVmaW5lIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkgKGNvbnMgeCB5KSkKICAgIChkZWZp bmUgKG1hZ25pdHVkZSB6KQogICAgICAoc3F1YXJlLXJvb3QgKGFkZCAoc3F1YXJlIChyZWFsLXBh cnQgeikpCgkJCShzcXVhcmUgKGltYWctcGFydCB6KSkpKSkKICAgIChkZWZpbmUgKGFuZ2xlIHop CiAgICAgIChhcmN0YW5nZW50IChpbWFnLXBhcnQgeikgKHJlYWwtcGFydCB6KSkpCiAgICAoZGVm aW5lIChtYWtlLWZyb20tbWFnLWFuZyByIGEpCiAgICAgIChjb25zIChtdWwgciAoY29zaW5lIGEp KSAobXVsIHIgKHNpbmUgYSkpKSkKCiAgICAoZGVmaW5lICh0YWcgeCkgKGF0dGFjaC10YWcgJ3Jl Y3Rhbmd1bGFyIHgpKQogICAgKHB1dCAncmVhbC1wYXJ0ICcocmVjdGFuZ3VsYXIpIHJlYWwtcGFy dCkKICAgIChwdXQgJ2ltYWctcGFydCAnKHJlY3Rhbmd1bGFyKSBpbWFnLXBhcnQpCiAgICAocHV0 ICdtYWduaXR1ZGUgJyhyZWN0YW5ndWxhcikgbWFnbml0dWRlKQogICAgKHB1dCAnYW5nbGUgJyhy ZWN0YW5ndWxhcikgYW5nbGUpCiAgICAocHV0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdyZWN0YW5n dWxhcgoJIChsYW1iZGEgKHggeSkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpKSkpCiAg ICAocHV0ICdtYWtlLWZyb20tbWFnLWFuZyAncmVjdGFuZ3VsYXIKCSAobGFtYmRhIChyIGEpICh0 YWcgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkpKSkKICAgICdkb25lKQoKICAoZGVmaW5lIChpbnN0 YWxsLXBvbGFyLXBhY2thZ2UpCgogICAgKGRlZmluZSAobWFnbml0dWRlIHopIChjYXIgeikpCiAg ICAoZGVmaW5lIChhbmdsZSB6KSAoY2RyIHopKQogICAgKGRlZmluZSAobWFrZS1mcm9tLW1hZy1h bmcgciBhKSAoY29ucyByIGEpKQogICAgKGRlZmluZSAocmVhbC1wYXJ0IHopCiAgICAgIChtdWwg KG1hZ25pdHVkZSB6KSAoY29zaW5lIChhbmdsZSB6KSkpKQogICAgKGRlZmluZSAoaW1hZy1wYXJ0 IHopCiAgICAgIChtdWwgKG1hZ25pdHVkZSB6KSAoc2luZSAoYW5nbGUgeikpKSkKICAgIChkZWZp bmUgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KQogICAgICAoY29ucyAoc3F1YXJlLXJvb3QgKGFk ZCAoc3F1YXJlIHgpIChzcXVhcmUgeSkpKQoJICAgIChhcmN0YW5nZW50IHkgeCkpKQoKICAgIChk ZWZpbmUgKHRhZyB4KSAoYXR0YWNoLXRhZyAncG9sYXIgeCkpCiAgICAocHV0ICdyZWFsLXBhcnQg Jyhwb2xhcikgcmVhbC1wYXJ0KQogICAgKHB1dCAnaW1hZy1wYXJ0ICcocG9sYXIpIGltYWctcGFy dCkKICAgIChwdXQgJ21hZ25pdHVkZSAnKHBvbGFyKSBtYWduaXR1ZGUpCiAgICAocHV0ICdhbmds ZSAnKHBvbGFyKSBhbmdsZSkKICAgIChwdXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ3BvbGFyCgkg KGxhbWJkYSAoeCB5KSAodGFnIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkpKSkKICAgIChwdXQg J21ha2UtZnJvbS1tYWctYW5nICdwb2xhcgoJIChsYW1iZGEgKHIgYSkgKHRhZyAobWFrZS1mcm9t LW1hZy1hbmcgciBhKSkpKQogICAgJ2RvbmUpCgogIChkZWZpbmUgKGluc3RhbGwtY29tcGxleC1w YWNrYWdlKQogICAgKGRlZmluZSAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpCiAgICAgICgoZ2V0 ICdtYWtlLWZyb20tcmVhbC1pbWFnICdyZWN0YW5ndWxhcikgeCB5KSkKICAgIChkZWZpbmUgKG1h a2UtZnJvbS1tYWctYW5nIHIgYSkKICAgICAgKChnZXQgJ21ha2UtZnJvbS1tYWctYW5nICdwb2xh cikgciBhKSkKICAgIChkZWZpbmUgKGFkZC1jb21wbGV4IHoxIHoyKQogICAgICAobWFrZS1mcm9t LXJlYWwtaW1hZyAoYWRkIChyZWFsLXBhcnQgejEpIChyZWFsLXBhcnQgejIpKQoJCQkgICAoYWRk IChpbWFnLXBhcnQgejEpIChpbWFnLXBhcnQgejIpKSkpCiAgICAoZGVmaW5lIChzdWItY29tcGxl eCB6MSB6MikKICAgICAgKG1ha2UtZnJvbS1yZWFsLWltYWcgKHN1YiAocmVhbC1wYXJ0IHoxKSAo cmVhbC1wYXJ0IHoyKSkKCQkJICAgKHN1YiAoaW1hZy1wYXJ0IHoxKSAoaW1hZy1wYXJ0IHoyKSkp KQogICAgKGRlZmluZSAobXVsLWNvbXBsZXggejEgejIpCiAgICAgIChtYWtlLWZyb20tbWFnLWFu ZyAobXVsIChtYWduaXR1ZGUgejEpIChtYWduaXR1ZGUgejIpKQoJCQkgKGFkZCAoYW5nbGUgejEp IChhbmdsZSB6MikpKSkKICAgIChkZWZpbmUgKGRpdi1jb21wbGV4IHoxIHoyKQogICAgICAobWFr ZS1mcm9tLW1hZy1hbmcgKGRpdiAobWFnbml0dWRlIHoxKSAobWFnbml0dWRlIHoyKSkKCQkJIChz dWIgKGFuZ2xlIHoxKSAoYW5nbGUgejIpKSkpCiAgICAoZGVmaW5lICh0YWcgeikgKGF0dGFjaC10 YWcgJ2NvbXBsZXggeikpCiAgICAocHV0ICdhZGQgJyhjb21wbGV4IGNvbXBsZXgpCgkgKGxhbWJk YSAoejEgejIpICh0YWcgKGFkZC1jb21wbGV4IHoxIHoyKSkpKQogICAgKHB1dCAnc3ViICcoY29t cGxleCBjb21wbGV4KQoJIChsYW1iZGEgKHoxIHoyKSAodGFnIChzdWItY29tcGxleCB6MSB6Mikp KSkKICAgIChwdXQgJ211bCAnKGNvbXBsZXggY29tcGxleCkKCSAobGFtYmRhICh6MSB6MikgKHRh ZyAobXVsLWNvbXBsZXggejEgejIpKSkpCiAgICAocHV0ICdkaXYgJyhjb21wbGV4IGNvbXBsZXgp CgkgKGxhbWJkYSAoejEgejIpICh0YWcgKGRpdi1jb21wbGV4IHoxIHoyKSkpKQogICAgKHB1dCAn bWFrZS1mcm9tLXJlYWwtaW1hZyAnY29tcGxleAoJIChsYW1iZGEgKHggeSkgKHRhZyAobWFrZS1m cm9tLXJlYWwtaW1hZyB4IHkpKSkpCiAgICAocHV0ICdtYWtlLWZyb20tbWFnLWFuZyAnY29tcGxl eAoJIChsYW1iZGEgKHIgYSkgKHRhZyAobWFrZS1mcm9tLW1hZy1hbmcgciBhKSkpKQogICAgKHB1 dCAnZXF1PyAnKGNvbXBsZXggY29tcGxleCkKCSAobGFtYmRhICh4IHkpIChhbmQgKD0gMCAocmVh bC1wYXJ0IChzdWItY29tcGxleCB4IHkpKSkKCQkJICAgICg9IDAgKGltYWctcGFydCAoc3ViLWNv bXBsZXggeCB5KSkpKSkpCiAgICAocHV0ICdlcXU/ICcocmVjdGFuZ3VsYXIgcG9sYXIpIGVxdT8p CiAgICAocHV0ICdlcXU/ICcocG9sYXIgcmVjdGFuZ3VsYXIpIGVxdT8pCiAgICAocHV0ICd6ZXJv PyAnKGNvbXBsZXgpCgkgKGxhbWJkYSAoeCkgKGVxdT8gKHRhZyB4KSAodGFnIChtYWtlLWZyb20t cmVhbC1pbWFnIDAgMCkpKSkpCiAgICAocHV0ICdwcm9qZWN0ICcoY29tcGxleCkgKGxhbWJkYSAo eikgKHJlYWwtcGFydCB6KSkpCiAgICAnZG9uZSkKCiAgKGRlZmluZSAobWFrZS1jb21wbGV4LWZy b20tcmVhbC1pbWFnIHggeSkKICAgICgoZ2V0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdjb21wbGV4 KSB4IHkpKQoKICAoZGVmaW5lIChtYWtlLWNvbXBsZXgtZnJvbS1tYWctYW5nIHIgYSkKICAgICgo Z2V0ICdtYWtlLWZyb20tbWFnLWFuZyAnY29tcGxleCkgciBhKSkKCiAgKGluc3RhbGwtcmVjdGFu Z3VsYXItcGFja2FnZSkKICAoaW5zdGFsbC1wb2xhci1wYWNrYWdlKQogIChpbnN0YWxsLXJhdGlv bmFsLXBhY2thZ2UpCiAgKGluc3RhbGwtc2NoZW1lLW51bWJlci1wYWNrYWdlKQogIChpbnN0YWxs LWNvbXBsZXgtcGFja2FnZSkKCiAgKHB1dCAncmVhbC1wYXJ0ICcoY29tcGxleCkgcmVhbC1wYXJ0 KQogIChwdXQgJ2ltYWctcGFydCAnKGNvbXBsZXgpIGltYWctcGFydCkKICAocHV0ICdtYWduaXR1 ZGUgJyhjb21wbGV4KSBtYWduaXR1ZGUpCiAgKHB1dCAnYW5nbGUgJyhjb21wbGV4KSBhbmdsZSkK CiAgKGRlZmluZSAoYXBwbHktZ2VuZXJpYyBvcCAuIGFyZ3MpCiAgICAoZGVmaW5lIChhbGwtYXJn dHlwZXMtc2FtZT8gLiBhcmdzKQogICAgICAobGV0ICgodHlwZSAodHlwZS10YWcgKGNhciBhcmdz KSkpKQoJKGFjY3VtdWxhdGUgKGxhbWJkYSAoeCB5KSAoYW5kIHggeSkpICN0IChtYXAgKGxhbWJk YSAoeCkgKGVxPyB0eXBlIHgpKSBhcmdzKSkpKQogICAgKGRlZmluZSAoY29lcmNpb24taWYtZXhp c3RzPyB0eXBlIGFyZy10YWdzKQogICAgICAobGV0ICgoY29lcmNpb24tbGlzdCAobWFwIChsYW1i ZGEgKHgpIAoJCQkJICAoaWYgKGVxPyB0eXBlIHgpCgkJCQkgICAgICBpZGVudGl0eQoJCQkJICAg ICAgKGdldC1jb2VyY2lvbiB4IHR5cGUpKSkgYXJnLXRhZ3MpKSkKCShpZiAoYWNjdW11bGF0ZSAo bGFtYmRhICh4IHkpIChhbmQgeCB5KSkgI3QgY29lcmNpb24tbGlzdCkKCSAgICBjb2VyY2lvbi1s aXN0CgkgICAgI2YpKSkKICAgIChkcm9wIChsZXQqICgodHlwZS10YWdzIChtYXAgdHlwZS10YWcg YXJncykpCgkJIChwcm9jIChnZXQgb3AgdHlwZS10YWdzKSkpCgkgICAgKGNvbmQgKHByb2MgKGFw cGx5IHByb2MgKG1hcCBjb250ZW50cyBhcmdzKSkpCgkJICAoKD0gMSAobGVuZ3RoIGFyZ3MpKQoJ CSAgICM7KHNob3cgI3QgIk5vIHByb2MgZm91bmQgZm9yIG9wPSIgb3AgIiwgdHlwZS10YWdzPSIg dHlwZS10YWdzICJcbiIpCgkJICAgKGFwcGx5LWdlbmVyaWMgb3AgKHJhaXNlLXR5cGUgKGNhciBh cmdzKSkpKQoJCSAgKCg9IDIgKGxlbmd0aCBhcmdzKSkKCQkgICAoaWYgKHR5cGUxPD10eXBlMj8g KGNhciB0eXBlLXRhZ3MpIChjYWRyIHR5cGUtdGFncykpCgkJICAgICAgIChhcHBseS1nZW5lcmlj IG9wIChyYWlzZS10eXBlIChjYXIgYXJncykpIChjYWRyIGFyZ3MpKQoJCSAgICAgICAoYXBwbHkt Z2VuZXJpYyBvcCAoY2FyIGFyZ3MpICAocmFpc2UtdHlwZSAoY2FkciBhcmdzKSkpKSkKCQkgICgo YW5kICg+PSAobGVuZ3RoIGFyZ3MpIDIpIChub3QgKGFsbC1hcmd0eXBlcy1zYW1lPyBhcmdzKSkp CgkJICAgKGxldCB0eXBlcy1sb29wICgodHlwZXMgdHlwZS10YWdzKSkKCQkgICAgIChsZXQgKChs aXN0LW9mLWNvZXJjaW9uLWZ1bmN0aW9ucwoJCQkgICAgKGNvZXJjaW9uLWlmLWV4aXN0cz8gKGNh ciB0eXBlcykgdHlwZS10YWdzKSkpCgkJICAgICAgIChpZiBsaXN0LW9mLWNvZXJjaW9uLWZ1bmN0 aW9ucwoJCQkgICAoYXBwbHkgYXBwbHktZ2VuZXJpYyAoY29ucyBvcCAobWFwIChsYW1iZGEgKGZ1 biBhcmcpIChmdW4gYXJnKSkKCQkJCQkJCSAgICAgIGxpc3Qtb2YtY29lcmNpb24tZnVuY3Rpb25z CgkJCQkJCQkgICAgICBhcmdzKSkpCgkJCSAgIChpZiAobm90IChudWxsPyAoY2RyIHR5cGVzKSkp CgkJCSAgICAgICAodHlwZXMtbG9vcCAoY2RyIHR5cGVzKSkKCQkJICAgICAgIChlcnJvciAiYXBw bHktZ2VuZXJpYzpFdmVuIGNvZXJjaW9ucyBmYWlsZWQuIE5vIG1ldGhvZCBmb3IgdGhlc2UgdHlw ZXMuIikpKSkpKQoJCSAgKGVsc2UgKGVycm9yICJhcHBseS1nZW5lcmljOk5vIG1ldGhvZCBmb3Ig dGhlc2UgdHlwZXMiCgkJCSAgICAgICAobGlzdCBvcCB0eXBlLXRhZ3MpKSkpKSkpCiAgKGRlZmlu ZSAoc2NoZW1lLW51bWJlci0+Y29tcGxleCBuKQogICAgKG1ha2UtY29tcGxleC1mcm9tLXJlYWwt aW1hZyAoY29udGVudHMgbikgMCkpCiAgKHB1dC1jb2VyY2lvbiAnc2NoZW1lLW51bWJlcgoJCSdj b21wbGV4CgkJc2NoZW1lLW51bWJlci0+Y29tcGxleCkKCiAgKHB1dCAnbWF4My1tYWduaXR1ZGUg Jyhjb21wbGV4IGNvbXBsZXggY29tcGxleCkgKGxhbWJkYSAoejEgejIgejMpCgkJCQkJCSAgICAo bWF4IChtYWduaXR1ZGUgejEpIChtYWduaXR1ZGUgejIpIChtYWduaXR1ZGUgejMpKSkpCiAgKGRl ZmluZSAobWF4My1tYWduaXR1ZGUgeDEgeDIgeDMpIChhcHBseS1nZW5lcmljICdtYXgzLW1hZ25p dHVkZSB4MSB4MiB4MykpCiAgKGRlZmluZSAoaWRlbnRpdHkgeCkgeCkKCiAgKGRlZmluZSBudW1l cmljLXRvd2VyIChsaXN0ICdpbnRlZ2VyICdyYXRpb25hbCAnc2NoZW1lLW51bWJlciAnY29tcGxl eCkpCgogIChkZWZpbmUgKGhpZ2hlci10eXBlIHgpCiAgICAoZGVmaW5lIChmaW5kLWhpZ2hlci10 eXBlIHggdHlwZXMpCiAgICAgIChjb25kICgob3IgKG51bGw/IHR5cGVzKSAobnVsbD8gKGNkciB0 eXBlcykpKSAoZXJyb3IgIk5vIHR5cGUgaGlnaGVyIHRoYW4gZ2l2ZW4iIHgpKQoJICAgICgoZXE/ IHggKGNhciB0eXBlcykpIChjYWRyIHR5cGVzKSkKCSAgICAoZWxzZSAoZmluZC1oaWdoZXItdHlw ZSB4IChjZHIgdHlwZXMpKSkpKQogICAgKGZpbmQtaGlnaGVyLXR5cGUgeCBudW1lcmljLXRvd2Vy KSkKCiAgKGRlZmluZSAodHlwZTE8PXR5cGUyPyB0eXBlMSB0eXBlMikKICAgIChpZiAobm90ICht ZW1xIHR5cGUxIG51bWVyaWMtdG93ZXIpKQoJKGVycm9yICJUeXBlIDEgbm90IGluIHRoZSBudW1l cmljIHRvd2VyIikpCiAgICAoaWYgKG5vdCAobWVtcSB0eXBlMiBudW1lcmljLXRvd2VyKSkKCShl cnJvciAiVHlwZSAyIG5vdCBpbiB0aGUgbnVtZXJpYyB0b3dlciIpKQogICAgKGxldCBsb29wICgo dHlwZXMgbnVtZXJpYy10b3dlcikpCiAgICAgIChjb25kICgobnVsbD8gdHlwZXMpIChlcnJvciAi VHlwZSAxIGFuZCB0eXBlIDIgYXJlIGluY29tcGFyYWJsZSIgdHlwZTEgdHlwZTIpKQoJICAgICgo ZXE/IChjYXIgdHlwZXMpIHR5cGUxKSAjdCkKCSAgICAoKGVxPyAoY2FyIHR5cGVzKSB0eXBlMikg I2YpCgkgICAgKGVsc2UgKGxvb3AgKGNkciB0eXBlcykpKSkpKQoKICAoZGVmaW5lIChpbnRlZ2Vy LT5yYXRpb25hbCB4KQogICAgKG1ha2UtcmF0aW9uYWwgeCAxKSkKCiAgKGRlZmluZSAocmF0aW9u YWwtPnNjaGVtZS1udW1iZXIgeCkKICAgIChtYWtlLXNjaGVtZS1udW1iZXIgKChnZXQgJ3RvLXJl YWwgJyhyYXRpb25hbCkpIHgpKSkKICAocHV0LWNvZXJjaW9uICdpbnRlZ2VyICdyYXRpb25hbCBp bnRlZ2VyLT5yYXRpb25hbCkKICAocHV0LWNvZXJjaW9uICdyYXRpb25hbCAnc2NoZW1lLW51bWJl ciByYXRpb25hbC0+c2NoZW1lLW51bWJlcikKCiAgKGRlZmluZSAocmFpc2UtdHlwZSB4KQogICAg KGxldCAoKGNvbnZlcnRlciAoZ2V0LWNvZXJjaW9uICh0eXBlLXRhZyB4KSAoaGlnaGVyLXR5cGUg KHR5cGUtdGFnIHgpKSkpKQogICAgICAoaWYgY29udmVydGVyCgkgIChjb252ZXJ0ZXIgeCkKCSAg KGVycm9yICJObyBjb2VyY2lvbiBmb3VuZCBmb3IgeCIgKHR5cGUtdGFnIHgpIHgpKSkpCgoKICAo ZGVmaW5lIChyZW1haW5kZXItaW50ZWdlciBhIGIpCiAgICAod2hlbiAob3IgKG5vdCAoaW50ZWdl cj8gYSkpIChub3QgKGludGVnZXI/IGIpKSkKICAgICAgKGVycm9yICJBcmd1bWVudHMgbXVzdCBi ZSBpbnRlZ2VycyIgYSBiKSkKICAgIChyZW1haW5kZXIgYSBiKSkKCiAgKHB1dCAncmVtYWluZGVy ICcoaW50ZWdlciBpbnRlZ2VyKSByZW1haW5kZXItaW50ZWdlcikKICAoZGVmaW5lIChyZW1haW5k ZXItZ2VuZXJhbGl6ZWQgYSBiKSAoYXBwbHktZ2VuZXJpYyAncmVtYWluZGVyIGEgYikpCgogIChk ZWZpbmUgKHByb2plY3Qgb2JqKQogICAgKGFwcGx5LWdlbmVyaWMgJ3Byb2plY3Qgb2JqKSkKICAo ZGVmaW5lIChkcm9wcGFibGU/IG9iaikKICAgIChjb25kICgobm90IChtZW1xICh0eXBlLXRhZyBv YmopIG51bWVyaWMtdG93ZXIpKSAjZikKCSAgKChlcT8gKHR5cGUtdGFnIG9iaikgKGNhciBudW1l cmljLXRvd2VyKSkgI2YpCgkgICgoZXF1PyBvYmogKHJhaXNlLXR5cGUgKHByb2plY3Qgb2JqKSkp ICN0KQoJICAoZWxzZSAjZikpKQogIChkZWZpbmUgKGRyb3Agb2JqKSAKICAgIChpZiAoZHJvcHBh YmxlPyBvYmopCgkoZHJvcCAocHJvamVjdCBvYmopKQoJb2JqKSkKCiAgKHNob3cgI3QgIlRlc3Qg MTogU3VidHJhY3RpbmcgY29tcGxleCBudW1iZXJzOiAiCgkoc3ViCgkgKG1ha2UtY29tcGxleC1m cm9tLXJlYWwtaW1hZyAxLjEgMikKCSAobWFrZS1jb21wbGV4LWZyb20tcmVhbC1pbWFnIDAgMikp ICJcbiIpCgoKICAoZGVmaW5lIChpbnN0YWxsLXBvbHlub21pYWwtcGFja2FnZSkKICAgICM7KGlu dGVybmFsIHByb2NlZHVyZXMpCiAgICAjOyhyZXByZXNlbnRhdGlvbiBvZiBwb2x5KQogICAgKGRl ZmluZSAobWFrZS1wb2x5IHZhcmlhYmxlIHRlcm0tbGlzdCkKICAgICAgKGNvbnMgdmFyaWFibGUg dGVybS1saXN0KSkKICAgIChkZWZpbmUgKHZhcmlhYmxlIHApIChjYXIgcCkpCiAgICAoZGVmaW5l ICh0ZXJtLWxpc3QgcCkKICAgICAgKGNkciBwKSkKCiAgICAoZGVmaW5lICh2YXJpYWJsZT8geCkg KHN5bWJvbD8geCkpCiAgICAoZGVmaW5lIChzYW1lLXZhcmlhYmxlPyB2MSB2MikKICAgICAgKGFu ZCAodmFyaWFibGU/IHYxKSAodmFyaWFibGU/IHYyKSAoZXE/IHYxIHYyKSkpCiAgICAoZGVmaW5l ICg9bnVtYmVyPyBleHAgbnVtKQogICAgICAoYW5kIChudW1iZXI/IGV4cCkgKD0gZXhwIG51bSkp KQoKICAgICM7KHJlcHJlc2VudGF0aW9uIG9mIHRlcm1zIGFuZCB0ZXJtIGxpc3RzKQoKICAgIChk ZWZpbmUgKGFkam9pbi10ZXJtIHRlcm0gdGVybS1saXN0KQogICAgICAoaWYgKHplcm8/IChjb2Vm ZiB0ZXJtKSkKCSAgdGVybS1saXN0CgkgIChjb25zIHRlcm0gdGVybS1saXN0KSkpCgogICAgKGRl ZmluZSAodGhlLWVtcHR5LXRlcm1saXN0KSAnKCkpCiAgICAoZGVmaW5lIChmaXJzdC10ZXJtIHRl cm0tbGlzdCkgKGNhciB0ZXJtLWxpc3QpKQogICAgKGRlZmluZSAocmVzdC10ZXJtcyB0ZXJtLWxp c3QpIChjZHIgdGVybS1saXN0KSkKICAgIChkZWZpbmUgKGVtcHR5LXRlcm1saXN0PyB0ZXJtLWxp c3QpIChudWxsPyB0ZXJtLWxpc3QpKQoKICAgIChkZWZpbmUgKG1ha2UtdGVybSBvcmRlciBjb2Vm ZikgKGxpc3Qgb3JkZXIgY29lZmYpKQogICAgKGRlZmluZSAob3JkZXIgdGVybSkgKGNhciB0ZXJt KSkKICAgIChkZWZpbmUgKGNvZWZmIHRlcm0pIChjYWRyIHRlcm0pKQoKICAgICM7KGNvbnRpbnVl ZCBvbiBuZXh0IHBhZ2UpCgogICAgKGRlZmluZSAoYWRkLXBvbHkgcDEgcDIpCiAgICAgIChpZiAo c2FtZS12YXJpYWJsZT8gKHZhcmlhYmxlIHAxKSAodmFyaWFibGUgcDIpKQoJICAobWFrZS1wb2x5 ICh2YXJpYWJsZSBwMSkKCQkgICAgIChhZGQtdGVybXMgKHRlcm0tbGlzdCBwMSkKCQkJCSh0ZXJt LWxpc3QgcDIpKSkKCSAgKGVycm9yICJQb2x5cyBub3QgaW4gc2FtZSB2YXIgLS0gQURELVBPTFki CgkJIChsaXN0IHAxIHAyKSkpKQogICAgKGRlZmluZSAoc3ViLXBvbHkgcDEgcDIpCiAgICAgIChh ZGQtcG9seSBwMSAobXVsLXBvbHkgcDIgKG1ha2UtcG9seSAodmFyaWFibGUgcDIpIChsaXN0ICht YWtlLXRlcm0gMCAtMSkpKSkpKQogICAgKGRlZmluZSAoYWRkLXRlcm1zIEwxIEwyKQogICAgICAo Y29uZCAoKGVtcHR5LXRlcm1saXN0PyBMMSkgTDIpCgkgICAgKChlbXB0eS10ZXJtbGlzdD8gTDIp IEwxKQoJICAgIChlbHNlCgkgICAgIChsZXQgKCh0MSAoZmlyc3QtdGVybSBMMSkpICh0MiAoZmly c3QtdGVybSBMMikpKQoJICAgICAgIChjb25kICgoPiAob3JkZXIgdDEpIChvcmRlciB0MikpCgkJ ICAgICAgKGFkam9pbi10ZXJtCgkJICAgICAgIHQxIChhZGQtdGVybXMgKHJlc3QtdGVybXMgTDEp IEwyKSkpCgkJICAgICAoKDwgKG9yZGVyIHQxKSAob3JkZXIgdDIpKQoJCSAgICAgIChhZGpvaW4t dGVybQoJCSAgICAgICB0MiAoYWRkLXRlcm1zIEwxIChyZXN0LXRlcm1zIEwyKSkpKQoJCSAgICAg KGVsc2UKCQkgICAgICAoYWRqb2luLXRlcm0KCQkgICAgICAgKG1ha2UtdGVybSAob3JkZXIgdDEp CgkJCQkgIChhZGQgKGNvZWZmIHQxKSAoY29lZmYgdDIpKSkKCQkgICAgICAgKGFkZC10ZXJtcyAo cmVzdC10ZXJtcyBMMSkKCQkJCSAgKHJlc3QtdGVybXMgTDIpKSkpKSkpKSkKCgogICAgKGRlZmlu ZSAobXVsLXBvbHkgcDEgcDIpCiAgICAgIChpZiAoc2FtZS12YXJpYWJsZT8gKHZhcmlhYmxlIHAx KSAodmFyaWFibGUgcDIpKQoJICAobWFrZS1wb2x5ICh2YXJpYWJsZSBwMSkKCQkgICAgIChtdWwt dGVybXMgKHRlcm0tbGlzdCBwMSkKCQkJCSh0ZXJtLWxpc3QgcDIpKSkKCSAgKGVycm9yICJQb2x5 cyBub3QgaW4gc2FtZSB2YXIgLS0gTVVMLVBPTFkiCgkJIChsaXN0IHAxIHAyKSkpKQogICAgKGRl ZmluZSAobXVsLXRlcm1zIEwxIEwyKQogICAgICAoaWYgKGVtcHR5LXRlcm1saXN0PyBMMSkKCSAg KHRoZS1lbXB0eS10ZXJtbGlzdCkKCSAgKGFkZC10ZXJtcyAobXVsLXRlcm0tYnktYWxsLXRlcm1z IChmaXJzdC10ZXJtIEwxKSBMMikKCQkgICAgIChtdWwtdGVybXMgKHJlc3QtdGVybXMgTDEpIEwy KSkpKQoKICAgIChkZWZpbmUgKG11bC10ZXJtLWJ5LWFsbC10ZXJtcyB0MSBMKQogICAgICAoaWYg KGVtcHR5LXRlcm1saXN0PyBMKQoJICAodGhlLWVtcHR5LXRlcm1saXN0KQoJICAobGV0ICgodDIg KGZpcnN0LXRlcm0gTCkpKQoJICAgIChhZGpvaW4tdGVybQoJICAgICAobWFrZS10ZXJtICgrIChv cmRlciB0MSkgKG9yZGVyIHQyKSkKCQkJKG11bCAoY29lZmYgdDEpIChjb2VmZiB0MikpKQoJICAg ICAobXVsLXRlcm0tYnktYWxsLXRlcm1zIHQxIChyZXN0LXRlcm1zIEwpKSkpKSkKICAgIChkZWZp bmUgKHplcm8tcG9seT8gcG9seSkKICAgICAgKHNob3cgI3QgInplcm8tcG9seT86IHBvbHk9IiBw b2x5ICJcbiIpCiAgICAgIChjb25kICgoZW1wdHktdGVybWxpc3Q/ICh0ZXJtLWxpc3QgcG9seSkp ICN0KQoJICAgICgoZXZlcnkgKGxhbWJkYSAoeCkgKGFwcGx5LWdlbmVyaWMgJ3plcm8/IChjb2Vm ZiB4KSkpICh0ZXJtLWxpc3QgcG9seSkpICN0KQoJICAgIChlbHNlICNmKSkpCiAgICAjOyhpbnRl cmZhY2UgdG8gcmVzdCBvZiB0aGUgc3lzdGVtKQogICAgKGRlZmluZSAodGFnIHApIChhdHRhY2gt dGFnICdwb2x5bm9taWFsIHApKQogICAgKHB1dCAnYWRkICcocG9seW5vbWlhbCBwb2x5bm9taWFs KQoJIChsYW1iZGEgKHAxIHAyKSAodGFnIChhZGQtcG9seSBwMSBwMikpKSkKICAgIChwdXQgJ211 bCAnKHBvbHlub21pYWwgcG9seW5vbWlhbCkKCSAobGFtYmRhIChwMSBwMikgKHRhZyAobXVsLXBv bHkgcDEgcDIpKSkpCiAgICAocHV0ICdzdWIgJyhwb2x5bm9taWFsIHBvbHlub21pYWwpCgkgKGxh bWJkYSAocDEgcDIpICh0YWcgKHN1Yi1wb2x5IHAxIHAyKSkpKQogICAgKHB1dCAnbWFrZSAncG9s eW5vbWlhbAoJIChsYW1iZGEgKHZhciB0ZXJtcykgKHRhZyAobWFrZS1wb2x5IHZhciB0ZXJtcykp KSkKICAgIChwdXQgJ3plcm8/ICcocG9seW5vbWlhbCkgemVyby1wb2x5PykKICAgICdkb25lKQog IChpbnN0YWxsLXBvbHlub21pYWwtcGFja2FnZSkKCiAgKGRlZmluZSAobWFrZS1wb2x5bm9taWFs IHZhciB0ZXJtcykKICAgICgoZ2V0ICdtYWtlICdwb2x5bm9taWFsKSB2YXIgdGVybXMpKQogIChz aG93ICN0ICJUZXN0IDI6IE1ha2luZyBwb2x5bm9taWFsczogIiAKCShtYWtlLXBvbHlub21pYWwg J3ggKGxpc3QgKGxpc3QgNSAxKSAobGlzdCA0IDIpKSkgIlxuIikKICAoc2hvdyAjdCAiVGVzdCAz OiBBZGRpbmcgcG9seW5vbWlhbHM6ICIKCShhZGQgKG1ha2UtcG9seW5vbWlhbCAneCAnKCg1IDEp ICg0IDIpICgwIDEpKSkKCSAgICAgKG1ha2UtcG9seW5vbWlhbCAneCAnKCg1IDEpKSkpICJcbiIp CiAgKHNob3cgI3QgIlRlc3QgNDogWmVybz86ICIgKHplcm8/IChtYWtlLXBvbHlub21pYWwgJ3gg JygoNSAwKSAoMyAxKSkpKSAiXG4iKQoKICAoc2hvdyAjdCAiVGVzdCA1OiBTdWJ0cmFjdGluZyBw b2x5bm9taWFsczogIgoJKHN1YiAobWFrZS1wb2x5bm9taWFsICd4ICcoKDUgMSkgKDQgMikgKDAg MSkpKQoJICAgICAobWFrZS1wb2x5bm9taWFsICd4ICcoKDAgMSkpKSkgIlxuIikKIytlbmRfc3Jj CgojK1JFU1VMVFM6CjogVGVzdCAxOiBTdWJ0cmFjdGluZyBjb21wbGV4IG51bWJlcnM6IChyYXRp b25hbCAyNDc2OTc5Nzk1MDUzNzczIC4gMjI1MTc5OTgxMzY4NTI0OCkKOiBUZXN0IDI6IE1ha2lu ZyBwb2x5bm9taWFsczogKHBvbHlub21pYWwgeCAoNSAxKSAoNCAyKSkKOiBUZXN0IDM6IEFkZGlu ZyBwb2x5bm9taWFsczogKHBvbHlub21pYWwgeCAoNSAyKSAoNCAyKSAoMCAxKSkKOiB6ZXJvLXBv bHk/OiBwb2x5PSh4ICg1IDApICgzIDEpKQo6IFRlc3QgNDogWmVybz86ICNmCjogVGVzdCA1OiBT dWJ0cmFjdGluZyBwb2x5bm9taWFsczogKHBvbHlub21pYWwgeCAoNSAxKSAoNCAyKSkKCioqKiBE T05FIEV4ZXJjaXNlIDIuODkgRGVuc2UgdGVybS1saXN0cwogICAgQ0xPU0VEOiBbMjAxOS0xMC0y MiBUdWUgMTE6NTVdCgpUaGlzIGlzIGEgY29udHJpdmVkIGV4ZXJjaXNlLCBmcmFua2x5LiBJdCdz IHB1cnBvc2UsIEkgZ3Vlc3MsIGlzIHRvIGp1c3QKcHJlcGFyZSB0aGUgcmVhZGVyIGZvciB0aGUg bmV4dCBleGVyY2lzZSwgd2hpY2ggd291bGQgYmUgdG9vIGJpZwpvdGhlcndpc2UuIFRoZSBmdW5j dGlvbnMgd2UgYXJlIGdvaW5nIHRvIHdyaXRlIGhlcmUgd2lsbCBzZXJ2ZSBhcyBhIGJhc2lzIGZv cgp0aGUgRXhlcmNpc2UgMi45MCwgd2hlcmUgd2Ugd2lsbCBwYWNrIHRoZW0gaW50byBhIHNlcGFy YXRlIHBhY2thZ2UuCgpUaGlzIGV4ZXJjaXNlIGlzIGFsc28gZWFzeSwgdGhlIG1haW4gdHJpY2sg aXMgdG8gdW5kZXJzdGFuZCB0aGF0IGEgdGVybSBhbmQgYQp0ZXJtLWxpc3QgYXJlIHR3byBzZXBh cmF0ZSB0aGluZ3MgYW5kIHRoYXQgdGhlIGxhdHRlciBpcyBub3QgbmVjZXNzYXJpbHkgdGhlCnNl dCBvZiB0aGUgZm9ybWVyLiAKClRoZSBzcGFyc2UgbGlzdC1iYXNlZCB+YWRqb2luLXRlcm1+IHNl ZW1zIHRvIGJlIG9ubHkgYWRqb2luaW5nIGhpZ2hlciB0ZXJtcywgbm90Cmxvd2VyLCBzbyBteSBk ZW5zZSBsaXN0LWJhc2VkIG9ubHkgc3VwcG9ydHMgdGhhdCB0b28uIEluIGFueSBjYXNlLCBhZGRp bmcgdGhlCm9wdGlvbiB0byBhZGpvaW4gc21hbGxlciB0ZXJtcyBzZWVtcyB0byBiZSBwb3NzaWJs ZSBpZiBuZWVkZWQuCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBv dXRwdXQKICAgIChkZWZpbmUgKGFkam9pbi10ZXJtIHRlcm0gdGVybS1saXN0KQogICAgICAoaWYg KHplcm8/IChjb2VmZiB0ZXJtKSkKCSAgdGVybS1saXN0CgkgIChpZiAoPiAob3JkZXIgdGVybSkg KGxlbmd0aCB0ZXJtLWxpc3QpKQoJICAgICAgKGFwcGVuZCAobGlzdCAoY29lZmYgdGVybSkpCgkJ ICAgICAgKG1ha2UtbGlzdCAoLSAob3JkZXIgdGVybSkgKGxlbmd0aCB0ZXJtLWxpc3QpKSAwKQoJ CSAgICAgIHRlcm0tbGlzdCkKCSAgICAgIChlcnJvciAiYWRqb2luLXRlcm06QXBwZW5kaW5nIGEg c21hbGxlciBvcmRlciB0ZXJtLiBSZWNoZWNrLiIpKSkpCgogICAgKGRlZmluZSAodGhlLWVtcHR5 LXRlcm1saXN0KSAnKCkpCiAgICAoZGVmaW5lIChmaXJzdC10ZXJtIHRlcm0tbGlzdCkgKG1ha2Ut dGVybSAoY2FyIHRlcm0tbGlzdCkpIChsZW5ndGggKGNkciB0ZXJtLWxpc3QpKSkKICAgIChkZWZp bmUgKHJlc3QtdGVybXMgdGVybS1saXN0KSAoY2RyIHRlcm0tbGlzdCkpCiAgICAoZGVmaW5lIChl bXB0eS10ZXJtbGlzdD8gdGVybS1saXN0KSAobnVsbD8gdGVybS1saXN0KSkKCiAgICAoZGVmaW5l IChtYWtlLXRlcm0gb3JkZXIgY29lZmYpIChsaXN0IG9yZGVyIGNvZWZmKSkKICAgIChkZWZpbmUg KG9yZGVyIHRlcm0pIChjYXIgdGVybSkpCiAgICAoZGVmaW5lIChjb2VmZiB0ZXJtKSAoY2FkciB0 ZXJtKSkKCgooc2hvdyAjdCAiVGVzdCAxOiBhcHBlbmRpbmcgemVybzogIiAoYWRqb2luLXRlcm0g KG1ha2UtdGVybSAxMDAgMCkgKHRoZS1lbXB0eS10ZXJtbGlzdCkpICJcbiIpCihzaG93ICN0ICJU ZXN0IDI6IGFwcGVuZGluZyB6ZXJvOiAiIChhZGpvaW4tdGVybSAobWFrZS10ZXJtIDEwMCAwKSAn KDEpKSAiXG4iKQooc2hvdyAjdCAiVGVzdCAyOiBhcHBlbmRpbmcgemVybzogIiAoYWRqb2luLXRl cm0gKG1ha2UtdGVybSAxMCAxKSAnKDEpKSAiXG4iKQoKIytlbmRfc3JjCgojK1JFU1VMVFM6Cjog VGVzdCAxOiBhcHBlbmRpbmcgemVybzogKCkKOiBUZXN0IDI6IGFwcGVuZGluZyB6ZXJvOiAoMSkK OiBUZXN0IDI6IGFwcGVuZGluZyB6ZXJvOiAoMSAwIDAgMCAwIDAgMCAwIDAgMCAxKQoKKioqIERP TkUgRXhlcmNpc2UgMi45MCBJbXBsZW1lbnRpbmcgZGVuc2UgcG9seW5vbWlhbHMgYXMgYSBzZXBh cmF0ZSBwYWNrYWdlCiAgICBDTE9TRUQ6IFsyMDE5LTEwLTIyIFR1ZSAyMTozMV0KCkFnYWluLCBz aW5jZSBpbXBsZW1lbnRpbmcgdGhlIG5ldyBwYWNrYWdlIHdpbGwgcmVxdWlyZSBhIG1ham9yIHJl d3JpdGUgb2YgdGhlCnN5c3RlbSwgaXQncyBiZXR0ZXIgdG8gY29weSB0aGUgY29kZSByYXRoZXIg dGhhbiB0YW5nbGUuCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBv dXRwdXQKICAoZGVmaW5lIChhY2N1bXVsYXRlIG9wIGluaXRpYWwgc2VxdWVuY2UpCiAgICAoaWYg KG51bGw/IHNlcXVlbmNlKQoJaW5pdGlhbAoJKGFjY3VtdWxhdGUgb3AgKG9wIGluaXRpYWwgKGNh ciBzZXF1ZW5jZSkpIChjZHIgc2VxdWVuY2UpKSkpCiAgKGRlZmluZSBmYWxzZSAjZikKICAoZGVm aW5lIHRydWUgICN0KQogIChkZWZpbmUgKG1ha2UtdGFibGUpCiAgICAobGV0ICgobG9jYWwtdGFi bGUgKGxpc3QgJyp0YWJsZSopKSkKICAgICAgKGRlZmluZSAobG9va3VwIGtleS0xIGtleS0yKQoJ KGxldCAoKHN1YnRhYmxlIChhc3NvYyBrZXktMSAoY2RyIGxvY2FsLXRhYmxlKSkpKQoJICAoaWYg c3VidGFibGUKCSAgICAgIChsZXQgKChyZWNvcmQgKGFzc29jIGtleS0yIChjZHIgc3VidGFibGUp KSkpCgkJKGlmIHJlY29yZAoJCSAgICAoY2RyIHJlY29yZCkKCQkgICAgZmFsc2UpKQoJICAgICAg ZmFsc2UpKSkKICAgICAgKGRlZmluZSAoaW5zZXJ0ISBrZXktMSBrZXktMiB2YWx1ZSkKCShsZXQg KChzdWJ0YWJsZSAoYXNzb2Mga2V5LTEgKGNkciBsb2NhbC10YWJsZSkpKSkKCSAgKGlmIHN1YnRh YmxlCgkgICAgICAobGV0ICgocmVjb3JkIChhc3NvYyBrZXktMiAoY2RyIHN1YnRhYmxlKSkpKQoJ CShpZiByZWNvcmQKCQkgICAgKHNldC1jZHIhIHJlY29yZCB2YWx1ZSkKCQkgICAgKHNldC1jZHIh IHN1YnRhYmxlCgkJCSAgICAgIChjb25zIChjb25zIGtleS0yIHZhbHVlKQoJCQkJICAgIChjZHIg c3VidGFibGUpKSkpKQoJICAgICAgKHNldC1jZHIhIGxvY2FsLXRhYmxlCgkJCShjb25zIChsaXN0 IGtleS0xCgkJCQkgICAgKGNvbnMga2V5LTIgdmFsdWUpKQoJCQkgICAgICAoY2RyIGxvY2FsLXRh YmxlKSkpKSkKCSdvaykKICAgICAgKGRlZmluZSAoZGlzcGF0Y2ggbSkKCShjb25kICgoZXE/IG0g J2xvb2t1cC1wcm9jKSBsb29rdXApCgkgICAgICAoKGVxPyBtICdpbnNlcnQtcHJvYyEpIGluc2Vy dCEpCgkgICAgICAoZWxzZSAoZXJyb3IgIlVua25vd24gb3BlcmF0aW9uIC0tIFRBQkxFIiBtKSkp KQogICAgICBkaXNwYXRjaCkpCgogIChkZWZpbmUgb3BlcmF0aW9uLXRhYmxlIChtYWtlLXRhYmxl KSkKICAoZGVmaW5lIGdldCAob3BlcmF0aW9uLXRhYmxlICdsb29rdXAtcHJvYykpCiAgKGRlZmlu ZSBwdXQgKG9wZXJhdGlvbi10YWJsZSAnaW5zZXJ0LXByb2MhKSkKCiAgKGRlZmluZSBjb2VyY2lv bi10YWJsZSAobWFrZS10YWJsZSkpCiAgKGRlZmluZSBnZXQtY29lcmNpb24gKGNvZXJjaW9uLXRh YmxlICdsb29rdXAtcHJvYykpCiAgKGRlZmluZSBwdXQtY29lcmNpb24gKGNvZXJjaW9uLXRhYmxl ICdpbnNlcnQtcHJvYyEpKQoKICAoZGVmaW5lIChhdHRhY2gtdGFnIHR5cGUtdGFnIGNvbnRlbnRz KQogICAgKGNvbnMgdHlwZS10YWcgY29udGVudHMpKQoKICAoZGVmaW5lICh0eXBlLXRhZyBkYXR1 bSkKICAgIChjb25kICgocGFpcj8gZGF0dW0pIChjYXIgZGF0dW0pKQoJICAoKGV4YWN0LWludGVn ZXI/IGRhdHVtKSAnaW50ZWdlcikKCSAgKChyZWFsPyBkYXR1bSkgJ3NjaGVtZS1udW1iZXIpCgkg IChlcnJvciAiQmFkIHRhZ2dlZCBkYXR1bSAtLSBUWVBFLVRBRyIgZGF0dW0pKSkKCiAgKGRlZmlu ZSAoY29udGVudHMgZGF0dW0pCiAgICAoY29uZCAoKHBhaXI/IGRhdHVtKSAoY2RyIGRhdHVtKSkK CSAgKChpbnRlZ2VyPyBkYXR1bSkgZGF0dW0pCgkgICgocmVhbD8gZGF0dW0pIGRhdHVtKQoJICAo ZWxzZSAoZXJyb3IgIkJhZCB0YWdnZWQgZGF0dW0gLS0gQ09OVEVOVFMiIGRhdHVtKSkpKQoKICAo ZGVmaW5lIChpbnRlZ2VyPyB4KQogICAgKGVxPyAodHlwZS10YWcgeCkgJ2ludGVnZXIpKQogIChk ZWZpbmUgKHJlY3Rhbmd1bGFyPyB6KQogICAgKGVxPyAodHlwZS10YWcgeikgJ3JlY3Rhbmd1bGFy KSkKCiAgKGRlZmluZSAocG9sYXI/IHopCiAgICAoZXE/ICh0eXBlLXRhZyB6KSAncG9sYXIpKQoK CiAgKGRlZmluZSAocmVhbC1wYXJ0IHopIChhcHBseS1nZW5lcmljICdyZWFsLXBhcnQgeikpCiAg KGRlZmluZSAoaW1hZy1wYXJ0IHopIChhcHBseS1nZW5lcmljICdpbWFnLXBhcnQgeikpCiAgKGRl ZmluZSAobWFnbml0dWRlIHopIChhcHBseS1nZW5lcmljICdtYWduaXR1ZGUgeikpCiAgKGRlZmlu ZSAoYW5nbGUgeikgKGFwcGx5LWdlbmVyaWMgJ2FuZ2xlIHopKQoKICAoZGVmaW5lIChhZGQgeCB5 KSAoYXBwbHktZ2VuZXJpYyAnYWRkIHggeSkpCiAgKGRlZmluZSAoc3ViIHggeSkgKGFwcGx5LWdl bmVyaWMgJ3N1YiB4IHkpKQogIChkZWZpbmUgKG11bCB4IHkpIChhcHBseS1nZW5lcmljICdtdWwg eCB5KSkKICAoZGVmaW5lIChkaXYgeCB5KSAoYXBwbHktZ2VuZXJpYyAnZGl2IHggeSkpCgogIChk ZWZpbmUgKGVxdT8geCB5KQogICAgKGFwcGx5LWdlbmVyaWMgJ2VxdT8geCB5KSkKICAoZGVmaW5l ICh6ZXJvPyB4KSAoYXBwbHktZ2VuZXJpYyAnemVybz8geCkpCgogIChkZWZpbmUgKGV4cCB4IHkp IChhcHBseS1nZW5lcmljICdleHAgeCB5KSkKCiAgKGRlZmluZSAoaW5zdGFsbC1zY2hlbWUtbnVt YmVyLXBhY2thZ2UpCiAgICAoZGVmaW5lICh0YWcgeCkKICAgICAgKGF0dGFjaC10YWcgJ3NjaGVt ZS1udW1iZXIgeCkpCiAgICAocHV0ICdhZGQgJyhzY2hlbWUtbnVtYmVyIHNjaGVtZS1udW1iZXIp CgkgKGxhbWJkYSAoeCB5KSAodGFnICgrIHggeSkpKSkKICAgIChwdXQgJ3N1YiAnKHNjaGVtZS1u dW1iZXIgc2NoZW1lLW51bWJlcikKCSAobGFtYmRhICh4IHkpICh0YWcgKC0geCB5KSkpKQogICAg KHB1dCAnbXVsICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJIChsYW1iZGEgKHggeSkg KHRhZyAoKiB4IHkpKSkpCiAgICAocHV0ICdkaXYgJyhzY2hlbWUtbnVtYmVyIHNjaGVtZS1udW1i ZXIpCgkgKGxhbWJkYSAoeCB5KSAodGFnICgvIHggeSkpKSkKICAgIChwdXQgJ21ha2UgJ3NjaGVt ZS1udW1iZXIKCSAobGFtYmRhICh4KSAodGFnIHgpKSkKICAgIChwdXQgJ2VxdT8gJyhzY2hlbWUt bnVtYmVyIHNjaGVtZS1udW1iZXIpCgkgKGxhbWJkYSAoeCB5KSAoPSB4IHkpKSkKICAgIChwdXQg J3plcm8/ICcoc2NoZW1lLW51bWJlcikKCSAobGFtYmRhICh4KSAoPSAwIHgpKSkKICAgIChwdXQg J2V4cCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAobGFtYmRhICh4IHkpICh0YWcg KGV4cHQgeCB5KSkpKQogICAgKHB1dCAncHJvamVjdCAnKHNjaGVtZS1udW1iZXIpCgkgKGxhbWJk YSAoeCkKCSAgIChtYWtlLXJhdGlvbmFsCgkgICAgKGV4YWN0IChudW1lcmF0b3IgeCkpCgkgICAg KGV4YWN0IChkZW5vbWluYXRvciB4KSkpKSkKICAgIChwdXQgJ3NpbmUgJyhzY2hlbWUtbnVtYmVy KSBzaW4pCiAgICAocHV0ICdjb3NpbmUgJyhzY2hlbWUtbnVtYmVyKSBjb3MpCiAgICAocHV0ICdz cXVhcmUtcm9vdCAnKHNjaGVtZS1udW1iZXIpIHNxcnQpCiAgICAocHV0ICdhcmN0YW5nZW50ICco c2NoZW1lci1udW1iZXIpIGF0YW4pCiAgICAnZG9uZSkKCiAgKGRlZmluZSAoc2luZSB4KSAoYXBw bHktZ2VuZXJpYyAnc2luZSB4KSkKICAoZGVmaW5lIChjb3NpbmUgeCkgKGFwcGx5LWdlbmVyaWMg J2Nvc2luZSB4KSkKICAoZGVmaW5lIChzcXVhcmUtcm9vdCB4KSAoYXBwbHktZ2VuZXJpYyAnc3F1 YXJlLXJvb3QgeCkpCiAgKGRlZmluZSAoYXJjdGFuZ2VudCB4KSAoYXBwbHktZ2VuZXJpYyAnYXJj dGFuZ2VudCB4KSkKCiAgKGRlZmluZSAobWFrZS1zY2hlbWUtbnVtYmVyIG4pCiAgICAoKGdldCAn bWFrZSAnc2NoZW1lLW51bWJlcikgbikpCgogIChkZWZpbmUgKGluc3RhbGwtcmF0aW9uYWwtcGFj a2FnZSkKICAgIChkZWZpbmUgKG51bWVyIHgpIChjYXIgeCkpCiAgICAoZGVmaW5lIChkZW5vbSB4 KSAoY2RyIHgpKQogICAgKGRlZmluZSAobWFrZS1yYXQgbiBkKQogICAgICAobGV0ICgoZyAoZ2Nk IG4gZCkpKQoJKGNvbnMgKC8gbiBnKSAoLyBkIGcpKSkpCiAgICAoZGVmaW5lIChhZGQtcmF0IHgg eSkKICAgICAgKG1ha2UtcmF0ICgrICgqIChudW1lciB4KSAoZGVub20geSkpCgkJICAgKCogKG51 bWVyIHkpIChkZW5vbSB4KSkpCgkJKCogKGRlbm9tIHgpIChkZW5vbSB5KSkpKQogICAgKGRlZmlu ZSAoc3ViLXJhdCB4IHkpCiAgICAgIChtYWtlLXJhdCAoLSAoKiAobnVtZXIgeCkgKGRlbm9tIHkp KQoJCSAgICgqIChudW1lciB5KSAoZGVub20geCkpKQoJCSgqIChkZW5vbSB4KSAoZGVub20geSkp KSkKICAgIChkZWZpbmUgKG11bC1yYXQgeCB5KQogICAgICAobWFrZS1yYXQgKCogKG51bWVyIHgp IChudW1lciB5KSkKCQkoKiAoZGVub20geCkgKGRlbm9tIHkpKSkpCiAgICAoZGVmaW5lIChkaXYt cmF0IHggeSkKICAgICAgKG1ha2UtcmF0ICgqIChudW1lciB4KSAoZGVub20geSkpCgkJKCogKGRl bm9tIHgpIChudW1lciB5KSkpKQoKICAgIChkZWZpbmUgKHRhZyB4KSAoYXR0YWNoLXRhZyAncmF0 aW9uYWwgeCkpCiAgICAocHV0ICdhZGQgJyhyYXRpb25hbCByYXRpb25hbCkKCSAobGFtYmRhICh4 IHkpICh0YWcgKGFkZC1yYXQgeCB5KSkpKQogICAgKHB1dCAnc3ViICcocmF0aW9uYWwgcmF0aW9u YWwpCgkgKGxhbWJkYSAoeCB5KSAodGFnIChzdWItcmF0IHggeSkpKSkKICAgIChwdXQgJ211bCAn KHJhdGlvbmFsIHJhdGlvbmFsKQoJIChsYW1iZGEgKHggeSkgKHRhZyAobXVsLXJhdCB4IHkpKSkp CiAgICAocHV0ICdkaXYgJyhyYXRpb25hbCByYXRpb25hbCkKCSAobGFtYmRhICh4IHkpICh0YWcg KGRpdi1yYXQgeCB5KSkpKQoKICAgIChwdXQgJ21ha2UgJ3JhdGlvbmFsCgkgKGxhbWJkYSAobiBk KSAodGFnIChtYWtlLXJhdCBuIGQpKSkpCiAgICAocHV0ICdlcXU/ICcocmF0aW9uYWwgcmF0aW9u YWwpCgkgKGxhbWJkYSAoeCB5KSAoPSAwIChudW1lciAoc3ViLXJhdCB4IHkpKSkpKQogICAgKHB1 dCAnemVybz8gJyhyYXRpb25hbCkgKGxhbWJkYSAoeCkgKD0gMCAobnVtZXIgeCkpKSkKICAgIChw dXQgJ3Byb2plY3QgJyhyYXRpb25hbCkgKGxhbWJkYSAoeCkgCgkJCQkoZXhhY3QgKHRydW5jYXRl ICgvIChudW1lciB4KSAoZGVub20geCkpKSkpKQogICAgKHB1dCAndG8tcmVhbCAnKHJhdGlvbmFs KSAobGFtYmRhICh4KSAoLyAobnVtZXIgKGNvbnRlbnRzIHgpKSAoZGVub20gKGNvbnRlbnRzIHgp KSkpKQogICAgJ2RvbmUpCgogIChkZWZpbmUgKG1ha2UtcmF0aW9uYWwgbiBkKQogICAgKChnZXQg J21ha2UgJ3JhdGlvbmFsKSBuIGQpKQoKICAoZGVmaW5lIChpbnN0YWxsLXJlY3Rhbmd1bGFyLXBh Y2thZ2UpCgogICAgKGRlZmluZSAocmVhbC1wYXJ0IHopIChjYXIgeikpCiAgICAoZGVmaW5lIChp bWFnLXBhcnQgeikgKGNkciB6KSkKICAgIChkZWZpbmUgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5 KSAoY29ucyB4IHkpKQogICAgKGRlZmluZSAobWFnbml0dWRlIHopCiAgICAgIChzcXVhcmUtcm9v dCAoYWRkIChzcXVhcmUgKHJlYWwtcGFydCB6KSkKCQkJKHNxdWFyZSAoaW1hZy1wYXJ0IHopKSkp KQogICAgKGRlZmluZSAoYW5nbGUgeikKICAgICAgKGFyY3RhbmdlbnQgKGltYWctcGFydCB6KSAo cmVhbC1wYXJ0IHopKSkKICAgIChkZWZpbmUgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkKICAgICAg KGNvbnMgKG11bCByIChjb3NpbmUgYSkpIChtdWwgciAoc2luZSBhKSkpKQoKICAgIChkZWZpbmUg KHRhZyB4KSAoYXR0YWNoLXRhZyAncmVjdGFuZ3VsYXIgeCkpCiAgICAocHV0ICdyZWFsLXBhcnQg JyhyZWN0YW5ndWxhcikgcmVhbC1wYXJ0KQogICAgKHB1dCAnaW1hZy1wYXJ0ICcocmVjdGFuZ3Vs YXIpIGltYWctcGFydCkKICAgIChwdXQgJ21hZ25pdHVkZSAnKHJlY3Rhbmd1bGFyKSBtYWduaXR1 ZGUpCiAgICAocHV0ICdhbmdsZSAnKHJlY3Rhbmd1bGFyKSBhbmdsZSkKICAgIChwdXQgJ21ha2Ut ZnJvbS1yZWFsLWltYWcgJ3JlY3Rhbmd1bGFyCgkgKGxhbWJkYSAoeCB5KSAodGFnIChtYWtlLWZy b20tcmVhbC1pbWFnIHggeSkpKSkKICAgIChwdXQgJ21ha2UtZnJvbS1tYWctYW5nICdyZWN0YW5n dWxhcgoJIChsYW1iZGEgKHIgYSkgKHRhZyAobWFrZS1mcm9tLW1hZy1hbmcgciBhKSkpKQogICAg J2RvbmUpCgogIChkZWZpbmUgKGluc3RhbGwtcG9sYXItcGFja2FnZSkKCiAgICAoZGVmaW5lICht YWduaXR1ZGUgeikgKGNhciB6KSkKICAgIChkZWZpbmUgKGFuZ2xlIHopIChjZHIgeikpCiAgICAo ZGVmaW5lIChtYWtlLWZyb20tbWFnLWFuZyByIGEpIChjb25zIHIgYSkpCiAgICAoZGVmaW5lIChy ZWFsLXBhcnQgeikKICAgICAgKG11bCAobWFnbml0dWRlIHopIChjb3NpbmUgKGFuZ2xlIHopKSkp CiAgICAoZGVmaW5lIChpbWFnLXBhcnQgeikKICAgICAgKG11bCAobWFnbml0dWRlIHopIChzaW5l IChhbmdsZSB6KSkpKQogICAgKGRlZmluZSAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpCiAgICAg IChjb25zIChzcXVhcmUtcm9vdCAoYWRkIChzcXVhcmUgeCkgKHNxdWFyZSB5KSkpCgkgICAgKGFy Y3RhbmdlbnQgeSB4KSkpCgogICAgKGRlZmluZSAodGFnIHgpIChhdHRhY2gtdGFnICdwb2xhciB4 KSkKICAgIChwdXQgJ3JlYWwtcGFydCAnKHBvbGFyKSByZWFsLXBhcnQpCiAgICAocHV0ICdpbWFn LXBhcnQgJyhwb2xhcikgaW1hZy1wYXJ0KQogICAgKHB1dCAnbWFnbml0dWRlICcocG9sYXIpIG1h Z25pdHVkZSkKICAgIChwdXQgJ2FuZ2xlICcocG9sYXIpIGFuZ2xlKQogICAgKHB1dCAnbWFrZS1m cm9tLXJlYWwtaW1hZyAncG9sYXIKCSAobGFtYmRhICh4IHkpICh0YWcgKG1ha2UtZnJvbS1yZWFs LWltYWcgeCB5KSkpKQogICAgKHB1dCAnbWFrZS1mcm9tLW1hZy1hbmcgJ3BvbGFyCgkgKGxhbWJk YSAociBhKSAodGFnIChtYWtlLWZyb20tbWFnLWFuZyByIGEpKSkpCiAgICAnZG9uZSkKCiAgKGRl ZmluZSAoaW5zdGFsbC1jb21wbGV4LXBhY2thZ2UpCiAgICAoZGVmaW5lIChtYWtlLWZyb20tcmVh bC1pbWFnIHggeSkKICAgICAgKChnZXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ3JlY3Rhbmd1bGFy KSB4IHkpKQogICAgKGRlZmluZSAobWFrZS1mcm9tLW1hZy1hbmcgciBhKQogICAgICAoKGdldCAn bWFrZS1mcm9tLW1hZy1hbmcgJ3BvbGFyKSByIGEpKQogICAgKGRlZmluZSAoYWRkLWNvbXBsZXgg ejEgejIpCiAgICAgIChtYWtlLWZyb20tcmVhbC1pbWFnIChhZGQgKHJlYWwtcGFydCB6MSkgKHJl YWwtcGFydCB6MikpCgkJCSAgIChhZGQgKGltYWctcGFydCB6MSkgKGltYWctcGFydCB6MikpKSkK ICAgIChkZWZpbmUgKHN1Yi1jb21wbGV4IHoxIHoyKQogICAgICAobWFrZS1mcm9tLXJlYWwtaW1h ZyAoc3ViIChyZWFsLXBhcnQgejEpIChyZWFsLXBhcnQgejIpKQoJCQkgICAoc3ViIChpbWFnLXBh cnQgejEpIChpbWFnLXBhcnQgejIpKSkpCiAgICAoZGVmaW5lIChtdWwtY29tcGxleCB6MSB6MikK ICAgICAgKG1ha2UtZnJvbS1tYWctYW5nIChtdWwgKG1hZ25pdHVkZSB6MSkgKG1hZ25pdHVkZSB6 MikpCgkJCSAoYWRkIChhbmdsZSB6MSkgKGFuZ2xlIHoyKSkpKQogICAgKGRlZmluZSAoZGl2LWNv bXBsZXggejEgejIpCiAgICAgIChtYWtlLWZyb20tbWFnLWFuZyAoZGl2IChtYWduaXR1ZGUgejEp IChtYWduaXR1ZGUgejIpKQoJCQkgKHN1YiAoYW5nbGUgejEpIChhbmdsZSB6MikpKSkKICAgIChk ZWZpbmUgKHRhZyB6KSAoYXR0YWNoLXRhZyAnY29tcGxleCB6KSkKICAgIChwdXQgJ2FkZCAnKGNv bXBsZXggY29tcGxleCkKCSAobGFtYmRhICh6MSB6MikgKHRhZyAoYWRkLWNvbXBsZXggejEgejIp KSkpCiAgICAocHV0ICdzdWIgJyhjb21wbGV4IGNvbXBsZXgpCgkgKGxhbWJkYSAoejEgejIpICh0 YWcgKHN1Yi1jb21wbGV4IHoxIHoyKSkpKQogICAgKHB1dCAnbXVsICcoY29tcGxleCBjb21wbGV4 KQoJIChsYW1iZGEgKHoxIHoyKSAodGFnIChtdWwtY29tcGxleCB6MSB6MikpKSkKICAgIChwdXQg J2RpdiAnKGNvbXBsZXggY29tcGxleCkKCSAobGFtYmRhICh6MSB6MikgKHRhZyAoZGl2LWNvbXBs ZXggejEgejIpKSkpCiAgICAocHV0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdjb21wbGV4CgkgKGxh bWJkYSAoeCB5KSAodGFnIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkpKSkKICAgIChwdXQgJ21h a2UtZnJvbS1tYWctYW5nICdjb21wbGV4CgkgKGxhbWJkYSAociBhKSAodGFnIChtYWtlLWZyb20t bWFnLWFuZyByIGEpKSkpCiAgICAocHV0ICdlcXU/ICcoY29tcGxleCBjb21wbGV4KQoJIChsYW1i ZGEgKHggeSkgKGFuZCAoPSAwIChyZWFsLXBhcnQgKHN1Yi1jb21wbGV4IHggeSkpKQoJCQkgICAg KD0gMCAoaW1hZy1wYXJ0IChzdWItY29tcGxleCB4IHkpKSkpKSkKICAgIChwdXQgJ2VxdT8gJyhy ZWN0YW5ndWxhciBwb2xhcikgZXF1PykKICAgIChwdXQgJ2VxdT8gJyhwb2xhciByZWN0YW5ndWxh cikgZXF1PykKICAgIChwdXQgJ3plcm8/ICcoY29tcGxleCkKCSAobGFtYmRhICh4KSAoZXF1PyAo dGFnIHgpICh0YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcgMCAwKSkpKSkKICAgIChwdXQgJ3Byb2pl Y3QgJyhjb21wbGV4KSAobGFtYmRhICh6KSAocmVhbC1wYXJ0IHopKSkKICAgICdkb25lKQoKICAo ZGVmaW5lIChtYWtlLWNvbXBsZXgtZnJvbS1yZWFsLWltYWcgeCB5KQogICAgKChnZXQgJ21ha2Ut ZnJvbS1yZWFsLWltYWcgJ2NvbXBsZXgpIHggeSkpCgogIChkZWZpbmUgKG1ha2UtY29tcGxleC1m cm9tLW1hZy1hbmcgciBhKQogICAgKChnZXQgJ21ha2UtZnJvbS1tYWctYW5nICdjb21wbGV4KSBy IGEpKQoKICAoaW5zdGFsbC1yZWN0YW5ndWxhci1wYWNrYWdlKQogIChpbnN0YWxsLXBvbGFyLXBh Y2thZ2UpCiAgKGluc3RhbGwtcmF0aW9uYWwtcGFja2FnZSkKICAoaW5zdGFsbC1zY2hlbWUtbnVt YmVyLXBhY2thZ2UpCiAgKGluc3RhbGwtY29tcGxleC1wYWNrYWdlKQoKICAocHV0ICdyZWFsLXBh cnQgJyhjb21wbGV4KSByZWFsLXBhcnQpCiAgKHB1dCAnaW1hZy1wYXJ0ICcoY29tcGxleCkgaW1h Zy1wYXJ0KQogIChwdXQgJ21hZ25pdHVkZSAnKGNvbXBsZXgpIG1hZ25pdHVkZSkKICAocHV0ICdh bmdsZSAnKGNvbXBsZXgpIGFuZ2xlKQoKICAoZGVmaW5lIChhcHBseS1nZW5lcmljIG9wIC4gYXJn cykKICAgIChkZWZpbmUgKGFsbC1hcmd0eXBlcy1zYW1lPyAuIGFyZ3MpCiAgICAgIChsZXQgKCh0 eXBlICh0eXBlLXRhZyAoY2FyIGFyZ3MpKSkpCgkoYWNjdW11bGF0ZSAobGFtYmRhICh4IHkpIChh bmQgeCB5KSkgI3QgKG1hcCAobGFtYmRhICh4KSAoZXE/IHR5cGUgeCkpIGFyZ3MpKSkpCiAgICAo ZGVmaW5lIChjb2VyY2lvbi1pZi1leGlzdHM/IHR5cGUgYXJnLXRhZ3MpCiAgICAgIChsZXQgKChj b2VyY2lvbi1saXN0IChtYXAgKGxhbWJkYSAoeCkgCgkJCQkgIChpZiAoZXE/IHR5cGUgeCkKCQkJ CSAgICAgIGlkZW50aXR5CgkJCQkgICAgICAoZ2V0LWNvZXJjaW9uIHggdHlwZSkpKSBhcmctdGFn cykpKQoJKGlmIChhY2N1bXVsYXRlIChsYW1iZGEgKHggeSkgKGFuZCB4IHkpKSAjdCBjb2VyY2lv bi1saXN0KQoJICAgIGNvZXJjaW9uLWxpc3QKCSAgICAjZikpKQogICAgKGRyb3AgKGxldCogKCh0 eXBlLXRhZ3MgKG1hcCB0eXBlLXRhZyBhcmdzKSkKCQkgKHByb2MgKGdldCBvcCB0eXBlLXRhZ3Mp KSkKCSAgICAoY29uZCAocHJvYyAoYXBwbHkgcHJvYyAobWFwIGNvbnRlbnRzIGFyZ3MpKSkKCQkg ICgoPSAxIChsZW5ndGggYXJncykpCgkJICAgIzsoc2hvdyAjdCAiTm8gcHJvYyBmb3VuZCBmb3Ig b3A9IiBvcCAiLCB0eXBlLXRhZ3M9IiB0eXBlLXRhZ3MgIlxuIikKCQkgICAoYXBwbHktZ2VuZXJp YyBvcCAocmFpc2UtdHlwZSAoY2FyIGFyZ3MpKSkpCgkJICAoKD0gMiAobGVuZ3RoIGFyZ3MpKQoJ CSAgIChpZiAodHlwZTE8PXR5cGUyPyAoY2FyIHR5cGUtdGFncykgKGNhZHIgdHlwZS10YWdzKSkK CQkgICAgICAgKGFwcGx5LWdlbmVyaWMgb3AgKHJhaXNlLXR5cGUgKGNhciBhcmdzKSkgKGNhZHIg YXJncykpCgkJICAgICAgIChhcHBseS1nZW5lcmljIG9wIChjYXIgYXJncykgIChyYWlzZS10eXBl IChjYWRyIGFyZ3MpKSkpKQoJCSAgKChhbmQgKD49IChsZW5ndGggYXJncykgMikgKG5vdCAoYWxs LWFyZ3R5cGVzLXNhbWU/IGFyZ3MpKSkKCQkgICAobGV0IHR5cGVzLWxvb3AgKCh0eXBlcyB0eXBl LXRhZ3MpKQoJCSAgICAgKGxldCAoKGxpc3Qtb2YtY29lcmNpb24tZnVuY3Rpb25zCgkJCSAgICAo Y29lcmNpb24taWYtZXhpc3RzPyAoY2FyIHR5cGVzKSB0eXBlLXRhZ3MpKSkKCQkgICAgICAgKGlm IGxpc3Qtb2YtY29lcmNpb24tZnVuY3Rpb25zCgkJCSAgIChhcHBseSBhcHBseS1nZW5lcmljIChj b25zIG9wIChtYXAgKGxhbWJkYSAoZnVuIGFyZykgKGZ1biBhcmcpKQoJCQkJCQkJICAgICAgbGlz dC1vZi1jb2VyY2lvbi1mdW5jdGlvbnMKCQkJCQkJCSAgICAgIGFyZ3MpKSkKCQkJICAgKGlmIChu b3QgKG51bGw/IChjZHIgdHlwZXMpKSkKCQkJICAgICAgICh0eXBlcy1sb29wIChjZHIgdHlwZXMp KQoJCQkgICAgICAgKGVycm9yICJhcHBseS1nZW5lcmljOkV2ZW4gY29lcmNpb25zIGZhaWxlZC4g Tm8gbWV0aG9kIGZvciB0aGVzZSB0eXBlcy4iKSkpKSkpCgkJICAoZWxzZSAoZXJyb3IgImFwcGx5 LWdlbmVyaWM6Tm8gbWV0aG9kIGZvciB0aGVzZSB0eXBlcyIKCQkJICAgICAgIChsaXN0IG9wIHR5 cGUtdGFncykpKSkpKSkKICAoZGVmaW5lIChzY2hlbWUtbnVtYmVyLT5jb21wbGV4IG4pCiAgICAo bWFrZS1jb21wbGV4LWZyb20tcmVhbC1pbWFnIChjb250ZW50cyBuKSAwKSkKICAocHV0LWNvZXJj aW9uICdzY2hlbWUtbnVtYmVyCgkJJ2NvbXBsZXgKCQlzY2hlbWUtbnVtYmVyLT5jb21wbGV4KQoK ICAocHV0ICdtYXgzLW1hZ25pdHVkZSAnKGNvbXBsZXggY29tcGxleCBjb21wbGV4KSAobGFtYmRh ICh6MSB6MiB6MykKCQkJCQkJICAgIChtYXggKG1hZ25pdHVkZSB6MSkgKG1hZ25pdHVkZSB6Mikg KG1hZ25pdHVkZSB6MykpKSkKICAoZGVmaW5lIChtYXgzLW1hZ25pdHVkZSB4MSB4MiB4MykgKGFw cGx5LWdlbmVyaWMgJ21heDMtbWFnbml0dWRlIHgxIHgyIHgzKSkKICAoZGVmaW5lIChpZGVudGl0 eSB4KSB4KQoKICAoZGVmaW5lIG51bWVyaWMtdG93ZXIgKGxpc3QgJ2ludGVnZXIgJ3JhdGlvbmFs ICdzY2hlbWUtbnVtYmVyICdjb21wbGV4KSkKCiAgKGRlZmluZSAoaGlnaGVyLXR5cGUgeCkKICAg IChkZWZpbmUgKGZpbmQtaGlnaGVyLXR5cGUgeCB0eXBlcykKICAgICAgKGNvbmQgKChvciAobnVs bD8gdHlwZXMpIChudWxsPyAoY2RyIHR5cGVzKSkpIChlcnJvciAiTm8gdHlwZSBoaWdoZXIgdGhh biBnaXZlbiIgeCkpCgkgICAgKChlcT8geCAoY2FyIHR5cGVzKSkgKGNhZHIgdHlwZXMpKQoJICAg IChlbHNlIChmaW5kLWhpZ2hlci10eXBlIHggKGNkciB0eXBlcykpKSkpCiAgICAoZmluZC1oaWdo ZXItdHlwZSB4IG51bWVyaWMtdG93ZXIpKQoKICAoZGVmaW5lICh0eXBlMTw9dHlwZTI/IHR5cGUx IHR5cGUyKQogICAgKGlmIChub3QgKG1lbXEgdHlwZTEgbnVtZXJpYy10b3dlcikpCgkoZXJyb3Ig IlR5cGUgMSBub3QgaW4gdGhlIG51bWVyaWMgdG93ZXIiKSkKICAgIChpZiAobm90IChtZW1xIHR5 cGUyIG51bWVyaWMtdG93ZXIpKQoJKGVycm9yICJUeXBlIDIgbm90IGluIHRoZSBudW1lcmljIHRv d2VyIikpCiAgICAobGV0IGxvb3AgKCh0eXBlcyBudW1lcmljLXRvd2VyKSkKICAgICAgKGNvbmQg KChudWxsPyB0eXBlcykgKGVycm9yICJUeXBlIDEgYW5kIHR5cGUgMiBhcmUgaW5jb21wYXJhYmxl IiB0eXBlMSB0eXBlMikpCgkgICAgKChlcT8gKGNhciB0eXBlcykgdHlwZTEpICN0KQoJICAgICgo ZXE/IChjYXIgdHlwZXMpIHR5cGUyKSAjZikKCSAgICAoZWxzZSAobG9vcCAoY2RyIHR5cGVzKSkp KSkpCgogIChkZWZpbmUgKGludGVnZXItPnJhdGlvbmFsIHgpCiAgICAobWFrZS1yYXRpb25hbCB4 IDEpKQoKICAoZGVmaW5lIChyYXRpb25hbC0+c2NoZW1lLW51bWJlciB4KQogICAgKG1ha2Utc2No ZW1lLW51bWJlciAoKGdldCAndG8tcmVhbCAnKHJhdGlvbmFsKSkgeCkpKQogIChwdXQtY29lcmNp b24gJ2ludGVnZXIgJ3JhdGlvbmFsIGludGVnZXItPnJhdGlvbmFsKQogIChwdXQtY29lcmNpb24g J3JhdGlvbmFsICdzY2hlbWUtbnVtYmVyIHJhdGlvbmFsLT5zY2hlbWUtbnVtYmVyKQoKICAoZGVm aW5lIChyYWlzZS10eXBlIHgpCiAgICAobGV0ICgoY29udmVydGVyIChnZXQtY29lcmNpb24gKHR5 cGUtdGFnIHgpIChoaWdoZXItdHlwZSAodHlwZS10YWcgeCkpKSkpCiAgICAgIChpZiBjb252ZXJ0 ZXIKCSAgKGNvbnZlcnRlciB4KQoJICAoZXJyb3IgIk5vIGNvZXJjaW9uIGZvdW5kIGZvciB4IiAo dHlwZS10YWcgeCkgeCkpKSkKCgogIChkZWZpbmUgKHJlbWFpbmRlci1pbnRlZ2VyIGEgYikKICAg ICh3aGVuIChvciAobm90IChpbnRlZ2VyPyBhKSkgKG5vdCAoaW50ZWdlcj8gYikpKQogICAgICAo ZXJyb3IgIkFyZ3VtZW50cyBtdXN0IGJlIGludGVnZXJzIiBhIGIpKQogICAgKHJlbWFpbmRlciBh IGIpKQoKICAocHV0ICdyZW1haW5kZXIgJyhpbnRlZ2VyIGludGVnZXIpIHJlbWFpbmRlci1pbnRl Z2VyKQogIChkZWZpbmUgKHJlbWFpbmRlci1nZW5lcmFsaXplZCBhIGIpIChhcHBseS1nZW5lcmlj ICdyZW1haW5kZXIgYSBiKSkKCiAgKGRlZmluZSAocHJvamVjdCBvYmopCiAgICAoYXBwbHktZ2Vu ZXJpYyAncHJvamVjdCBvYmopKQogIChkZWZpbmUgKGRyb3BwYWJsZT8gb2JqKQogICAgKGNvbmQg KChub3QgKG1lbXEgKHR5cGUtdGFnIG9iaikgbnVtZXJpYy10b3dlcikpICNmKQoJICAoKGVxPyAo dHlwZS10YWcgb2JqKSAoY2FyIG51bWVyaWMtdG93ZXIpKSAjZikKCSAgKChlcXU/IG9iaiAocmFp c2UtdHlwZSAocHJvamVjdCBvYmopKSkgI3QpCgkgIChlbHNlICNmKSkpCiAgKGRlZmluZSAoZHJv cCBvYmopIAogICAgKGlmIChkcm9wcGFibGU/IG9iaikKCShkcm9wIChwcm9qZWN0IG9iaikpCglv YmopKQoKICAoc2hvdyAjdCAiVGVzdCAxOiBTdWJ0cmFjdGluZyBjb21wbGV4IG51bWJlcnM6ICIK CShzdWIKCSAobWFrZS1jb21wbGV4LWZyb20tcmVhbC1pbWFnIDEuMSAyKQoJIChtYWtlLWNvbXBs ZXgtZnJvbS1yZWFsLWltYWcgMCAyKSkgIlxuIikKICAoZGVmaW5lIChpbnN0YWxsLXBvbHlub21p YWwtcGFja2FnZSkKICAgIChkZWZpbmUgKG1ha2UtcG9seSB2YXJpYWJsZSB0ZXJtLWxpc3QpCiAg ICAgIChjb25zIHZhcmlhYmxlIHRlcm0tbGlzdCkpCiAgICAoZGVmaW5lICh2YXJpYWJsZSBwKSAo Y2FyIHApKQogICAgKGRlZmluZSAodGVybS1saXN0IHApCiAgICAgIChjZHIgcCkpCiAgICAoZGVm aW5lICh2YXJpYWJsZT8geCkgKHN5bWJvbD8geCkpCiAgICAoZGVmaW5lIChzYW1lLXZhcmlhYmxl PyB2MSB2MikKICAgICAgKGFuZCAodmFyaWFibGU/IHYxKSAodmFyaWFibGU/IHYyKSAoZXE/IHYx IHYyKSkpCiAgICAoZGVmaW5lICg9bnVtYmVyPyBleHAgbnVtKQogICAgICAoYW5kIChudW1iZXI/ IGV4cCkgKD0gZXhwIG51bSkpKQogICAgKGRlZmluZSAodGhlLWVtcHR5LXRlcm1saXN0KSAnKCkp CgogICAgKGRlZmluZSAocmVzdC10ZXJtcyB0ZXJtLWxpc3QpIChjZHIgdGVybS1saXN0KSkKICAg IChkZWZpbmUgKGVtcHR5LXRlcm1saXN0PyB0ZXJtLWxpc3QpIChudWxsPyB0ZXJtLWxpc3QpKQoK ICAgIChkZWZpbmUgKG1ha2UtdGVybSBvcmRlciBjb2VmZikgKGxpc3Qgb3JkZXIgY29lZmYpKQog ICAgKGRlZmluZSAob3JkZXIgdGVybSkgKGNhciB0ZXJtKSkKICAgIChkZWZpbmUgKGNvZWZmIHRl cm0pIChjYWRyIHRlcm0pKQoKICAgICM7KGNvbnRpbnVlZCBvbiBuZXh0IHBhZ2UpCgogICAgKGRl ZmluZSAoYWRkLXBvbHkgcDEgcDIpCiAgICAgIChpZiAoc2FtZS12YXJpYWJsZT8gKHZhcmlhYmxl IHAxKSAodmFyaWFibGUgcDIpKQoJICAobWFrZS1wb2x5ICh2YXJpYWJsZSBwMSkKCQkgICAgIChh ZGQtdGVybXMgKHRlcm0tbGlzdCBwMSkKCQkJCSh0ZXJtLWxpc3QgcDIpKSkKCSAgKGVycm9yICJQ b2x5cyBub3QgaW4gc2FtZSB2YXIgLS0gQURELVBPTFkiCgkJIChsaXN0IHAxIHAyKSkpKQogICAg KGRlZmluZSAoc3ViLXBvbHkgcDEgcDIpCiAgICAgIChhZGQtcG9seSBwMSAobXVsLXBvbHkgcDIg KG1ha2UtcG9seSAodmFyaWFibGUgcDIpIChsaXN0IChtYWtlLXRlcm0gMCAtMSkpKSkpKQogICAg KGRlZmluZSAoYWRkLXRlcm1zIEwxIEwyKQogICAgICAoY29uZCAoKGVtcHR5LXRlcm1saXN0PyBM MSkgTDIpCgkgICAgKChlbXB0eS10ZXJtbGlzdD8gTDIpIEwxKQoJICAgIChlbHNlCgkgICAgIChs ZXQgKCh0MSAoZmlyc3QtdGVybSBMMSkpICh0MiAoZmlyc3QtdGVybSBMMikpKQoJICAgICAgIChj b25kICgoPiAob3JkZXIgdDEpIChvcmRlciB0MikpCgkJICAgICAgKGFkam9pbi10ZXJtCgkJICAg ICAgIHQxIChhZGQtdGVybXMgKHJlc3QtdGVybXMgTDEpIEwyKSkpCgkJICAgICAoKDwgKG9yZGVy IHQxKSAob3JkZXIgdDIpKQoJCSAgICAgIChhZGpvaW4tdGVybQoJCSAgICAgICB0MiAoYWRkLXRl cm1zIEwxIChyZXN0LXRlcm1zIEwyKSkpKQoJCSAgICAgKGVsc2UKCQkgICAgICAoYWRqb2luLXRl cm0KCQkgICAgICAgKG1ha2UtdGVybSAob3JkZXIgdDEpCgkJCQkgIChhZGQgKGNvZWZmIHQxKSAo Y29lZmYgdDIpKSkKCQkgICAgICAgKGFkZC10ZXJtcyAocmVzdC10ZXJtcyBMMSkKCQkJCSAgKHJl c3QtdGVybXMgTDIpKSkpKSkpKSkKCgogICAgKGRlZmluZSAobXVsLXBvbHkgcDEgcDIpCiAgICAg IChpZiAoc2FtZS12YXJpYWJsZT8gKHZhcmlhYmxlIHAxKSAodmFyaWFibGUgcDIpKQoJICAobWFr ZS1wb2x5ICh2YXJpYWJsZSBwMSkKCQkgICAgIChtdWwtdGVybXMgKHRlcm0tbGlzdCBwMSkKCQkJ CSh0ZXJtLWxpc3QgcDIpKSkKCSAgKGVycm9yICJQb2x5cyBub3QgaW4gc2FtZSB2YXIgLS0gTVVM LVBPTFkiCgkJIChsaXN0IHAxIHAyKSkpKQogICAgKGRlZmluZSAobXVsLXRlcm1zIEwxIEwyKQog ICAgICAoaWYgKGVtcHR5LXRlcm1saXN0PyBMMSkKCSAgKHRoZS1lbXB0eS10ZXJtbGlzdCkKCSAg KGFkZC10ZXJtcyAobXVsLXRlcm0tYnktYWxsLXRlcm1zIChmaXJzdC10ZXJtIEwxKSBMMikKCQkg ICAgIChtdWwtdGVybXMgKHJlc3QtdGVybXMgTDEpIEwyKSkpKQoKICAgIChkZWZpbmUgKG11bC10 ZXJtLWJ5LWFsbC10ZXJtcyB0MSBMKQogICAgICAoaWYgKGVtcHR5LXRlcm1saXN0PyBMKQoJICAo dGhlLWVtcHR5LXRlcm1saXN0KQoJICAobGV0ICgodDIgKGZpcnN0LXRlcm0gTCkpKQoJICAgIChh ZGpvaW4tdGVybQoJICAgICAobWFrZS10ZXJtICgrIChvcmRlciB0MSkgKG9yZGVyIHQyKSkKCQkJ KG11bCAoY29lZmYgdDEpIChjb2VmZiB0MikpKQoJICAgICAobXVsLXRlcm0tYnktYWxsLXRlcm1z IHQxIChyZXN0LXRlcm1zIEwpKSkpKSkKICAgIChkZWZpbmUgKHplcm8tcG9seT8gcG9seSkKICAg ICAgIzsoc2hvdyAjdCAiemVyby1wb2x5PzogcG9seT0iIChkaXNwbGF5ZWQgcG9seSkgIlxuIikK ICAgICAgKGNvbmQgKChlbXB0eS10ZXJtbGlzdD8gKHRlcm0tbGlzdCBwb2x5KSkgI3QpCgkgICAg KChub3QgKD0gMCAoY29lZmYgKGZpcnN0LXRlcm0gKHRlcm0tbGlzdCBwb2x5KSkpKSkgI2YpCgkg ICAgKGVsc2UgKHplcm8tcG9seT8gCgkJICAgKG1ha2UtcG9seSAodmFyaWFibGUgcG9seSkKCQkJ ICAgICAgKHJlc3QtdGVybXMgKHRlcm0tbGlzdCBwb2x5KSkpKSkpKQogICAgKGRlZmluZSAodGFn IHApIChhdHRhY2gtdGFnICdwb2x5bm9taWFsIHApKQogICAgKGRlZmluZSAodGVybWxpc3QtdHlw ZS1vZiB0ZXJtLWxpc3QpCiAgICAgICM7KHNob3cgI3QgInQtdC1vOiB0ZXJtLWxpc3Q9IiAoZGlz cGxheWVkIHRlcm0tbGlzdCkgIlxuIikKICAgICAgKGNvbmQgKChudWxsPyB0ZXJtLWxpc3QpICdz cGFyc2UpCgkgICAgKChwYWlyPyAoY2FyIHRlcm0tbGlzdCkpICdzcGFyc2UpCgkgICAgKChsaXN0 PyB0ZXJtLWxpc3QpICdkZW5zZSkKCSAgICAoZWxzZSAoZXJyb3IgIlVua25vd24gdHlwZSBvZiBs aXN0IiB0ZXJtLWxpc3QpKSkpCiAgICAoZGVmaW5lIChhZGpvaW4tdGVybSB0ZXJtIHRlcm0tbGlz dCkKICAgICAgKChnZXQgJ2Fkam9pbi10ZXJtICh0ZXJtbGlzdC10eXBlLW9mIHRlcm0tbGlzdCkp IHRlcm0gdGVybS1saXN0KSkKICAgIChkZWZpbmUgKGZpcnN0LXRlcm0gdGVybS1saXN0KQogICAg ICAjOyhzaG93ICN0ICJmaXJzdC10ZXJtOiB0ZXJtLWxpc3Q9IiAoZGlzcGxheWVkIHRlcm0tbGlz dCkgIlxuIikKICAgICAgIzsoc2hvdyAjdCAiZmlyc3QtdGVybTogdGVybS1saXN0LXR5cGU9IiAo ZGlzcGxheWVkICh0ZXJtbGlzdC10eXBlLW9mIHRlcm0tbGlzdCkpICJcbiIpCiAgICAgICgoZ2V0 ICdmaXJzdC10ZXJtICh0ZXJtbGlzdC10eXBlLW9mIHRlcm0tbGlzdCkpIHRlcm0tbGlzdCkpCiAg ICAocHV0ICdhZGQgJyhwb2x5bm9taWFsIHBvbHlub21pYWwpCgkgKGxhbWJkYSAocDEgcDIpICh0 YWcgKGFkZC1wb2x5IHAxIHAyKSkpKQogICAgKHB1dCAnbXVsICcocG9seW5vbWlhbCBwb2x5bm9t aWFsKQoJIChsYW1iZGEgKHAxIHAyKSAodGFnIChtdWwtcG9seSBwMSBwMikpKSkKICAgIChwdXQg J3N1YiAnKHBvbHlub21pYWwgcG9seW5vbWlhbCkKCSAobGFtYmRhIChwMSBwMikgKHRhZyAoc3Vi LXBvbHkgcDEgcDIpKSkpCiAgICAocHV0ICdtYWtlICdwb2x5bm9taWFsCgkgKGxhbWJkYSAodmFy IHRlcm1zKSAodGFnIChtYWtlLXBvbHkgdmFyIHRlcm1zKSkpKQogICAgKHB1dCAnemVybz8gJyhw b2x5bm9taWFsKSB6ZXJvLXBvbHk/KQogICAgJ2RvbmUpCiAgKGluc3RhbGwtcG9seW5vbWlhbC1w YWNrYWdlKQoKICAoZGVmaW5lIChpbnN0YWxsLXBvbHlub21pYWwtc3BhcnNlLXBhY2thZ2UpCiAg ICAoZGVmaW5lIChjb2VmZiB0ZXJtKSAoY2FkciB0ZXJtKSkKICAgIChkZWZpbmUgKGZpcnN0LXRl cm0tc3BhcnNlIHRlcm0tbGlzdCkgKGNhciB0ZXJtLWxpc3QpKQogICAgKGRlZmluZSAoYWRqb2lu LXRlcm0tc3BhcnNlIHRlcm0gdGVybS1saXN0KQogICAgICAoaWYgKHplcm8/IChjb2VmZiB0ZXJt KSkKCSAgdGVybS1saXN0CgkgIChjb25zIHRlcm0gdGVybS1saXN0KSkpCiAgICAocHV0ICdhZGpv aW4tdGVybSAnc3BhcnNlIGFkam9pbi10ZXJtLXNwYXJzZSkKICAgIChwdXQgJ2ZpcnN0LXRlcm0g J3NwYXJzZSBmaXJzdC10ZXJtLXNwYXJzZSkKICAgICdkb25lKQogIChpbnN0YWxsLXBvbHlub21p YWwtc3BhcnNlLXBhY2thZ2UpCgogIChkZWZpbmUgKGluc3RhbGwtcG9seW5vbWlhbC1kZW5zZS1w YWNrYWdlKQogICAgKGRlZmluZSAobWFrZS10ZXJtIG9yZGVyIGNvZWZmKSAobGlzdCBvcmRlciBj b2VmZikpCiAgICAoZGVmaW5lIChvcmRlciB0ZXJtKSAoY2FyIHRlcm0pKQogICAgKGRlZmluZSAo Y29lZmYgdGVybSkgKGNhZHIgdGVybSkpCgogICAgKGRlZmluZSAoYWRqb2luLXRlcm0tZGVuc2Ug dGVybSB0ZXJtLWxpc3QpCgkoaWYgKHplcm8/IChjb2VmZiB0ZXJtKSkKCSAgICB0ZXJtLWxpc3QK CSAgICAoaWYgKD4gKG9yZGVyIHRlcm0pIChsZW5ndGggdGVybS1saXN0KSkKCQkoYXBwZW5kIChs aXN0IChjb2VmZiB0ZXJtKSkKCQkJKG1ha2UtbGlzdCAoLSAob3JkZXIgdGVybSkgKGxlbmd0aCB0 ZXJtLWxpc3QpKSAwKQoJCQl0ZXJtLWxpc3QpCgkJKGVycm9yICJhZGpvaW4tdGVybTpBcHBlbmRp bmcgYSBzbWFsbGVyIG9yZGVyIHRlcm0uIFJlY2hlY2suIikpKSkKICAgIChkZWZpbmUgKGZpcnN0 LXRlcm0tZGVuc2UgdGVybS1saXN0KSAKICAgICAgICM7KHNob3cgI3QgImZpcnN0LXRlcm0tZGVu c2U6ICIgKGRpc3BsYXllZCAobWFrZS10ZXJtIChjYXIgdGVybS1saXN0KSAobGVuZ3RoIChjZHIg dGVybS1saXN0KSkpKSAiXG4iKQogICAgICAgKG1ha2UtdGVybSAobGVuZ3RoIChjZHIgdGVybS1s aXN0KSkgKGNhciB0ZXJtLWxpc3QpICkpCiAgICAocHV0ICdhZGpvaW4tdGVybSAnZGVuc2UgYWRq b2luLXRlcm0tZGVuc2UpCiAgICAocHV0ICdmaXJzdC10ZXJtICdkZW5zZSBmaXJzdC10ZXJtLWRl bnNlKQogICAgJ2RvbmUpCiAgKGluc3RhbGwtcG9seW5vbWlhbC1kZW5zZS1wYWNrYWdlKQoKICAo ZGVmaW5lIChtYWtlLXBvbHlub21pYWwgdmFyIHRlcm1zKQogICAgKChnZXQgJ21ha2UgJ3BvbHlu b21pYWwpIHZhciB0ZXJtcykpCiAgKHNob3cgI3QgIlRlc3QgMjogTWFraW5nIHBvbHlub21pYWxz OiAiIAoJKG1ha2UtcG9seW5vbWlhbCAneCAobGlzdCAobGlzdCA1IDEpIChsaXN0IDQgMikpKSAi XG4iKQogIChzaG93ICN0ICJUZXN0IDM6IFplcm8/OiAiIAoJKHplcm8/IChtYWtlLXBvbHlub21p YWwgJ3ggKGxpc3QgKGxpc3QgNSAxKSAobGlzdCA0IDIpKSkpICJcbiIpCiAgKHNob3cgI3QgIlRl c3QgNDogQWRkaW5nIHBvbHlub21pYWxzOiAiCgkoYWRkIChtYWtlLXBvbHlub21pYWwgJ3ggJygo NSAxKSAoNCAyKSAoMCAxKSkpCgkgICAgIChtYWtlLXBvbHlub21pYWwgJ3ggJygoNSAxKSkpKSAi XG4iKQogICM7KHNob3cgI3QgIlRlc3QgNDogWmVybz86ICIgKHplcm8/IChtYWtlLXBvbHlub21p YWwgJ3ggJygoNSAwKSAoMyAxKSkpKSAiXG4iKQoKICAoc2hvdyAjdCAiVGVzdCA1OiBTdWJ0cmFj dGluZyBwb2x5bm9taWFsczogIgoJKHN1YiAobWFrZS1wb2x5bm9taWFsICd4ICcoKDUgMSkgKDQg MikgKDAgMSkpKQoJICAgICAobWFrZS1wb2x5bm9taWFsICd4ICcoKDAgMSkpKSkgIlxuIikKCiAg KHNob3cgI3QgIlRlc3QgNjogTWFraW5nIGEgZGVuc2UgcG9seW5vbWlhbDogIiAobWFrZS1wb2x5 bm9taWFsICd4ICcoMSAyIDMgNCA1KSkgIlxuIikKICAoc2hvdyAjdCAiVGVzdCA3OiB6ZXJvPyBk ZW5zZSBwb2x5bm9taWFsOiAiIChkaXNwbGF5ZWQgKHplcm8/IChtYWtlLXBvbHlub21pYWwgJ3gg JygwKSkpKSAiXG4iKQogIChzaG93ICN0ICJUZXN0IDg6IHplcm8/IGRlbnNlIHBvbHlub21pYWw6 ICIgKGRpc3BsYXllZCAoemVybz8gKG1ha2UtcG9seW5vbWlhbCAneCAnKDEpKSkpICJcbiIpCiAg KHNob3cgI3QgIlRlc3QgOTogQWRkaW5nIGRlbnNlIHBvbHlub21pYWxzOiAiCgkoYWRkIChtYWtl LXBvbHlub21pYWwgJ3ggJygxIDIgMCAwIDAgMSkpCgkgICAgIChtYWtlLXBvbHlub21pYWwgJ3gg JygxIDAgMCAwIDAgMCkpKSAiXG4iKQogIChzaG93ICN0ICJUZXN0MTA6IFN1YnRyYWN0aW5nIGRl bnNlIHBvbHlub21pYWxzOiAiCgkoc3ViIChtYWtlLXBvbHlub21pYWwgJ3ggJygxIDIgMCAwIDAg MSkpCgkgICAgIChtYWtlLXBvbHlub21pYWwgJ3ggJygxIDAgMCAwIDAgMCkpKSAiXG4iKQogIChz aG93ICN0ICJUZXN0MTE6IFN1YnRyYWN0aW5nIGRlbnNlIGFuZCBzcGFyc2UgcG9seW5vbWlhbHM6 ICIKCShzdWIgKG1ha2UtcG9seW5vbWlhbCAneCAnKDEgMiAwIDAgMCAxKSkKCSAgICAgKG1ha2Ut cG9seW5vbWlhbCAneCAnKCg0IDIpKSkpICJcbiIpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgojK2Jl Z2luX2V4YW1wbGUKVGVzdCAxOiBTdWJ0cmFjdGluZyBjb21wbGV4IG51bWJlcnM6IChyYXRpb25h bCAyNDc2OTc5Nzk1MDUzNzczIC4gMjI1MTc5OTgxMzY4NTI0OCkKVGVzdCAyOiBNYWtpbmcgcG9s eW5vbWlhbHM6IChwb2x5bm9taWFsIHggKDUgMSkgKDQgMikpClRlc3QgMzogWmVybz86ICNmClRl c3QgNDogQWRkaW5nIHBvbHlub21pYWxzOiAocG9seW5vbWlhbCB4ICg1IDIpICg0IDIpICgwIDEp KQpUZXN0IDU6IFN1YnRyYWN0aW5nIHBvbHlub21pYWxzOiAocG9seW5vbWlhbCB4ICg1IDEpICg0 IDIpKQpUZXN0IDY6IE1ha2luZyBhIGRlbnNlIHBvbHlub21pYWw6IChwb2x5bm9taWFsIHggMSAy IDMgNCA1KQpUZXN0IDc6IHplcm8/IGRlbnNlIHBvbHlub21pYWw6ICN0ClRlc3QgODogemVybz8g ZGVuc2UgcG9seW5vbWlhbDogI2YKVGVzdCA5OiBBZGRpbmcgZGVuc2UgcG9seW5vbWlhbHM6IChw b2x5bm9taWFsIHggKDUgMikgKDQgMikgKDAgMSkpClRlc3QxMDogU3VidHJhY3RpbmcgZGVuc2Ug cG9seW5vbWlhbHM6IChwb2x5bm9taWFsIHggMiAwIDAgMCAxKQpUZXN0MTE6IFN1YnRyYWN0aW5n IGRlbnNlIGFuZCBzcGFyc2UgcG9seW5vbWlhbHM6IChwb2x5bm9taWFsIHggMSAwIDAgMCAwIDEp CiMrZW5kX2V4YW1wbGUKClRoaXMgYWxzbyB0dXJuZWQgb3V0IHRvIGJlIG5vdCBzdWNoIGEgZGlm ZmljdWx0IGV4ZXJjaXNlLiBUaGUgc2xpZ2h0bHkKY29udHJvdmVyc2lhbCB0aGluZyB0aGF0IEkg YW0gY29uY2VybmVkIHdpdGggaXMgdGhhdCB0aGUgZnVuY3Rpb24KfnRlcm1saXN0LXR5cGUtb2Z+ IGlzIG5vdCBiYXNlZCBvbiB0YWdzLCBhbmQgaXMgbm90IGV2ZW4gdXNpbmcgdGhlIG1haW4KZ2Vu ZXJpYyBkaXNwYXRjaCBzdWJzeXN0ZW0uIEJ1dCBzbyBmYXIgdGhpcyBzZWVtcyBnb29kIGVub3Vn aC4KCioqKiBET05FIEV4ZXJjaXNlIDIuOTEgRGl2aXNpb24gb2YgcG9seW5vbWlhbHMKICAgIENM T1NFRDogWzIwMTktMTAtMjMgV2VkIDAwOjExXQpBbmQgYWdhaW4sIHNpbmNlIGRpdi1wb2x5IGlz IGFuIGludGVybmFsIHByb2NlZHVyZSBvZiB0aGUgcG9seW5vbWlhbCBwYWNrYWdlLApsZXQgbWUg Y29weSB0aGUgd2hvbGUgY29kZS4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpy ZXN1bHRzIG91dHB1dAogIChkZWZpbmUgKGFjY3VtdWxhdGUgb3AgaW5pdGlhbCBzZXF1ZW5jZSkK ICAgIChpZiAobnVsbD8gc2VxdWVuY2UpCglpbml0aWFsCgkoYWNjdW11bGF0ZSBvcCAob3AgaW5p dGlhbCAoY2FyIHNlcXVlbmNlKSkgKGNkciBzZXF1ZW5jZSkpKSkKICAoZGVmaW5lIGZhbHNlICNm KQogIChkZWZpbmUgdHJ1ZSAgI3QpCiAgKGRlZmluZSAobWFrZS10YWJsZSkKICAgIChsZXQgKChs b2NhbC10YWJsZSAobGlzdCAnKnRhYmxlKikpKQogICAgICAoZGVmaW5lIChsb29rdXAga2V5LTEg a2V5LTIpCgkobGV0ICgoc3VidGFibGUgKGFzc29jIGtleS0xIChjZHIgbG9jYWwtdGFibGUpKSkp CgkgIChpZiBzdWJ0YWJsZQoJICAgICAgKGxldCAoKHJlY29yZCAoYXNzb2Mga2V5LTIgKGNkciBz dWJ0YWJsZSkpKSkKCQkoaWYgcmVjb3JkCgkJICAgIChjZHIgcmVjb3JkKQoJCSAgICBmYWxzZSkp CgkgICAgICBmYWxzZSkpKQogICAgICAoZGVmaW5lIChpbnNlcnQhIGtleS0xIGtleS0yIHZhbHVl KQoJKGxldCAoKHN1YnRhYmxlIChhc3NvYyBrZXktMSAoY2RyIGxvY2FsLXRhYmxlKSkpKQoJICAo aWYgc3VidGFibGUKCSAgICAgIChsZXQgKChyZWNvcmQgKGFzc29jIGtleS0yIChjZHIgc3VidGFi bGUpKSkpCgkJKGlmIHJlY29yZAoJCSAgICAoc2V0LWNkciEgcmVjb3JkIHZhbHVlKQoJCSAgICAo c2V0LWNkciEgc3VidGFibGUKCQkJICAgICAgKGNvbnMgKGNvbnMga2V5LTIgdmFsdWUpCgkJCQkg ICAgKGNkciBzdWJ0YWJsZSkpKSkpCgkgICAgICAoc2V0LWNkciEgbG9jYWwtdGFibGUKCQkJKGNv bnMgKGxpc3Qga2V5LTEKCQkJCSAgICAoY29ucyBrZXktMiB2YWx1ZSkpCgkJCSAgICAgIChjZHIg bG9jYWwtdGFibGUpKSkpKQoJJ29rKQogICAgICAoZGVmaW5lIChkaXNwYXRjaCBtKQoJKGNvbmQg KChlcT8gbSAnbG9va3VwLXByb2MpIGxvb2t1cCkKCSAgICAgICgoZXE/IG0gJ2luc2VydC1wcm9j ISkgaW5zZXJ0ISkKCSAgICAgIChlbHNlIChlcnJvciAiVW5rbm93biBvcGVyYXRpb24gLS0gVEFC TEUiIG0pKSkpCiAgICAgIGRpc3BhdGNoKSkKCiAgKGRlZmluZSBvcGVyYXRpb24tdGFibGUgKG1h a2UtdGFibGUpKQogIChkZWZpbmUgZ2V0IChvcGVyYXRpb24tdGFibGUgJ2xvb2t1cC1wcm9jKSkK ICAoZGVmaW5lIHB1dCAob3BlcmF0aW9uLXRhYmxlICdpbnNlcnQtcHJvYyEpKQoKICAoZGVmaW5l IGNvZXJjaW9uLXRhYmxlIChtYWtlLXRhYmxlKSkKICAoZGVmaW5lIGdldC1jb2VyY2lvbiAoY29l cmNpb24tdGFibGUgJ2xvb2t1cC1wcm9jKSkKICAoZGVmaW5lIHB1dC1jb2VyY2lvbiAoY29lcmNp b24tdGFibGUgJ2luc2VydC1wcm9jISkpCgogIChkZWZpbmUgKGF0dGFjaC10YWcgdHlwZS10YWcg Y29udGVudHMpCiAgICAoY29ucyB0eXBlLXRhZyBjb250ZW50cykpCgogIChkZWZpbmUgKHR5cGUt dGFnIGRhdHVtKQogICAgKGNvbmQgKChwYWlyPyBkYXR1bSkgKGNhciBkYXR1bSkpCgkgICgoZXhh Y3QtaW50ZWdlcj8gZGF0dW0pICdpbnRlZ2VyKQoJICAoKHJlYWw/IGRhdHVtKSAnc2NoZW1lLW51 bWJlcikKCSAgKGVycm9yICJCYWQgdGFnZ2VkIGRhdHVtIC0tIFRZUEUtVEFHIiBkYXR1bSkpKQoK ICAoZGVmaW5lIChjb250ZW50cyBkYXR1bSkKICAgIChjb25kICgocGFpcj8gZGF0dW0pIChjZHIg ZGF0dW0pKQoJICAoKGludGVnZXI/IGRhdHVtKSBkYXR1bSkKCSAgKChyZWFsPyBkYXR1bSkgZGF0 dW0pCgkgIChlbHNlIChlcnJvciAiQmFkIHRhZ2dlZCBkYXR1bSAtLSBDT05URU5UUyIgZGF0dW0p KSkpCgogIChkZWZpbmUgKGludGVnZXI/IHgpCiAgICAoZXE/ICh0eXBlLXRhZyB4KSAnaW50ZWdl cikpCiAgKGRlZmluZSAocmVjdGFuZ3VsYXI/IHopCiAgICAoZXE/ICh0eXBlLXRhZyB6KSAncmVj dGFuZ3VsYXIpKQoKICAoZGVmaW5lIChwb2xhcj8geikKICAgIChlcT8gKHR5cGUtdGFnIHopICdw b2xhcikpCgoKICAoZGVmaW5lIChyZWFsLXBhcnQgeikgKGFwcGx5LWdlbmVyaWMgJ3JlYWwtcGFy dCB6KSkKICAoZGVmaW5lIChpbWFnLXBhcnQgeikgKGFwcGx5LWdlbmVyaWMgJ2ltYWctcGFydCB6 KSkKICAoZGVmaW5lIChtYWduaXR1ZGUgeikgKGFwcGx5LWdlbmVyaWMgJ21hZ25pdHVkZSB6KSkK ICAoZGVmaW5lIChhbmdsZSB6KSAoYXBwbHktZ2VuZXJpYyAnYW5nbGUgeikpCgogIChkZWZpbmUg KGFkZCB4IHkpIChhcHBseS1nZW5lcmljICdhZGQgeCB5KSkKICAoZGVmaW5lIChzdWIgeCB5KSAo YXBwbHktZ2VuZXJpYyAnc3ViIHggeSkpCiAgKGRlZmluZSAobXVsIHggeSkgKGFwcGx5LWdlbmVy aWMgJ211bCB4IHkpKQogIChkZWZpbmUgKGRpdiB4IHkpIChhcHBseS1nZW5lcmljICdkaXYgeCB5 KSkKCiAgKGRlZmluZSAoZXF1PyB4IHkpCiAgICAoYXBwbHktZ2VuZXJpYyAnZXF1PyB4IHkpKQog IChkZWZpbmUgKHplcm8/IHgpIChhcHBseS1nZW5lcmljICd6ZXJvPyB4KSkKCiAgKGRlZmluZSAo ZXhwIHggeSkgKGFwcGx5LWdlbmVyaWMgJ2V4cCB4IHkpKQoKICAoZGVmaW5lIChpbnN0YWxsLXNj aGVtZS1udW1iZXItcGFja2FnZSkKICAgIChkZWZpbmUgKHRhZyB4KQogICAgICAoYXR0YWNoLXRh ZyAnc2NoZW1lLW51bWJlciB4KSkKICAgIChwdXQgJ2FkZCAnKHNjaGVtZS1udW1iZXIgc2NoZW1l LW51bWJlcikKCSAobGFtYmRhICh4IHkpICh0YWcgKCsgeCB5KSkpKQogICAgKHB1dCAnc3ViICco c2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJIChsYW1iZGEgKHggeSkgKHRhZyAoLSB4IHkp KSkpCiAgICAocHV0ICdtdWwgJyhzY2hlbWUtbnVtYmVyIHNjaGVtZS1udW1iZXIpCgkgKGxhbWJk YSAoeCB5KSAodGFnICgqIHggeSkpKSkKICAgIChwdXQgJ2RpdiAnKHNjaGVtZS1udW1iZXIgc2No ZW1lLW51bWJlcikKCSAobGFtYmRhICh4IHkpICh0YWcgKC8geCB5KSkpKQogICAgKHB1dCAnbWFr ZSAnc2NoZW1lLW51bWJlcgoJIChsYW1iZGEgKHgpICh0YWcgeCkpKQogICAgKHB1dCAnZXF1PyAn KHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAobGFtYmRhICh4IHkpICg9IHggeSkpKQog ICAgKHB1dCAnemVybz8gJyhzY2hlbWUtbnVtYmVyKQoJIChsYW1iZGEgKHgpICg9IDAgeCkpKQog ICAgKHB1dCAnZXhwICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJIChsYW1iZGEgKHgg eSkgKHRhZyAoZXhwdCB4IHkpKSkpCiAgICAocHV0ICdwcm9qZWN0ICcoc2NoZW1lLW51bWJlcikK CSAobGFtYmRhICh4KQoJICAgKG1ha2UtcmF0aW9uYWwKCSAgICAoZXhhY3QgKG51bWVyYXRvciB4 KSkKCSAgICAoZXhhY3QgKGRlbm9taW5hdG9yIHgpKSkpKQogICAgKHB1dCAnc2luZSAnKHNjaGVt ZS1udW1iZXIpIHNpbikKICAgIChwdXQgJ2Nvc2luZSAnKHNjaGVtZS1udW1iZXIpIGNvcykKICAg IChwdXQgJ3NxdWFyZS1yb290ICcoc2NoZW1lLW51bWJlcikgc3FydCkKICAgIChwdXQgJ2FyY3Rh bmdlbnQgJyhzY2hlbWVyLW51bWJlcikgYXRhbikKICAgICdkb25lKQoKICAoZGVmaW5lIChzaW5l IHgpIChhcHBseS1nZW5lcmljICdzaW5lIHgpKQogIChkZWZpbmUgKGNvc2luZSB4KSAoYXBwbHkt Z2VuZXJpYyAnY29zaW5lIHgpKQogIChkZWZpbmUgKHNxdWFyZS1yb290IHgpIChhcHBseS1nZW5l cmljICdzcXVhcmUtcm9vdCB4KSkKICAoZGVmaW5lIChhcmN0YW5nZW50IHgpIChhcHBseS1nZW5l cmljICdhcmN0YW5nZW50IHgpKQoKICAoZGVmaW5lIChtYWtlLXNjaGVtZS1udW1iZXIgbikKICAg ICgoZ2V0ICdtYWtlICdzY2hlbWUtbnVtYmVyKSBuKSkKCiAgKGRlZmluZSAoaW5zdGFsbC1yYXRp b25hbC1wYWNrYWdlKQogICAgKGRlZmluZSAobnVtZXIgeCkgKGNhciB4KSkKICAgIChkZWZpbmUg KGRlbm9tIHgpIChjZHIgeCkpCiAgICAoZGVmaW5lIChtYWtlLXJhdCBuIGQpCiAgICAgIChsZXQg KChnIChnY2QgbiBkKSkpCgkoY29ucyAoLyBuIGcpICgvIGQgZykpKSkKICAgIChkZWZpbmUgKGFk ZC1yYXQgeCB5KQogICAgICAobWFrZS1yYXQgKCsgKCogKG51bWVyIHgpIChkZW5vbSB5KSkKCQkg ICAoKiAobnVtZXIgeSkgKGRlbm9tIHgpKSkKCQkoKiAoZGVub20geCkgKGRlbm9tIHkpKSkpCiAg ICAoZGVmaW5lIChzdWItcmF0IHggeSkKICAgICAgKG1ha2UtcmF0ICgtICgqIChudW1lciB4KSAo ZGVub20geSkpCgkJICAgKCogKG51bWVyIHkpIChkZW5vbSB4KSkpCgkJKCogKGRlbm9tIHgpIChk ZW5vbSB5KSkpKQogICAgKGRlZmluZSAobXVsLXJhdCB4IHkpCiAgICAgIChtYWtlLXJhdCAoKiAo bnVtZXIgeCkgKG51bWVyIHkpKQoJCSgqIChkZW5vbSB4KSAoZGVub20geSkpKSkKICAgIChkZWZp bmUgKGRpdi1yYXQgeCB5KQogICAgICAobWFrZS1yYXQgKCogKG51bWVyIHgpIChkZW5vbSB5KSkK CQkoKiAoZGVub20geCkgKG51bWVyIHkpKSkpCgogICAgKGRlZmluZSAodGFnIHgpIChhdHRhY2gt dGFnICdyYXRpb25hbCB4KSkKICAgIChwdXQgJ2FkZCAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJIChs YW1iZGEgKHggeSkgKHRhZyAoYWRkLXJhdCB4IHkpKSkpCiAgICAocHV0ICdzdWIgJyhyYXRpb25h bCByYXRpb25hbCkKCSAobGFtYmRhICh4IHkpICh0YWcgKHN1Yi1yYXQgeCB5KSkpKQogICAgKHB1 dCAnbXVsICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgKGxhbWJkYSAoeCB5KSAodGFnIChtdWwtcmF0 IHggeSkpKSkKICAgIChwdXQgJ2RpdiAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJIChsYW1iZGEgKHgg eSkgKHRhZyAoZGl2LXJhdCB4IHkpKSkpCgogICAgKHB1dCAnbWFrZSAncmF0aW9uYWwKCSAobGFt YmRhIChuIGQpICh0YWcgKG1ha2UtcmF0IG4gZCkpKSkKICAgIChwdXQgJ2VxdT8gJyhyYXRpb25h bCByYXRpb25hbCkKCSAobGFtYmRhICh4IHkpICg9IDAgKG51bWVyIChzdWItcmF0IHggeSkpKSkp CiAgICAocHV0ICd6ZXJvPyAnKHJhdGlvbmFsKSAobGFtYmRhICh4KSAoPSAwIChudW1lciB4KSkp KQogICAgKHB1dCAncHJvamVjdCAnKHJhdGlvbmFsKSAobGFtYmRhICh4KSAKCQkJCShleGFjdCAo dHJ1bmNhdGUgKC8gKG51bWVyIHgpIChkZW5vbSB4KSkpKSkpCiAgICAocHV0ICd0by1yZWFsICco cmF0aW9uYWwpIChsYW1iZGEgKHgpICgvIChudW1lciAoY29udGVudHMgeCkpIChkZW5vbSAoY29u dGVudHMgeCkpKSkpCiAgICAnZG9uZSkKCiAgKGRlZmluZSAobWFrZS1yYXRpb25hbCBuIGQpCiAg ICAoKGdldCAnbWFrZSAncmF0aW9uYWwpIG4gZCkpCgogIChkZWZpbmUgKGluc3RhbGwtcmVjdGFu Z3VsYXItcGFja2FnZSkKCiAgICAoZGVmaW5lIChyZWFsLXBhcnQgeikgKGNhciB6KSkKICAgIChk ZWZpbmUgKGltYWctcGFydCB6KSAoY2RyIHopKQogICAgKGRlZmluZSAobWFrZS1mcm9tLXJlYWwt aW1hZyB4IHkpIChjb25zIHggeSkpCiAgICAoZGVmaW5lIChtYWduaXR1ZGUgeikKICAgICAgKHNx dWFyZS1yb290IChhZGQgKHNxdWFyZSAocmVhbC1wYXJ0IHopKQoJCQkoc3F1YXJlIChpbWFnLXBh cnQgeikpKSkpCiAgICAoZGVmaW5lIChhbmdsZSB6KQogICAgICAoYXJjdGFuZ2VudCAoaW1hZy1w YXJ0IHopIChyZWFsLXBhcnQgeikpKQogICAgKGRlZmluZSAobWFrZS1mcm9tLW1hZy1hbmcgciBh KQogICAgICAoY29ucyAobXVsIHIgKGNvc2luZSBhKSkgKG11bCByIChzaW5lIGEpKSkpCgogICAg KGRlZmluZSAodGFnIHgpIChhdHRhY2gtdGFnICdyZWN0YW5ndWxhciB4KSkKICAgIChwdXQgJ3Jl YWwtcGFydCAnKHJlY3Rhbmd1bGFyKSByZWFsLXBhcnQpCiAgICAocHV0ICdpbWFnLXBhcnQgJyhy ZWN0YW5ndWxhcikgaW1hZy1wYXJ0KQogICAgKHB1dCAnbWFnbml0dWRlICcocmVjdGFuZ3VsYXIp IG1hZ25pdHVkZSkKICAgIChwdXQgJ2FuZ2xlICcocmVjdGFuZ3VsYXIpIGFuZ2xlKQogICAgKHB1 dCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAncmVjdGFuZ3VsYXIKCSAobGFtYmRhICh4IHkpICh0YWcg KG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSkpKQogICAgKHB1dCAnbWFrZS1mcm9tLW1hZy1hbmcg J3JlY3Rhbmd1bGFyCgkgKGxhbWJkYSAociBhKSAodGFnIChtYWtlLWZyb20tbWFnLWFuZyByIGEp KSkpCiAgICAnZG9uZSkKCiAgKGRlZmluZSAoaW5zdGFsbC1wb2xhci1wYWNrYWdlKQoKICAgIChk ZWZpbmUgKG1hZ25pdHVkZSB6KSAoY2FyIHopKQogICAgKGRlZmluZSAoYW5nbGUgeikgKGNkciB6 KSkKICAgIChkZWZpbmUgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkgKGNvbnMgciBhKSkKICAgIChk ZWZpbmUgKHJlYWwtcGFydCB6KQogICAgICAobXVsIChtYWduaXR1ZGUgeikgKGNvc2luZSAoYW5n bGUgeikpKSkKICAgIChkZWZpbmUgKGltYWctcGFydCB6KQogICAgICAobXVsIChtYWduaXR1ZGUg eikgKHNpbmUgKGFuZ2xlIHopKSkpCiAgICAoZGVmaW5lIChtYWtlLWZyb20tcmVhbC1pbWFnIHgg eSkKICAgICAgKGNvbnMgKHNxdWFyZS1yb290IChhZGQgKHNxdWFyZSB4KSAoc3F1YXJlIHkpKSkK CSAgICAoYXJjdGFuZ2VudCB5IHgpKSkKCiAgICAoZGVmaW5lICh0YWcgeCkgKGF0dGFjaC10YWcg J3BvbGFyIHgpKQogICAgKHB1dCAncmVhbC1wYXJ0ICcocG9sYXIpIHJlYWwtcGFydCkKICAgIChw dXQgJ2ltYWctcGFydCAnKHBvbGFyKSBpbWFnLXBhcnQpCiAgICAocHV0ICdtYWduaXR1ZGUgJyhw b2xhcikgbWFnbml0dWRlKQogICAgKHB1dCAnYW5nbGUgJyhwb2xhcikgYW5nbGUpCiAgICAocHV0 ICdtYWtlLWZyb20tcmVhbC1pbWFnICdwb2xhcgoJIChsYW1iZGEgKHggeSkgKHRhZyAobWFrZS1m cm9tLXJlYWwtaW1hZyB4IHkpKSkpCiAgICAocHV0ICdtYWtlLWZyb20tbWFnLWFuZyAncG9sYXIK CSAobGFtYmRhIChyIGEpICh0YWcgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkpKSkKICAgICdkb25l KQoKICAoZGVmaW5lIChpbnN0YWxsLWNvbXBsZXgtcGFja2FnZSkKICAgIChkZWZpbmUgKG1ha2Ut ZnJvbS1yZWFsLWltYWcgeCB5KQogICAgICAoKGdldCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAncmVj dGFuZ3VsYXIpIHggeSkpCiAgICAoZGVmaW5lIChtYWtlLWZyb20tbWFnLWFuZyByIGEpCiAgICAg ICgoZ2V0ICdtYWtlLWZyb20tbWFnLWFuZyAncG9sYXIpIHIgYSkpCiAgICAoZGVmaW5lIChhZGQt Y29tcGxleCB6MSB6MikKICAgICAgKG1ha2UtZnJvbS1yZWFsLWltYWcgKGFkZCAocmVhbC1wYXJ0 IHoxKSAocmVhbC1wYXJ0IHoyKSkKCQkJICAgKGFkZCAoaW1hZy1wYXJ0IHoxKSAoaW1hZy1wYXJ0 IHoyKSkpKQogICAgKGRlZmluZSAoc3ViLWNvbXBsZXggejEgejIpCiAgICAgIChtYWtlLWZyb20t cmVhbC1pbWFnIChzdWIgKHJlYWwtcGFydCB6MSkgKHJlYWwtcGFydCB6MikpCgkJCSAgIChzdWIg KGltYWctcGFydCB6MSkgKGltYWctcGFydCB6MikpKSkKICAgIChkZWZpbmUgKG11bC1jb21wbGV4 IHoxIHoyKQogICAgICAobWFrZS1mcm9tLW1hZy1hbmcgKG11bCAobWFnbml0dWRlIHoxKSAobWFn bml0dWRlIHoyKSkKCQkJIChhZGQgKGFuZ2xlIHoxKSAoYW5nbGUgejIpKSkpCiAgICAoZGVmaW5l IChkaXYtY29tcGxleCB6MSB6MikKICAgICAgKG1ha2UtZnJvbS1tYWctYW5nIChkaXYgKG1hZ25p dHVkZSB6MSkgKG1hZ25pdHVkZSB6MikpCgkJCSAoc3ViIChhbmdsZSB6MSkgKGFuZ2xlIHoyKSkp KQogICAgKGRlZmluZSAodGFnIHopIChhdHRhY2gtdGFnICdjb21wbGV4IHopKQogICAgKHB1dCAn YWRkICcoY29tcGxleCBjb21wbGV4KQoJIChsYW1iZGEgKHoxIHoyKSAodGFnIChhZGQtY29tcGxl eCB6MSB6MikpKSkKICAgIChwdXQgJ3N1YiAnKGNvbXBsZXggY29tcGxleCkKCSAobGFtYmRhICh6 MSB6MikgKHRhZyAoc3ViLWNvbXBsZXggejEgejIpKSkpCiAgICAocHV0ICdtdWwgJyhjb21wbGV4 IGNvbXBsZXgpCgkgKGxhbWJkYSAoejEgejIpICh0YWcgKG11bC1jb21wbGV4IHoxIHoyKSkpKQog ICAgKHB1dCAnZGl2ICcoY29tcGxleCBjb21wbGV4KQoJIChsYW1iZGEgKHoxIHoyKSAodGFnIChk aXYtY29tcGxleCB6MSB6MikpKSkKICAgIChwdXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ2NvbXBs ZXgKCSAobGFtYmRhICh4IHkpICh0YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSkpKQogICAg KHB1dCAnbWFrZS1mcm9tLW1hZy1hbmcgJ2NvbXBsZXgKCSAobGFtYmRhIChyIGEpICh0YWcgKG1h a2UtZnJvbS1tYWctYW5nIHIgYSkpKSkKICAgIChwdXQgJ2VxdT8gJyhjb21wbGV4IGNvbXBsZXgp CgkgKGxhbWJkYSAoeCB5KSAoYW5kICg9IDAgKHJlYWwtcGFydCAoc3ViLWNvbXBsZXggeCB5KSkp CgkJCSAgICAoPSAwIChpbWFnLXBhcnQgKHN1Yi1jb21wbGV4IHggeSkpKSkpKQogICAgKHB1dCAn ZXF1PyAnKHJlY3Rhbmd1bGFyIHBvbGFyKSBlcXU/KQogICAgKHB1dCAnZXF1PyAnKHBvbGFyIHJl Y3Rhbmd1bGFyKSBlcXU/KQogICAgKHB1dCAnemVybz8gJyhjb21wbGV4KQoJIChsYW1iZGEgKHgp IChlcXU/ICh0YWcgeCkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyAwIDApKSkpKQogICAgKHB1 dCAncHJvamVjdCAnKGNvbXBsZXgpIChsYW1iZGEgKHopIChyZWFsLXBhcnQgeikpKQogICAgJ2Rv bmUpCgogIChkZWZpbmUgKG1ha2UtY29tcGxleC1mcm9tLXJlYWwtaW1hZyB4IHkpCiAgICAoKGdl dCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAnY29tcGxleCkgeCB5KSkKCiAgKGRlZmluZSAobWFrZS1j b21wbGV4LWZyb20tbWFnLWFuZyByIGEpCiAgICAoKGdldCAnbWFrZS1mcm9tLW1hZy1hbmcgJ2Nv bXBsZXgpIHIgYSkpCgogIChpbnN0YWxsLXJlY3Rhbmd1bGFyLXBhY2thZ2UpCiAgKGluc3RhbGwt cG9sYXItcGFja2FnZSkKICAoaW5zdGFsbC1yYXRpb25hbC1wYWNrYWdlKQogIChpbnN0YWxsLXNj aGVtZS1udW1iZXItcGFja2FnZSkKICAoaW5zdGFsbC1jb21wbGV4LXBhY2thZ2UpCgogIChwdXQg J3JlYWwtcGFydCAnKGNvbXBsZXgpIHJlYWwtcGFydCkKICAocHV0ICdpbWFnLXBhcnQgJyhjb21w bGV4KSBpbWFnLXBhcnQpCiAgKHB1dCAnbWFnbml0dWRlICcoY29tcGxleCkgbWFnbml0dWRlKQog IChwdXQgJ2FuZ2xlICcoY29tcGxleCkgYW5nbGUpCgogIChkZWZpbmUgKGFwcGx5LWdlbmVyaWMg b3AgLiBhcmdzKQogICAgKGRlZmluZSAoYWxsLWFyZ3R5cGVzLXNhbWU/IC4gYXJncykKICAgICAg KGxldCAoKHR5cGUgKHR5cGUtdGFnIChjYXIgYXJncykpKSkKCShhY2N1bXVsYXRlIChsYW1iZGEg KHggeSkgKGFuZCB4IHkpKSAjdCAobWFwIChsYW1iZGEgKHgpIChlcT8gdHlwZSB4KSkgYXJncykp KSkKICAgIChkZWZpbmUgKGNvZXJjaW9uLWlmLWV4aXN0cz8gdHlwZSBhcmctdGFncykKICAgICAg KGxldCAoKGNvZXJjaW9uLWxpc3QgKG1hcCAobGFtYmRhICh4KSAKCQkJCSAgKGlmIChlcT8gdHlw ZSB4KQoJCQkJICAgICAgaWRlbnRpdHkKCQkJCSAgICAgIChnZXQtY29lcmNpb24geCB0eXBlKSkp IGFyZy10YWdzKSkpCgkoaWYgKGFjY3VtdWxhdGUgKGxhbWJkYSAoeCB5KSAoYW5kIHggeSkpICN0 IGNvZXJjaW9uLWxpc3QpCgkgICAgY29lcmNpb24tbGlzdAoJICAgICNmKSkpCiAgICAoZHJvcCAo bGV0KiAoKHR5cGUtdGFncyAobWFwIHR5cGUtdGFnIGFyZ3MpKQoJCSAocHJvYyAoZ2V0IG9wIHR5 cGUtdGFncykpKQoJICAgIChjb25kIChwcm9jIChhcHBseSBwcm9jIChtYXAgY29udGVudHMgYXJn cykpKQoJCSAgKCg9IDEgKGxlbmd0aCBhcmdzKSkKCQkgICAjOyhzaG93ICN0ICJObyBwcm9jIGZv dW5kIGZvciBvcD0iIG9wICIsIHR5cGUtdGFncz0iIHR5cGUtdGFncyAiXG4iKQoJCSAgIChhcHBs eS1nZW5lcmljIG9wIChyYWlzZS10eXBlIChjYXIgYXJncykpKSkKCQkgICgoPSAyIChsZW5ndGgg YXJncykpCgkJICAgKGlmICh0eXBlMTw9dHlwZTI/IChjYXIgdHlwZS10YWdzKSAoY2FkciB0eXBl LXRhZ3MpKQoJCSAgICAgICAoYXBwbHktZ2VuZXJpYyBvcCAocmFpc2UtdHlwZSAoY2FyIGFyZ3Mp KSAoY2FkciBhcmdzKSkKCQkgICAgICAgKGFwcGx5LWdlbmVyaWMgb3AgKGNhciBhcmdzKSAgKHJh aXNlLXR5cGUgKGNhZHIgYXJncykpKSkpCgkJICAoKGFuZCAoPj0gKGxlbmd0aCBhcmdzKSAyKSAo bm90IChhbGwtYXJndHlwZXMtc2FtZT8gYXJncykpKQoJCSAgIChsZXQgdHlwZXMtbG9vcCAoKHR5 cGVzIHR5cGUtdGFncykpCgkJICAgICAobGV0ICgobGlzdC1vZi1jb2VyY2lvbi1mdW5jdGlvbnMK CQkJICAgIChjb2VyY2lvbi1pZi1leGlzdHM/IChjYXIgdHlwZXMpIHR5cGUtdGFncykpKQoJCSAg ICAgICAoaWYgbGlzdC1vZi1jb2VyY2lvbi1mdW5jdGlvbnMKCQkJICAgKGFwcGx5IGFwcGx5LWdl bmVyaWMgKGNvbnMgb3AgKG1hcCAobGFtYmRhIChmdW4gYXJnKSAoZnVuIGFyZykpCgkJCQkJCQkg ICAgICBsaXN0LW9mLWNvZXJjaW9uLWZ1bmN0aW9ucwoJCQkJCQkJICAgICAgYXJncykpKQoJCQkg ICAoaWYgKG5vdCAobnVsbD8gKGNkciB0eXBlcykpKQoJCQkgICAgICAgKHR5cGVzLWxvb3AgKGNk ciB0eXBlcykpCgkJCSAgICAgICAoZXJyb3IgImFwcGx5LWdlbmVyaWM6RXZlbiBjb2VyY2lvbnMg ZmFpbGVkLiBObyBtZXRob2QgZm9yIHRoZXNlIHR5cGVzLiIpKSkpKSkKCQkgIChlbHNlIChlcnJv ciAiYXBwbHktZ2VuZXJpYzpObyBtZXRob2QgZm9yIHRoZXNlIHR5cGVzIgoJCQkgICAgICAgKGxp c3Qgb3AgdHlwZS10YWdzKSkpKSkpKQogIChkZWZpbmUgKHNjaGVtZS1udW1iZXItPmNvbXBsZXgg bikKICAgIChtYWtlLWNvbXBsZXgtZnJvbS1yZWFsLWltYWcgKGNvbnRlbnRzIG4pIDApKQogIChw dXQtY29lcmNpb24gJ3NjaGVtZS1udW1iZXIKCQknY29tcGxleAoJCXNjaGVtZS1udW1iZXItPmNv bXBsZXgpCgogIChwdXQgJ21heDMtbWFnbml0dWRlICcoY29tcGxleCBjb21wbGV4IGNvbXBsZXgp IChsYW1iZGEgKHoxIHoyIHozKQoJCQkJCQkgICAgKG1heCAobWFnbml0dWRlIHoxKSAobWFnbml0 dWRlIHoyKSAobWFnbml0dWRlIHozKSkpKQogIChkZWZpbmUgKG1heDMtbWFnbml0dWRlIHgxIHgy IHgzKSAoYXBwbHktZ2VuZXJpYyAnbWF4My1tYWduaXR1ZGUgeDEgeDIgeDMpKQogIChkZWZpbmUg KGlkZW50aXR5IHgpIHgpCgogIChkZWZpbmUgbnVtZXJpYy10b3dlciAobGlzdCAnaW50ZWdlciAn cmF0aW9uYWwgJ3NjaGVtZS1udW1iZXIgJ2NvbXBsZXgpKQoKICAoZGVmaW5lIChoaWdoZXItdHlw ZSB4KQogICAgKGRlZmluZSAoZmluZC1oaWdoZXItdHlwZSB4IHR5cGVzKQogICAgICAoY29uZCAo KG9yIChudWxsPyB0eXBlcykgKG51bGw/IChjZHIgdHlwZXMpKSkgKGVycm9yICJObyB0eXBlIGhp Z2hlciB0aGFuIGdpdmVuIiB4KSkKCSAgICAoKGVxPyB4IChjYXIgdHlwZXMpKSAoY2FkciB0eXBl cykpCgkgICAgKGVsc2UgKGZpbmQtaGlnaGVyLXR5cGUgeCAoY2RyIHR5cGVzKSkpKSkKICAgIChm aW5kLWhpZ2hlci10eXBlIHggbnVtZXJpYy10b3dlcikpCgogIChkZWZpbmUgKHR5cGUxPD10eXBl Mj8gdHlwZTEgdHlwZTIpCiAgICAoaWYgKG5vdCAobWVtcSB0eXBlMSBudW1lcmljLXRvd2VyKSkK CShlcnJvciAiVHlwZSAxIG5vdCBpbiB0aGUgbnVtZXJpYyB0b3dlciIpKQogICAgKGlmIChub3Qg KG1lbXEgdHlwZTIgbnVtZXJpYy10b3dlcikpCgkoZXJyb3IgIlR5cGUgMiBub3QgaW4gdGhlIG51 bWVyaWMgdG93ZXIiKSkKICAgIChsZXQgbG9vcCAoKHR5cGVzIG51bWVyaWMtdG93ZXIpKQogICAg ICAoY29uZCAoKG51bGw/IHR5cGVzKSAoZXJyb3IgIlR5cGUgMSBhbmQgdHlwZSAyIGFyZSBpbmNv bXBhcmFibGUiIHR5cGUxIHR5cGUyKSkKCSAgICAoKGVxPyAoY2FyIHR5cGVzKSB0eXBlMSkgI3Qp CgkgICAgKChlcT8gKGNhciB0eXBlcykgdHlwZTIpICNmKQoJICAgIChlbHNlIChsb29wIChjZHIg dHlwZXMpKSkpKSkKCiAgKGRlZmluZSAoaW50ZWdlci0+cmF0aW9uYWwgeCkKICAgIChtYWtlLXJh dGlvbmFsIHggMSkpCgogIChkZWZpbmUgKHJhdGlvbmFsLT5zY2hlbWUtbnVtYmVyIHgpCiAgICAo bWFrZS1zY2hlbWUtbnVtYmVyICgoZ2V0ICd0by1yZWFsICcocmF0aW9uYWwpKSB4KSkpCiAgKHB1 dC1jb2VyY2lvbiAnaW50ZWdlciAncmF0aW9uYWwgaW50ZWdlci0+cmF0aW9uYWwpCiAgKHB1dC1j b2VyY2lvbiAncmF0aW9uYWwgJ3NjaGVtZS1udW1iZXIgcmF0aW9uYWwtPnNjaGVtZS1udW1iZXIp CgogIChkZWZpbmUgKHJhaXNlLXR5cGUgeCkKICAgIChsZXQgKChjb252ZXJ0ZXIgKGdldC1jb2Vy Y2lvbiAodHlwZS10YWcgeCkgKGhpZ2hlci10eXBlICh0eXBlLXRhZyB4KSkpKSkKICAgICAgKGlm IGNvbnZlcnRlcgoJICAoY29udmVydGVyIHgpCgkgIChlcnJvciAiTm8gY29lcmNpb24gZm91bmQg Zm9yIHgiICh0eXBlLXRhZyB4KSB4KSkpKQoKCiAgKGRlZmluZSAocmVtYWluZGVyLWludGVnZXIg YSBiKQogICAgKHdoZW4gKG9yIChub3QgKGludGVnZXI/IGEpKSAobm90IChpbnRlZ2VyPyBiKSkp CiAgICAgIChlcnJvciAiQXJndW1lbnRzIG11c3QgYmUgaW50ZWdlcnMiIGEgYikpCiAgICAocmVt YWluZGVyIGEgYikpCgogIChwdXQgJ3JlbWFpbmRlciAnKGludGVnZXIgaW50ZWdlcikgcmVtYWlu ZGVyLWludGVnZXIpCiAgKGRlZmluZSAocmVtYWluZGVyLWdlbmVyYWxpemVkIGEgYikgKGFwcGx5 LWdlbmVyaWMgJ3JlbWFpbmRlciBhIGIpKQoKICAoZGVmaW5lIChwcm9qZWN0IG9iaikKICAgIChh cHBseS1nZW5lcmljICdwcm9qZWN0IG9iaikpCiAgKGRlZmluZSAoZHJvcHBhYmxlPyBvYmopCiAg ICAoY29uZCAoKG5vdCAobWVtcSAodHlwZS10YWcgb2JqKSBudW1lcmljLXRvd2VyKSkgI2YpCgkg ICgoZXE/ICh0eXBlLXRhZyBvYmopIChjYXIgbnVtZXJpYy10b3dlcikpICNmKQoJICAoKGVxdT8g b2JqIChyYWlzZS10eXBlIChwcm9qZWN0IG9iaikpKSAjdCkKCSAgKGVsc2UgI2YpKSkKICAoZGVm aW5lIChkcm9wIG9iaikgCiAgICAoaWYgKGRyb3BwYWJsZT8gb2JqKQoJKGRyb3AgKHByb2plY3Qg b2JqKSkKCW9iaikpCgogIChzaG93ICN0ICJUZXN0IDE6IFN1YnRyYWN0aW5nIGNvbXBsZXggbnVt YmVyczogIgoJKHN1YgoJIChtYWtlLWNvbXBsZXgtZnJvbS1yZWFsLWltYWcgMS4xIDIpCgkgKG1h a2UtY29tcGxleC1mcm9tLXJlYWwtaW1hZyAwIDIpKSAiXG4iKQogIChkZWZpbmUgKGluc3RhbGwt cG9seW5vbWlhbC1wYWNrYWdlKQogICAgKGRlZmluZSAobWFrZS1wb2x5IHZhcmlhYmxlIHRlcm0t bGlzdCkKICAgICAgKGNvbnMgdmFyaWFibGUgdGVybS1saXN0KSkKICAgIChkZWZpbmUgKHZhcmlh YmxlIHApIChjYXIgcCkpCiAgICAoZGVmaW5lICh0ZXJtLWxpc3QgcCkKICAgICAgKGNkciBwKSkK ICAgIChkZWZpbmUgKHZhcmlhYmxlPyB4KSAoc3ltYm9sPyB4KSkKICAgIChkZWZpbmUgKHNhbWUt dmFyaWFibGU/IHYxIHYyKQogICAgICAoYW5kICh2YXJpYWJsZT8gdjEpICh2YXJpYWJsZT8gdjIp IChlcT8gdjEgdjIpKSkKICAgIChkZWZpbmUgKD1udW1iZXI/IGV4cCBudW0pCiAgICAgIChhbmQg KG51bWJlcj8gZXhwKSAoPSBleHAgbnVtKSkpCiAgICAoZGVmaW5lICh0aGUtZW1wdHktdGVybWxp c3QpICcoKSkKCiAgICAoZGVmaW5lIChyZXN0LXRlcm1zIHRlcm0tbGlzdCkgKGNkciB0ZXJtLWxp c3QpKQogICAgKGRlZmluZSAoZW1wdHktdGVybWxpc3Q/IHRlcm0tbGlzdCkgKG51bGw/IHRlcm0t bGlzdCkpCgogICAgKGRlZmluZSAobWFrZS10ZXJtIG9yZGVyIGNvZWZmKSAobGlzdCBvcmRlciBj b2VmZikpCiAgICAoZGVmaW5lIChvcmRlciB0ZXJtKSAoY2FyIHRlcm0pKQogICAgKGRlZmluZSAo Y29lZmYgdGVybSkgKGNhZHIgdGVybSkpCgogICAgIzsoY29udGludWVkIG9uIG5leHQgcGFnZSkK CiAgICAoZGVmaW5lIChhZGQtcG9seSBwMSBwMikKICAgICAgKGlmIChzYW1lLXZhcmlhYmxlPyAo dmFyaWFibGUgcDEpICh2YXJpYWJsZSBwMikpCgkgIChtYWtlLXBvbHkgKHZhcmlhYmxlIHAxKQoJ CSAgICAgKGFkZC10ZXJtcyAodGVybS1saXN0IHAxKQoJCQkJKHRlcm0tbGlzdCBwMikpKQoJICAo ZXJyb3IgIlBvbHlzIG5vdCBpbiBzYW1lIHZhciAtLSBBREQtUE9MWSIKCQkgKGxpc3QgcDEgcDIp KSkpCiAgICAoZGVmaW5lIChzdWItcG9seSBwMSBwMikKICAgICAgKGFkZC1wb2x5IHAxIChtdWwt cG9seSBwMiAobWFrZS1wb2x5ICh2YXJpYWJsZSBwMikgKGxpc3QgKG1ha2UtdGVybSAwIC0xKSkp KSkpCiAgICAoZGVmaW5lIChhZGQtdGVybXMgTDEgTDIpCiAgICAgIChjb25kICgoZW1wdHktdGVy bWxpc3Q/IEwxKSBMMikKCSAgICAoKGVtcHR5LXRlcm1saXN0PyBMMikgTDEpCgkgICAgKGVsc2UK CSAgICAgKGxldCAoKHQxIChmaXJzdC10ZXJtIEwxKSkgKHQyIChmaXJzdC10ZXJtIEwyKSkpCgkg ICAgICAgKGNvbmQgKCg+IChvcmRlciB0MSkgKG9yZGVyIHQyKSkKCQkgICAgICAoYWRqb2luLXRl cm0KCQkgICAgICAgdDEgKGFkZC10ZXJtcyAocmVzdC10ZXJtcyBMMSkgTDIpKSkKCQkgICAgICgo PCAob3JkZXIgdDEpIChvcmRlciB0MikpCgkJICAgICAgKGFkam9pbi10ZXJtCgkJICAgICAgIHQy IChhZGQtdGVybXMgTDEgKHJlc3QtdGVybXMgTDIpKSkpCgkJICAgICAoZWxzZQoJCSAgICAgIChh ZGpvaW4tdGVybQoJCSAgICAgICAobWFrZS10ZXJtIChvcmRlciB0MSkKCQkJCSAgKGFkZCAoY29l ZmYgdDEpIChjb2VmZiB0MikpKQoJCSAgICAgICAoYWRkLXRlcm1zIChyZXN0LXRlcm1zIEwxKQoJ CQkJICAocmVzdC10ZXJtcyBMMikpKSkpKSkpKQoKCiAgICAoZGVmaW5lIChtdWwtcG9seSBwMSBw MikKICAgICAgKGlmIChzYW1lLXZhcmlhYmxlPyAodmFyaWFibGUgcDEpICh2YXJpYWJsZSBwMikp CgkgIChtYWtlLXBvbHkgKHZhcmlhYmxlIHAxKQoJCSAgICAgKG11bC10ZXJtcyAodGVybS1saXN0 IHAxKQoJCQkJKHRlcm0tbGlzdCBwMikpKQoJICAoZXJyb3IgIlBvbHlzIG5vdCBpbiBzYW1lIHZh ciAtLSBNVUwtUE9MWSIKCQkgKGxpc3QgcDEgcDIpKSkpCiAgICAoZGVmaW5lIChkaXYtcG9seSBw MSBwMikKICAgICAgKGlmIChzYW1lLXZhcmlhYmxlPyAodmFyaWFibGUgcDEpICh2YXJpYWJsZSBw MikpCgkgIChsZXQgKChxdW90aWVudC1hbmQtcmVtYWluZGVyIChkaXYtdGVybXMgKHRlcm0tbGlz dCBwMSkKCQkJCQkJICAgKHRlcm0tbGlzdCBwMikpKSkKCSAgICAobGlzdCAobWFrZS1wb2x5ICh2 YXJpYWJsZSBwMSkgKGNhciAgcXVvdGllbnQtYW5kLXJlbWFpbmRlcikpCgkJICAobWFrZS1wb2x5 ICh2YXJpYWJsZSBwMSkgKGNhZHIgcXVvdGllbnQtYW5kLXJlbWFpbmRlcikpKSkKCSAgICAoZXJy b3IgImRpdi1wb2x5OiBQb2x5cyBub3QgaW4gdGhlIHNhbWUgdmFyIiBwMSBwMikpKQogICAgKGRl ZmluZSAoZGl2LXRlcm1zIEwxIEwyKQoJICAgIChpZiAoZW1wdHktdGVybWxpc3Q/IEwxKQoJCShs aXN0ICh0aGUtZW1wdHktdGVybWxpc3QpICh0aGUtZW1wdHktdGVybWxpc3QpKQoJCShsZXQgKCh0 MSAoZmlyc3QtdGVybSBMMSkpCgkJICAgICAgKHQyIChmaXJzdC10ZXJtIEwyKSkpCgkJICAoaWYg KD4gKG9yZGVyIHQyKSAob3JkZXIgdDEpKQoJCSAgICAgIChsaXN0ICh0aGUtZW1wdHktdGVybWxp c3QpIEwxKQoJCSAgICAgIChsZXQgKChuZXctYyAoZGl2IChjb2VmZiB0MSkgKGNvZWZmIHQyKSkp CgkJCSAgICAobmV3LW8gKC0gKG9yZGVyIHQxKSAob3JkZXIgdDIpKSkpCgkJCShsZXQgKChyZXN0 LW9mLXJlc3VsdCAoZGl2LXRlcm1zICh0ZXJtLWxpc3QKCQkJCQkJCSAgKHN1Yi1wb2x5CgkJCQkJ CQkgICAobWFrZS1wb2x5ICdmYWtlLXZhciBMMSkKCQkJCQkJCSAgIChtdWwtcG9seQoJCQkJCQkJ ICAgIChtYWtlLXBvbHkgJ2Zha2UtdmFyIChsaXN0IChtYWtlLXRlcm0gbmV3LW8gbmV3LWMpKSkK CQkJCQkJCSAgICAobWFrZS1wb2x5ICdmYWtlLXZhciBMMikpKSkKCQkJCQkJCSBMMikKCQkJCQkg ICAgICApKQoJCQkgIChzaG93ICN0ICJkaXYtdGVybXM6IHJlc3Qtb2YtcmVzdWx0OiAiIChkaXNw bGF5ZWQgcmVzdC1vZi1yZXN1bHQpICJcbiIpCgkJCSAgKGxpc3QgKGFkam9pbi10ZXJtIChtYWtl LXRlcm0gbmV3LW8gbmV3LWMpIChjYXIgcmVzdC1vZi1yZXN1bHQpKSAoY2FkciByZXN0LW9mLXJl c3VsdCkpCgkJCSAgKSkpKSkpCiAgICAoZGVmaW5lIChtdWwtdGVybXMgTDEgTDIpCiAgICAgIChp ZiAoZW1wdHktdGVybWxpc3Q/IEwxKQoJICAodGhlLWVtcHR5LXRlcm1saXN0KQoJICAoYWRkLXRl cm1zIChtdWwtdGVybS1ieS1hbGwtdGVybXMgKGZpcnN0LXRlcm0gTDEpIEwyKQoJCSAgICAgKG11 bC10ZXJtcyAocmVzdC10ZXJtcyBMMSkgTDIpKSkpCgogICAgKGRlZmluZSAobXVsLXRlcm0tYnkt YWxsLXRlcm1zIHQxIEwpCiAgICAgIChpZiAoZW1wdHktdGVybWxpc3Q/IEwpCgkgICh0aGUtZW1w dHktdGVybWxpc3QpCgkgIChsZXQgKCh0MiAoZmlyc3QtdGVybSBMKSkpCgkgICAgKGFkam9pbi10 ZXJtCgkgICAgIChtYWtlLXRlcm0gKCsgKG9yZGVyIHQxKSAob3JkZXIgdDIpKQoJCQkobXVsIChj b2VmZiB0MSkgKGNvZWZmIHQyKSkpCgkgICAgIChtdWwtdGVybS1ieS1hbGwtdGVybXMgdDEgKHJl c3QtdGVybXMgTCkpKSkpKQogICAgKGRlZmluZSAoemVyby1wb2x5PyBwb2x5KQogICAgICAjOyhz aG93ICN0ICJ6ZXJvLXBvbHk/OiBwb2x5PSIgKGRpc3BsYXllZCBwb2x5KSAiXG4iKQogICAgICAo Y29uZCAoKGVtcHR5LXRlcm1saXN0PyAodGVybS1saXN0IHBvbHkpKSAjdCkKCSAgICAoKG5vdCAo PSAwIChjb2VmZiAoZmlyc3QtdGVybSAodGVybS1saXN0IHBvbHkpKSkpKSAjZikKCSAgICAoZWxz ZSAoemVyby1wb2x5PyAKCQkgICAobWFrZS1wb2x5ICh2YXJpYWJsZSBwb2x5KQoJCQkgICAgICAo cmVzdC10ZXJtcyAodGVybS1saXN0IHBvbHkpKSkpKSkpCiAgICAoZGVmaW5lICh0YWcgcCkgKGF0 dGFjaC10YWcgJ3BvbHlub21pYWwgcCkpCiAgICAoZGVmaW5lICh0ZXJtbGlzdC10eXBlLW9mIHRl cm0tbGlzdCkKICAgICAgIzsoc2hvdyAjdCAidC10LW86IHRlcm0tbGlzdD0iIChkaXNwbGF5ZWQg dGVybS1saXN0KSAiXG4iKQogICAgICAoY29uZCAoKG51bGw/IHRlcm0tbGlzdCkgJ3NwYXJzZSkK CSAgICAoKHBhaXI/IChjYXIgdGVybS1saXN0KSkgJ3NwYXJzZSkKCSAgICAoKGxpc3Q/IHRlcm0t bGlzdCkgJ2RlbnNlKQoJICAgIChlbHNlIChlcnJvciAiVW5rbm93biB0eXBlIG9mIGxpc3QiIHRl cm0tbGlzdCkpKSkKICAgIChkZWZpbmUgKGFkam9pbi10ZXJtIHRlcm0gdGVybS1saXN0KQogICAg ICAoKGdldCAnYWRqb2luLXRlcm0gKHRlcm1saXN0LXR5cGUtb2YgdGVybS1saXN0KSkgdGVybSB0 ZXJtLWxpc3QpKQogICAgKGRlZmluZSAoZmlyc3QtdGVybSB0ZXJtLWxpc3QpCiAgICAgICM7KHNo b3cgI3QgImZpcnN0LXRlcm06IHRlcm0tbGlzdD0iIChkaXNwbGF5ZWQgdGVybS1saXN0KSAiXG4i KQogICAgICAjOyhzaG93ICN0ICJmaXJzdC10ZXJtOiB0ZXJtLWxpc3QtdHlwZT0iIChkaXNwbGF5 ZWQgKHRlcm1saXN0LXR5cGUtb2YgdGVybS1saXN0KSkgIlxuIikKICAgICAgKChnZXQgJ2ZpcnN0 LXRlcm0gKHRlcm1saXN0LXR5cGUtb2YgdGVybS1saXN0KSkgdGVybS1saXN0KSkKICAgIChwdXQg J2FkZCAnKHBvbHlub21pYWwgcG9seW5vbWlhbCkKCSAobGFtYmRhIChwMSBwMikgKHRhZyAoYWRk LXBvbHkgcDEgcDIpKSkpCiAgICAocHV0ICdtdWwgJyhwb2x5bm9taWFsIHBvbHlub21pYWwpCgkg KGxhbWJkYSAocDEgcDIpICh0YWcgKG11bC1wb2x5IHAxIHAyKSkpKQogICAgKHB1dCAnc3ViICco cG9seW5vbWlhbCBwb2x5bm9taWFsKQoJIChsYW1iZGEgKHAxIHAyKSAodGFnIChzdWItcG9seSBw MSBwMikpKSkKICAgIChwdXQgJ21ha2UgJ3BvbHlub21pYWwKCSAobGFtYmRhICh2YXIgdGVybXMp ICh0YWcgKG1ha2UtcG9seSB2YXIgdGVybXMpKSkpCiAgICAocHV0ICd6ZXJvPyAnKHBvbHlub21p YWwpIHplcm8tcG9seT8pCiAgICAocHV0ICdkaXYgJyhwb2x5bm9taWFsIHBvbHlub21pYWwpIGRp di1wb2x5KQogICAgJ2RvbmUpCiAgKGluc3RhbGwtcG9seW5vbWlhbC1wYWNrYWdlKQoKICAoZGVm aW5lIChpbnN0YWxsLXBvbHlub21pYWwtc3BhcnNlLXBhY2thZ2UpCiAgICAoZGVmaW5lIChjb2Vm ZiB0ZXJtKSAoY2FkciB0ZXJtKSkKICAgIChkZWZpbmUgKGZpcnN0LXRlcm0tc3BhcnNlIHRlcm0t bGlzdCkgKGNhciB0ZXJtLWxpc3QpKQogICAgKGRlZmluZSAoYWRqb2luLXRlcm0tc3BhcnNlIHRl cm0gdGVybS1saXN0KQogICAgICAoaWYgKHplcm8/IChjb2VmZiB0ZXJtKSkKCSAgdGVybS1saXN0 CgkgIChjb25zIHRlcm0gdGVybS1saXN0KSkpCiAgICAocHV0ICdhZGpvaW4tdGVybSAnc3BhcnNl IGFkam9pbi10ZXJtLXNwYXJzZSkKICAgIChwdXQgJ2ZpcnN0LXRlcm0gJ3NwYXJzZSBmaXJzdC10 ZXJtLXNwYXJzZSkKICAgICdkb25lKQogIChpbnN0YWxsLXBvbHlub21pYWwtc3BhcnNlLXBhY2th Z2UpCgogIChkZWZpbmUgKGluc3RhbGwtcG9seW5vbWlhbC1kZW5zZS1wYWNrYWdlKQogICAgKGRl ZmluZSAobWFrZS10ZXJtIG9yZGVyIGNvZWZmKSAobGlzdCBvcmRlciBjb2VmZikpCiAgICAoZGVm aW5lIChvcmRlciB0ZXJtKSAoY2FyIHRlcm0pKQogICAgKGRlZmluZSAoY29lZmYgdGVybSkgKGNh ZHIgdGVybSkpCgogICAgKGRlZmluZSAoYWRqb2luLXRlcm0tZGVuc2UgdGVybSB0ZXJtLWxpc3Qp CgkoaWYgKHplcm8/IChjb2VmZiB0ZXJtKSkKCSAgICB0ZXJtLWxpc3QKCSAgICAoaWYgKD4gKG9y ZGVyIHRlcm0pIChsZW5ndGggdGVybS1saXN0KSkKCQkoYXBwZW5kIChsaXN0IChjb2VmZiB0ZXJt KSkKCQkJKG1ha2UtbGlzdCAoLSAob3JkZXIgdGVybSkgKGxlbmd0aCB0ZXJtLWxpc3QpKSAwKQoJ CQl0ZXJtLWxpc3QpCgkJKGVycm9yICJhZGpvaW4tdGVybTpBcHBlbmRpbmcgYSBzbWFsbGVyIG9y ZGVyIHRlcm0uIFJlY2hlY2suIikpKSkKICAgIChkZWZpbmUgKGZpcnN0LXRlcm0tZGVuc2UgdGVy bS1saXN0KSAKICAgICAgICM7KHNob3cgI3QgImZpcnN0LXRlcm0tZGVuc2U6ICIgKGRpc3BsYXll ZCAobWFrZS10ZXJtIChjYXIgdGVybS1saXN0KSAobGVuZ3RoIChjZHIgdGVybS1saXN0KSkpKSAi XG4iKQogICAgICAgKG1ha2UtdGVybSAobGVuZ3RoIChjZHIgdGVybS1saXN0KSkgKGNhciB0ZXJt LWxpc3QpICkpCiAgICAocHV0ICdhZGpvaW4tdGVybSAnZGVuc2UgYWRqb2luLXRlcm0tZGVuc2Up CiAgICAocHV0ICdmaXJzdC10ZXJtICdkZW5zZSBmaXJzdC10ZXJtLWRlbnNlKQogICAgJ2RvbmUp CiAgKGluc3RhbGwtcG9seW5vbWlhbC1kZW5zZS1wYWNrYWdlKQoKICAoZGVmaW5lIChtYWtlLXBv bHlub21pYWwgdmFyIHRlcm1zKQogICAgKChnZXQgJ21ha2UgJ3BvbHlub21pYWwpIHZhciB0ZXJt cykpCiAgKHNob3cgI3QgIlRlc3QgMjogTWFraW5nIHBvbHlub21pYWxzOiAiIAoJKG1ha2UtcG9s eW5vbWlhbCAneCAobGlzdCAobGlzdCA1IDEpIChsaXN0IDQgMikpKSAiXG4iKQogIChzaG93ICN0 ICJUZXN0IDM6IFplcm8/OiAiIAoJKHplcm8/IChtYWtlLXBvbHlub21pYWwgJ3ggKGxpc3QgKGxp c3QgNSAxKSAobGlzdCA0IDIpKSkpICJcbiIpCiAgKHNob3cgI3QgIlRlc3QgNDogQWRkaW5nIHBv bHlub21pYWxzOiAiCgkoYWRkIChtYWtlLXBvbHlub21pYWwgJ3ggJygoNSAxKSAoNCAyKSAoMCAx KSkpCgkgICAgIChtYWtlLXBvbHlub21pYWwgJ3ggJygoNSAxKSkpKSAiXG4iKQogICM7KHNob3cg I3QgIlRlc3QgNDogWmVybz86ICIgKHplcm8/IChtYWtlLXBvbHlub21pYWwgJ3ggJygoNSAwKSAo MyAxKSkpKSAiXG4iKQoKICAoc2hvdyAjdCAiVGVzdCA1OiBTdWJ0cmFjdGluZyBwb2x5bm9taWFs czogIgoJKHN1YiAobWFrZS1wb2x5bm9taWFsICd4ICcoKDUgMSkgKDQgMikgKDAgMSkpKQoJICAg ICAobWFrZS1wb2x5bm9taWFsICd4ICcoKDAgMSkpKSkgIlxuIikKCiAgKHNob3cgI3QgIlRlc3Qg NjogTWFraW5nIGEgZGVuc2UgcG9seW5vbWlhbDogIiAobWFrZS1wb2x5bm9taWFsICd4ICcoMSAy IDMgNCA1KSkgIlxuIikKICAoc2hvdyAjdCAiVGVzdCA3OiB6ZXJvPyBkZW5zZSBwb2x5bm9taWFs OiAiIChkaXNwbGF5ZWQgKHplcm8/IChtYWtlLXBvbHlub21pYWwgJ3ggJygwKSkpKSAiXG4iKQog IChzaG93ICN0ICJUZXN0IDg6IHplcm8/IGRlbnNlIHBvbHlub21pYWw6ICIgKGRpc3BsYXllZCAo emVybz8gKG1ha2UtcG9seW5vbWlhbCAneCAnKDEpKSkpICJcbiIpCiAgKHNob3cgI3QgIlRlc3Qg OTogQWRkaW5nIGRlbnNlIHBvbHlub21pYWxzOiAiCgkoYWRkIChtYWtlLXBvbHlub21pYWwgJ3gg JygxIDIgMCAwIDAgMSkpCgkgICAgIChtYWtlLXBvbHlub21pYWwgJ3ggJygxIDAgMCAwIDAgMCkp KSAiXG4iKQogIChzaG93ICN0ICJUZXN0MTA6IFN1YnRyYWN0aW5nIGRlbnNlIHBvbHlub21pYWxz OiAiCgkoc3ViIChtYWtlLXBvbHlub21pYWwgJ3ggJygxIDIgMCAwIDAgMSkpCgkgICAgIChtYWtl LXBvbHlub21pYWwgJ3ggJygxIDAgMCAwIDAgMCkpKSAiXG4iKQogIChzaG93ICN0ICJUZXN0MTE6 IFN1YnRyYWN0aW5nIGRlbnNlIGFuZCBzcGFyc2UgcG9seW5vbWlhbHM6ICIKCShzdWIgKG1ha2Ut cG9seW5vbWlhbCAneCAnKDEgMiAwIDAgMCAxKSkKCSAgICAgKG1ha2UtcG9seW5vbWlhbCAneCAn KCg0IDIpKSkpICJcbiIpCiAgKHNob3cgI3QgIlRlc3QxMjogRGl2aWRpbmcgeF4yICsgMnggKyAx IGJ5IHgrMTogIgoJKGRpc3BsYXllZAoJIChkaXYgKG1ha2UtcG9seW5vbWlhbCAneCAnKCgyIDEp ICgxIDIpICgwIDEpKSkKCSAgICAgIChtYWtlLXBvbHlub21pYWwgJ3ggJyggICAgICAoMSAxKSAo MCAxKSkpKSApICJcbiIpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgojK2JlZ2luX2V4YW1wbGUKVGVz dCAxOiBTdWJ0cmFjdGluZyBjb21wbGV4IG51bWJlcnM6IChyYXRpb25hbCAyNDc2OTc5Nzk1MDUz NzczIC4gMjI1MTc5OTgxMzY4NTI0OCkKVGVzdCAyOiBNYWtpbmcgcG9seW5vbWlhbHM6IChwb2x5 bm9taWFsIHggKDUgMSkgKDQgMikpClRlc3QgMzogWmVybz86ICNmClRlc3QgNDogQWRkaW5nIHBv bHlub21pYWxzOiAocG9seW5vbWlhbCB4ICg1IDIpICg0IDIpICgwIDEpKQpUZXN0IDU6IFN1YnRy YWN0aW5nIHBvbHlub21pYWxzOiAocG9seW5vbWlhbCB4ICg1IDEpICg0IDIpKQpUZXN0IDY6IE1h a2luZyBhIGRlbnNlIHBvbHlub21pYWw6IChwb2x5bm9taWFsIHggMSAyIDMgNCA1KQpUZXN0IDc6 IHplcm8/IGRlbnNlIHBvbHlub21pYWw6ICN0ClRlc3QgODogemVybz8gZGVuc2UgcG9seW5vbWlh bDogI2YKVGVzdCA5OiBBZGRpbmcgZGVuc2UgcG9seW5vbWlhbHM6IChwb2x5bm9taWFsIHggKDUg MikgKDQgMikgKDAgMSkpClRlc3QxMDogU3VidHJhY3RpbmcgZGVuc2UgcG9seW5vbWlhbHM6IChw b2x5bm9taWFsIHggMiAwIDAgMCAxKQpUZXN0MTE6IFN1YnRyYWN0aW5nIGRlbnNlIGFuZCBzcGFy c2UgcG9seW5vbWlhbHM6IChwb2x5bm9taWFsIHggMSAwIDAgMCAwIDEpCmRpdi10ZXJtczogcmVz dC1vZi1yZXN1bHQ6ICgoKSAoKSkKZGl2LXRlcm1zOiByZXN0LW9mLXJlc3VsdDogKCgoMCAxKSkg KCkpClRlc3QxMjogRGl2aWRpbmcgeF4yICsgMnggKyAxIGJ5IHgrMTogKCh4ICgxIDEpICgwIDEp KSAoeCkpCiMrZW5kX2V4YW1wbGUKClRoaXMgdGFzayBhbHNvIHdhc24ndCB2ZXJ5IGRpZmZpY3Vs dC4gVGhlIG9ubHkgcHJvYmxlbSBoZXJlIGlzIHRoYXQKfmRpdi1wb2x5fiByZXR1cm5zIHR3byBw b2x5bm9taWFscywgbm90IG9uZS4gVGhpcyBpcyBhIHByb2JsZW0sIGJlY2F1c2UgdGhpcwpicmVh a3MgdGhlIGNsb3N1cmUgcHJvcGVydHkuCgoqKiogRE9ORSBFeGVyY2lzZSAyLjkyIE9yZGVyaW5n IG9mIHZhcmlhYmxlcyBzbyB0aGF0IGFkZGl0aW9uIGFuZCBtdWx0aXBsaWNhdGlvbiB3b3JrIGZv ciBkaWZmZXJlbnQgdmFyaWFibGVzCiAgICBDTE9TRUQ6IFsyMDE5LTEwLTI3IFN1biAxMzozMl0K CiJUaGlzIGlzIG5vdCBlYXN5LCBQcm9mLiBBYmVsc29uIi4gSW5kZWVkLCBhdCB0aGUgdmVyeSBi ZWdpbm5pbmcgd2UgYXJlCm1lZXRpbmcgYSBwcm9ibGVtOiB3ZSBuZWVkIHRvIGFkZCBwb2x5bm9t aWFscyBhbmQgbnVtYmVycy4gVGhpcyBwcm9ibGVtIHNlZW1zCnRvIGJlIGV4dHJhb3JkaW5hcmls eSBsYWJvcmlvdXMuCgpXZWxsLCB0aGUgc2tldGNoIG9mIHRoZSBpZGVhIHdhcyB0byByZWFycmFu Z2UgdGhlIHBvbHlub21pYWxzIHRvIGEgY2Fub25pY2FsCmZvcm0sIHNvIHRoYXQgdGhlIHZhcmlh YmxlcyBhcmUgb3JkZXJlZCBzZXF1ZW50aWFsbHkuIFNvIHdlIHdpbGwgbmVlZCBhIHdheQp0byBj b21wYXJlIHRoZSB2YXJpYWJsZXMsIHNheSwgYWxwaGFiZXRpY2FsbHkuCgpUbyBoZWxwIHVzIGlu IHRoaXMgYnVzaW5lc3MsIHdlIHNoYWxsIHVzZSBSXjcgUlMgc3RhbmRhcmQgcHJvY2VkdXJlcwp+ c3ltYm9sLT5zdHJpbmd+IGFuZCB+c3RyaW5nPD9+LgoKRXNzZW50aWFsbHksIHRoaXMgY29kZSBk b2VzIGEgYnViYmxlLXNvcnQgb24gdGhlIHZhcmlhYmxlcy4gVGhlCn5ub3JtYWxpemUtb25jZX4g cHJvY2VkdXJlIG1ha2VzIG9uZSBwYXNzIG9mIHRoZSBleGNoYW5nZXMsIHRoYXQgaXMsIGl0CmVm ZmVjdGl2ZWx5IGFsbG93cyBvbmUgImJ1YmJsZSIgdG8gZmxvYXQgdXAuCgpUaGUgfm5vcm1hbGl6 ZS1mdWxseX4gcHJvY2VkdXJlIHJlcGVhdHMgdGhlIG5vcm1hbGl6YXRpb24gdW50aWwgaXQncyBk b25lLAp3aGljaCBtYXkgbGVhZCB0byBpbmZpbml0ZSBsb29wcyBpbiBjYXNlIHRoZXJlIGFyZSBz b21lIGJ1Z3MgaW5zaWRlLCBidXQgaXQKc2hvdWxkIHdvcmsgYXMgXChuXjJcKSAuCgpUaGUgdGhp bmcgdGhhdCBkb2VzIG5vdCB3b3JrIGluIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgdGhlIGRpdmlz aW9uIG9mCnBvbHlub21pYWxzIG9mIGRpZmZlcmVudCB2YXJpYWJsZXMuIFRvIGJlIGhvbmVzLCBi ZWNhdXNlIEkgYW0gbm90IHN1cmUgd2hhdAppdCBpcyBzZW1hbnRpY2FsbHkuCgpJbiB0b3RhbCwg dGhpcyBleGVyY2lzZSB0b29rIG1lIHNldmVyYWwgZGF5cywgYW5kIHRoZSBuZXQgYW1vdW50IG9m IGhvdXJzCnNwZW50IGlzIGFib3V0IDEwLgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJv dGggOnJlc3VsdHMgb3V0cHV0CiAgKGRlZmluZSAodGhpbmd5LXNvdXJjZSB0aGluZ3kpCiAgICAo Y29uZCAoKGxhbWJkYT8gdGhpbmd5KSAobGlzdCAibGFtYmRhIiAobGFtYmRhLXNvdXJjZSB0aGlu Z3kpKSkKCSAgKChwcm9jZWR1cmU/IHRoaW5neSkgKGxpc3QgInByb2NlZHVyZSIgKHByb2NlZHVy ZS1uYW1lIHRoaW5neSkpKQoJICAoKHBhaXI/IHRoaW5neSkgKGxpc3QgInBhaXIiIChwYWlyLXNv dXJjZSB0aGluZ3kpKSkKCSAgKGVsc2UgIk5vIHNvdXJjZT8gcmVmYWN0b3IiKSkpCgogICAgKGRl ZmluZSAoYWNjdW11bGF0ZSBvcCBpbml0aWFsIHNlcXVlbmNlKQogICAgICAoaWYgKG51bGw/IHNl cXVlbmNlKQoJICBpbml0aWFsCgkgIChhY2N1bXVsYXRlIG9wIChvcCBpbml0aWFsIChjYXIgc2Vx dWVuY2UpKSAoY2RyIHNlcXVlbmNlKSkpKQogICAgKGRlZmluZSBmYWxzZSAjZikKICAgIChkZWZp bmUgdHJ1ZSAgI3QpCiAgICAoZGVmaW5lIChtYWtlLXRhYmxlKQogICAgICAobGV0ICgobG9jYWwt dGFibGUgKGxpc3QgJyp0YWJsZSopKSkKCShkZWZpbmUgKGxvb2t1cCBrZXktMSBrZXktMikKCSAg KGxldCAoKHN1YnRhYmxlIChhc3NvYyBrZXktMSAoY2RyIGxvY2FsLXRhYmxlKSkpKQoJICAgIChp ZiBzdWJ0YWJsZQoJCShsZXQgKChyZWNvcmQgKGFzc29jIGtleS0yIChjZHIgc3VidGFibGUpKSkp CgkJICAoaWYgcmVjb3JkCgkJICAgICAgKGNkciByZWNvcmQpCgkJICAgICAgZmFsc2UpKQoJCWZh bHNlKSkpCgkoZGVmaW5lIChpbnNlcnQhIGtleS0xIGtleS0yIHZhbHVlKQoJICAobGV0ICgoc3Vi dGFibGUgKGFzc29jIGtleS0xIChjZHIgbG9jYWwtdGFibGUpKSkpCgkgICAgKGlmIHN1YnRhYmxl CgkJKGxldCAoKHJlY29yZCAoYXNzb2Mga2V5LTIgKGNkciBzdWJ0YWJsZSkpKSkKCQkgIChpZiBy ZWNvcmQKCQkgICAgICAoc2V0LWNkciEgcmVjb3JkIHZhbHVlKQoJCSAgICAgIChzZXQtY2RyISBz dWJ0YWJsZQoJCQkJKGNvbnMgKGNvbnMga2V5LTIgdmFsdWUpCgkJCQkgICAgICAoY2RyIHN1YnRh YmxlKSkpKSkKCQkoc2V0LWNkciEgbG9jYWwtdGFibGUKCQkJICAoY29ucyAobGlzdCBrZXktMQoJ CQkJICAgICAgKGNvbnMga2V5LTIgdmFsdWUpKQoJCQkJKGNkciBsb2NhbC10YWJsZSkpKSkpCgkg ICdvaykKCShkZWZpbmUgKGRpc3BhdGNoIG0pCgkgIChjb25kICgoZXE/IG0gJ2xvb2t1cC1wcm9j KSBsb29rdXApCgkJKChlcT8gbSAnaW5zZXJ0LXByb2MhKSBpbnNlcnQhKQoJCShlbHNlIChlcnJv ciAiVW5rbm93biBvcGVyYXRpb24gLS0gVEFCTEUiIG0pKSkpCglkaXNwYXRjaCkpCgogICAgKGRl ZmluZSBvcGVyYXRpb24tdGFibGUgKG1ha2UtdGFibGUpKQogICAgKGRlZmluZSBnZXQgKG9wZXJh dGlvbi10YWJsZSAnbG9va3VwLXByb2MpKQogICAgKGRlZmluZSBwdXQgKG9wZXJhdGlvbi10YWJs ZSAnaW5zZXJ0LXByb2MhKSkKCiAgICAoZGVmaW5lIGNvZXJjaW9uLXRhYmxlIChtYWtlLXRhYmxl KSkKICAgIChkZWZpbmUgZ2V0LWNvZXJjaW9uIChjb2VyY2lvbi10YWJsZSAnbG9va3VwLXByb2Mp KQogICAgKGRlZmluZSBwdXQtY29lcmNpb24gKGNvZXJjaW9uLXRhYmxlICdpbnNlcnQtcHJvYyEp KQoKICAgIChkZWZpbmUgKGF0dGFjaC10YWcgdHlwZS10YWcgY29udGVudHMpCiAgICAgIChjb25z IHR5cGUtdGFnIGNvbnRlbnRzKSkKCiAgICAoZGVmaW5lICh0eXBlLXRhZyBkYXR1bSkKICAgICAg KGNvbmQgKChwYWlyPyBkYXR1bSkgKGNhciBkYXR1bSkpCgkgICAgKChleGFjdC1pbnRlZ2VyPyBk YXR1bSkgJ2ludGVnZXIpCgkgICAgKChyZWFsPyBkYXR1bSkgJ3NjaGVtZS1udW1iZXIpCgkgICAg KGVycm9yICJCYWQgdGFnZ2VkIGRhdHVtIC0tIFRZUEUtVEFHIiBkYXR1bSkpKQoKICAoZGVmaW5l IChjb250ZW50cyBkYXR1bSkKICAgICAgKGNvbmQgKChwYWlyPyBkYXR1bSkgKGNkciBkYXR1bSkp CgkgICAgKChpbnRlZ2VyPyBkYXR1bSkgZGF0dW0pCgkgICAgKChyZWFsPyBkYXR1bSkgZGF0dW0p CgkgICAgKGVsc2UgKGVycm9yICJCYWQgdGFnZ2VkIGRhdHVtIC0tIENPTlRFTlRTIiBkYXR1bSkp KSkKCiAgICAoZGVmaW5lIChpbnRlZ2VyPyB4KQogICAgICAoZXE/ICh0eXBlLXRhZyB4KSAnaW50 ZWdlcikpCiAgICAoZGVmaW5lIChyZWN0YW5ndWxhcj8geikKICAgICAgKGVxPyAodHlwZS10YWcg eikgJ3JlY3Rhbmd1bGFyKSkKCiAgICAoZGVmaW5lIChwb2xhcj8geikKICAgICAgKGVxPyAodHlw ZS10YWcgeikgJ3BvbGFyKSkKCgogICAgKGRlZmluZSAocmVhbC1wYXJ0IHopIChhcHBseS1nZW5l cmljICdyZWFsLXBhcnQgeikpCiAgICAoZGVmaW5lIChpbWFnLXBhcnQgeikgKGFwcGx5LWdlbmVy aWMgJ2ltYWctcGFydCB6KSkKICAgIChkZWZpbmUgKG1hZ25pdHVkZSB6KSAoYXBwbHktZ2VuZXJp YyAnbWFnbml0dWRlIHopKQogICAgKGRlZmluZSAoYW5nbGUgeikgKGFwcGx5LWdlbmVyaWMgJ2Fu Z2xlIHopKQoKICAgIChkZWZpbmUgKGFkZCB4IHkpIChhcHBseS1nZW5lcmljICdhZGQgeCB5KSkK ICAgIChkZWZpbmUgKHN1YiB4IHkpIChhcHBseS1nZW5lcmljICdzdWIgeCB5KSkKICAgIChkZWZp bmUgKG11bCB4IHkpIChhcHBseS1nZW5lcmljICdtdWwgeCB5KSkKICAgIChkZWZpbmUgKGRpdiB4 IHkpIChhcHBseS1nZW5lcmljICdkaXYgeCB5KSkKCiAgICAoZGVmaW5lIChlcXU/IHggeSkKICAg ICAgKGFwcGx5LWdlbmVyaWMgJ2VxdT8geCB5KSkKICAgIChkZWZpbmUgKHplcm8/IHgpIChhcHBs eS1nZW5lcmljICd6ZXJvPyB4KSkKCiAgICAoZGVmaW5lIChleHAgeCB5KSAoYXBwbHktZ2VuZXJp YyAnZXhwIHggeSkpCgogICAgKGRlZmluZSAoaW5zdGFsbC1zY2hlbWUtbnVtYmVyLXBhY2thZ2Up CiAgICAgIChkZWZpbmUgKHRhZyB4KQoJKGF0dGFjaC10YWcgJ3NjaGVtZS1udW1iZXIgeCkpCiAg ICAgIChwdXQgJ2FkZCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAgIChsYW1iZGEg KHggeSkgKHRhZyAoKyB4IHkpKSkpCiAgICAgIChwdXQgJ3N1YiAnKHNjaGVtZS1udW1iZXIgc2No ZW1lLW51bWJlcikKCSAgIChsYW1iZGEgKHggeSkgKHRhZyAoLSB4IHkpKSkpCiAgICAgIChwdXQg J211bCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAgIChsYW1iZGEgKHggeSkgKHRh ZyAoKiB4IHkpKSkpCiAgICAgIChwdXQgJ2RpdiAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJl cikKCSAgIChsYW1iZGEgKHggeSkgKHRhZyAoLyB4IHkpKSkpCiAgICAgIChwdXQgJ21ha2UgJ3Nj aGVtZS1udW1iZXIKCSAgIChsYW1iZGEgKHgpICh0YWcgeCkpKQogICAgICAocHV0ICdlcXU/ICco c2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJICAgKGxhbWJkYSAoeCB5KSAoPSB4IHkpKSkK ICAgICAgKHB1dCAnemVybz8gJyhzY2hlbWUtbnVtYmVyKQoJICAgKGxhbWJkYSAoeCkgKD0gMCB4 KSkpCiAgICAgIChwdXQgJ2V4cCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAgIChs YW1iZGEgKHggeSkgKHRhZyAoZXhwdCB4IHkpKSkpCiAgICAgIChwdXQgJ3Byb2plY3QgJyhzY2hl bWUtbnVtYmVyKQoJICAgKGxhbWJkYSAoeCkKCSAgICAgKG1ha2UtcmF0aW9uYWwKCSAgICAgIChl eGFjdCAobnVtZXJhdG9yIHgpKQoJICAgICAgKGV4YWN0IChkZW5vbWluYXRvciB4KSkpKSkKICAg ICAgKHB1dCAnc2luZSAnKHNjaGVtZS1udW1iZXIpIHNpbikKICAgICAgKHB1dCAnY29zaW5lICco c2NoZW1lLW51bWJlcikgY29zKQogICAgICAocHV0ICdzcXVhcmUtcm9vdCAnKHNjaGVtZS1udW1i ZXIpIHNxcnQpCiAgICAgIChwdXQgJ2FyY3RhbmdlbnQgJyhzY2hlbWVyLW51bWJlcikgYXRhbikK ICAgICAgJ2RvbmUpCgogICAgKGRlZmluZSAoc2luZSB4KSAoYXBwbHktZ2VuZXJpYyAnc2luZSB4 KSkKICAgIChkZWZpbmUgKGNvc2luZSB4KSAoYXBwbHktZ2VuZXJpYyAnY29zaW5lIHgpKQogICAg KGRlZmluZSAoc3F1YXJlLXJvb3QgeCkgKGFwcGx5LWdlbmVyaWMgJ3NxdWFyZS1yb290IHgpKQog ICAgKGRlZmluZSAoYXJjdGFuZ2VudCB4KSAoYXBwbHktZ2VuZXJpYyAnYXJjdGFuZ2VudCB4KSkK CiAgICAoZGVmaW5lIChtYWtlLXNjaGVtZS1udW1iZXIgbikKICAgICAgKChnZXQgJ21ha2UgJ3Nj aGVtZS1udW1iZXIpIG4pKQoKICAgIChkZWZpbmUgKGluc3RhbGwtcmF0aW9uYWwtcGFja2FnZSkK ICAgICAgKGRlZmluZSAobnVtZXIgeCkgKGNhciB4KSkKICAgICAgKGRlZmluZSAoZGVub20geCkg KGNkciB4KSkKICAgICAgKGRlZmluZSAobWFrZS1yYXQgbiBkKQoJKGxldCAoKGcgKGdjZCBuIGQp KSkKCSAgKGNvbnMgKC8gbiBnKSAoLyBkIGcpKSkpCiAgICAgIChkZWZpbmUgKGFkZC1yYXQgeCB5 KQoJKG1ha2UtcmF0ICgrICgqIChudW1lciB4KSAoZGVub20geSkpCgkJICAgICAoKiAobnVtZXIg eSkgKGRlbm9tIHgpKSkKCQkgICgqIChkZW5vbSB4KSAoZGVub20geSkpKSkKICAgICAgKGRlZmlu ZSAoc3ViLXJhdCB4IHkpCgkobWFrZS1yYXQgKC0gKCogKG51bWVyIHgpIChkZW5vbSB5KSkKCQkg ICAgICgqIChudW1lciB5KSAoZGVub20geCkpKQoJCSAgKCogKGRlbm9tIHgpIChkZW5vbSB5KSkp KQogICAgICAoZGVmaW5lIChtdWwtcmF0IHggeSkKCShtYWtlLXJhdCAoKiAobnVtZXIgeCkgKG51 bWVyIHkpKQoJCSAgKCogKGRlbm9tIHgpIChkZW5vbSB5KSkpKQogICAgICAoZGVmaW5lIChkaXYt cmF0IHggeSkKCShtYWtlLXJhdCAoKiAobnVtZXIgeCkgKGRlbm9tIHkpKQoJCSAgKCogKGRlbm9t IHgpIChudW1lciB5KSkpKQoKICAgICAgKGRlZmluZSAodGFnIHgpIChhdHRhY2gtdGFnICdyYXRp b25hbCB4KSkKICAgICAgKHB1dCAnYWRkICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgICAobGFtYmRh ICh4IHkpICh0YWcgKGFkZC1yYXQgeCB5KSkpKQogICAgICAocHV0ICdzdWIgJyhyYXRpb25hbCBy YXRpb25hbCkKCSAgIChsYW1iZGEgKHggeSkgKHRhZyAoc3ViLXJhdCB4IHkpKSkpCiAgICAgIChw dXQgJ211bCAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJICAgKGxhbWJkYSAoeCB5KSAodGFnIChtdWwt cmF0IHggeSkpKSkKICAgICAgKHB1dCAnZGl2ICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgICAobGFt YmRhICh4IHkpICh0YWcgKGRpdi1yYXQgeCB5KSkpKQoKICAgICAgKHB1dCAnbWFrZSAncmF0aW9u YWwKCSAgIChsYW1iZGEgKG4gZCkgKHRhZyAobWFrZS1yYXQgbiBkKSkpKQogICAgICAocHV0ICdl cXU/ICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgICAobGFtYmRhICh4IHkpICg9IDAgKG51bWVyIChz dWItcmF0IHggeSkpKSkpCiAgICAgIChwdXQgJ3plcm8/ICcocmF0aW9uYWwpIChsYW1iZGEgKHgp ICg9IDAgKG51bWVyIHgpKSkpCiAgICAgIChwdXQgJ3Byb2plY3QgJyhyYXRpb25hbCkgKGxhbWJk YSAoeCkgCgkJCQkgIChleGFjdCAodHJ1bmNhdGUgKC8gKG51bWVyIHgpIChkZW5vbSB4KSkpKSkp CiAgICAgIChwdXQgJ3RvLXJlYWwgJyhyYXRpb25hbCkgKGxhbWJkYSAoeCkgKC8gKG51bWVyIChj b250ZW50cyB4KSkgKGRlbm9tIChjb250ZW50cyB4KSkpKSkKICAgICAgJ2RvbmUpCgogICAgKGRl ZmluZSAobWFrZS1yYXRpb25hbCBuIGQpCiAgICAgICgoZ2V0ICdtYWtlICdyYXRpb25hbCkgbiBk KSkKCiAgICAoZGVmaW5lIChpbnN0YWxsLXJlY3Rhbmd1bGFyLXBhY2thZ2UpCgogICAgICAoZGVm aW5lIChyZWFsLXBhcnQgeikgKGNhciB6KSkKICAgICAgKGRlZmluZSAoaW1hZy1wYXJ0IHopIChj ZHIgeikpCiAgICAgIChkZWZpbmUgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSAoY29ucyB4IHkp KQogICAgICAoZGVmaW5lIChtYWduaXR1ZGUgeikKCShzcXVhcmUtcm9vdCAoYWRkIChzcXVhcmUg KHJlYWwtcGFydCB6KSkKCQkJICAoc3F1YXJlIChpbWFnLXBhcnQgeikpKSkpCiAgICAgIChkZWZp bmUgKGFuZ2xlIHopCgkoYXJjdGFuZ2VudCAoaW1hZy1wYXJ0IHopIChyZWFsLXBhcnQgeikpKQog ICAgICAoZGVmaW5lIChtYWtlLWZyb20tbWFnLWFuZyByIGEpCgkoY29ucyAobXVsIHIgKGNvc2lu ZSBhKSkgKG11bCByIChzaW5lIGEpKSkpCgogICAgICAoZGVmaW5lICh0YWcgeCkgKGF0dGFjaC10 YWcgJ3JlY3Rhbmd1bGFyIHgpKQogICAgICAocHV0ICdyZWFsLXBhcnQgJyhyZWN0YW5ndWxhcikg cmVhbC1wYXJ0KQogICAgICAocHV0ICdpbWFnLXBhcnQgJyhyZWN0YW5ndWxhcikgaW1hZy1wYXJ0 KQogICAgICAocHV0ICdtYWduaXR1ZGUgJyhyZWN0YW5ndWxhcikgbWFnbml0dWRlKQogICAgICAo cHV0ICdhbmdsZSAnKHJlY3Rhbmd1bGFyKSBhbmdsZSkKICAgICAgKHB1dCAnbWFrZS1mcm9tLXJl YWwtaW1hZyAncmVjdGFuZ3VsYXIKCSAgIChsYW1iZGEgKHggeSkgKHRhZyAobWFrZS1mcm9tLXJl YWwtaW1hZyB4IHkpKSkpCiAgICAgIChwdXQgJ21ha2UtZnJvbS1tYWctYW5nICdyZWN0YW5ndWxh cgoJICAgKGxhbWJkYSAociBhKSAodGFnIChtYWtlLWZyb20tbWFnLWFuZyByIGEpKSkpCiAgICAg ICdkb25lKQoKICAgIChkZWZpbmUgKGluc3RhbGwtcG9sYXItcGFja2FnZSkKCiAgICAgIChkZWZp bmUgKG1hZ25pdHVkZSB6KSAoY2FyIHopKQogICAgICAoZGVmaW5lIChhbmdsZSB6KSAoY2RyIHop KQogICAgICAoZGVmaW5lIChtYWtlLWZyb20tbWFnLWFuZyByIGEpIChjb25zIHIgYSkpCiAgICAg IChkZWZpbmUgKHJlYWwtcGFydCB6KQoJKG11bCAobWFnbml0dWRlIHopIChjb3NpbmUgKGFuZ2xl IHopKSkpCiAgICAgIChkZWZpbmUgKGltYWctcGFydCB6KQoJKG11bCAobWFnbml0dWRlIHopIChz aW5lIChhbmdsZSB6KSkpKQogICAgICAoZGVmaW5lIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkK CShjb25zIChzcXVhcmUtcm9vdCAoYWRkIChzcXVhcmUgeCkgKHNxdWFyZSB5KSkpCgkgICAgICAo YXJjdGFuZ2VudCB5IHgpKSkKCiAgICAgIChkZWZpbmUgKHRhZyB4KSAoYXR0YWNoLXRhZyAncG9s YXIgeCkpCiAgICAgIChwdXQgJ3JlYWwtcGFydCAnKHBvbGFyKSByZWFsLXBhcnQpCiAgICAgIChw dXQgJ2ltYWctcGFydCAnKHBvbGFyKSBpbWFnLXBhcnQpCiAgICAgIChwdXQgJ21hZ25pdHVkZSAn KHBvbGFyKSBtYWduaXR1ZGUpCiAgICAgIChwdXQgJ2FuZ2xlICcocG9sYXIpIGFuZ2xlKQogICAg ICAocHV0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdwb2xhcgoJICAgKGxhbWJkYSAoeCB5KSAodGFn IChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkpKSkKICAgICAgKHB1dCAnbWFrZS1mcm9tLW1hZy1h bmcgJ3BvbGFyCgkgICAobGFtYmRhIChyIGEpICh0YWcgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkp KSkKICAgICAgJ2RvbmUpCgogICAgKGRlZmluZSAoaW5zdGFsbC1jb21wbGV4LXBhY2thZ2UpCiAg ICAgIChkZWZpbmUgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KQoJKChnZXQgJ21ha2UtZnJvbS1y ZWFsLWltYWcgJ3JlY3Rhbmd1bGFyKSB4IHkpKQogICAgICAoZGVmaW5lIChtYWtlLWZyb20tbWFn LWFuZyByIGEpCgkoKGdldCAnbWFrZS1mcm9tLW1hZy1hbmcgJ3BvbGFyKSByIGEpKQogICAgICAo ZGVmaW5lIChhZGQtY29tcGxleCB6MSB6MikKCShtYWtlLWZyb20tcmVhbC1pbWFnIChhZGQgKHJl YWwtcGFydCB6MSkgKHJlYWwtcGFydCB6MikpCgkJCSAgICAgKGFkZCAoaW1hZy1wYXJ0IHoxKSAo aW1hZy1wYXJ0IHoyKSkpKQogICAgICAoZGVmaW5lIChzdWItY29tcGxleCB6MSB6MikKCShtYWtl LWZyb20tcmVhbC1pbWFnIChzdWIgKHJlYWwtcGFydCB6MSkgKHJlYWwtcGFydCB6MikpCgkJCSAg ICAgKHN1YiAoaW1hZy1wYXJ0IHoxKSAoaW1hZy1wYXJ0IHoyKSkpKQogICAgICAoZGVmaW5lICht dWwtY29tcGxleCB6MSB6MikKCShtYWtlLWZyb20tbWFnLWFuZyAobXVsIChtYWduaXR1ZGUgejEp IChtYWduaXR1ZGUgejIpKQoJCQkgICAoYWRkIChhbmdsZSB6MSkgKGFuZ2xlIHoyKSkpKQogICAg ICAoZGVmaW5lIChkaXYtY29tcGxleCB6MSB6MikKCShtYWtlLWZyb20tbWFnLWFuZyAoZGl2ICht YWduaXR1ZGUgejEpIChtYWduaXR1ZGUgejIpKQoJCQkgICAoc3ViIChhbmdsZSB6MSkgKGFuZ2xl IHoyKSkpKQogICAgICAoZGVmaW5lICh0YWcgeikgKGF0dGFjaC10YWcgJ2NvbXBsZXggeikpCiAg ICAgIChwdXQgJ2FkZCAnKGNvbXBsZXggY29tcGxleCkKCSAgIChsYW1iZGEgKHoxIHoyKSAodGFn IChhZGQtY29tcGxleCB6MSB6MikpKSkKICAgICAgKHB1dCAnc3ViICcoY29tcGxleCBjb21wbGV4 KQoJICAgKGxhbWJkYSAoejEgejIpICh0YWcgKHN1Yi1jb21wbGV4IHoxIHoyKSkpKQogICAgICAo cHV0ICdtdWwgJyhjb21wbGV4IGNvbXBsZXgpCgkgICAobGFtYmRhICh6MSB6MikgKHRhZyAobXVs LWNvbXBsZXggejEgejIpKSkpCiAgICAgIChwdXQgJ2RpdiAnKGNvbXBsZXggY29tcGxleCkKCSAg IChsYW1iZGEgKHoxIHoyKSAodGFnIChkaXYtY29tcGxleCB6MSB6MikpKSkKICAgICAgKHB1dCAn bWFrZS1mcm9tLXJlYWwtaW1hZyAnY29tcGxleAoJICAgKGxhbWJkYSAoeCB5KSAodGFnIChtYWtl LWZyb20tcmVhbC1pbWFnIHggeSkpKSkKICAgICAgKHB1dCAnbWFrZS1mcm9tLW1hZy1hbmcgJ2Nv bXBsZXgKCSAgIChsYW1iZGEgKHIgYSkgKHRhZyAobWFrZS1mcm9tLW1hZy1hbmcgciBhKSkpKQog ICAgICAocHV0ICdlcXU/ICcoY29tcGxleCBjb21wbGV4KQoJICAgKGxhbWJkYSAoeCB5KSAoYW5k ICg9IDAgKHJlYWwtcGFydCAoc3ViLWNvbXBsZXggeCB5KSkpCgkJCSAgICAgICg9IDAgKGltYWct cGFydCAoc3ViLWNvbXBsZXggeCB5KSkpKSkpCiAgICAgIChwdXQgJ2VxdT8gJyhyZWN0YW5ndWxh ciBwb2xhcikgZXF1PykKICAgICAgKHB1dCAnZXF1PyAnKHBvbGFyIHJlY3Rhbmd1bGFyKSBlcXU/ KQogICAgICAocHV0ICd6ZXJvPyAnKGNvbXBsZXgpCgkgICAobGFtYmRhICh4KSAoZXF1PyAodGFn IHgpICh0YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcgMCAwKSkpKSkKICAgICAgKHB1dCAncHJvamVj dCAnKGNvbXBsZXgpIChsYW1iZGEgKHopIChyZWFsLXBhcnQgeikpKQogICAgICAnZG9uZSkKCiAg ICAoZGVmaW5lIChtYWtlLWNvbXBsZXgtZnJvbS1yZWFsLWltYWcgeCB5KQogICAgICAoKGdldCAn bWFrZS1mcm9tLXJlYWwtaW1hZyAnY29tcGxleCkgeCB5KSkKCiAgICAoZGVmaW5lIChtYWtlLWNv bXBsZXgtZnJvbS1tYWctYW5nIHIgYSkKICAgICAgKChnZXQgJ21ha2UtZnJvbS1tYWctYW5nICdj b21wbGV4KSByIGEpKQoKICAgIChpbnN0YWxsLXJlY3Rhbmd1bGFyLXBhY2thZ2UpCiAgICAoaW5z dGFsbC1wb2xhci1wYWNrYWdlKQogICAgKGluc3RhbGwtcmF0aW9uYWwtcGFja2FnZSkKICAgIChp bnN0YWxsLXNjaGVtZS1udW1iZXItcGFja2FnZSkKICAgIChpbnN0YWxsLWNvbXBsZXgtcGFja2Fn ZSkKCiAgICAocHV0ICdyZWFsLXBhcnQgJyhjb21wbGV4KSByZWFsLXBhcnQpCiAgICAocHV0ICdp bWFnLXBhcnQgJyhjb21wbGV4KSBpbWFnLXBhcnQpCiAgICAocHV0ICdtYWduaXR1ZGUgJyhjb21w bGV4KSBtYWduaXR1ZGUpCiAgICAocHV0ICdhbmdsZSAnKGNvbXBsZXgpIGFuZ2xlKQoKICAgIChk ZWZpbmUgKGFwcGx5LWdlbmVyaWMgb3AgLiBhcmdzKQogICAgICAjOyhzaG93ICN0ICJhcHBseS1n ZW5lcmljOmVudHJ5XG4iKQogICAgICAjOyhlcnJvciAiZGVidWciKQogICAgICAoZGVmaW5lICh2 YXJpYWJsZSBwb2x5KSAoY2FyIHBvbHkpKQogICAgICAoZGVmaW5lIChhbGwtYXJndHlwZXMtc2Ft ZT8gLiBhcmdzKQoJKGxldCAoKHR5cGUgKHR5cGUtdGFnIChjYXIgYXJncykpKSkKCSAgKGFjY3Vt dWxhdGUgKGxhbWJkYSAoeCB5KSAoYW5kIHggeSkpICN0IChtYXAgKGxhbWJkYSAoeCkgKGVxPyB0 eXBlIHgpKSBhcmdzKSkpKQogICAgICAoZGVmaW5lIChjb2VyY2lvbi1pZi1leGlzdHM/IHR5cGUg YXJnLXRhZ3MpCgkobGV0ICgoY29lcmNpb24tbGlzdCAobWFwIChsYW1iZGEgKHgpIAoJCQkJICAg IChpZiAoZXE/IHR5cGUgeCkKCQkJCQlpZGVudGl0eQoJCQkJCShnZXQtY29lcmNpb24geCB0eXBl KSkpIGFyZy10YWdzKSkpCgkgIChpZiAoYWNjdW11bGF0ZSAobGFtYmRhICh4IHkpIChhbmQgeCB5 KSkgI3QgY29lcmNpb24tbGlzdCkKCSAgICAgIGNvZXJjaW9uLWxpc3QKCSAgICAgICNmKSkpCiAg ICAgIChkcm9wIChsZXQqICgodHlwZS10YWdzIChtYXAgdHlwZS10YWcgYXJncykpCgkJICAgKHBy b2MgKGdldCBvcCB0eXBlLXRhZ3MpKSkKCSAgICAgICM7KHNob3cgI3QgImFwcGx5LWdlbmVyaWM6 IHR5cGUtdGFncz0iIAoJCSAgICAgICAoZGlzcGxheWVkIHR5cGUtdGFncykKCQkgICAgICAgIiBw cm9jPSIgKHdyaXR0ZW4gcHJvYykKCQkgICAgICAgIiBwcm9jLXNvdXJjZT0iICh0aGluZ3ktc291 cmNlIHByb2MpICJcbiIpCgkgICAgICAoY29uZCAocHJvYyAoYXBwbHkgcHJvYyAobWFwIGNvbnRl bnRzIGFyZ3MpKSkKCQkgICAgKCg9IDEgKGxlbmd0aCBhcmdzKSkKCQkgICAgICM7KHNob3cgI3Qg Ik5vIHByb2MgZm91bmQgZm9yIG9wPSIgb3AgIiwgdHlwZS10YWdzPSIgdHlwZS10YWdzICIsIGFy Zz0iIChkaXNwbGF5ZWQgYXJncykgIlxuIikKCQkgICAgIChhcHBseS1nZW5lcmljIG9wIChyYWlz ZS10eXBlIChjYXIgYXJncykpKSkKCQkgICAgKCg9IDIgKGxlbmd0aCBhcmdzKSkKCQkgICAgIChj b25kICgoYW5kIChlcT8gJ3BvbHlub21pYWwgKGNhciB0eXBlLXRhZ3MpKQoJCQkgICAgICAgKG51 bWVyaWM/IChjYWRyIHR5cGUtdGFncykpKQoJCQkgICAgKGFwcGx5LWdlbmVyaWMgb3AKCQkJCQkg ICAoY2FyIGFyZ3MpCgkJCQkJICAgKG1ha2UtcG9seW5vbWlhbCAodmFyaWFibGUgKGNvbnRlbnRz IChjYXIgYXJncykpKQoJCQkJCQkJICAgIChsaXN0IChsaXN0IDAgKGNhZHIgYXJncykpKSkpKQoJ CQkgICAoKGFuZCAobnVtZXJpYz8gKGNhciB0eXBlLXRhZ3MpKQoJCQkgICAgICAgKGVxPyAncG9s eW5vbWlhbCAoY2FkciB0eXBlLXRhZ3MpKSkKCQkJICAgIChhcHBseS1nZW5lcmljIG9wCgkJCQkJ ICAgKG1ha2UtcG9seW5vbWlhbCAodmFyaWFibGUgKGNvbnRlbnRzIChjYWRyIGFyZ3MpKSkKCQkJ CQkJCSAgICAobGlzdCAobGlzdCAwIChjYXIgYXJncykpKSkKCQkJCQkgICAoY2FkciBhcmdzKSkp CQkJIAoJCQkgICAoKGFuZCAoZ2V0LWNvZXJjaW9uIChjYXIgdHlwZS10YWdzKSAoY2FkciB0eXBl LXRhZ3MpKQoJCQkgICAgICAgKG5vdCAoZXE/IChjYXIgdHlwZS10YWdzKSAoY2FkciB0eXBlLXRh Z3MpKSkpCgkJCSAgICAoYXBwbHktZ2VuZXJpYyBvcAoJCQkJCSAgICgoZ2V0LWNvZXJjaW9uCgkJ CQkJICAgICAoY2FyIHR5cGUtdGFncykKCQkJCQkgICAgIChjYWRyIHR5cGUtdGFncykpIChjYXIg YXJncykpCgkJCQkJICAgKGNhZHIgYXJncykpKQoJCQkgICAoKGFuZCAoZ2V0LWNvZXJjaW9uIChj YWRyIHR5cGUtdGFncykgKGNhciB0eXBlLXRhZ3MpKQoJCQkgICAgICAgKG5vdCAoZXE/IChjYXIg dHlwZS10YWdzKSAoY2FkciB0eXBlLXRhZ3MpKSkpCgkJCSAgICAoYXBwbHktZ2VuZXJpYyBvcAoJ CQkJCSAgIChjYXIgYXJncykKCQkJCQkgICAoKGdldC1jb2VyY2lvbgoJCQkJCSAgICAgKGNhZHIg dHlwZS10YWdzKQoJCQkJCSAgICAgKGNhciB0eXBlLXRhZ3MpKSAoY2FkciBhcmdzKSApKSkKCQkJ ICAgKChjb21wYXJhYmxlPyAoY2FyIHR5cGUtdGFncykgKGNhZHIgdHlwZS10YWdzKSkKCQkJICAg IChpZgoJCQkgICAgICh0eXBlMTw9dHlwZTI/IChjYXIgdHlwZS10YWdzKSAoY2FkciB0eXBlLXRh Z3MpKQoJCQkgICAgIChhcHBseS1nZW5lcmljIG9wIChyYWlzZS10eXBlIChjYXIgYXJncykpIChj YWRyIGFyZ3MpKQoJCQkgICAgIChhcHBseS1nZW5lcmljIG9wIChjYXIgYXJncykgIChyYWlzZS10 eXBlIChjYWRyIGFyZ3MpKSkpKQoJCQkgICAoZWxzZSAoZXJyb3IgImFwcGx5LWdlbmVyaWM6SW5j b21wYXJhYmxlIHR5cGVzOiAodHlwZS10YWdzLGFyZ3MpPSIgdHlwZS10YWdzIGFyZ3MpKSkpCgkJ ICAgICgoYW5kICg+IChsZW5ndGggYXJncykgMikgKG5vdCAoYWxsLWFyZ3R5cGVzLXNhbWU/IGFy Z3MpKSkKCQkgICAgIChsZXQgdHlwZXMtbG9vcCAoKHR5cGVzIHR5cGUtdGFncykpCgkJICAgICAg IChsZXQgKChsaXN0LW9mLWNvZXJjaW9uLWZ1bmN0aW9ucwoJCQkgICAgICAoY29lcmNpb24taWYt ZXhpc3RzPyAoY2FyIHR5cGVzKSB0eXBlLXRhZ3MpKSkKCQkJIChpZiBsaXN0LW9mLWNvZXJjaW9u LWZ1bmN0aW9ucwoJCQkgICAgIChhcHBseSBhcHBseS1nZW5lcmljIChjb25zIG9wIChtYXAgKGxh bWJkYSAoZnVuIGFyZykgKGZ1biBhcmcpKQoJCQkJCQkJCWxpc3Qtb2YtY29lcmNpb24tZnVuY3Rp b25zCgkJCQkJCQkJYXJncykpKQoJCQkgICAgIChpZiAobm90IChudWxsPyAoY2RyIHR5cGVzKSkp CgkJCQkgKHR5cGVzLWxvb3AgKGNkciB0eXBlcykpCgkJCQkgKGVycm9yICJhcHBseS1nZW5lcmlj OkV2ZW4gY29lcmNpb25zIGZhaWxlZC4gTm8gbWV0aG9kIGZvciB0aGVzZSB0eXBlcy4iKSkpKSkp CgkJICAgIChlbHNlIChlcnJvciAiYXBwbHktZ2VuZXJpYzpObyBtZXRob2QgZm9yIHRoZXNlIHR5 cGVzIgoJCQkJIChsaXN0IG9wIHR5cGUtdGFncykpKSkpKSkKICAgIChkZWZpbmUgKHNjaGVtZS1u dW1iZXItPmNvbXBsZXggbikKICAgICAgKG1ha2UtY29tcGxleC1mcm9tLXJlYWwtaW1hZyAoY29u dGVudHMgbikgMCkpCiAgICAocHV0LWNvZXJjaW9uICdzY2hlbWUtbnVtYmVyCgkJICAnY29tcGxl eAoJCSAgc2NoZW1lLW51bWJlci0+Y29tcGxleCkKCiAgICAocHV0ICdtYXgzLW1hZ25pdHVkZSAn KGNvbXBsZXggY29tcGxleCBjb21wbGV4KSAobGFtYmRhICh6MSB6MiB6MykKCQkJCQkJICAgICAg KG1heCAobWFnbml0dWRlIHoxKSAobWFnbml0dWRlIHoyKSAobWFnbml0dWRlIHozKSkpKQogICAg KGRlZmluZSAobWF4My1tYWduaXR1ZGUgeDEgeDIgeDMpIChhcHBseS1nZW5lcmljICdtYXgzLW1h Z25pdHVkZSB4MSB4MiB4MykpCiAgICAoZGVmaW5lIChpZGVudGl0eSB4KSB4KQoKICAoZGVmaW5l IG51bWVyaWMtdG93ZXIgKGxpc3QgJ2ludGVnZXIgJ3JhdGlvbmFsICdzY2hlbWUtbnVtYmVyICdj b21wbGV4KSkKICAoZGVmaW5lIChjb21wYXJhYmxlPyB0eXBlMSB0eXBlMikgKGFuZCAobWVtcSB0 eXBlMSBudW1lcmljLXRvd2VyKSAobWVtcSB0eXBlMiBudW1lcmljLXRvd2VyKSkpCiAgIzsoZGVm aW5lIChoaWdoZXItdHlwZSB4KQogICAgKHNob3cgI3QgImhpZ2hlci10eXBlOng9IiAoZGlzcGxh eWVkIHgpICJcbiIpCiAgICAgIChkZWZpbmUgKGZpbmQtaGlnaGVyLXR5cGUgeCB0eXBlcykKCShj b25kICgob3IgKG51bGw/IHR5cGVzKSAobnVsbD8gKGNkciB0eXBlcykpKSAoZXJyb3IgIk5vIHR5 cGUgaGlnaGVyIHRoYW4gZ2l2ZW4iIHggdHlwZXMpKQoJICAgICAgKChlcT8geCAoY2FyIHR5cGVz KSkgKGNhZHIgdHlwZXMpKQoJICAgICAgKGVsc2UgKGZpbmQtaGlnaGVyLXR5cGUgeCAoY2RyIHR5 cGVzKSkpKSkKICAgICAgKGZpbmQtaGlnaGVyLXR5cGUgeCBudW1lcmljLXRvd2VyKSkKCiAgKGRl ZmluZSAobnVtZXJpYz8geCkKICAgIChtZW1xIHggbnVtZXJpYy10b3dlcikpCiAgKGRlZmluZSAo cG9seW5vbWlhbD8geCkKICAgIChlcT8gKHR5cGUtdGFnIHgpICdwb2x5bm9taWFsKSkKICAoZGVm aW5lIChoaWdoZXItdHlwZSB4KQogICAgKGxldCAoKHRhaWwgKG1lbXEgeCBudW1lcmljLXRvd2Vy KSkpCiAgICAgIChjb25kICgoZXE/ICNmIHRhaWwpIChlcnJvciAiVHlwZSBub3QgaW4gdGhlIHRv d2VyIiB4KSkKCSAgICAoKG51bGw/IChjZHIgdGFpbCkpIChlcnJvciAiQWxyZWFkeSB0aGUgaGln aGVzdCB0eXBlOiIgeCkpCgkgICAgKGVsc2UgKGNhZHIgdGFpbCkpKSkpCgogIChzaG93ICN0ICJU ZXN0OiBIaWdoZXIgdGhhbiAnaW50ZWdlcjogIiAoaGlnaGVyLXR5cGUgJ2ludGVnZXIpICJcbiIp CiAgIzsoc2hvdyAjdCAiVGVzdDogSGlnaGVyIHRoYW4gJ2NvbXBsZXg6ICIgKGhpZ2hlci10eXBl ICdjb21wbGV4KSAiXG4iKQoKICAgIChkZWZpbmUgKHR5cGUxPD10eXBlMj8gdHlwZTEgdHlwZTIp CiAgICAgIChpZiAobm90IChtZW1xIHR5cGUxIG51bWVyaWMtdG93ZXIpKQoJICAoZXJyb3IgIlR5 cGUgMSBub3QgaW4gdGhlIG51bWVyaWMgdG93ZXIiKSkKICAgICAgKGlmIChub3QgKG1lbXEgdHlw ZTIgbnVtZXJpYy10b3dlcikpCgkgIChlcnJvciAiVHlwZSAyIG5vdCBpbiB0aGUgbnVtZXJpYyB0 b3dlciIpKQogICAgICAobGV0IGxvb3AgKCh0eXBlcyBudW1lcmljLXRvd2VyKSkKCShjb25kICgo bnVsbD8gdHlwZXMpIChlcnJvciAiVHlwZSAxIGFuZCB0eXBlIDIgYXJlIGluY29tcGFyYWJsZSIg dHlwZTEgdHlwZTIpKQoJICAgICAgKChlcT8gKGNhciB0eXBlcykgdHlwZTEpICN0KQoJICAgICAg KChlcT8gKGNhciB0eXBlcykgdHlwZTIpICNmKQoJICAgICAgKGVsc2UgKGxvb3AgKGNkciB0eXBl cykpKSkpKQoKICAgIChkZWZpbmUgKGludGVnZXItPnJhdGlvbmFsIHgpCiAgICAgIChtYWtlLXJh dGlvbmFsIHggMSkpCgogICAgKGRlZmluZSAocmF0aW9uYWwtPnNjaGVtZS1udW1iZXIgeCkKICAg ICAgKG1ha2Utc2NoZW1lLW51bWJlciAoKGdldCAndG8tcmVhbCAnKHJhdGlvbmFsKSkgeCkpKQog ICAgKHB1dC1jb2VyY2lvbiAnaW50ZWdlciAncmF0aW9uYWwgaW50ZWdlci0+cmF0aW9uYWwpCiAg ICAocHV0LWNvZXJjaW9uICdyYXRpb25hbCAnc2NoZW1lLW51bWJlciByYXRpb25hbC0+c2NoZW1l LW51bWJlcikKCiAgKGRlZmluZSAocmFpc2UtdHlwZSB4KQogICAgIzsoc2hvdyAjdCAiUmFpc2lu ZyB0eXBlIG9mOiAiIChkaXNwbGF5ZWQgeCkgIlxuIikKICAgICAgKGxldCAoKGNvbnZlcnRlciAo Z2V0LWNvZXJjaW9uICh0eXBlLXRhZyB4KSAoaGlnaGVyLXR5cGUgKHR5cGUtdGFnIHgpKSkpKQoJ KGlmIGNvbnZlcnRlcgoJICAgIChjb252ZXJ0ZXIgeCkKCSAgICAoZXJyb3IgIk5vIGNvZXJjaW9u IGZvdW5kIGZvciB4IiAodHlwZS10YWcgeCkgeCkpKSkKCgogICAgKGRlZmluZSAocmVtYWluZGVy LWludGVnZXIgYSBiKQogICAgICAod2hlbiAob3IgKG5vdCAoaW50ZWdlcj8gYSkpIChub3QgKGlu dGVnZXI/IGIpKSkKCShlcnJvciAiQXJndW1lbnRzIG11c3QgYmUgaW50ZWdlcnMiIGEgYikpCiAg ICAgIChyZW1haW5kZXIgYSBiKSkKCiAgICAocHV0ICdyZW1haW5kZXIgJyhpbnRlZ2VyIGludGVn ZXIpIHJlbWFpbmRlci1pbnRlZ2VyKQogICAgKGRlZmluZSAocmVtYWluZGVyLWdlbmVyYWxpemVk IGEgYikgKGFwcGx5LWdlbmVyaWMgJ3JlbWFpbmRlciBhIGIpKQoKICAgIChkZWZpbmUgKHByb2pl Y3Qgb2JqKQogICAgICAoYXBwbHktZ2VuZXJpYyAncHJvamVjdCBvYmopKQogICAgKGRlZmluZSAo ZHJvcHBhYmxlPyBvYmopCiAgICAgIChjb25kICgobm90IChtZW1xICh0eXBlLXRhZyBvYmopIG51 bWVyaWMtdG93ZXIpKSAjZikKCSAgICAoKGVxPyAodHlwZS10YWcgb2JqKSAoY2FyIG51bWVyaWMt dG93ZXIpKSAjZikKCSAgICAoKGVxdT8gb2JqIChyYWlzZS10eXBlIChwcm9qZWN0IG9iaikpKSAj dCkKCSAgICAoZWxzZSAjZikpKQogICAgKGRlZmluZSAoZHJvcCBvYmopIAogICAgICAoaWYgKGRy b3BwYWJsZT8gb2JqKQoJICAoZHJvcCAocHJvamVjdCBvYmopKQoJICBvYmopKQoKICAgIChzaG93 ICN0ICJUZXN0IDE6IFN1YnRyYWN0aW5nIGNvbXBsZXggbnVtYmVyczogIgoJICAoc3ViCgkgICAo bWFrZS1jb21wbGV4LWZyb20tcmVhbC1pbWFnIDEuMSAyKQoJICAgKG1ha2UtY29tcGxleC1mcm9t LXJlYWwtaW1hZyAwIDIpKSAiXG4iKQogIChkZWZpbmUgKGluc3RhbGwtcG9seW5vbWlhbC1wYWNr YWdlKQogICAgIzsoZGVmaW5lIChjb250ZW50cyBnZW5lcmljLW9iamVjdCkKICAgICAgKGNkciBn ZW5lcmljLW9iamVjdCkpCiAgICAgIChkZWZpbmUgKG1ha2UtcG9seSB2YXJpYWJsZSB0ZXJtLWxp c3QpCgkoY29ucyB2YXJpYWJsZSB0ZXJtLWxpc3QpKQogICAgICAoZGVmaW5lICh2YXJpYWJsZSBw KSAoY2FyIHApKQogICAgICAoZGVmaW5lICh0ZXJtLWxpc3QgcCkKCShjZHIgcCkpCiAgICAgIChk ZWZpbmUgKHZhcmlhYmxlPyB4KSAoc3ltYm9sPyB4KSkKICAgICAgKGRlZmluZSAoc2FtZS12YXJp YWJsZT8gdjEgdjIpCgkoYW5kICh2YXJpYWJsZT8gdjEpICh2YXJpYWJsZT8gdjIpIChlcT8gdjEg djIpKSkKICAgICAgKGRlZmluZSAoPW51bWJlcj8gZXhwIG51bSkKCShhbmQgKG51bWJlcj8gZXhw KSAoPSBleHAgbnVtKSkpCiAgICAgIChkZWZpbmUgKHRoZS1lbXB0eS10ZXJtbGlzdCkgJygpKQoK ICAgICAgKGRlZmluZSAocmVzdC10ZXJtcyB0ZXJtLWxpc3QpIChjZHIgdGVybS1saXN0KSkKICAg ICAgKGRlZmluZSAoZW1wdHktdGVybWxpc3Q/IHRlcm0tbGlzdCkgKG51bGw/IHRlcm0tbGlzdCkp CgogICAgICAoZGVmaW5lIChtYWtlLXRlcm0gb3JkZXIgY29lZmYpIChsaXN0IG9yZGVyIGNvZWZm KSkKICAgICAgKGRlZmluZSAob3JkZXIgdGVybSkgKGNhciB0ZXJtKSkKICAgICAgKGRlZmluZSAo Y29lZmYgdGVybSkgKGNhZHIgdGVybSkpCiAgICAgIChkZWZpbmUgKHRhZyBwKSAoYXR0YWNoLXRh ZyAncG9seW5vbWlhbCBwKSkKICAgICAgKHB1dCAnbWFrZSAncG9seW5vbWlhbAoJICAgKGxhbWJk YSAodmFyIHRlcm1zKSAodGFnIChtYWtlLXBvbHkgdmFyIHRlcm1zKSkpKQogICAgICAjOyhjb250 aW51ZWQgb24gbmV4dCBwYWdlKQoKICAgICAgKGRlZmluZSAoYWRkLXBvbHkgcDEgcDIpCgkjOyhz aG93ICN0ICJhZGQtcG9seTogcDE9IiBwMSAiLCBwMj0iIHAyICJcbiIpCgkoaWYgKHNhbWUtdmFy aWFibGU/ICh2YXJpYWJsZSBwMSkgKHZhcmlhYmxlIHAyKSkKCSAgICAobWFrZS1wb2x5ICh2YXJp YWJsZSBwMSkKCQkgICAgICAgKGFkZC10ZXJtcyAodGVybS1saXN0IHAxKQoJCQkJICAodGVybS1s aXN0IHAyKSkpCgkgICAgKGxldCAoKHJlcyAoY2RyIChpZiAodmFyaWFibGVfMS1vcmRlcjx2YXJp YWJsZV8yLW9yZGVyICh2YXJpYWJsZSBwMSkgKHZhcmlhYmxlIHAyKSkKCQkoYWRkICh0YWcgcDEp ICh0YWcgKG1ha2UtcG9seSAodmFyaWFibGUgcDEpIChsaXN0IChtYWtlLXRlcm0gMCAodGFnIHAy KSkpKSkpCgkJKGFkZCAodGFnIChtYWtlLXBvbHkgKHZhcmlhYmxlIHAyKSAobGlzdCAobWFrZS10 ZXJtIDAgKHRhZyBwMSkpKSkpICh0YWcgcDIpKSkpKSkKCSAgICAgICM7KHNob3cgI3QgImFkZC1w b2x5OnJlc3VsdDogIiAoZGlzcGxheWVkIHJlcykgIlxuIikgcmVzKSkpCgogICAgICAoc2hvdyAj dCAiVGVzdFkyOiBwb2x5IG9mIHBvbHk6ICIKCSAgICAobWFrZS1wb2x5ICd4IChsaXN0CgkJCSAg IChtYWtlLXRlcm0gMyAobWFrZS1wb2x5CgkJCQkJICd5IChsaXN0IChtYWtlLXRlcm0gMSAxKSAo bWFrZS10ZXJtIDAgMSkpKSkKCQkJICAgKG1ha2UtdGVybSAxIDIpCgkJCSAgIChtYWtlLXRlcm0g MCA0KSkpICJcbiIpCgogICAgICAoZGVmaW5lIChzdWItcG9seSBwMSBwMikKCShhZGQtcG9seSBw MSAobXVsLXBvbHkgcDIgKG1ha2UtcG9seSAodmFyaWFibGUgcDIpIChsaXN0IChtYWtlLXRlcm0g MCAtMSkpKSkpKQogICAgICAoZGVmaW5lIChhZGQtdGVybXMgTDEgTDIpCgkoY29uZCAoKGVtcHR5 LXRlcm1saXN0PyBMMSkgTDIpCgkgICAgICAoKGVtcHR5LXRlcm1saXN0PyBMMikgTDEpCgkgICAg ICAoZWxzZQoJICAgICAgIChsZXQgKCh0MSAoZmlyc3QtdGVybSBMMSkpICh0MiAoZmlyc3QtdGVy bSBMMikpKQoJCSAoY29uZCAoKD4gKG9yZGVyIHQxKSAob3JkZXIgdDIpKQoJCQkoYWRqb2luLXRl cm0KCQkJIHQxIChhZGQtdGVybXMgKHJlc3QtdGVybXMgTDEpIEwyKSkpCgkJICAgICAgICgoPCAo b3JkZXIgdDEpIChvcmRlciB0MikpCgkJCShhZGpvaW4tdGVybQoJCQkgdDIgKGFkZC10ZXJtcyBM MSAocmVzdC10ZXJtcyBMMikpKSkKCQkgICAgICAgKGVsc2UKCQkJKGFkam9pbi10ZXJtCgkJCSAo bWFrZS10ZXJtIChvcmRlciB0MSkKCQkJCSAgICAoYWRkIChjb2VmZiB0MSkgKGNvZWZmIHQyKSkp CgkJCSAoYWRkLXRlcm1zIChyZXN0LXRlcm1zIEwxKQoJCQkJICAgIChyZXN0LXRlcm1zIEwyKSkp KSkpKSkpCgoKICAgICAgKGRlZmluZSAobXVsLXBvbHkgcDEgcDIpCgkoaWYgKHNhbWUtdmFyaWFi bGU/ICh2YXJpYWJsZSBwMSkgKHZhcmlhYmxlIHAyKSkKCSAgICAobWFrZS1wb2x5ICh2YXJpYWJs ZSBwMSkKCQkgICAgICAgKG11bC10ZXJtcyAodGVybS1saXN0IHAxKQoJCQkJICAodGVybS1saXN0 IHAyKSkpCgkgICAgKGNvbnRlbnRzIChpZiAodmFyaWFibGVfMS1vcmRlcjx2YXJpYWJsZV8yLW9y ZGVyICh2YXJpYWJsZSBwMSkgKHZhcmlhYmxlIHAyKSkKCQkobXVsICh0YWcgcDEpCgkJICAgICAo bWFrZS1wb2x5bm9taWFsICh2YXJpYWJsZSBwMSkKCQkJCSAgICAgIChhZGpvaW4tdGVybQoJCQkJ ICAgICAgIChtYWtlLXRlcm0gMAoJCQkJCQkgICh0YWcgcDIpKSAodGhlLWVtcHR5LXRlcm1saXN0 KSkpKQoJCShtdWwgKHRhZyBwMikKCQkgICAgIChtYWtlLXBvbHlub21pYWwgKHZhcmlhYmxlIHAy KQoJCQkJICAgICAgKGFkam9pbi10ZXJtCgkJCQkgICAgICAgKG1ha2UtdGVybSAwCgkJCQkJCSAg KHRhZyBwMSkpICh0aGUtZW1wdHktdGVybWxpc3QpKSkpKSkKCSAgICAjOyhlcnJvciAiUG9seXMg bm90IGluIHNhbWUgdmFyIC0tIE1VTC1QT0xZIgoJCSAgIChsaXN0IHAxIHAyKSkpKQogICAgICAo ZGVmaW5lIChkaXYtcG9seSBwMSBwMikKCShpZiAoc2FtZS12YXJpYWJsZT8gKHZhcmlhYmxlIHAx KSAodmFyaWFibGUgcDIpKQoJICAgIChsZXQgKChxdW90aWVudC1hbmQtcmVtYWluZGVyIChkaXYt dGVybXMgKHRlcm0tbGlzdCBwMSkKCQkJCQkJICAgICAodGVybS1saXN0IHAyKSkpKQoJICAgICAg KGxpc3QgKG1ha2UtcG9seSAodmFyaWFibGUgcDEpIChjYXIgIHF1b3RpZW50LWFuZC1yZW1haW5k ZXIpKQoJCSAgICAobWFrZS1wb2x5ICh2YXJpYWJsZSBwMSkgKGNhZHIgcXVvdGllbnQtYW5kLXJl bWFpbmRlcikpKSkKCSAgICAgIChlcnJvciAiZGl2LXBvbHk6IFBvbHlzIG5vdCBpbiB0aGUgc2Ft ZSB2YXIiIHAxIHAyKSkpCiAgICAgIChkZWZpbmUgKGRpdi10ZXJtcyBMMSBMMikKCSAgICAgIChp ZiAoZW1wdHktdGVybWxpc3Q/IEwxKQoJCSAgKGxpc3QgKHRoZS1lbXB0eS10ZXJtbGlzdCkgKHRo ZS1lbXB0eS10ZXJtbGlzdCkpCgkJICAobGV0ICgodDEgKGZpcnN0LXRlcm0gTDEpKQoJCQkodDIg KGZpcnN0LXRlcm0gTDIpKSkKCQkgICAgKGlmICg+IChvcmRlciB0MikgKG9yZGVyIHQxKSkKCQkJ KGxpc3QgKHRoZS1lbXB0eS10ZXJtbGlzdCkgTDEpCgkJCShsZXQgKChuZXctYyAoZGl2IChjb2Vm ZiB0MSkgKGNvZWZmIHQyKSkpCgkJCSAgICAgIChuZXctbyAoLSAob3JkZXIgdDEpIChvcmRlciB0 MikpKSkKCQkJICAobGV0ICgocmVzdC1vZi1yZXN1bHQgKGRpdi10ZXJtcyAodGVybS1saXN0CgkJ CQkJCQkgICAgKHN1Yi1wb2x5CgkJCQkJCQkgICAgIChtYWtlLXBvbHkgJ2Zha2UtdmFyIEwxKQoJ CQkJCQkJICAgICAobXVsLXBvbHkKCQkJCQkJCSAgICAgIChtYWtlLXBvbHkgJ2Zha2UtdmFyIChs aXN0IChtYWtlLXRlcm0gbmV3LW8gbmV3LWMpKSkKCQkJCQkJCSAgICAgIChtYWtlLXBvbHkgJ2Zh a2UtdmFyIEwyKSkpKQoJCQkJCQkJICAgTDIpCgkJCQkJCSkpCgkJCSAgICAjOyhzaG93ICN0ICJk aXYtdGVybXM6IHJlc3Qtb2YtcmVzdWx0OiAiIChkaXNwbGF5ZWQgcmVzdC1vZi1yZXN1bHQpICJc biIpCgkJCSAgICAobGlzdCAoYWRqb2luLXRlcm0gKG1ha2UtdGVybSBuZXctbyBuZXctYykgKGNh ciByZXN0LW9mLXJlc3VsdCkpIChjYWRyIHJlc3Qtb2YtcmVzdWx0KSkKCQkJICAgICkpKSkpKQog ICAgICAoZGVmaW5lIChtdWwtdGVybXMgTDEgTDIpCgkoaWYgKGVtcHR5LXRlcm1saXN0PyBMMSkK CSAgICAodGhlLWVtcHR5LXRlcm1saXN0KQoJICAgIChhZGQtdGVybXMgKG11bC10ZXJtLWJ5LWFs bC10ZXJtcyAoZmlyc3QtdGVybSBMMSkgTDIpCgkJICAgICAgIChtdWwtdGVybXMgKHJlc3QtdGVy bXMgTDEpIEwyKSkpKQoKICAgICAgKGRlZmluZSAobXVsLXRlcm0tYnktYWxsLXRlcm1zIHQxIEwp CgkoaWYgKGVtcHR5LXRlcm1saXN0PyBMKQoJICAgICh0aGUtZW1wdHktdGVybWxpc3QpCgkgICAg KGxldCAoKHQyIChmaXJzdC10ZXJtIEwpKSkKCSAgICAgIChhZGpvaW4tdGVybQoJICAgICAgICht YWtlLXRlcm0gKCsgKG9yZGVyIHQxKSAob3JkZXIgdDIpKQoJCQkgIChtdWwgKGNvZWZmIHQxKSAo Y29lZmYgdDIpKSkKCSAgICAgICAobXVsLXRlcm0tYnktYWxsLXRlcm1zIHQxIChyZXN0LXRlcm1z IEwpKSkpKSkKICAgICAgKGRlZmluZSAoemVyby1wb2x5PyBwb2x5KQoJIzsoc2hvdyAjdCAiemVy by1wb2x5PzogcG9seT0iIChkaXNwbGF5ZWQgcG9seSkgIlxuIikKCShjb25kICgoZW1wdHktdGVy bWxpc3Q/ICh0ZXJtLWxpc3QgcG9seSkpICN0KQoJICAgICAgKChub3QgKHplcm8/IChjb2VmZiAo Zmlyc3QtdGVybSAodGVybS1saXN0IHBvbHkpKSkpKSAjZikKCSAgICAgIChlbHNlICh6ZXJvLXBv bHk/IAoJCSAgICAgKG1ha2UtcG9seSAodmFyaWFibGUgcG9seSkKCQkJCShyZXN0LXRlcm1zICh0 ZXJtLWxpc3QgcG9seSkpKSkpKSkKCiAgICAgIChkZWZpbmUgKHRlcm1saXN0LXR5cGUtb2YgdGVy bS1saXN0KQoJIzsoc2hvdyAjdCAidC10LW86IHRlcm0tbGlzdD0iIChkaXNwbGF5ZWQgdGVybS1s aXN0KSAiXG4iKQoJKGNvbmQgKChudWxsPyB0ZXJtLWxpc3QpICdzcGFyc2UpCgkgICAgICAoKHBh aXI/IChjYXIgdGVybS1saXN0KSkgJ3NwYXJzZSkKCSAgICAgICgobGlzdD8gdGVybS1saXN0KSAn ZGVuc2UpCgkgICAgICAoZWxzZSAoZXJyb3IgIlVua25vd24gdHlwZSBvZiBsaXN0IiB0ZXJtLWxp c3QpKSkpCiAgICAgIChkZWZpbmUgKGFkam9pbi10ZXJtIHRlcm0gdGVybS1saXN0KQoJKChnZXQg J2Fkam9pbi10ZXJtICh0ZXJtbGlzdC10eXBlLW9mIHRlcm0tbGlzdCkpIHRlcm0gdGVybS1saXN0 KSkKICAgICAgKGRlZmluZSAoZmlyc3QtdGVybSB0ZXJtLWxpc3QpCgkoKGdldCAnZmlyc3QtdGVy bSAodGVybWxpc3QtdHlwZS1vZiB0ZXJtLWxpc3QpKSB0ZXJtLWxpc3QpKQogICAgICAoZGVmaW5l ICh2YXJpYWJsZV8xLW9yZGVyPHZhcmlhYmxlXzItb3JkZXIgdmFyaWFibGVfMSB2YXJpYWJsZV8y KQoJIzsoc2hvdyAjdCAidmFyXzEtLi46IHZhcmlhYmxlXzE9IiB2YXJpYWJsZV8xICIgdmFyaWFi bGVfMj0iIHZhcmlhYmxlXzIgIlxuIikKCSM7KHNob3cgI3QgInZhcjEyc3RyaW5nPSIgKHN5bWJv bC0+c3RyaW5nIHZhcmlhYmxlXzEpICJ2YXIyMnN0cmluZz0iIChzeW1ib2wtPnN0cmluZyB2YXJp YWJsZV8yKSAiXG4iKQoJKHN0cmluZzw9PyAoc3ltYm9sLT5zdHJpbmcgdmFyaWFibGVfMSkgKHN5 bWJvbC0+c3RyaW5nIHZhcmlhYmxlXzIpKSkKICAgICAgKGRlZmluZSAobm9ybWFsaXplLWZ1bGx5 IHBvbHkpCgkoaWYgKG5vcm1hbC1wb2x5bm9taWFsPyBwb2x5KQoJICAgIHBvbHkKCSAgICAobm9y bWFsaXplLWZ1bGx5IChub3JtYWxpemUtb25jZSBwb2x5KSkpKQogICAgICAocHV0ICdhZGQgJyhw b2x5bm9taWFsIHBvbHlub21pYWwpCgkgICAobGFtYmRhIChwMSBwMikgCgkgICAgICM7KHNob3cg I3QgImdlbmVyaWMtYWRkLXBvbHk6UG9seW5vbWlhbCBkaXNwYXRjaCBmb3VuZDogcDE9IgoJCSAg ICAoZGlzcGxheWVkIHAxKSAiIHAyPSIgKGRpc3BsYXllZCBwMikgIlxuIikKCSAgICAgKG5vcm1h bGl6ZS1mdWxseSAodGFnIChhZGQtcG9seSBwMSBwMikpKSkpCiAgICAgIChwdXQgJ211bCAnKHBv bHlub21pYWwgcG9seW5vbWlhbCkKCSAgIChsYW1iZGEgKHAxIHAyKSAobm9ybWFsaXplLWZ1bGx5 ICh0YWcgKG11bC1wb2x5IHAxIHAyKSkpKSkKICAgICAgKHB1dCAnc3ViICcocG9seW5vbWlhbCBw b2x5bm9taWFsKQoJICAgKGxhbWJkYSAocDEgcDIpICh0YWcgKHN1Yi1wb2x5IHAxIHAyKSkpKQoK ICAgICAgKHB1dCAnemVybz8gJyhwb2x5bm9taWFsKSB6ZXJvLXBvbHk/KQogICAgICAocHV0ICdk aXYgJyhwb2x5bm9taWFsIHBvbHlub21pYWwpIGRpdi1wb2x5KQogICAgICAjOyhwdXQtY29lcmNp b24gJ3JhdGlvbmFsICdzY2hlbWUtbnVtYmVyIHJhdGlvbmFsLT5zY2hlbWUtbnVtYmVyKQogICAg ICAoZGVmaW5lIChtb25vbWlhbC1mbGlwLXZhcmlhYmxlcyBtb25vbWlhbCkKCSM7KHNob3cgI3Qg Im0tZi12OiBtb25vbWlhbD0iIG1vbm9taWFsICJcbiIpCgkobGV0KiAoKG1vbm8gKGNvbnRlbnRz IG1vbm9taWFsKSkKCSAgICAgICAoaW5uZXItcG9seW5vbWlhbCAoY29udGVudHMgKGNvZWZmIChm aXJzdC10ZXJtICh0ZXJtLWxpc3QgbW9ubykpKSkpCgkgICAgICAgKGlubmVyLXBvbHkgKGNvbnRl bnRzIGlubmVyLXBvbHlub21pYWwpKQoJICAgICAgIChvdXRlci1vcmRlciAob3JkZXIgKGZpcnN0 LXRlcm0gKHRlcm0tbGlzdCBtb25vKSkpKQoJICAgICAgIChvdXRlci12YXIgKHZhcmlhYmxlIG1v bm8pKQoJICAgICAgIChpbm5lci12YXIgKHZhcmlhYmxlIGlubmVyLXBvbHlub21pYWwpKQoJICAg ICAgIChpbm5lci10ZXJtLWxpc3QgKHRlcm0tbGlzdCBpbm5lci1wb2x5KSkpCgkgICM7KHNob3cg I3QgIm0tZi12OiBpbm5lci1wb2x5PSIgaW5uZXItcG9seSAiXG4iKQoJICAoaWYgKHNhbWUtdmFy aWFibGU/IGlubmVyLXZhciBvdXRlci12YXIpCgkgICAgICAobXVsCgkgICAgICAgKG1ha2UtcG9s eW5vbWlhbCBvdXRlci12YXIgKGFkam9pbi10ZXJtIChtYWtlLXRlcm0gb3V0ZXItb3JkZXIgMSkg KHRoZS1lbXB0eS10ZXJtbGlzdCkpKQoJICAgICAgICh0YWcgaW5uZXItcG9seW5vbWlhbCkpCgkg ICAgICAodGFnIChtYWtlLXBvbHkgaW5uZXItdmFyCgkJCSAgICAgIChtdWwtdGVybS1ieS1hbGwt dGVybXMgKG1ha2UtdGVybQoJCQkJCQkgICAgICAwCgkJCQkJCSAgICAgIChtYWtlLXBvbHlub21p YWwKCQkJCQkJICAgICAgIG91dGVyLXZhcgoJCQkJCQkgICAgICAgKGxpc3QgKG1ha2UtdGVybQoJ CQkJCQkJICAgICAgb3V0ZXItb3JkZXIKCQkJCQkJCSAgICAgIDEpKSkpIGlubmVyLXBvbHkpKSkp KSkKICAgICAgIzsoc2hvdyAjdCAiVGVzdFhYOiBzb3J0aW5nIHZhcmlhYmxlczogSXMgJ3ggPCAn eT86ICIKCSAgICAodmFyaWFibGVfMS1vcmRlcjx2YXJpYWJsZV8yLW9yZGVyICd4ICd5KSAiXG4i KQogICAgICAjOyhzaG93ICN0ICJUZXN0WFg6IHNvcnRpbmcgdmFyaWFibGVzOiBJcyAneiA8ICd5 PzogIgoJICAgICh2YXJpYWJsZV8xLW9yZGVyPHZhcmlhYmxlXzItb3JkZXIgJ3ogJ3kpICJcbiIp CiAgICAgICM7KHNob3cgI3QgIlRlc3RYWDogKGFkZGluZyB0d28gYmFzaWMgcG9seSk6ICIKCSAg ICAoYWRkIChtYWtlLXBvbHlub21pYWwgJ3ggKGxpc3QgKG1ha2UtdGVybSAxIDIpIChtYWtlLXRl cm0gMCA0KSkpCgkJIChtYWtlLXBvbHlub21pYWwgJ3kgKGxpc3QgKG1ha2UtdGVybSAyIDMpICht YWtlLXRlcm0gMCA1KSkpKSAiXG4iKQoKICAgICAgKGRlZmluZSAocG9seW5vbWlhbC0+c3VtLW9m LWZpcnN0LWFuZC1yZXN0IHBvbHkpCgkjOyhzaG93ICN0ICJwLT5zLW8tZi1hLXI6ICIgKGRpc3Bs YXllZCBwb2x5KSAiXG4iKQoJKGlmICh6ZXJvPyBwb2x5KQoJICAgIHBvbHkKCSAgICAobGV0KiAo KHBvbHkxIChjb250ZW50cyBwb2x5KSkKCQkgICAoZmlyc3QtbW9ub21pYWwgKHRhZwoJCQkJICAg IChtYWtlLXBvbHkKCQkJCSAgICAgKHZhcmlhYmxlIHBvbHkxKQoJCQkJICAgICAobGlzdCAoZmly c3QtdGVybSAodGVybS1saXN0IHBvbHkxKSkpKSkpKQoJICAgICAgIzsoc2hvdyAjdCAicC0+cy1v LWYtYS1yOiAiIChkaXNwbGF5ZWQgZmlyc3QtbW9ub21pYWwpICJcbiIpCgkgICAgICAoYWRkCgkJ Zmlyc3QtbW9ub21pYWwKCQkocG9seW5vbWlhbC0+c3VtLW9mLWZpcnN0LWFuZC1yZXN0CgkJICh0 YWcgKG1ha2UtcG9seSAodmFyaWFibGUgcG9seTEpIChyZXN0LXRlcm1zICh0ZXJtLWxpc3QgcG9s eTEpKSkpKSkpKSkKICAgIAogICAgICAoc2hvdyAjdCAiVGVzdDEzOiBFeHBhbmRpbmcgYSBwb2x5 bm9taWFsIGFzIG1vbm9taWFsczogIgoJICAgIChkaXNwbGF5ZWQKCSAgICAgKHBvbHlub21pYWwt PnN1bS1vZi1maXJzdC1hbmQtcmVzdAoJICAgICAgKG1ha2UtcG9seW5vbWlhbCAneQoJCQkgICAg ICAgKGxpc3QgKG1ha2UtdGVybSAyIChtYWtlLXBvbHlub21pYWwKCQkJCQkJICAgJ3gKCQkJCQkJ ICAgKGxpc3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0gMCAxKSkpKQoJCQkJICAgICAobWFr ZS10ZXJtIDAgMikpKSkpICJcbiIpCgogICAgICAoc2hvdyAjdCAiXG5UZXN0MjA6IHN0YXJ0IG1v bm9taWFsOiAiCgkgICAgKGRpc3BsYXllZCAobWFrZS1wb2x5bm9taWFsICd4CgkJCQkJKGxpc3QK CQkJCQkgKG1ha2UtdGVybQoJCQkJCSAgMgoJCQkJCSAgKG1ha2UtcG9seW5vbWlhbAoJCQkJCSAg ICd5CgkJCQkJICAgKGxpc3QKCQkJCQkgICAgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0gMCAx KSkpKSkpKSAiXG4iKQogICAgICAoc2hvdyAjdCAiVGVzdDIwOiBGbGlwcGluZyBhIG1vbm9taWFs IHZhcmlhYmxlOiAiCgkgICAgKGRpc3BsYXllZAoJICAgICAobW9ub21pYWwtZmxpcC12YXJpYWJs ZXMKCSAgICAgIChtYWtlLXBvbHlub21pYWwgJ3gKCQkJICAgICAgIChsaXN0IChtYWtlLXRlcm0g MSAobWFrZS1wb2x5bm9taWFsCgkJCQkJCSAgICd5CgkJCQkJCSAgIChsaXN0CgkJCQkJCSAgICAo bWFrZS10ZXJtIDIgMSkKCQkJCQkJICAgIChtYWtlLXRlcm0gMCAxKSkpKSkpKSkgIlxuXG4iKQog ICAgCiAgICAKICAgICAgKGRlZmluZSAobm9ybWFsLXBvbHlub21pYWw/IHBvbHkpCgkjOyhzaG93 ICN0ICJuLXA/OiBwb2x5PSIgcG9seSAiXG4iKQoJKGNvbmQgKChub3QgKHBvbHlub21pYWw/IHBv bHkpKSAjdCkKCSAgICAgICgobnVsbD8gKHRlcm0tbGlzdCAoY29udGVudHMgcG9seSkpKSAjdCkK CSAgICAgIChlbHNlIChsZXQqICgocG9seTEgKGNvbnRlbnRzIHBvbHkpKQoJCQkgICAob3V0ZXIt dmFyICh2YXJpYWJsZSBwb2x5MSkpKQoJCSAgICAgICM7KHNob3cgI3QgIklubmVyLWxldDogb3V0 ZXItdmFyPSIgKGRpc3BsYXllZCBvdXRlci12YXIpICJcbiIpCgkJICAgICAgKGxldCBsb29wICgo dGVybXMgKHRlcm0tbGlzdCBwb2x5MSkpKQoJCQkjOyhzaG93ICN0ICJuLXA/LWxvb3A6IHRlcm1z PSIgKGRpc3BsYXllZCB0ZXJtcykgIlxuIikKCQkJKGNvbmQgKChudWxsPyB0ZXJtcykgI3QpCgkJ CSAgICAgICgobm90IChwb2x5bm9taWFsPyAoY29lZmYgKGZpcnN0LXRlcm0gdGVybXMpKSkpIChs b29wIChyZXN0LXRlcm1zIHRlcm1zKSkpCgkJCSAgICAgICgobm90ICh2YXJpYWJsZV8xLW9yZGVy PHZhcmlhYmxlXzItb3JkZXIgCgkJCQkgICBvdXRlci12YXIKCQkJCSAgICh2YXJpYWJsZSAoY29u dGVudHMgKGNvZWZmIChmaXJzdC10ZXJtIHRlcm1zKSkpKSkpIChiZWdpbiAjOyhzaG93ICN0ICJ3 cm9uZyB2YXJpYWJsZSBvcmRlciBcbiIpICNmKSkKCQkJICAgICAgKChub3QgKG5vcm1hbC1wb2x5 bm9taWFsPyAoY29lZmYgKGZpcnN0LXRlcm0gdGVybXMpKSkpIChiZWdpbiAjOyhzaG93ICN0ICJu b3Qgbm9ybWFsIHBvbHlcbiIpICNmKSkKCQkJICAgICAgKGVsc2UgKGxvb3AgKHJlc3QtdGVybXMg dGVybXMpKSkpKQoJCSAgICAgICkpKSkKICAgICAgKGRlZmluZSAobm9ybWFsaXplLW9uY2UgcG9s eSkKCSM7KHNob3cgI3QgIm5vcm1hbGl6ZS1vbmNlIHBvbHk9ICIgKGRpc3BsYXllZCBwb2x5KSAi XG4iKQoJKGlmICh6ZXJvPyBwb2x5KQoJICAgIHBvbHkKCSAgICAobGV0KiAoKHBvbHkxIChjb250 ZW50cyBwb2x5KSkKCQkgICAoZmlyc3QtbW9ub21pYWwgKHRhZwoJCQkJICAgIChtYWtlLXBvbHkK CQkJCSAgICAgKHZhcmlhYmxlIHBvbHkxKQoJCQkJICAgICAobGlzdCAobWFrZS10ZXJtCgkJCQkJ ICAgIChvcmRlciAoZmlyc3QtdGVybSAodGVybS1saXN0IHBvbHkxKSkpCgkJCQkJICAgIChpZiAo cG9seW5vbWlhbD8gKGNvZWZmIChmaXJzdC10ZXJtICh0ZXJtLWxpc3QgcG9seTEpKSkpCgkJCQkJ CShub3JtYWxpemUtb25jZSAoY29lZmYgKGZpcnN0LXRlcm0gKHRlcm0tbGlzdCBwb2x5MSkpKSkK CQkJCQkJKGNvZWZmIChmaXJzdC10ZXJtICh0ZXJtLWxpc3QgcG9seTEpKSkpKSkpKSkpCgkgICAg ICAjOyhzaG93ICN0ICJwLT5zLW8tZi1hLXI6ICIgKGRpc3BsYXllZCBmaXJzdC1tb25vbWlhbCkg IlxuIikKCSAgICAgIChhZGQKCSAgICAgICAoaWYgKGFuZCAocG9seW5vbWlhbD8KCQkgICAgICAg KGNvZWZmCgkJCShmaXJzdC10ZXJtCgkJCSAodGVybS1saXN0CgkJCSAgKGNvbnRlbnRzIGZpcnN0 LW1vbm9taWFsKSkpKSkKCQkgICAgICAodmFyaWFibGVfMS1vcmRlcjx2YXJpYWJsZV8yLW9yZGVy CgkJICAgICAgICh2YXJpYWJsZQoJCQkoY29udGVudHMKCQkJIChjb2VmZgoJCQkgIChmaXJzdC10 ZXJtCgkJCSAgICh0ZXJtLWxpc3QKCQkJICAgIChjb250ZW50cyBmaXJzdC1tb25vbWlhbCkpKSkp KQoJCSAgICAgICAodmFyaWFibGUKCQkJKGNvbnRlbnRzIGZpcnN0LW1vbm9taWFsKSkpKQoJCSAg IChtb25vbWlhbC1mbGlwLXZhcmlhYmxlcyBmaXJzdC1tb25vbWlhbCkKCQkgICBmaXJzdC1tb25v bWlhbCkKCQkocG9seW5vbWlhbC0+c3VtLW9mLWZpcnN0LWFuZC1yZXN0CgkJICh0YWcgKG1ha2Ut cG9seSAodmFyaWFibGUgcG9seTEpIChyZXN0LXRlcm1zICh0ZXJtLWxpc3QgcG9seTEpKSkpKSkp KSkKCiAgICAgIChzaG93ICN0ICJUZXN0MjE6IG5vcm1hbC1wb2x5bm9taWFsPzpzdGFydDogIiAo ZGlzcGxheWVkIChtYWtlLXBvbHlub21pYWwgJ3kKCQkJCQkgICAgIChsaXN0IChtYWtlLXRlcm0g MiAobWFrZS1wb2x5bm9taWFsCgkJCQkJCQkJICd4CgkJCQkJCSAgIChsaXN0IChtYWtlLXRlcm0g MiAxKSAobWFrZS10ZXJtIDAgMSkpKSkKCQkJCQkJICAgKG1ha2UtdGVybSAwIDIpKSkpICJcbiIp CiAgICAgIChzaG93ICN0ICJUZXN0MjE6IG5vcm1hbC1wb2x5bm9taWFsPzpyZXN1bHQ6IiAobm9y bWFsLXBvbHlub21pYWw/IChtYWtlLXBvbHlub21pYWwgJ3kKCQkJCQkgICAgIChsaXN0IChtYWtl LXRlcm0gMiAobWFrZS1wb2x5bm9taWFsCgkJCQkJCQkJICd4CgkJCQkJCSAgIChsaXN0IChtYWtl LXRlcm0gMiAxKSAobWFrZS10ZXJtIDAgMSkpKSkKCQkJCQkJICAgKG1ha2UtdGVybSAwIDIpKSkp ICJcbiIpCiAgICAgIChzaG93ICN0ICJUZXN0MjI6IG5vcm1hbC1wb2x5bm9taWFsPy1nb29kOnN0 YXJ0OiAiCgkgICAgKGRpc3BsYXllZAoJICAgICAobWFrZS1wb2x5bm9taWFsICd4CgkJCSAgICAg IChsaXN0IChtYWtlLXRlcm0gMiAobWFrZS1wb2x5bm9taWFsCgkJCQkJCSAgJ3kKCQkJCQkJICAo bGlzdCAobWFrZS10ZXJtIDIgMSkgKG1ha2UtdGVybSAwIDEpKSkpCgkJCQkgICAgKG1ha2UtdGVy bSAwIDIpKSkpICJcbiIpCiAgICAgIChzaG93ICN0ICJUZXN0MjI6IG5vcm1hbC1wb2x5bm9taWFs Py1nb29kOnJlc3VsdDoiCgkgICAgKG5vcm1hbC1wb2x5bm9taWFsPwoJICAgICAobWFrZS1wb2x5 bm9taWFsICd4CgkJCSAgICAgIChsaXN0IChtYWtlLXRlcm0gMiAobWFrZS1wb2x5bm9taWFsCgkJ CQkJCSAgJ3kKCQkJCQkJICAobGlzdCAobWFrZS10ZXJtIDIgMSkgKG1ha2UtdGVybSAwIDEpKSkp CgkJCQkgICAgKG1ha2UtdGVybSAwIDIpKSkpICJcbiIpCiAgICAKICAgICAgKHNob3cgI3QgIlRl c3QyMzppbnB1dDogbm9ybWFsaXppbmcgYSBiYWQgcG9seW5vbWlhbDogIgoJICAgIChtYWtlLXBv bHlub21pYWwgJ3kKCQkJICAgICAgIChsaXN0IChtYWtlLXRlcm0gMiAobWFrZS1wb2x5bm9taWFs CgkJCQkJCSAgICd4CgkJCQkJCSAgIChsaXN0IChtYWtlLXRlcm0gMiAxKSAobWFrZS10ZXJtIDAg MSkpKSkKCQkJCSAgICAgKG1ha2UtdGVybSAwIDIpKSkgIlxuIikKICAgICAgKHNob3cgI3QgIlRl c3QyMzpyZXN1bHQ6IG5vcm1hbGl6aW5nIGEgYmFkIHBvbHlub21pYWw6ICIKCSAgICAobm9ybWFs aXplLW9uY2UgKG1ha2UtcG9seW5vbWlhbCAneQoJCQkJCSAgICAgKGxpc3QgKG1ha2UtdGVybSAy IChtYWtlLXBvbHlub21pYWwKCQkJCQkJCQkgJ3gKCQkJCQkJICAgKGxpc3QgKG1ha2UtdGVybSAy IDEpIChtYWtlLXRlcm0gMCAxKSkpKQoJCQkJCQkgICAobWFrZS10ZXJtIDAgMikpKSkgIlxuIikK ICAgICAgKHNob3cgI3QgIlRlc3QyNDppbnB1dDogbm9ybWFsaXppbmcgYSBiYWQgcG9seW5vbWlh bDogIgoJICAgIChtYWtlLXBvbHlub21pYWwgJ3gKCQkJICAgICAgIChsaXN0IChtYWtlLXRlcm0g MiAobWFrZS1wb2x5bm9taWFsCgkJCQkJCSAgICd4CgkJCQkJCSAgIChsaXN0IChtYWtlLXRlcm0g MiAxKSAobWFrZS10ZXJtIDAgMSkpKSkKCQkJCSAgICAgKG1ha2UtdGVybSAwIDIpKSkgIlxuIikK ICAgICAgKHNob3cgI3QgIlRlc3QyNDpyZXN1bHQ6IG5vcm1hbGl6aW5nIGEgYmFkIHBvbHlub21p YWw6ICIKCSAgICAobm9ybWFsaXplLW9uY2UgKG1ha2UtcG9seW5vbWlhbCAneAoJCQkJCSAgICAg KGxpc3QgKG1ha2UtdGVybSAyIChtYWtlLXBvbHlub21pYWwKCQkJCQkJCQkgJ3gKCQkJCQkJICAg KGxpc3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0gMCAxKSkpKQoJCQkJCQkgICAobWFrZS10 ZXJtIDAgMikpKSkgIlxuIikKICAgIAogICAgCiAgICAgIChzaG93ICN0ICJUZXN0MjQ6aW5wdXQ6 IG5vcm1hbGl6ZS1mdWxseSBhIGJhZCBwb2x5bm9taWFsOiAiCgkgICAgKG1ha2UtcG9seW5vbWlh bCAneQoJCQkgICAgICAgKGxpc3QgKG1ha2UtdGVybSAyIChtYWtlLXBvbHlub21pYWwKCQkJCQkJ ICAgJ3gKCQkJCQkJICAgKGxpc3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0gMCAxKSkpKQoJ CQkJICAgICAobWFrZS10ZXJtIDAgMikpKSAiXG4iKQogICAgICAoc2hvdyAjdCAiVGVzdDI0OnJl c3VsdDogbm9ybWFsaXplLWZ1bGx5IGEgYmFkIHBvbHlub21pYWw6ICIKCSAgICAobm9ybWFsaXpl LWZ1bGx5IChtYWtlLXBvbHlub21pYWwgJ3kKCQkJCQkgICAgIChsaXN0IChtYWtlLXRlcm0gMiAo bWFrZS1wb2x5bm9taWFsCgkJCQkJCQkJICd4CgkJCQkJCSAgIChsaXN0IChtYWtlLXRlcm0gMiAx KSAobWFrZS10ZXJtIDAgMSkpKSkKCQkJCQkJICAgKG1ha2UtdGVybSAwIDIpKSkpICJcbiIpCiAg ICAKCiAgICAKICAgICAgJ2RvbmUpCgoKICAgIChkZWZpbmUgKGluc3RhbGwtcG9seW5vbWlhbC1z cGFyc2UtcGFja2FnZSkKICAgICAgKGRlZmluZSAoY29lZmYgdGVybSkgKGNhZHIgdGVybSkpCiAg ICAgIChkZWZpbmUgKGZpcnN0LXRlcm0tc3BhcnNlIHRlcm0tbGlzdCkgKGNhciB0ZXJtLWxpc3Qp KQogICAgICAoZGVmaW5lIChhZGpvaW4tdGVybS1zcGFyc2UgdGVybSB0ZXJtLWxpc3QpCgkoaWYg KHplcm8/IChjb2VmZiB0ZXJtKSkKCSAgICB0ZXJtLWxpc3QKCSAgICAoY29ucyB0ZXJtIHRlcm0t bGlzdCkpKQogICAgICAocHV0ICdhZGpvaW4tdGVybSAnc3BhcnNlIGFkam9pbi10ZXJtLXNwYXJz ZSkKICAgICAgKHB1dCAnZmlyc3QtdGVybSAnc3BhcnNlIGZpcnN0LXRlcm0tc3BhcnNlKQogICAg ICAnZG9uZSkKICAgIChpbnN0YWxsLXBvbHlub21pYWwtc3BhcnNlLXBhY2thZ2UpCgogICAgKGRl ZmluZSAoaW5zdGFsbC1wb2x5bm9taWFsLWRlbnNlLXBhY2thZ2UpCiAgICAgIChkZWZpbmUgKG1h a2UtdGVybSBvcmRlciBjb2VmZikgKGxpc3Qgb3JkZXIgY29lZmYpKQogICAgICAoZGVmaW5lIChv cmRlciB0ZXJtKSAoY2FyIHRlcm0pKQogICAgICAoZGVmaW5lIChjb2VmZiB0ZXJtKSAoY2FkciB0 ZXJtKSkKCiAgICAgIChkZWZpbmUgKGFkam9pbi10ZXJtLWRlbnNlIHRlcm0gdGVybS1saXN0KQoJ ICAoaWYgKHplcm8/IChjb2VmZiB0ZXJtKSkKCSAgICAgIHRlcm0tbGlzdAoJICAgICAgKGlmICg+ IChvcmRlciB0ZXJtKSAobGVuZ3RoIHRlcm0tbGlzdCkpCgkJICAoYXBwZW5kIChsaXN0IChjb2Vm ZiB0ZXJtKSkKCQkJICAobWFrZS1saXN0ICgtIChvcmRlciB0ZXJtKSAobGVuZ3RoIHRlcm0tbGlz dCkpIDApCgkJCSAgdGVybS1saXN0KQoJCSAgKGVycm9yICJhZGpvaW4tdGVybTpBcHBlbmRpbmcg YSBzbWFsbGVyIG9yZGVyIHRlcm0uIFJlY2hlY2suIikpKSkKICAgICAgKGRlZmluZSAoZmlyc3Qt dGVybS1kZW5zZSB0ZXJtLWxpc3QpIAoJICM7KHNob3cgI3QgImZpcnN0LXRlcm0tZGVuc2U6ICIg KGRpc3BsYXllZCAobWFrZS10ZXJtIChjYXIgdGVybS1saXN0KSAobGVuZ3RoIChjZHIgdGVybS1s aXN0KSkpKSAiXG4iKQoJIChtYWtlLXRlcm0gKGxlbmd0aCAoY2RyIHRlcm0tbGlzdCkpIChjYXIg dGVybS1saXN0KSApKQogICAgICAocHV0ICdhZGpvaW4tdGVybSAnZGVuc2UgYWRqb2luLXRlcm0t ZGVuc2UpCiAgICAgIChwdXQgJ2ZpcnN0LXRlcm0gJ2RlbnNlIGZpcnN0LXRlcm0tZGVuc2UpCiAg ICAgICdkb25lKQogICAgIzsoaW5zdGFsbC1wb2x5bm9taWFsLWRlbnNlLXBhY2thZ2UpCgogICAg KGRlZmluZSAobWFrZS1wb2x5bm9taWFsIHZhciB0ZXJtcykKICAgICAgKChnZXQgJ21ha2UgJ3Bv bHlub21pYWwpIHZhciB0ZXJtcykpCgogIChpbnN0YWxsLXBvbHlub21pYWwtcGFja2FnZSkKCgog ICAgIzsoc2hvdyAjdCAiVGVzdCAyOiBNYWtpbmcgcG9seW5vbWlhbHM6ICIgCgkgIChtYWtlLXBv bHlub21pYWwgJ3ggKGxpc3QgKGxpc3QgNSAxKSAobGlzdCA0IDIpKSkgIlxuIikKICAgICM7KHNo b3cgI3QgIlRlc3QgMzogWmVybz86ICIgCgkgICh6ZXJvPyAobWFrZS1wb2x5bm9taWFsICd4IChs aXN0IChsaXN0IDUgMSkgKGxpc3QgNCAyKSkpKSAiXG4iKQogICAgIzsoc2hvdyAjdCAiVGVzdCA0 OiBBZGRpbmcgcG9seW5vbWlhbHM6ICIKCSAgKGFkZCAobWFrZS1wb2x5bm9taWFsICd4ICcoKDUg MSkgKDQgMikgKDAgMSkpKQoJICAgICAgIChtYWtlLXBvbHlub21pYWwgJ3ggJygoNSAxKSkpKSAi XG4iKQogICAgIzsoc2hvdyAjdCAiVGVzdCA0OiBaZXJvPzogIiAoemVybz8gKG1ha2UtcG9seW5v bWlhbCAneCAnKCg1IDApICgzIDEpKSkpICJcbiIpCgogICAgIzsoc2hvdyAjdCAiVGVzdCA1OiBT dWJ0cmFjdGluZyBwb2x5bm9taWFsczogIgoJICAoc3ViIChtYWtlLXBvbHlub21pYWwgJ3ggJygo NSAxKSAoNCAyKSAoMCAxKSkpCgkgICAgICAgKG1ha2UtcG9seW5vbWlhbCAneCAnKCgwIDEpKSkp ICJcbiIpCgogICAgIzsoc2hvdyAjdCAiVGVzdCA2OiBNYWtpbmcgYSBkZW5zZSBwb2x5bm9taWFs OiAiIChtYWtlLXBvbHlub21pYWwgJ3ggJygxIDIgMyA0IDUpKSAiXG4iKQogICAgIzsoc2hvdyAj dCAiVGVzdCA3OiB6ZXJvPyBkZW5zZSBwb2x5bm9taWFsOiAiIChkaXNwbGF5ZWQgKHplcm8/ICht YWtlLXBvbHlub21pYWwgJ3ggJygwKSkpKSAiXG4iKQogICAgIzsoc2hvdyAjdCAiVGVzdCA4OiB6 ZXJvPyBkZW5zZSBwb2x5bm9taWFsOiAiIChkaXNwbGF5ZWQgKHplcm8/IChtYWtlLXBvbHlub21p YWwgJ3ggJygxKSkpKSAiXG4iKQogICAgIzsoc2hvdyAjdCAiVGVzdCA5OiBBZGRpbmcgZGVuc2Ug cG9seW5vbWlhbHM6ICIKCSAgKGFkZCAobWFrZS1wb2x5bm9taWFsICd4ICcoMSAyIDAgMCAwIDEp KQoJICAgICAgIChtYWtlLXBvbHlub21pYWwgJ3ggJygxIDAgMCAwIDAgMCkpKSAiXG4iKQogICAg Izsoc2hvdyAjdCAiVGVzdDEwOiBTdWJ0cmFjdGluZyBkZW5zZSBwb2x5bm9taWFsczogIgoJICAo c3ViIChtYWtlLXBvbHlub21pYWwgJ3ggJygxIDIgMCAwIDAgMSkpCgkgICAgICAgKG1ha2UtcG9s eW5vbWlhbCAneCAnKDEgMCAwIDAgMCAwKSkpICJcbiIpCiAgICAjOyhzaG93ICN0ICJUZXN0MTE6 IFN1YnRyYWN0aW5nIGRlbnNlIGFuZCBzcGFyc2UgcG9seW5vbWlhbHM6ICIKCSAgKHN1YiAobWFr ZS1wb2x5bm9taWFsICd4ICcoMSAyIDAgMCAwIDEpKQoJICAgICAgIChtYWtlLXBvbHlub21pYWwg J3ggJygoNCAyKSkpKSAiXG4iKQogICAgIzsoc2hvdyAjdCAiVGVzdDEyOiBEaXZpZGluZyB4XjIg KyAyeCArIDEgYnkgeCsxOiAiCgkgIChkaXNwbGF5ZWQKCSAgIChkaXYgKG1ha2UtcG9seW5vbWlh bCAneCAnKCgyIDEpICgxIDIpICgwIDEpKSkKCQkobWFrZS1wb2x5bm9taWFsICd4ICcoICAgICAg KDEgMSkgKDAgMSkpKSkgKSAiXG4iKQogICAgIzsoc2hvdyAjdCAiVGVzdDE0OiBBZGRpbmcgcG9s eW5vbWlhbHMgb2YgdHdvIHZhcmlhYmxlczogIgoJICAoZGlzcGxheWVkCgkgICAoYWRkIChtYWtl LXBvbHlub21pYWwgJ3ggJygoMSAxKSkpCgkJKG1ha2UtcG9seW5vbWlhbCAneSAnKCgxIDEpKSkp KSkKICAgICM7KHNob3cgI3QgIlRlc3QxNDogQWRkaW5nIHBvbHlub21pYWxzIG9mIHR3byB2YXJp YWJsZXMsIHdoZW4gb25lIG9mIHRoZW0gaXMgbm9uZXhpc3RhbnQ6ICIKCSAgKGRpc3BsYXllZAoJ ICAgKGFkZCAobWFrZS1wb2x5bm9taWFsICd4ICcoKDEgMSkpKQoJCShtYWtlLXBvbHlub21pYWwg J3kgJygoMCAxKSkpKSkpCiAgKHNob3cgI3QgIlRlc3QyNTogbXVsdGlwbHlpbmcgZGlmZmVyZW50 IHZhcmlhYmxlczogIgoJKGRpc3BsYXllZCAobXVsIChtYWtlLXBvbHlub21pYWwgJ3ggJygoMSAx KSkpCgkJCShtYWtlLXBvbHlub21pYWwgJ3kgJygoMSAxKSkpKSkgIlxuIikKCgojK2VuZF9zcmMK CiMrUkVTVUxUUzoKIytiZWdpbl9leGFtcGxlClRlc3Q6IEhpZ2hlciB0aGFuICdpbnRlZ2VyOiBy YXRpb25hbApUZXN0IDE6IFN1YnRyYWN0aW5nIGNvbXBsZXggbnVtYmVyczogKHJhdGlvbmFsIDI0 NzY5Nzk3OTUwNTM3NzMgLiAyMjUxNzk5ODEzNjg1MjQ4KQpUZXN0WTI6IHBvbHkgb2YgcG9seTog KHggKDMgKHkgKDEgMSkgKDAgMSkpKSAoMSAyKSAoMCA0KSkKVGVzdDEzOiBFeHBhbmRpbmcgYSBw b2x5bm9taWFsIGFzIG1vbm9taWFsczogKHBvbHlub21pYWwgeCAoMiAocG9seW5vbWlhbCB5ICgy IDEpKSkgKDAgKHBvbHlub21pYWwgeSAoMiAxKSAoMCAyKSkpKQoKVGVzdDIwOiBzdGFydCBtb25v bWlhbDogKHBvbHlub21pYWwgeCAoMiAocG9seW5vbWlhbCB5ICgyIDEpICgwIDEpKSkpClRlc3Qy MDogRmxpcHBpbmcgYSBtb25vbWlhbCB2YXJpYWJsZTogKHBvbHlub21pYWwgeSAoMiAocG9seW5v bWlhbCB4ICgxIDEpKSkgKDAgKHBvbHlub21pYWwgeCAoMSAxKSkpKQoKVGVzdDIxOiBub3JtYWwt cG9seW5vbWlhbD86c3RhcnQ6IChwb2x5bm9taWFsIHkgKDIgKHBvbHlub21pYWwgeCAoMiAxKSAo MCAxKSkpICgwIDIpKQpUZXN0MjE6IG5vcm1hbC1wb2x5bm9taWFsPzpyZXN1bHQ6I2YKVGVzdDIy OiBub3JtYWwtcG9seW5vbWlhbD8tZ29vZDpzdGFydDogKHBvbHlub21pYWwgeCAoMiAocG9seW5v bWlhbCB5ICgyIDEpICgwIDEpKSkgKDAgMikpClRlc3QyMjogbm9ybWFsLXBvbHlub21pYWw/LWdv b2Q6cmVzdWx0OiN0ClRlc3QyMzppbnB1dDogbm9ybWFsaXppbmcgYSBiYWQgcG9seW5vbWlhbDog KHBvbHlub21pYWwgeSAoMiAocG9seW5vbWlhbCB4ICgyIDEpICgwIDEpKSkgKDAgMikpClRlc3Qy MzpyZXN1bHQ6IG5vcm1hbGl6aW5nIGEgYmFkIHBvbHlub21pYWw6IChwb2x5bm9taWFsIHggKDIg KHBvbHlub21pYWwgeSAoMiAxKSkpICgwIChwb2x5bm9taWFsIHkgKDIgMSkgKDAgMikpKSkKVGVz dDI0OmlucHV0OiBub3JtYWxpemluZyBhIGJhZCBwb2x5bm9taWFsOiAocG9seW5vbWlhbCB4ICgy IChwb2x5bm9taWFsIHggKDIgMSkgKDAgMSkpKSAoMCAyKSkKVGVzdDI0OnJlc3VsdDogbm9ybWFs aXppbmcgYSBiYWQgcG9seW5vbWlhbDogKHBvbHlub21pYWwgeCAoNCAxKSAoMiAxKSAoMCAyKSkK VGVzdDI0OmlucHV0OiBub3JtYWxpemUtZnVsbHkgYSBiYWQgcG9seW5vbWlhbDogKHBvbHlub21p YWwgeSAoMiAocG9seW5vbWlhbCB4ICgyIDEpICgwIDEpKSkgKDAgMikpClRlc3QyNDpyZXN1bHQ6 IG5vcm1hbGl6ZS1mdWxseSBhIGJhZCBwb2x5bm9taWFsOiAocG9seW5vbWlhbCB4ICgyIChwb2x5 bm9taWFsIHkgKDIgMSkpKSAoMCAocG9seW5vbWlhbCB5ICgyIDEpICgwIDIpKSkpClRlc3QyNTog bXVsdGlwbHlpbmcgZGlmZmVyZW50IHZhcmlhYmxlczogKHBvbHlub21pYWwgeCAoMSAocG9seW5v bWlhbCB5ICgxIDEpKSkpCiMrZW5kX2V4YW1wbGUKCioqKiBET05FIEV4ZXJjaXNlIDIuOTMgUmF0 aW9uYWwgcG9seW5vbWlhbHMKICAgIENMT1NFRDogWzIwMTktMTAtMjcgU3VuIDIyOjM2XQoKSSBk byBub3QgaGF2ZSBhbnkgb3RoZXIgY2hvaWNlIHJhdGhlciB0aGFuIGNvcHkgZXZlcnl0aGluZyBh Z2Fpbi4gIAoKVGhpcyB0dXJuZWQgb3V0IHRvIGJlIHF1aXRlIGFuIGVhc3kgZXhlcmNpc2UuIFRo ZSBhcmNoaXRlY3R1cmFsIGRlY2lzaW9uIHdhcwp0byBzdG9wIHVzaW5nIHJhdGlvbmFsIG51bWJl cnMgZW50aXJlbHkgYW5kIHJlbW92ZSB0aGVtIGZyb20gdGhlIG51bWVyaWMKdG93ZXIuIEluIHBy aW5jaXBsZSwgcmF0aW9uYWxzIGNhbiBiZSBhZGRlZCBhcyBhIHN1cGVyLXR5cGUgb2YgcG9seW5v bWlhbHMsCmJ1dCBzbyBmYXIgdGhpcyBoYXMgbm90IGJlZW4gcmVxdWVzdGVkLiAKCk5vdGUgdGhh dCB0aGUgbm9ybWFsaXphdGlvbiBhbGdvcml0aG0gZGV2ZWxvcGVkIGluIHRoZSBFeGVyY2lzZSAy LjkyIGlzIHN0aWxsCmhvb2tlZCBpbnRvIHRoZSBzeXN0ZW0sIGV2ZW4gdGhvdWdoIGl0IHdvdWxk IG9ubHkgYmUgdXNlZCBmb3IgdGhlIGNhc2Ugd2hlbgp0aGUgImlubmVyIiBhbmQgIm91dGVyIiBw b2x5bm9taWFscyBhcmUgb2YgdGhlIHNhbWUgdmFyaWFibGUuCgojK2JlZ2luX3NyYyBzY2hlbWUg OmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKICAgIChkZWZpbmUgKHRoaW5neS1zb3VyY2Ug dGhpbmd5KQogICAgICAoY29uZCAoKGxhbWJkYT8gdGhpbmd5KSAobGlzdCAibGFtYmRhIiAobGFt YmRhLXNvdXJjZSB0aGluZ3kpKSkKCSAgICAoKHByb2NlZHVyZT8gdGhpbmd5KSAobGlzdCAicHJv Y2VkdXJlIiAocHJvY2VkdXJlLW5hbWUgdGhpbmd5KSkpCgkgICAgKChwYWlyPyB0aGluZ3kpIChs aXN0ICJwYWlyIiAocGFpci1zb3VyY2UgdGhpbmd5KSkpCgkgICAgKGVsc2UgIk5vIHNvdXJjZT8g cmVmYWN0b3IiKSkpCgogICAgICAoZGVmaW5lIChhY2N1bXVsYXRlIG9wIGluaXRpYWwgc2VxdWVu Y2UpCgkoaWYgKG51bGw/IHNlcXVlbmNlKQoJICAgIGluaXRpYWwKCSAgICAoYWNjdW11bGF0ZSBv cCAob3AgaW5pdGlhbCAoY2FyIHNlcXVlbmNlKSkgKGNkciBzZXF1ZW5jZSkpKSkKICAgICAgKGRl ZmluZSBmYWxzZSAjZikKICAgICAgKGRlZmluZSB0cnVlICAjdCkKICAgICAgKGRlZmluZSAobWFr ZS10YWJsZSkKCShsZXQgKChsb2NhbC10YWJsZSAobGlzdCAnKnRhYmxlKikpKQoJICAoZGVmaW5l IChsb29rdXAga2V5LTEga2V5LTIpCgkgICAgKGxldCAoKHN1YnRhYmxlIChhc3NvYyBrZXktMSAo Y2RyIGxvY2FsLXRhYmxlKSkpKQoJICAgICAgKGlmIHN1YnRhYmxlCgkJICAobGV0ICgocmVjb3Jk IChhc3NvYyBrZXktMiAoY2RyIHN1YnRhYmxlKSkpKQoJCSAgICAoaWYgcmVjb3JkCgkJCShjZHIg cmVjb3JkKQoJCQlmYWxzZSkpCgkJICBmYWxzZSkpKQoJICAoZGVmaW5lIChpbnNlcnQhIGtleS0x IGtleS0yIHZhbHVlKQoJICAgIChsZXQgKChzdWJ0YWJsZSAoYXNzb2Mga2V5LTEgKGNkciBsb2Nh bC10YWJsZSkpKSkKCSAgICAgIChpZiBzdWJ0YWJsZQoJCSAgKGxldCAoKHJlY29yZCAoYXNzb2Mg a2V5LTIgKGNkciBzdWJ0YWJsZSkpKSkKCQkgICAgKGlmIHJlY29yZAoJCQkoc2V0LWNkciEgcmVj b3JkIHZhbHVlKQoJCQkoc2V0LWNkciEgc3VidGFibGUKCQkJCSAgKGNvbnMgKGNvbnMga2V5LTIg dmFsdWUpCgkJCQkJKGNkciBzdWJ0YWJsZSkpKSkpCgkJICAoc2V0LWNkciEgbG9jYWwtdGFibGUK CQkJICAgIChjb25zIChsaXN0IGtleS0xCgkJCQkJKGNvbnMga2V5LTIgdmFsdWUpKQoJCQkJICAo Y2RyIGxvY2FsLXRhYmxlKSkpKSkKCSAgICAnb2spCgkgIChkZWZpbmUgKGRpc3BhdGNoIG0pCgkg ICAgKGNvbmQgKChlcT8gbSAnbG9va3VwLXByb2MpIGxvb2t1cCkKCQkgICgoZXE/IG0gJ2luc2Vy dC1wcm9jISkgaW5zZXJ0ISkKCQkgIChlbHNlIChlcnJvciAiVW5rbm93biBvcGVyYXRpb24gLS0g VEFCTEUiIG0pKSkpCgkgIGRpc3BhdGNoKSkKCiAgICAgIChkZWZpbmUgb3BlcmF0aW9uLXRhYmxl IChtYWtlLXRhYmxlKSkKICAgICAgKGRlZmluZSBnZXQgKG9wZXJhdGlvbi10YWJsZSAnbG9va3Vw LXByb2MpKQogICAgICAoZGVmaW5lIHB1dCAob3BlcmF0aW9uLXRhYmxlICdpbnNlcnQtcHJvYyEp KQoKICAgICAgKGRlZmluZSBjb2VyY2lvbi10YWJsZSAobWFrZS10YWJsZSkpCiAgICAgIChkZWZp bmUgZ2V0LWNvZXJjaW9uIChjb2VyY2lvbi10YWJsZSAnbG9va3VwLXByb2MpKQogICAgICAoZGVm aW5lIHB1dC1jb2VyY2lvbiAoY29lcmNpb24tdGFibGUgJ2luc2VydC1wcm9jISkpCgogICAgICAo ZGVmaW5lIChhdHRhY2gtdGFnIHR5cGUtdGFnIGNvbnRlbnRzKQoJKGNvbnMgdHlwZS10YWcgY29u dGVudHMpKQoKICAgICAgKGRlZmluZSAodHlwZS10YWcgZGF0dW0pCgkoY29uZCAoKHBhaXI/IGRh dHVtKSAoY2FyIGRhdHVtKSkKCSAgICAgICgoZXhhY3QtaW50ZWdlcj8gZGF0dW0pICdpbnRlZ2Vy KQoJICAgICAgKChyZWFsPyBkYXR1bSkgJ3NjaGVtZS1udW1iZXIpCgkgICAgICAoZXJyb3IgIkJh ZCB0YWdnZWQgZGF0dW0gLS0gVFlQRS1UQUciIGRhdHVtKSkpCgogICAgKGRlZmluZSAoY29udGVu dHMgZGF0dW0pCgkoY29uZCAoKHBhaXI/IGRhdHVtKSAoY2RyIGRhdHVtKSkKCSAgICAgICgoaW50 ZWdlcj8gZGF0dW0pIGRhdHVtKQoJICAgICAgKChyZWFsPyBkYXR1bSkgZGF0dW0pCgkgICAgICAo ZWxzZSAoZXJyb3IgIkJhZCB0YWdnZWQgZGF0dW0gLS0gQ09OVEVOVFMiIGRhdHVtKSkpKQoKICAg ICAgKGRlZmluZSAoaW50ZWdlcj8geCkKCShlcT8gKHR5cGUtdGFnIHgpICdpbnRlZ2VyKSkKICAg ICAgKGRlZmluZSAocmVjdGFuZ3VsYXI/IHopCgkoZXE/ICh0eXBlLXRhZyB6KSAncmVjdGFuZ3Vs YXIpKQoKICAgICAgKGRlZmluZSAocG9sYXI/IHopCgkoZXE/ICh0eXBlLXRhZyB6KSAncG9sYXIp KQoKCiAgICAgIChkZWZpbmUgKHJlYWwtcGFydCB6KSAoYXBwbHktZ2VuZXJpYyAncmVhbC1wYXJ0 IHopKQogICAgICAoZGVmaW5lIChpbWFnLXBhcnQgeikgKGFwcGx5LWdlbmVyaWMgJ2ltYWctcGFy dCB6KSkKICAgICAgKGRlZmluZSAobWFnbml0dWRlIHopIChhcHBseS1nZW5lcmljICdtYWduaXR1 ZGUgeikpCiAgICAgIChkZWZpbmUgKGFuZ2xlIHopIChhcHBseS1nZW5lcmljICdhbmdsZSB6KSkK CiAgICAgIChkZWZpbmUgKGFkZCB4IHkpIChhcHBseS1nZW5lcmljICdhZGQgeCB5KSkKICAgICAg KGRlZmluZSAoc3ViIHggeSkgKGFwcGx5LWdlbmVyaWMgJ3N1YiB4IHkpKQogICAgICAoZGVmaW5l IChtdWwgeCB5KSAoYXBwbHktZ2VuZXJpYyAnbXVsIHggeSkpCiAgICAgIChkZWZpbmUgKGRpdiB4 IHkpIChhcHBseS1nZW5lcmljICdkaXYgeCB5KSkKCiAgICAgIChkZWZpbmUgKGVxdT8geCB5KQoJ KGFwcGx5LWdlbmVyaWMgJ2VxdT8geCB5KSkKICAgICAgKGRlZmluZSAoemVybz8geCkgKGFwcGx5 LWdlbmVyaWMgJ3plcm8/IHgpKQoKICAgICAgKGRlZmluZSAoZXhwIHggeSkgKGFwcGx5LWdlbmVy aWMgJ2V4cCB4IHkpKQoKICAgICAgKGRlZmluZSAoaW5zdGFsbC1zY2hlbWUtbnVtYmVyLXBhY2th Z2UpCgkoZGVmaW5lICh0YWcgeCkKCSAgKGF0dGFjaC10YWcgJ3NjaGVtZS1udW1iZXIgeCkpCgko cHV0ICdhZGQgJyhzY2hlbWUtbnVtYmVyIHNjaGVtZS1udW1iZXIpCgkgICAgIChsYW1iZGEgKHgg eSkgKHRhZyAoKyB4IHkpKSkpCgkocHV0ICdzdWIgJyhzY2hlbWUtbnVtYmVyIHNjaGVtZS1udW1i ZXIpCgkgICAgIChsYW1iZGEgKHggeSkgKHRhZyAoLSB4IHkpKSkpCgkocHV0ICdtdWwgJyhzY2hl bWUtbnVtYmVyIHNjaGVtZS1udW1iZXIpCgkgICAgIChsYW1iZGEgKHggeSkgKHRhZyAoKiB4IHkp KSkpCgkocHV0ICdkaXYgJyhzY2hlbWUtbnVtYmVyIHNjaGVtZS1udW1iZXIpCgkgICAgIChsYW1i ZGEgKHggeSkgKHRhZyAoLyB4IHkpKSkpCgkocHV0ICdtYWtlICdzY2hlbWUtbnVtYmVyCgkgICAg IChsYW1iZGEgKHgpICh0YWcgeCkpKQoJKHB1dCAnZXF1PyAnKHNjaGVtZS1udW1iZXIgc2NoZW1l LW51bWJlcikKCSAgICAgKGxhbWJkYSAoeCB5KSAoPSB4IHkpKSkKCShwdXQgJ3plcm8/ICcoc2No ZW1lLW51bWJlcikKCSAgICAgKGxhbWJkYSAoeCkgKD0gMCB4KSkpCgkocHV0ICdleHAgJyhzY2hl bWUtbnVtYmVyIHNjaGVtZS1udW1iZXIpCgkgICAgIChsYW1iZGEgKHggeSkgKHRhZyAoZXhwdCB4 IHkpKSkpCgkocHV0ICdwcm9qZWN0ICcoc2NoZW1lLW51bWJlcikKCSAgICAgKGxhbWJkYSAoeCkK CSAgICAgICAoZXhhY3QgKHRydW5jYXRlIHgpKSkpCgkocHV0ICdzaW5lICcoc2NoZW1lLW51bWJl cikgc2luKQoJKHB1dCAnY29zaW5lICcoc2NoZW1lLW51bWJlcikgY29zKQoJKHB1dCAnc3F1YXJl LXJvb3QgJyhzY2hlbWUtbnVtYmVyKSBzcXJ0KQoJKHB1dCAnYXJjdGFuZ2VudCAnKHNjaGVtZXIt bnVtYmVyKSBhdGFuKQoJJ2RvbmUpCgogICAgICAoZGVmaW5lIChzaW5lIHgpIChhcHBseS1nZW5l cmljICdzaW5lIHgpKQogICAgICAoZGVmaW5lIChjb3NpbmUgeCkgKGFwcGx5LWdlbmVyaWMgJ2Nv c2luZSB4KSkKICAgICAgKGRlZmluZSAoc3F1YXJlLXJvb3QgeCkgKGFwcGx5LWdlbmVyaWMgJ3Nx dWFyZS1yb290IHgpKQogICAgICAoZGVmaW5lIChhcmN0YW5nZW50IHgpIChhcHBseS1nZW5lcmlj ICdhcmN0YW5nZW50IHgpKQoKICAgICAgKGRlZmluZSAobWFrZS1zY2hlbWUtbnVtYmVyIG4pCgko KGdldCAnbWFrZSAnc2NoZW1lLW51bWJlcikgbikpCgogICAgICAoZGVmaW5lIChpbnN0YWxsLXJh dGlvbmFsLXBhY2thZ2UpCgkoZGVmaW5lIChudW1lciB4KSAoY2FyIHgpKQoJKGRlZmluZSAoZGVu b20geCkgKGNkciB4KSkKCShkZWZpbmUgKG1ha2UtcmF0IG4gZCkKCSAgIzsobGV0ICgoZyAoZ2Nk IG4gZCkpKQoJICAgIChjb25zICgvIG4gZykgKC8gZCBnKSkpCgkgICAgKGNvbnMgbiBkKSkKCShk ZWZpbmUgKGFkZC1yYXQgeCB5KQoJICAobWFrZS1yYXQgKGFkZCAobXVsIChudW1lciB4KSAoZGVu b20geSkpCgkJICAgICAgIChtdWwgKG51bWVyIHkpIChkZW5vbSB4KSkpCgkJICAgIChtdWwgKGRl bm9tIHgpIChkZW5vbSB5KSkpKQoJKGRlZmluZSAoc3ViLXJhdCB4IHkpCgkgIChtYWtlLXJhdCAo c3ViIChtdWwgKG51bWVyIHgpIChkZW5vbSB5KSkKCQkgICAgICAgKG11bCAobnVtZXIgeSkgKGRl bm9tIHgpKSkKCQkgICAgKG11bCAoZGVub20geCkgKGRlbm9tIHkpKSkpCgkoZGVmaW5lIChtdWwt cmF0IHggeSkKCSAgKG1ha2UtcmF0IChtdWwgKG51bWVyIHgpIChudW1lciB5KSkKCQkgICAgKG11 bCAoZGVub20geCkgKGRlbm9tIHkpKSkpCgkoZGVmaW5lIChkaXYtcmF0IHggeSkKCSAgKG1ha2Ut cmF0IChtdWwgKG51bWVyIHgpIChkZW5vbSB5KSkKCQkgICAgKG11bCAoZGVub20geCkgKG51bWVy IHkpKSkpCgoJKGRlZmluZSAodGFnIHgpIChhdHRhY2gtdGFnICdyYXRpb25hbCB4KSkKCShwdXQg J2FkZCAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJICAgICAobGFtYmRhICh4IHkpICh0YWcgKGFkZC1y YXQgeCB5KSkpKQoJKHB1dCAnc3ViICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgICAgIChsYW1iZGEg KHggeSkgKHRhZyAoc3ViLXJhdCB4IHkpKSkpCgkocHV0ICdtdWwgJyhyYXRpb25hbCByYXRpb25h bCkKCSAgICAgKGxhbWJkYSAoeCB5KSAodGFnIChtdWwtcmF0IHggeSkpKSkKCShwdXQgJ2RpdiAn KHJhdGlvbmFsIHJhdGlvbmFsKQoJICAgICAobGFtYmRhICh4IHkpICh0YWcgKGRpdi1yYXQgeCB5 KSkpKQoKCShwdXQgJ21ha2UgJ3JhdGlvbmFsCgkgICAgIChsYW1iZGEgKG4gZCkgKHRhZyAobWFr ZS1yYXQgbiBkKSkpKQoJKHB1dCAnZXF1PyAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJICAgICAobGFt YmRhICh4IHkpICh6ZXJvPyAobnVtZXIgKHN1Yi1yYXQgeCB5KSkpKSkKCShwdXQgJ3plcm8/ICco cmF0aW9uYWwpIChsYW1iZGEgKHgpICh6ZXJvPyAobnVtZXIgeCkpKSkKCSM7KHB1dCAncHJvamVj dCAnKHJhdGlvbmFsKSAobGFtYmRhICh4KSAKCQkJCSAgICAoZXhhY3QgKHRydW5jYXRlICgvIChu dW1lciB4KSAoZGVub20geCkpKSkpKQoJIzsocHV0ICd0by1yZWFsICcocmF0aW9uYWwpIChsYW1i ZGEgKHgpICgvIChudW1lciAoY29udGVudHMgeCkpIChkZW5vbSAoY29udGVudHMgeCkpKSkpCgkn ZG9uZSkKCiAgICAgIChkZWZpbmUgKG1ha2UtcmF0aW9uYWwgbiBkKQoJKChnZXQgJ21ha2UgJ3Jh dGlvbmFsKSBuIGQpKQoKICAgICAgKGRlZmluZSAoaW5zdGFsbC1yZWN0YW5ndWxhci1wYWNrYWdl KQoKCShkZWZpbmUgKHJlYWwtcGFydCB6KSAoY2FyIHopKQoJKGRlZmluZSAoaW1hZy1wYXJ0IHop IChjZHIgeikpCgkoZGVmaW5lIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkgKGNvbnMgeCB5KSkK CShkZWZpbmUgKG1hZ25pdHVkZSB6KQoJICAoc3F1YXJlLXJvb3QgKGFkZCAoc3F1YXJlIChyZWFs LXBhcnQgeikpCgkJCSAgICAoc3F1YXJlIChpbWFnLXBhcnQgeikpKSkpCgkoZGVmaW5lIChhbmds ZSB6KQoJICAoYXJjdGFuZ2VudCAoaW1hZy1wYXJ0IHopIChyZWFsLXBhcnQgeikpKQoJKGRlZmlu ZSAobWFrZS1mcm9tLW1hZy1hbmcgciBhKQoJICAoY29ucyAobXVsIHIgKGNvc2luZSBhKSkgKG11 bCByIChzaW5lIGEpKSkpCgoJKGRlZmluZSAodGFnIHgpIChhdHRhY2gtdGFnICdyZWN0YW5ndWxh ciB4KSkKCShwdXQgJ3JlYWwtcGFydCAnKHJlY3Rhbmd1bGFyKSByZWFsLXBhcnQpCgkocHV0ICdp bWFnLXBhcnQgJyhyZWN0YW5ndWxhcikgaW1hZy1wYXJ0KQoJKHB1dCAnbWFnbml0dWRlICcocmVj dGFuZ3VsYXIpIG1hZ25pdHVkZSkKCShwdXQgJ2FuZ2xlICcocmVjdGFuZ3VsYXIpIGFuZ2xlKQoJ KHB1dCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAncmVjdGFuZ3VsYXIKCSAgICAgKGxhbWJkYSAoeCB5 KSAodGFnIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkpKSkKCShwdXQgJ21ha2UtZnJvbS1tYWct YW5nICdyZWN0YW5ndWxhcgoJICAgICAobGFtYmRhIChyIGEpICh0YWcgKG1ha2UtZnJvbS1tYWct YW5nIHIgYSkpKSkKCSdkb25lKQoKICAgICAgKGRlZmluZSAoaW5zdGFsbC1wb2xhci1wYWNrYWdl KQoKCShkZWZpbmUgKG1hZ25pdHVkZSB6KSAoY2FyIHopKQoJKGRlZmluZSAoYW5nbGUgeikgKGNk ciB6KSkKCShkZWZpbmUgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkgKGNvbnMgciBhKSkKCShkZWZp bmUgKHJlYWwtcGFydCB6KQoJICAobXVsIChtYWduaXR1ZGUgeikgKGNvc2luZSAoYW5nbGUgeikp KSkKCShkZWZpbmUgKGltYWctcGFydCB6KQoJICAobXVsIChtYWduaXR1ZGUgeikgKHNpbmUgKGFu Z2xlIHopKSkpCgkoZGVmaW5lIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkKCSAgKGNvbnMgKHNx dWFyZS1yb290IChhZGQgKHNxdWFyZSB4KSAoc3F1YXJlIHkpKSkKCQkoYXJjdGFuZ2VudCB5IHgp KSkKCgkoZGVmaW5lICh0YWcgeCkgKGF0dGFjaC10YWcgJ3BvbGFyIHgpKQoJKHB1dCAncmVhbC1w YXJ0ICcocG9sYXIpIHJlYWwtcGFydCkKCShwdXQgJ2ltYWctcGFydCAnKHBvbGFyKSBpbWFnLXBh cnQpCgkocHV0ICdtYWduaXR1ZGUgJyhwb2xhcikgbWFnbml0dWRlKQoJKHB1dCAnYW5nbGUgJyhw b2xhcikgYW5nbGUpCgkocHV0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdwb2xhcgoJICAgICAobGFt YmRhICh4IHkpICh0YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSkpKQoJKHB1dCAnbWFrZS1m cm9tLW1hZy1hbmcgJ3BvbGFyCgkgICAgIChsYW1iZGEgKHIgYSkgKHRhZyAobWFrZS1mcm9tLW1h Zy1hbmcgciBhKSkpKQoJJ2RvbmUpCgogICAgICAoZGVmaW5lIChpbnN0YWxsLWNvbXBsZXgtcGFj a2FnZSkKCShkZWZpbmUgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KQoJICAoKGdldCAnbWFrZS1m cm9tLXJlYWwtaW1hZyAncmVjdGFuZ3VsYXIpIHggeSkpCgkoZGVmaW5lIChtYWtlLWZyb20tbWFn LWFuZyByIGEpCgkgICgoZ2V0ICdtYWtlLWZyb20tbWFnLWFuZyAncG9sYXIpIHIgYSkpCgkoZGVm aW5lIChhZGQtY29tcGxleCB6MSB6MikKCSAgKG1ha2UtZnJvbS1yZWFsLWltYWcgKGFkZCAocmVh bC1wYXJ0IHoxKSAocmVhbC1wYXJ0IHoyKSkKCQkJICAgICAgIChhZGQgKGltYWctcGFydCB6MSkg KGltYWctcGFydCB6MikpKSkKCShkZWZpbmUgKHN1Yi1jb21wbGV4IHoxIHoyKQoJICAobWFrZS1m cm9tLXJlYWwtaW1hZyAoc3ViIChyZWFsLXBhcnQgejEpIChyZWFsLXBhcnQgejIpKQoJCQkgICAg ICAgKHN1YiAoaW1hZy1wYXJ0IHoxKSAoaW1hZy1wYXJ0IHoyKSkpKQoJKGRlZmluZSAobXVsLWNv bXBsZXggejEgejIpCgkgIChtYWtlLWZyb20tbWFnLWFuZyAobXVsIChtYWduaXR1ZGUgejEpICht YWduaXR1ZGUgejIpKQoJCQkgICAgIChhZGQgKGFuZ2xlIHoxKSAoYW5nbGUgejIpKSkpCgkoZGVm aW5lIChkaXYtY29tcGxleCB6MSB6MikKCSAgKG1ha2UtZnJvbS1tYWctYW5nIChkaXYgKG1hZ25p dHVkZSB6MSkgKG1hZ25pdHVkZSB6MikpCgkJCSAgICAgKHN1YiAoYW5nbGUgejEpIChhbmdsZSB6 MikpKSkKCShkZWZpbmUgKHRhZyB6KSAoYXR0YWNoLXRhZyAnY29tcGxleCB6KSkKCShwdXQgJ2Fk ZCAnKGNvbXBsZXggY29tcGxleCkKCSAgICAgKGxhbWJkYSAoejEgejIpICh0YWcgKGFkZC1jb21w bGV4IHoxIHoyKSkpKQoJKHB1dCAnc3ViICcoY29tcGxleCBjb21wbGV4KQoJICAgICAobGFtYmRh ICh6MSB6MikgKHRhZyAoc3ViLWNvbXBsZXggejEgejIpKSkpCgkocHV0ICdtdWwgJyhjb21wbGV4 IGNvbXBsZXgpCgkgICAgIChsYW1iZGEgKHoxIHoyKSAodGFnIChtdWwtY29tcGxleCB6MSB6Mikp KSkKCShwdXQgJ2RpdiAnKGNvbXBsZXggY29tcGxleCkKCSAgICAgKGxhbWJkYSAoejEgejIpICh0 YWcgKGRpdi1jb21wbGV4IHoxIHoyKSkpKQoJKHB1dCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAnY29t cGxleAoJICAgICAobGFtYmRhICh4IHkpICh0YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSkp KQoJKHB1dCAnbWFrZS1mcm9tLW1hZy1hbmcgJ2NvbXBsZXgKCSAgICAgKGxhbWJkYSAociBhKSAo dGFnIChtYWtlLWZyb20tbWFnLWFuZyByIGEpKSkpCgkocHV0ICdlcXU/ICcoY29tcGxleCBjb21w bGV4KQoJICAgICAobGFtYmRhICh4IHkpIChhbmQgKD0gMCAocmVhbC1wYXJ0IChzdWItY29tcGxl eCB4IHkpKSkKCQkJCSg9IDAgKGltYWctcGFydCAoc3ViLWNvbXBsZXggeCB5KSkpKSkpCgkocHV0 ICdlcXU/ICcocmVjdGFuZ3VsYXIgcG9sYXIpIGVxdT8pCgkocHV0ICdlcXU/ICcocG9sYXIgcmVj dGFuZ3VsYXIpIGVxdT8pCgkocHV0ICd6ZXJvPyAnKGNvbXBsZXgpCgkgICAgIChsYW1iZGEgKHgp IChlcXU/ICh0YWcgeCkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyAwIDApKSkpKQoJKHB1dCAn cHJvamVjdCAnKGNvbXBsZXgpIChsYW1iZGEgKHopIChyZWFsLXBhcnQgeikpKQoJJ2RvbmUpCgog ICAgICAoZGVmaW5lIChtYWtlLWNvbXBsZXgtZnJvbS1yZWFsLWltYWcgeCB5KQoJKChnZXQgJ21h a2UtZnJvbS1yZWFsLWltYWcgJ2NvbXBsZXgpIHggeSkpCgogICAgICAoZGVmaW5lIChtYWtlLWNv bXBsZXgtZnJvbS1tYWctYW5nIHIgYSkKCSgoZ2V0ICdtYWtlLWZyb20tbWFnLWFuZyAnY29tcGxl eCkgciBhKSkKCiAgICAgIChpbnN0YWxsLXJlY3Rhbmd1bGFyLXBhY2thZ2UpCiAgICAgIChpbnN0 YWxsLXBvbGFyLXBhY2thZ2UpCiAgICAgIChpbnN0YWxsLXJhdGlvbmFsLXBhY2thZ2UpCiAgICAg IChpbnN0YWxsLXNjaGVtZS1udW1iZXItcGFja2FnZSkKICAgICAgKGluc3RhbGwtY29tcGxleC1w YWNrYWdlKQoKICAgICAgKHB1dCAncmVhbC1wYXJ0ICcoY29tcGxleCkgcmVhbC1wYXJ0KQogICAg ICAocHV0ICdpbWFnLXBhcnQgJyhjb21wbGV4KSBpbWFnLXBhcnQpCiAgICAgIChwdXQgJ21hZ25p dHVkZSAnKGNvbXBsZXgpIG1hZ25pdHVkZSkKICAgICAgKHB1dCAnYW5nbGUgJyhjb21wbGV4KSBh bmdsZSkKCiAgICAgIChkZWZpbmUgKGFwcGx5LWdlbmVyaWMgb3AgLiBhcmdzKQoJIzsoc2hvdyAj dCAiYXBwbHktZ2VuZXJpYzplbnRyeVxuIikKCSM7KGVycm9yICJkZWJ1ZyIpCgkoZGVmaW5lICh2 YXJpYWJsZSBwb2x5KSAoY2FyIHBvbHkpKQoJKGRlZmluZSAoYWxsLWFyZ3R5cGVzLXNhbWU/IC4g YXJncykKCSAgKGxldCAoKHR5cGUgKHR5cGUtdGFnIChjYXIgYXJncykpKSkKCSAgICAoYWNjdW11 bGF0ZSAobGFtYmRhICh4IHkpIChhbmQgeCB5KSkgI3QgKG1hcCAobGFtYmRhICh4KSAoZXE/IHR5 cGUgeCkpIGFyZ3MpKSkpCgkoZGVmaW5lIChjb2VyY2lvbi1pZi1leGlzdHM/IHR5cGUgYXJnLXRh Z3MpCgkgIChsZXQgKChjb2VyY2lvbi1saXN0IChtYXAgKGxhbWJkYSAoeCkgCgkJCQkgICAgICAo aWYgKGVxPyB0eXBlIHgpCgkJCQkJICBpZGVudGl0eQoJCQkJCSAgKGdldC1jb2VyY2lvbiB4IHR5 cGUpKSkgYXJnLXRhZ3MpKSkKCSAgICAoaWYgKGFjY3VtdWxhdGUgKGxhbWJkYSAoeCB5KSAoYW5k IHggeSkpICN0IGNvZXJjaW9uLWxpc3QpCgkJY29lcmNpb24tbGlzdAoJCSNmKSkpCgkoZHJvcCAo bGV0KiAoKHR5cGUtdGFncyAobWFwIHR5cGUtdGFnIGFyZ3MpKQoJCSAgICAgKHByb2MgKGdldCBv cCB0eXBlLXRhZ3MpKSkKCQkjOyhzaG93ICN0ICJhcHBseS1nZW5lcmljOiB0eXBlLXRhZ3M9IiAK CQkJIChkaXNwbGF5ZWQgdHlwZS10YWdzKQoJCQkgIiBwcm9jPSIgKHdyaXR0ZW4gcHJvYykKCQkJ ICIgcHJvYy1zb3VyY2U9IiAodGhpbmd5LXNvdXJjZSBwcm9jKSAiXG4iKQoJCShjb25kIChwcm9j IChhcHBseSBwcm9jIChtYXAgY29udGVudHMgYXJncykpKQoJCSAgICAgICgoPSAxIChsZW5ndGgg YXJncykpCgkJICAgICAgICM7KHNob3cgI3QgIk5vIHByb2MgZm91bmQgZm9yIG9wPSIgb3AgIiwg dHlwZS10YWdzPSIgdHlwZS10YWdzICIsIGFyZz0iIChkaXNwbGF5ZWQgYXJncykgIlxuIikKCQkg ICAgICAgKGFwcGx5LWdlbmVyaWMgb3AgKHJhaXNlLXR5cGUgKGNhciBhcmdzKSkpKQoJCSAgICAg ICgoPSAyIChsZW5ndGggYXJncykpCgkJICAgICAgIChjb25kICgoYW5kIChlcT8gJ3BvbHlub21p YWwgKGNhciB0eXBlLXRhZ3MpKQoJCQkJIChudW1lcmljPyAoY2FkciB0eXBlLXRhZ3MpKSkKCQkJ ICAgICAgKGFwcGx5LWdlbmVyaWMgb3AKCQkJCQkgICAgIChjYXIgYXJncykKCQkJCQkgICAgICht YWtlLXBvbHlub21pYWwgKHZhcmlhYmxlIChjb250ZW50cyAoY2FyIGFyZ3MpKSkKCQkJCQkJCSAg ICAgIChsaXN0IChsaXN0IDAgKGNhZHIgYXJncykpKSkpKQoJCQkgICAgICgoYW5kIChudW1lcmlj PyAoY2FyIHR5cGUtdGFncykpCgkJCQkgKGVxPyAncG9seW5vbWlhbCAoY2FkciB0eXBlLXRhZ3Mp KSkKCQkJICAgICAgKGFwcGx5LWdlbmVyaWMgb3AKCQkJCQkgICAgIChtYWtlLXBvbHlub21pYWwg KHZhcmlhYmxlIChjb250ZW50cyAoY2FkciBhcmdzKSkpCgkJCQkJCQkgICAgICAobGlzdCAobGlz dCAwIChjYXIgYXJncykpKSkKCQkJCQkgICAgIChjYWRyIGFyZ3MpKSkJCQkgCgkJCSAgICAgKChh bmQgKGdldC1jb2VyY2lvbiAoY2FyIHR5cGUtdGFncykgKGNhZHIgdHlwZS10YWdzKSkKCQkJCSAo bm90IChlcT8gKGNhciB0eXBlLXRhZ3MpIChjYWRyIHR5cGUtdGFncykpKSkKCQkJICAgICAgKGFw cGx5LWdlbmVyaWMgb3AKCQkJCQkgICAgICgoZ2V0LWNvZXJjaW9uCgkJCQkJICAgICAgIChjYXIg dHlwZS10YWdzKQoJCQkJCSAgICAgICAoY2FkciB0eXBlLXRhZ3MpKSAoY2FyIGFyZ3MpKQoJCQkJ CSAgICAgKGNhZHIgYXJncykpKQoJCQkgICAgICgoYW5kIChnZXQtY29lcmNpb24gKGNhZHIgdHlw ZS10YWdzKSAoY2FyIHR5cGUtdGFncykpCgkJCQkgKG5vdCAoZXE/IChjYXIgdHlwZS10YWdzKSAo Y2FkciB0eXBlLXRhZ3MpKSkpCgkJCSAgICAgIChhcHBseS1nZW5lcmljIG9wCgkJCQkJICAgICAo Y2FyIGFyZ3MpCgkJCQkJICAgICAoKGdldC1jb2VyY2lvbgoJCQkJCSAgICAgICAoY2FkciB0eXBl LXRhZ3MpCgkJCQkJICAgICAgIChjYXIgdHlwZS10YWdzKSkgKGNhZHIgYXJncykgKSkpCgkJCSAg ICAgKChjb21wYXJhYmxlPyAoY2FyIHR5cGUtdGFncykgKGNhZHIgdHlwZS10YWdzKSkKCQkJICAg ICAgKGlmCgkJCSAgICAgICAodHlwZTE8PXR5cGUyPyAoY2FyIHR5cGUtdGFncykgKGNhZHIgdHlw ZS10YWdzKSkKCQkJICAgICAgIChhcHBseS1nZW5lcmljIG9wIChyYWlzZS10eXBlIChjYXIgYXJn cykpIChjYWRyIGFyZ3MpKQoJCQkgICAgICAgKGFwcGx5LWdlbmVyaWMgb3AgKGNhciBhcmdzKSAg KHJhaXNlLXR5cGUgKGNhZHIgYXJncykpKSkpCgkJCSAgICAgKGVsc2UgKGVycm9yICJhcHBseS1n ZW5lcmljOkluY29tcGFyYWJsZSB0eXBlczogKHR5cGUtdGFncyxhcmdzKT0iIHR5cGUtdGFncyBh cmdzKSkpKQoJCSAgICAgICgoYW5kICg+IChsZW5ndGggYXJncykgMikgKG5vdCAoYWxsLWFyZ3R5 cGVzLXNhbWU/IGFyZ3MpKSkKCQkgICAgICAgKGxldCB0eXBlcy1sb29wICgodHlwZXMgdHlwZS10 YWdzKSkKCQkJIChsZXQgKChsaXN0LW9mLWNvZXJjaW9uLWZ1bmN0aW9ucwoJCQkJKGNvZXJjaW9u LWlmLWV4aXN0cz8gKGNhciB0eXBlcykgdHlwZS10YWdzKSkpCgkJCSAgIChpZiBsaXN0LW9mLWNv ZXJjaW9uLWZ1bmN0aW9ucwoJCQkgICAgICAgKGFwcGx5IGFwcGx5LWdlbmVyaWMgKGNvbnMgb3Ag KG1hcCAobGFtYmRhIChmdW4gYXJnKSAoZnVuIGFyZykpCgkJCQkJCQkJICBsaXN0LW9mLWNvZXJj aW9uLWZ1bmN0aW9ucwoJCQkJCQkJCSAgYXJncykpKQoJCQkgICAgICAgKGlmIChub3QgKG51bGw/ IChjZHIgdHlwZXMpKSkKCQkJCSAgICh0eXBlcy1sb29wIChjZHIgdHlwZXMpKQoJCQkJICAgKGVy cm9yICJhcHBseS1nZW5lcmljOkV2ZW4gY29lcmNpb25zIGZhaWxlZC4gTm8gbWV0aG9kIGZvciB0 aGVzZSB0eXBlcy4iKSkpKSkpCgkJICAgICAgKGVsc2UgKGVycm9yICJhcHBseS1nZW5lcmljOk5v IG1ldGhvZCBmb3IgdGhlc2UgdHlwZXMiCgkJCQkgICAobGlzdCBvcCB0eXBlLXRhZ3MpKSkpKSkp CiAgICAgIChkZWZpbmUgKHNjaGVtZS1udW1iZXItPmNvbXBsZXggbikKCShtYWtlLWNvbXBsZXgt ZnJvbS1yZWFsLWltYWcgKGNvbnRlbnRzIG4pIDApKQogICAgICAocHV0LWNvZXJjaW9uICdzY2hl bWUtbnVtYmVyCgkJICAgICdjb21wbGV4CgkJICAgIHNjaGVtZS1udW1iZXItPmNvbXBsZXgpCgog ICAgICAocHV0ICdtYXgzLW1hZ25pdHVkZSAnKGNvbXBsZXggY29tcGxleCBjb21wbGV4KSAobGFt YmRhICh6MSB6MiB6MykKCQkJCQkJCShtYXggKG1hZ25pdHVkZSB6MSkgKG1hZ25pdHVkZSB6Mikg KG1hZ25pdHVkZSB6MykpKSkKICAgICAgKGRlZmluZSAobWF4My1tYWduaXR1ZGUgeDEgeDIgeDMp IChhcHBseS1nZW5lcmljICdtYXgzLW1hZ25pdHVkZSB4MSB4MiB4MykpCiAgICAgIChkZWZpbmUg KGlkZW50aXR5IHgpIHgpCgogICAgIzsoZGVmaW5lIG51bWVyaWMtdG93ZXIgKGxpc3QgJ2ludGVn ZXIgJ3JhdGlvbmFsICdzY2hlbWUtbnVtYmVyICdjb21wbGV4KSkKICAgIChkZWZpbmUgbnVtZXJp Yy10b3dlciAobGlzdCAnaW50ZWdlciAnc2NoZW1lLW51bWJlciAnY29tcGxleCkpCiAgICAoZGVm aW5lIChjb21wYXJhYmxlPyB0eXBlMSB0eXBlMikgKGFuZCAobWVtcSB0eXBlMSBudW1lcmljLXRv d2VyKSAobWVtcSB0eXBlMiBudW1lcmljLXRvd2VyKSkpCiAgICAjOyhkZWZpbmUgKGhpZ2hlci10 eXBlIHgpCiAgICAgIChzaG93ICN0ICJoaWdoZXItdHlwZTp4PSIgKGRpc3BsYXllZCB4KSAiXG4i KQoJKGRlZmluZSAoZmluZC1oaWdoZXItdHlwZSB4IHR5cGVzKQoJICAoY29uZCAoKG9yIChudWxs PyB0eXBlcykgKG51bGw/IChjZHIgdHlwZXMpKSkgKGVycm9yICJObyB0eXBlIGhpZ2hlciB0aGFu IGdpdmVuIiB4IHR5cGVzKSkKCQkoKGVxPyB4IChjYXIgdHlwZXMpKSAoY2FkciB0eXBlcykpCgkJ KGVsc2UgKGZpbmQtaGlnaGVyLXR5cGUgeCAoY2RyIHR5cGVzKSkpKSkKCShmaW5kLWhpZ2hlci10 eXBlIHggbnVtZXJpYy10b3dlcikpCgogICAgKGRlZmluZSAobnVtZXJpYz8geCkKICAgICAgKG1l bXEgeCBudW1lcmljLXRvd2VyKSkKICAgIChkZWZpbmUgKHBvbHlub21pYWw/IHgpCiAgICAgIChl cT8gKHR5cGUtdGFnIHgpICdwb2x5bm9taWFsKSkKICAgIChkZWZpbmUgKGhpZ2hlci10eXBlIHgp CiAgICAgIChsZXQgKCh0YWlsIChtZW1xIHggbnVtZXJpYy10b3dlcikpKQoJKGNvbmQgKChlcT8g I2YgdGFpbCkgKGVycm9yICJUeXBlIG5vdCBpbiB0aGUgdG93ZXIiIHgpKQoJICAgICAgKChudWxs PyAoY2RyIHRhaWwpKSAoZXJyb3IgIkFscmVhZHkgdGhlIGhpZ2hlc3QgdHlwZToiIHgpKQoJICAg ICAgKGVsc2UgKGNhZHIgdGFpbCkpKSkpCgogICAgKHNob3cgI3QgIlRlc3Q6IEhpZ2hlciB0aGFu ICdpbnRlZ2VyOiAiIChoaWdoZXItdHlwZSAnaW50ZWdlcikgIlxuIikKICAgICM7KHNob3cgI3Qg IlRlc3Q6IEhpZ2hlciB0aGFuICdjb21wbGV4OiAiIChoaWdoZXItdHlwZSAnY29tcGxleCkgIlxu IikKCiAgICAgIChkZWZpbmUgKHR5cGUxPD10eXBlMj8gdHlwZTEgdHlwZTIpCgkoaWYgKG5vdCAo bWVtcSB0eXBlMSBudW1lcmljLXRvd2VyKSkKCSAgICAoZXJyb3IgIlR5cGUgMSBub3QgaW4gdGhl IG51bWVyaWMgdG93ZXIiKSkKCShpZiAobm90IChtZW1xIHR5cGUyIG51bWVyaWMtdG93ZXIpKQoJ ICAgIChlcnJvciAiVHlwZSAyIG5vdCBpbiB0aGUgbnVtZXJpYyB0b3dlciIpKQoJKGxldCBsb29w ICgodHlwZXMgbnVtZXJpYy10b3dlcikpCgkgIChjb25kICgobnVsbD8gdHlwZXMpIChlcnJvciAi VHlwZSAxIGFuZCB0eXBlIDIgYXJlIGluY29tcGFyYWJsZSIgdHlwZTEgdHlwZTIpKQoJCSgoZXE/ IChjYXIgdHlwZXMpIHR5cGUxKSAjdCkKCQkoKGVxPyAoY2FyIHR5cGVzKSB0eXBlMikgI2YpCgkJ KGVsc2UgKGxvb3AgKGNkciB0eXBlcykpKSkpKQoKICAgICAgIzsoZGVmaW5lIChpbnRlZ2VyLT5y YXRpb25hbCB4KQoJKG1ha2UtcmF0aW9uYWwgeCAxKSkKCiAgICAgICM7KGRlZmluZSAocmF0aW9u YWwtPnNjaGVtZS1udW1iZXIgeCkKCShtYWtlLXNjaGVtZS1udW1iZXIgKChnZXQgJ3RvLXJlYWwg JyhyYXRpb25hbCkpIHgpKSkKICAgICAgIzsocHV0LWNvZXJjaW9uICdpbnRlZ2VyICdyYXRpb25h bCBpbnRlZ2VyLT5yYXRpb25hbCkKICAgICAgIzsocHV0LWNvZXJjaW9uICdyYXRpb25hbCAnc2No ZW1lLW51bWJlciByYXRpb25hbC0+c2NoZW1lLW51bWJlcikKICAgIChkZWZpbmUgKGludGVnZXIt PnNjaGVtZS1udW1iZXIgeCkKICAgICAgIChtYWtlLXNjaGVtZS1udW1iZXIgKGNvbnRlbnRzIChl eGFjdC0+aW5leGFjdCB4KSkpKQogICAgKHB1dC1jb2VyY2lvbiAnaW50ZWdlciAnc2NoZW1lLW51 bWJlciBpbnRlZ2VyLT5zY2hlbWUtbnVtYmVyKSAgCgogICAgKGRlZmluZSAocmFpc2UtdHlwZSB4 KQogICAgICAjOyhzaG93ICN0ICJSYWlzaW5nIHR5cGUgb2Y6ICIgKGRpc3BsYXllZCB4KSAiXG4i KQoJKGxldCAoKGNvbnZlcnRlciAoZ2V0LWNvZXJjaW9uICh0eXBlLXRhZyB4KSAoaGlnaGVyLXR5 cGUgKHR5cGUtdGFnIHgpKSkpKQoJICAoaWYgY29udmVydGVyCgkgICAgICAoY29udmVydGVyIHgp CgkgICAgICAoZXJyb3IgIk5vIGNvZXJjaW9uIGZvdW5kIGZvciB4IiAodHlwZS10YWcgeCkgeCkp KSkKCgogICAgICAoZGVmaW5lIChyZW1haW5kZXItaW50ZWdlciBhIGIpCgkod2hlbiAob3IgKG5v dCAoaW50ZWdlcj8gYSkpIChub3QgKGludGVnZXI/IGIpKSkKCSAgKGVycm9yICJBcmd1bWVudHMg bXVzdCBiZSBpbnRlZ2VycyIgYSBiKSkKCShyZW1haW5kZXIgYSBiKSkKCiAgICAgIChwdXQgJ3Jl bWFpbmRlciAnKGludGVnZXIgaW50ZWdlcikgcmVtYWluZGVyLWludGVnZXIpCiAgICAgIChkZWZp bmUgKHJlbWFpbmRlci1nZW5lcmFsaXplZCBhIGIpIChhcHBseS1nZW5lcmljICdyZW1haW5kZXIg YSBiKSkKCiAgICAgIChkZWZpbmUgKHByb2plY3Qgb2JqKQoJKGFwcGx5LWdlbmVyaWMgJ3Byb2pl Y3Qgb2JqKSkKICAgICAgKGRlZmluZSAoZHJvcHBhYmxlPyBvYmopCgkjOyhzaG93ICN0ICJkcm9w cGFibGU/OiBvYmo9IiBvYmogIiwgdHlwZS10YWc9IiAodHlwZS10YWcgb2JqKSAiXG4iKQoJKGNv bmQgKChlcT8gKHR5cGUtdGFnIG9iaikgJ3JhdGlvbmFsKSAoYmVnaW4gKHNob3cgI3QgInJhdGlv bmFsIG5vdCBkcm9wcGFibGU6ICNmXG4iKSAjZikpCgkgICAgICAoKG5vdCAobWVtcSAodHlwZS10 YWcgb2JqKSBudW1lcmljLXRvd2VyKSkgI2YpCgkgICAgICAoKGVxPyAodHlwZS10YWcgb2JqKSAo Y2FyIG51bWVyaWMtdG93ZXIpKSAjZikKCSAgICAgICgoZXF1PyBvYmogKHJhaXNlLXR5cGUgKHBy b2plY3Qgb2JqKSkpICN0KQoJICAgICAgKGVsc2UgI2YpKSkKICAgICAgKGRlZmluZSAoZHJvcCBv YmopIAoJKGlmIChkcm9wcGFibGU/IG9iaikKCSAgICAoZHJvcCAocHJvamVjdCBvYmopKQoJICAg IG9iaikpCgogICAgICAoc2hvdyAjdCAiVGVzdCAxOiBTdWJ0cmFjdGluZyBjb21wbGV4IG51bWJl cnM6ICIKCSAgICAoc3ViCgkgICAgIChtYWtlLWNvbXBsZXgtZnJvbS1yZWFsLWltYWcgMS4xIDIp CgkgICAgIChtYWtlLWNvbXBsZXgtZnJvbS1yZWFsLWltYWcgMCAyKSkgIlxuIikKICAgIChkZWZp bmUgKGluc3RhbGwtcG9seW5vbWlhbC1wYWNrYWdlKQogICAgICAjOyhkZWZpbmUgKGNvbnRlbnRz IGdlbmVyaWMtb2JqZWN0KQoJKGNkciBnZW5lcmljLW9iamVjdCkpCgkoZGVmaW5lIChtYWtlLXBv bHkgdmFyaWFibGUgdGVybS1saXN0KQoJICAoY29ucyB2YXJpYWJsZSB0ZXJtLWxpc3QpKQoJKGRl ZmluZSAodmFyaWFibGUgcCkgKGNhciBwKSkKCShkZWZpbmUgKHRlcm0tbGlzdCBwKQoJICAoY2Ry IHApKQoJKGRlZmluZSAodmFyaWFibGU/IHgpIChzeW1ib2w/IHgpKQoJKGRlZmluZSAoc2FtZS12 YXJpYWJsZT8gdjEgdjIpCgkgIChhbmQgKHZhcmlhYmxlPyB2MSkgKHZhcmlhYmxlPyB2MikgKGVx PyB2MSB2MikpKQoJKGRlZmluZSAoPW51bWJlcj8gZXhwIG51bSkKCSAgKGFuZCAobnVtYmVyPyBl eHApICg9IGV4cCBudW0pKSkKCShkZWZpbmUgKHRoZS1lbXB0eS10ZXJtbGlzdCkgJygpKQoKCShk ZWZpbmUgKHJlc3QtdGVybXMgdGVybS1saXN0KSAoY2RyIHRlcm0tbGlzdCkpCgkoZGVmaW5lIChl bXB0eS10ZXJtbGlzdD8gdGVybS1saXN0KSAobnVsbD8gdGVybS1saXN0KSkKCgkoZGVmaW5lICht YWtlLXRlcm0gb3JkZXIgY29lZmYpIChsaXN0IG9yZGVyIGNvZWZmKSkKCShkZWZpbmUgKG9yZGVy IHRlcm0pIChjYXIgdGVybSkpCgkoZGVmaW5lIChjb2VmZiB0ZXJtKSAoY2FkciB0ZXJtKSkKCShk ZWZpbmUgKHRhZyBwKSAoYXR0YWNoLXRhZyAncG9seW5vbWlhbCBwKSkKCShwdXQgJ21ha2UgJ3Bv bHlub21pYWwKCSAgICAgKGxhbWJkYSAodmFyIHRlcm1zKSAodGFnIChtYWtlLXBvbHkgdmFyIHRl cm1zKSkpKQoJIzsoY29udGludWVkIG9uIG5leHQgcGFnZSkKCgkoZGVmaW5lIChhZGQtcG9seSBw MSBwMikKCSAgIzsoc2hvdyAjdCAiYWRkLXBvbHk6IHAxPSIgcDEgIiwgcDI9IiBwMiAiXG4iKQoJ ICAoaWYgKHNhbWUtdmFyaWFibGU/ICh2YXJpYWJsZSBwMSkgKHZhcmlhYmxlIHAyKSkKCSAgICAg IChtYWtlLXBvbHkgKHZhcmlhYmxlIHAxKQoJCQkgKGFkZC10ZXJtcyAodGVybS1saXN0IHAxKQoJ CQkJICAgICh0ZXJtLWxpc3QgcDIpKSkKCSAgICAgIChsZXQgKChyZXMgKGNkciAoaWYgKHZhcmlh YmxlXzEtb3JkZXI8dmFyaWFibGVfMi1vcmRlciAodmFyaWFibGUgcDEpICh2YXJpYWJsZSBwMikp CgkJICAoYWRkICh0YWcgcDEpICh0YWcgKG1ha2UtcG9seSAodmFyaWFibGUgcDEpIChsaXN0ICht YWtlLXRlcm0gMCAodGFnIHAyKSkpKSkpCgkJICAoYWRkICh0YWcgKG1ha2UtcG9seSAodmFyaWFi bGUgcDIpIChsaXN0IChtYWtlLXRlcm0gMCAodGFnIHAxKSkpKSkgKHRhZyBwMikpKSkpKQoJCSM7 KHNob3cgI3QgImFkZC1wb2x5OnJlc3VsdDogIiAoZGlzcGxheWVkIHJlcykgIlxuIikgcmVzKSkp CgoJKHNob3cgI3QgIlRlc3RZMjogcG9seSBvZiBwb2x5OiAiCgkgICAgICAobWFrZS1wb2x5ICd4 IChsaXN0CgkJCSAgICAgKG1ha2UtdGVybSAzIChtYWtlLXBvbHkKCQkJCQkgICAneSAobGlzdCAo bWFrZS10ZXJtIDEgMSkgKG1ha2UtdGVybSAwIDEpKSkpCgkJCSAgICAgKG1ha2UtdGVybSAxIDIp CgkJCSAgICAgKG1ha2UtdGVybSAwIDQpKSkgIlxuIikKCgkoZGVmaW5lIChzdWItcG9seSBwMSBw MikKCSAgKGFkZC1wb2x5IHAxIChtdWwtcG9seSBwMiAobWFrZS1wb2x5ICh2YXJpYWJsZSBwMikg KGxpc3QgKG1ha2UtdGVybSAwIC0xKSkpKSkpCgkoZGVmaW5lIChhZGQtdGVybXMgTDEgTDIpCgkg IChjb25kICgoZW1wdHktdGVybWxpc3Q/IEwxKSBMMikKCQkoKGVtcHR5LXRlcm1saXN0PyBMMikg TDEpCgkJKGVsc2UKCQkgKGxldCAoKHQxIChmaXJzdC10ZXJtIEwxKSkgKHQyIChmaXJzdC10ZXJt IEwyKSkpCgkJICAgKGNvbmQgKCg+IChvcmRlciB0MSkgKG9yZGVyIHQyKSkKCQkJICAoYWRqb2lu LXRlcm0KCQkJICAgdDEgKGFkZC10ZXJtcyAocmVzdC10ZXJtcyBMMSkgTDIpKSkKCQkJICgoPCAo b3JkZXIgdDEpIChvcmRlciB0MikpCgkJCSAgKGFkam9pbi10ZXJtCgkJCSAgIHQyIChhZGQtdGVy bXMgTDEgKHJlc3QtdGVybXMgTDIpKSkpCgkJCSAoZWxzZQoJCQkgIChhZGpvaW4tdGVybQoJCQkg ICAobWFrZS10ZXJtIChvcmRlciB0MSkKCQkJCSAgICAgIChhZGQgKGNvZWZmIHQxKSAoY29lZmYg dDIpKSkKCQkJICAgKGFkZC10ZXJtcyAocmVzdC10ZXJtcyBMMSkKCQkJCSAgICAgIChyZXN0LXRl cm1zIEwyKSkpKSkpKSkpCgoKCShkZWZpbmUgKG11bC1wb2x5IHAxIHAyKQoJICAoaWYgKHNhbWUt dmFyaWFibGU/ICh2YXJpYWJsZSBwMSkgKHZhcmlhYmxlIHAyKSkKCSAgICAgIChtYWtlLXBvbHkg KHZhcmlhYmxlIHAxKQoJCQkgKG11bC10ZXJtcyAodGVybS1saXN0IHAxKQoJCQkJICAgICh0ZXJt LWxpc3QgcDIpKSkKCSAgICAgIChjb250ZW50cyAoaWYgKHZhcmlhYmxlXzEtb3JkZXI8dmFyaWFi bGVfMi1vcmRlciAodmFyaWFibGUgcDEpICh2YXJpYWJsZSBwMikpCgkJICAobXVsICh0YWcgcDEp CgkJICAgICAgIChtYWtlLXBvbHlub21pYWwgKHZhcmlhYmxlIHAxKQoJCQkJCShhZGpvaW4tdGVy bQoJCQkJCSAobWFrZS10ZXJtIDAKCQkJCQkJICAgICh0YWcgcDIpKSAodGhlLWVtcHR5LXRlcm1s aXN0KSkpKQoJCSAgKG11bCAodGFnIHAyKQoJCSAgICAgICAobWFrZS1wb2x5bm9taWFsICh2YXJp YWJsZSBwMikKCQkJCQkoYWRqb2luLXRlcm0KCQkJCQkgKG1ha2UtdGVybSAwCgkJCQkJCSAgICAo dGFnIHAxKSkgKHRoZS1lbXB0eS10ZXJtbGlzdCkpKSkpKQoJICAgICAgIzsoZXJyb3IgIlBvbHlz IG5vdCBpbiBzYW1lIHZhciAtLSBNVUwtUE9MWSIKCQkgICAgIChsaXN0IHAxIHAyKSkpKQoJKGRl ZmluZSAoZGl2LXBvbHkgcDEgcDIpCgkgIChpZiAoc2FtZS12YXJpYWJsZT8gKHZhcmlhYmxlIHAx KSAodmFyaWFibGUgcDIpKQoJICAgICAgKGxldCAoKHF1b3RpZW50LWFuZC1yZW1haW5kZXIgKGRp di10ZXJtcyAodGVybS1saXN0IHAxKQoJCQkJCQkgICAgICAgKHRlcm0tbGlzdCBwMikpKSkKCQko bGlzdCAobWFrZS1wb2x5ICh2YXJpYWJsZSBwMSkgKGNhciAgcXVvdGllbnQtYW5kLXJlbWFpbmRl cikpCgkJICAgICAgKG1ha2UtcG9seSAodmFyaWFibGUgcDEpIChjYWRyIHF1b3RpZW50LWFuZC1y ZW1haW5kZXIpKSkpCgkJKGVycm9yICJkaXYtcG9seTogUG9seXMgbm90IGluIHRoZSBzYW1lIHZh ciIgcDEgcDIpKSkKCShkZWZpbmUgKGRpdi10ZXJtcyBMMSBMMikKCQkoaWYgKGVtcHR5LXRlcm1s aXN0PyBMMSkKCQkgICAgKGxpc3QgKHRoZS1lbXB0eS10ZXJtbGlzdCkgKHRoZS1lbXB0eS10ZXJt bGlzdCkpCgkJICAgIChsZXQgKCh0MSAoZmlyc3QtdGVybSBMMSkpCgkJCSAgKHQyIChmaXJzdC10 ZXJtIEwyKSkpCgkJICAgICAgKGlmICg+IChvcmRlciB0MikgKG9yZGVyIHQxKSkKCQkJICAobGlz dCAodGhlLWVtcHR5LXRlcm1saXN0KSBMMSkKCQkJICAobGV0ICgobmV3LWMgKGRpdiAoY29lZmYg dDEpIChjb2VmZiB0MikpKQoJCQkJKG5ldy1vICgtIChvcmRlciB0MSkgKG9yZGVyIHQyKSkpKQoJ CQkgICAgKGxldCAoKHJlc3Qtb2YtcmVzdWx0IChkaXYtdGVybXMgKHRlcm0tbGlzdAoJCQkJCQkJ ICAgICAgKHN1Yi1wb2x5CgkJCQkJCQkgICAgICAgKG1ha2UtcG9seSAnZmFrZS12YXIgTDEpCgkJ CQkJCQkgICAgICAgKG11bC1wb2x5CgkJCQkJCQkJKG1ha2UtcG9seSAnZmFrZS12YXIgKGxpc3Qg KG1ha2UtdGVybSBuZXctbyBuZXctYykpKQoJCQkJCQkJCShtYWtlLXBvbHkgJ2Zha2UtdmFyIEwy KSkpKQoJCQkJCQkJICAgICBMMikKCQkJCQkJICApKQoJCQkgICAgICAjOyhzaG93ICN0ICJkaXYt dGVybXM6IHJlc3Qtb2YtcmVzdWx0OiAiIChkaXNwbGF5ZWQgcmVzdC1vZi1yZXN1bHQpICJcbiIp CgkJCSAgICAgIChsaXN0IChhZGpvaW4tdGVybSAobWFrZS10ZXJtIG5ldy1vIG5ldy1jKSAoY2Fy IHJlc3Qtb2YtcmVzdWx0KSkgKGNhZHIgcmVzdC1vZi1yZXN1bHQpKQoJCQkgICAgICApKSkpKSkK CShkZWZpbmUgKG11bC10ZXJtcyBMMSBMMikKCSAgKGlmIChlbXB0eS10ZXJtbGlzdD8gTDEpCgkg ICAgICAodGhlLWVtcHR5LXRlcm1saXN0KQoJICAgICAgKGFkZC10ZXJtcyAobXVsLXRlcm0tYnkt YWxsLXRlcm1zIChmaXJzdC10ZXJtIEwxKSBMMikKCQkJIChtdWwtdGVybXMgKHJlc3QtdGVybXMg TDEpIEwyKSkpKQoKCShkZWZpbmUgKG11bC10ZXJtLWJ5LWFsbC10ZXJtcyB0MSBMKQoJICAoaWYg KGVtcHR5LXRlcm1saXN0PyBMKQoJICAgICAgKHRoZS1lbXB0eS10ZXJtbGlzdCkKCSAgICAgIChs ZXQgKCh0MiAoZmlyc3QtdGVybSBMKSkpCgkJKGFkam9pbi10ZXJtCgkJIChtYWtlLXRlcm0gKCsg KG9yZGVyIHQxKSAob3JkZXIgdDIpKQoJCQkgICAgKG11bCAoY29lZmYgdDEpIChjb2VmZiB0Mikp KQoJCSAobXVsLXRlcm0tYnktYWxsLXRlcm1zIHQxIChyZXN0LXRlcm1zIEwpKSkpKSkKCShkZWZp bmUgKHplcm8tcG9seT8gcG9seSkKCSAgIzsoc2hvdyAjdCAiemVyby1wb2x5PzogcG9seT0iIChk aXNwbGF5ZWQgcG9seSkgIlxuIikKCSAgKGNvbmQgKChlbXB0eS10ZXJtbGlzdD8gKHRlcm0tbGlz dCBwb2x5KSkgI3QpCgkJKChub3QgKHplcm8/IChjb2VmZiAoZmlyc3QtdGVybSAodGVybS1saXN0 IHBvbHkpKSkpKSAjZikKCQkoZWxzZSAoemVyby1wb2x5PyAKCQkgICAgICAgKG1ha2UtcG9seSAo dmFyaWFibGUgcG9seSkKCQkJCSAgKHJlc3QtdGVybXMgKHRlcm0tbGlzdCBwb2x5KSkpKSkpKQoK CShkZWZpbmUgKHRlcm1saXN0LXR5cGUtb2YgdGVybS1saXN0KQoJICAjOyhzaG93ICN0ICJ0LXQt bzogdGVybS1saXN0PSIgKGRpc3BsYXllZCB0ZXJtLWxpc3QpICJcbiIpCgkgIChjb25kICgobnVs bD8gdGVybS1saXN0KSAnc3BhcnNlKQoJCSgocGFpcj8gKGNhciB0ZXJtLWxpc3QpKSAnc3BhcnNl KQoJCSgobGlzdD8gdGVybS1saXN0KSAnZGVuc2UpCgkJKGVsc2UgKGVycm9yICJVbmtub3duIHR5 cGUgb2YgbGlzdCIgdGVybS1saXN0KSkpKQoJKGRlZmluZSAoYWRqb2luLXRlcm0gdGVybSB0ZXJt LWxpc3QpCgkgICgoZ2V0ICdhZGpvaW4tdGVybSAodGVybWxpc3QtdHlwZS1vZiB0ZXJtLWxpc3Qp KSB0ZXJtIHRlcm0tbGlzdCkpCgkoZGVmaW5lIChmaXJzdC10ZXJtIHRlcm0tbGlzdCkKCSAgKChn ZXQgJ2ZpcnN0LXRlcm0gKHRlcm1saXN0LXR5cGUtb2YgdGVybS1saXN0KSkgdGVybS1saXN0KSkK CShkZWZpbmUgKHZhcmlhYmxlXzEtb3JkZXI8dmFyaWFibGVfMi1vcmRlciB2YXJpYWJsZV8xIHZh cmlhYmxlXzIpCgkgICM7KHNob3cgI3QgInZhcl8xLS4uOiB2YXJpYWJsZV8xPSIgdmFyaWFibGVf MSAiIHZhcmlhYmxlXzI9IiB2YXJpYWJsZV8yICJcbiIpCgkgICM7KHNob3cgI3QgInZhcjEyc3Ry aW5nPSIgKHN5bWJvbC0+c3RyaW5nIHZhcmlhYmxlXzEpICJ2YXIyMnN0cmluZz0iIChzeW1ib2wt PnN0cmluZyB2YXJpYWJsZV8yKSAiXG4iKQoJICAoc3RyaW5nPD0/IChzeW1ib2wtPnN0cmluZyB2 YXJpYWJsZV8xKSAoc3ltYm9sLT5zdHJpbmcgdmFyaWFibGVfMikpKQoJKGRlZmluZSAobm9ybWFs aXplLWZ1bGx5IHBvbHkpCgkgIChpZiAobm9ybWFsLXBvbHlub21pYWw/IHBvbHkpCgkgICAgICBw b2x5CgkgICAgICAobm9ybWFsaXplLWZ1bGx5IChub3JtYWxpemUtb25jZSBwb2x5KSkpKQoJKHB1 dCAnYWRkICcocG9seW5vbWlhbCBwb2x5bm9taWFsKQoJICAgICAobGFtYmRhIChwMSBwMikgCgkg ICAgICAgIzsoc2hvdyAjdCAiZ2VuZXJpYy1hZGQtcG9seTpQb2x5bm9taWFsIGRpc3BhdGNoIGZv dW5kOiBwMT0iCgkJICAgICAgKGRpc3BsYXllZCBwMSkgIiBwMj0iIChkaXNwbGF5ZWQgcDIpICJc biIpCgkgICAgICAgKG5vcm1hbGl6ZS1mdWxseSAodGFnIChhZGQtcG9seSBwMSBwMikpKSkpCgko cHV0ICdtdWwgJyhwb2x5bm9taWFsIHBvbHlub21pYWwpCgkgICAgIChsYW1iZGEgKHAxIHAyKSAo bm9ybWFsaXplLWZ1bGx5ICh0YWcgKG11bC1wb2x5IHAxIHAyKSkpKSkKCShwdXQgJ3N1YiAnKHBv bHlub21pYWwgcG9seW5vbWlhbCkKCSAgICAgKGxhbWJkYSAocDEgcDIpICh0YWcgKHN1Yi1wb2x5 IHAxIHAyKSkpKQoKCShwdXQgJ3plcm8/ICcocG9seW5vbWlhbCkgemVyby1wb2x5PykKCShwdXQg J2RpdiAnKHBvbHlub21pYWwgcG9seW5vbWlhbCkgZGl2LXBvbHkpCgkjOyhwdXQtY29lcmNpb24g J3JhdGlvbmFsICdzY2hlbWUtbnVtYmVyIHJhdGlvbmFsLT5zY2hlbWUtbnVtYmVyKQoJKGRlZmlu ZSAobW9ub21pYWwtZmxpcC12YXJpYWJsZXMgbW9ub21pYWwpCgkgICM7KHNob3cgI3QgIm0tZi12 OiBtb25vbWlhbD0iIG1vbm9taWFsICJcbiIpCgkgIChsZXQqICgobW9ubyAoY29udGVudHMgbW9u b21pYWwpKQoJCSAoaW5uZXItcG9seW5vbWlhbCAoY29udGVudHMgKGNvZWZmIChmaXJzdC10ZXJt ICh0ZXJtLWxpc3QgbW9ubykpKSkpCgkJIChpbm5lci1wb2x5IChjb250ZW50cyBpbm5lci1wb2x5 bm9taWFsKSkKCQkgKG91dGVyLW9yZGVyIChvcmRlciAoZmlyc3QtdGVybSAodGVybS1saXN0IG1v bm8pKSkpCgkJIChvdXRlci12YXIgKHZhcmlhYmxlIG1vbm8pKQoJCSAoaW5uZXItdmFyICh2YXJp YWJsZSBpbm5lci1wb2x5bm9taWFsKSkKCQkgKGlubmVyLXRlcm0tbGlzdCAodGVybS1saXN0IGlu bmVyLXBvbHkpKSkKCSAgICAjOyhzaG93ICN0ICJtLWYtdjogaW5uZXItcG9seT0iIGlubmVyLXBv bHkgIlxuIikKCSAgICAoaWYgKHNhbWUtdmFyaWFibGU/IGlubmVyLXZhciBvdXRlci12YXIpCgkJ KG11bAoJCSAobWFrZS1wb2x5bm9taWFsIG91dGVyLXZhciAoYWRqb2luLXRlcm0gKG1ha2UtdGVy bSBvdXRlci1vcmRlciAxKSAodGhlLWVtcHR5LXRlcm1saXN0KSkpCgkJICh0YWcgaW5uZXItcG9s eW5vbWlhbCkpCgkJKHRhZyAobWFrZS1wb2x5IGlubmVyLXZhcgoJCQkJKG11bC10ZXJtLWJ5LWFs bC10ZXJtcyAobWFrZS10ZXJtCgkJCQkJCQkwCgkJCQkJCQkobWFrZS1wb2x5bm9taWFsCgkJCQkJ CQkgb3V0ZXItdmFyCgkJCQkJCQkgKGxpc3QgKG1ha2UtdGVybQoJCQkJCQkJCW91dGVyLW9yZGVy CgkJCQkJCQkJMSkpKSkgaW5uZXItcG9seSkpKSkpKQoJIzsoc2hvdyAjdCAiVGVzdFhYOiBzb3J0 aW5nIHZhcmlhYmxlczogSXMgJ3ggPCAneT86ICIKCSAgICAgICh2YXJpYWJsZV8xLW9yZGVyPHZh cmlhYmxlXzItb3JkZXIgJ3ggJ3kpICJcbiIpCgkjOyhzaG93ICN0ICJUZXN0WFg6IHNvcnRpbmcg dmFyaWFibGVzOiBJcyAneiA8ICd5PzogIgoJICAgICAgKHZhcmlhYmxlXzEtb3JkZXI8dmFyaWFi bGVfMi1vcmRlciAneiAneSkgIlxuIikKCSM7KHNob3cgI3QgIlRlc3RYWDogKGFkZGluZyB0d28g YmFzaWMgcG9seSk6ICIKCSAgICAgIChhZGQgKG1ha2UtcG9seW5vbWlhbCAneCAobGlzdCAobWFr ZS10ZXJtIDEgMikgKG1ha2UtdGVybSAwIDQpKSkKCQkgICAobWFrZS1wb2x5bm9taWFsICd5IChs aXN0IChtYWtlLXRlcm0gMiAzKSAobWFrZS10ZXJtIDAgNSkpKSkgIlxuIikKCgkoZGVmaW5lIChw b2x5bm9taWFsLT5zdW0tb2YtZmlyc3QtYW5kLXJlc3QgcG9seSkKCSAgIzsoc2hvdyAjdCAicC0+ cy1vLWYtYS1yOiAiIChkaXNwbGF5ZWQgcG9seSkgIlxuIikKCSAgKGlmICh6ZXJvPyBwb2x5KQoJ ICAgICAgcG9seQoJICAgICAgKGxldCogKChwb2x5MSAoY29udGVudHMgcG9seSkpCgkJICAgICAo Zmlyc3QtbW9ub21pYWwgKHRhZwoJCQkJICAgICAgKG1ha2UtcG9seQoJCQkJICAgICAgICh2YXJp YWJsZSBwb2x5MSkKCQkJCSAgICAgICAobGlzdCAoZmlyc3QtdGVybSAodGVybS1saXN0IHBvbHkx KSkpKSkpKQoJCSM7KHNob3cgI3QgInAtPnMtby1mLWEtcjogIiAoZGlzcGxheWVkIGZpcnN0LW1v bm9taWFsKSAiXG4iKQoJCShhZGQKCQkgIGZpcnN0LW1vbm9taWFsCgkJICAocG9seW5vbWlhbC0+ c3VtLW9mLWZpcnN0LWFuZC1yZXN0CgkJICAgKHRhZyAobWFrZS1wb2x5ICh2YXJpYWJsZSBwb2x5 MSkgKHJlc3QtdGVybXMgKHRlcm0tbGlzdCBwb2x5MSkpKSkpKSkpKQoKCShzaG93ICN0ICJUZXN0 MTM6IEV4cGFuZGluZyBhIHBvbHlub21pYWwgYXMgbW9ub21pYWxzOiAiCgkgICAgICAoZGlzcGxh eWVkCgkgICAgICAgKHBvbHlub21pYWwtPnN1bS1vZi1maXJzdC1hbmQtcmVzdAoJCShtYWtlLXBv bHlub21pYWwgJ3kKCQkJCSAobGlzdCAobWFrZS10ZXJtIDIgKG1ha2UtcG9seW5vbWlhbAoJCQkJ CQkgICAgICd4CgkJCQkJCSAgICAgKGxpc3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0gMCAx KSkpKQoJCQkJICAgICAgIChtYWtlLXRlcm0gMCAyKSkpKSkgIlxuIikKCgkoc2hvdyAjdCAiXG5U ZXN0MjA6IHN0YXJ0IG1vbm9taWFsOiAiCgkgICAgICAoZGlzcGxheWVkIChtYWtlLXBvbHlub21p YWwgJ3gKCQkJCQkgIChsaXN0CgkJCQkJICAgKG1ha2UtdGVybQoJCQkJCSAgICAyCgkJCQkJICAg IChtYWtlLXBvbHlub21pYWwKCQkJCQkgICAgICd5CgkJCQkJICAgICAobGlzdAoJCQkJCSAgICAg IChtYWtlLXRlcm0gMiAxKSAobWFrZS10ZXJtIDAgMSkpKSkpKSkgIlxuIikKCShzaG93ICN0ICJU ZXN0MjA6IEZsaXBwaW5nIGEgbW9ub21pYWwgdmFyaWFibGU6ICIKCSAgICAgIChkaXNwbGF5ZWQK CSAgICAgICAobW9ub21pYWwtZmxpcC12YXJpYWJsZXMKCQkobWFrZS1wb2x5bm9taWFsICd4CgkJ CQkgKGxpc3QgKG1ha2UtdGVybSAxIChtYWtlLXBvbHlub21pYWwKCQkJCQkJICAgICAneQoJCQkJ CQkgICAgIChsaXN0CgkJCQkJCSAgICAgIChtYWtlLXRlcm0gMiAxKQoJCQkJCQkgICAgICAobWFr ZS10ZXJtIDAgMSkpKSkpKSkpICJcblxuIikKCgoJKGRlZmluZSAobm9ybWFsLXBvbHlub21pYWw/ IHBvbHkpCgkgICM7KHNob3cgI3QgIm4tcD86IHBvbHk9IiBwb2x5ICJcbiIpCgkgIChjb25kICgo bm90IChwb2x5bm9taWFsPyBwb2x5KSkgI3QpCgkJKChudWxsPyAodGVybS1saXN0IChjb250ZW50 cyBwb2x5KSkpICN0KQoJCShlbHNlIChsZXQqICgocG9seTEgKGNvbnRlbnRzIHBvbHkpKQoJCQkg ICAgIChvdXRlci12YXIgKHZhcmlhYmxlIHBvbHkxKSkpCgkJCSM7KHNob3cgI3QgIklubmVyLWxl dDogb3V0ZXItdmFyPSIgKGRpc3BsYXllZCBvdXRlci12YXIpICJcbiIpCgkJCShsZXQgbG9vcCAo KHRlcm1zICh0ZXJtLWxpc3QgcG9seTEpKSkKCQkJICAjOyhzaG93ICN0ICJuLXA/LWxvb3A6IHRl cm1zPSIgKGRpc3BsYXllZCB0ZXJtcykgIlxuIikKCQkJICAoY29uZCAoKG51bGw/IHRlcm1zKSAj dCkKCQkJCSgobm90IChwb2x5bm9taWFsPyAoY29lZmYgKGZpcnN0LXRlcm0gdGVybXMpKSkpIChs b29wIChyZXN0LXRlcm1zIHRlcm1zKSkpCgkJCQkoKG5vdCAodmFyaWFibGVfMS1vcmRlcjx2YXJp YWJsZV8yLW9yZGVyIAoJCQkJICAgICBvdXRlci12YXIKCQkJCSAgICAgKHZhcmlhYmxlIChjb250 ZW50cyAoY29lZmYgKGZpcnN0LXRlcm0gdGVybXMpKSkpKSkgKGJlZ2luICM7KHNob3cgI3QgIndy b25nIHZhcmlhYmxlIG9yZGVyIFxuIikgI2YpKQoJCQkJKChub3QgKG5vcm1hbC1wb2x5bm9taWFs PyAoY29lZmYgKGZpcnN0LXRlcm0gdGVybXMpKSkpIChiZWdpbiAjOyhzaG93ICN0ICJub3Qgbm9y bWFsIHBvbHlcbiIpICNmKSkKCQkJCShlbHNlIChsb29wIChyZXN0LXRlcm1zIHRlcm1zKSkpKSkK CQkJKSkpKQoJKGRlZmluZSAobm9ybWFsaXplLW9uY2UgcG9seSkKCSAgIzsoc2hvdyAjdCAibm9y bWFsaXplLW9uY2UgcG9seT0gIiAoZGlzcGxheWVkIHBvbHkpICJcbiIpCgkgIChpZiAoemVybz8g cG9seSkKCSAgICAgIHBvbHkKCSAgICAgIChsZXQqICgocG9seTEgKGNvbnRlbnRzIHBvbHkpKQoJ CSAgICAgKGZpcnN0LW1vbm9taWFsICh0YWcKCQkJCSAgICAgIChtYWtlLXBvbHkKCQkJCSAgICAg ICAodmFyaWFibGUgcG9seTEpCgkJCQkgICAgICAgKGxpc3QgKG1ha2UtdGVybQoJCQkJCSAgICAg IChvcmRlciAoZmlyc3QtdGVybSAodGVybS1saXN0IHBvbHkxKSkpCgkJCQkJICAgICAgKGlmIChw b2x5bm9taWFsPyAoY29lZmYgKGZpcnN0LXRlcm0gKHRlcm0tbGlzdCBwb2x5MSkpKSkKCQkJCQkJ ICAobm9ybWFsaXplLW9uY2UgKGNvZWZmIChmaXJzdC10ZXJtICh0ZXJtLWxpc3QgcG9seTEpKSkp CgkJCQkJCSAgKGNvZWZmIChmaXJzdC10ZXJtICh0ZXJtLWxpc3QgcG9seTEpKSkpKSkpKSkpCgkJ Izsoc2hvdyAjdCAicC0+cy1vLWYtYS1yOiAiIChkaXNwbGF5ZWQgZmlyc3QtbW9ub21pYWwpICJc biIpCgkJKGFkZAoJCSAoaWYgKGFuZCAocG9seW5vbWlhbD8KCQkJIChjb2VmZgoJCQkgIChmaXJz dC10ZXJtCgkJCSAgICh0ZXJtLWxpc3QKCQkJICAgIChjb250ZW50cyBmaXJzdC1tb25vbWlhbCkp KSkpCgkJCSh2YXJpYWJsZV8xLW9yZGVyPHZhcmlhYmxlXzItb3JkZXIKCQkJICh2YXJpYWJsZQoJ CQkgIChjb250ZW50cwoJCQkgICAoY29lZmYKCQkJICAgIChmaXJzdC10ZXJtCgkJCSAgICAgKHRl cm0tbGlzdAoJCQkgICAgICAoY29udGVudHMgZmlyc3QtbW9ub21pYWwpKSkpKSkKCQkJICh2YXJp YWJsZQoJCQkgIChjb250ZW50cyBmaXJzdC1tb25vbWlhbCkpKSkKCQkgICAgIChtb25vbWlhbC1m bGlwLXZhcmlhYmxlcyBmaXJzdC1tb25vbWlhbCkKCQkgICAgIGZpcnN0LW1vbm9taWFsKQoJCSAg KHBvbHlub21pYWwtPnN1bS1vZi1maXJzdC1hbmQtcmVzdAoJCSAgICh0YWcgKG1ha2UtcG9seSAo dmFyaWFibGUgcG9seTEpIChyZXN0LXRlcm1zICh0ZXJtLWxpc3QgcG9seTEpKSkpKSkpKSkKCgko c2hvdyAjdCAiVGVzdDIxOiBub3JtYWwtcG9seW5vbWlhbD86c3RhcnQ6ICIgKGRpc3BsYXllZCAo bWFrZS1wb2x5bm9taWFsICd5CgkJCQkJICAgICAgIChsaXN0IChtYWtlLXRlcm0gMiAobWFrZS1w b2x5bm9taWFsCgkJCQkJCQkJICAgJ3gKCQkJCQkJICAgICAobGlzdCAobWFrZS10ZXJtIDIgMSkg KG1ha2UtdGVybSAwIDEpKSkpCgkJCQkJCSAgICAgKG1ha2UtdGVybSAwIDIpKSkpICJcbiIpCgko c2hvdyAjdCAiVGVzdDIxOiBub3JtYWwtcG9seW5vbWlhbD86cmVzdWx0OiIgKG5vcm1hbC1wb2x5 bm9taWFsPyAobWFrZS1wb2x5bm9taWFsICd5CgkJCQkJICAgICAgIChsaXN0IChtYWtlLXRlcm0g MiAobWFrZS1wb2x5bm9taWFsCgkJCQkJCQkJICAgJ3gKCQkJCQkJICAgICAobGlzdCAobWFrZS10 ZXJtIDIgMSkgKG1ha2UtdGVybSAwIDEpKSkpCgkJCQkJCSAgICAgKG1ha2UtdGVybSAwIDIpKSkp ICJcbiIpCgkoc2hvdyAjdCAiVGVzdDIyOiBub3JtYWwtcG9seW5vbWlhbD8tZ29vZDpzdGFydDog IgoJICAgICAgKGRpc3BsYXllZAoJICAgICAgIChtYWtlLXBvbHlub21pYWwgJ3gKCQkJCShsaXN0 IChtYWtlLXRlcm0gMiAobWFrZS1wb2x5bm9taWFsCgkJCQkJCSAgICAneQoJCQkJCQkgICAgKGxp c3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0gMCAxKSkpKQoJCQkJICAgICAgKG1ha2UtdGVy bSAwIDIpKSkpICJcbiIpCgkoc2hvdyAjdCAiVGVzdDIyOiBub3JtYWwtcG9seW5vbWlhbD8tZ29v ZDpyZXN1bHQ6IgoJICAgICAgKG5vcm1hbC1wb2x5bm9taWFsPwoJICAgICAgIChtYWtlLXBvbHlu b21pYWwgJ3gKCQkJCShsaXN0IChtYWtlLXRlcm0gMiAobWFrZS1wb2x5bm9taWFsCgkJCQkJCSAg ICAneQoJCQkJCQkgICAgKGxpc3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0gMCAxKSkpKQoJ CQkJICAgICAgKG1ha2UtdGVybSAwIDIpKSkpICJcbiIpCgoJKHNob3cgI3QgIlRlc3QyMzppbnB1 dDogbm9ybWFsaXppbmcgYSBiYWQgcG9seW5vbWlhbDogIgoJICAgICAgKG1ha2UtcG9seW5vbWlh bCAneQoJCQkJIChsaXN0IChtYWtlLXRlcm0gMiAobWFrZS1wb2x5bm9taWFsCgkJCQkJCSAgICAg J3gKCQkJCQkJICAgICAobGlzdCAobWFrZS10ZXJtIDIgMSkgKG1ha2UtdGVybSAwIDEpKSkpCgkJ CQkgICAgICAgKG1ha2UtdGVybSAwIDIpKSkgIlxuIikKCShzaG93ICN0ICJUZXN0MjM6cmVzdWx0 OiBub3JtYWxpemluZyBhIGJhZCBwb2x5bm9taWFsOiAiCgkgICAgICAobm9ybWFsaXplLW9uY2Ug KG1ha2UtcG9seW5vbWlhbCAneQoJCQkJCSAgICAgICAobGlzdCAobWFrZS10ZXJtIDIgKG1ha2Ut cG9seW5vbWlhbAoJCQkJCQkJCSAgICd4CgkJCQkJCSAgICAgKGxpc3QgKG1ha2UtdGVybSAyIDEp IChtYWtlLXRlcm0gMCAxKSkpKQoJCQkJCQkgICAgIChtYWtlLXRlcm0gMCAyKSkpKSAiXG4iKQoJ KHNob3cgI3QgIlRlc3QyNDppbnB1dDogbm9ybWFsaXppbmcgYSBiYWQgcG9seW5vbWlhbDogIgoJ ICAgICAgKG1ha2UtcG9seW5vbWlhbCAneAoJCQkJIChsaXN0IChtYWtlLXRlcm0gMiAobWFrZS1w b2x5bm9taWFsCgkJCQkJCSAgICAgJ3gKCQkJCQkJICAgICAobGlzdCAobWFrZS10ZXJtIDIgMSkg KG1ha2UtdGVybSAwIDEpKSkpCgkJCQkgICAgICAgKG1ha2UtdGVybSAwIDIpKSkgIlxuIikKCShz aG93ICN0ICJUZXN0MjQ6cmVzdWx0OiBub3JtYWxpemluZyBhIGJhZCBwb2x5bm9taWFsOiAiCgkg ICAgICAobm9ybWFsaXplLW9uY2UgKG1ha2UtcG9seW5vbWlhbCAneAoJCQkJCSAgICAgICAobGlz dCAobWFrZS10ZXJtIDIgKG1ha2UtcG9seW5vbWlhbAoJCQkJCQkJCSAgICd4CgkJCQkJCSAgICAg KGxpc3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0gMCAxKSkpKQoJCQkJCQkgICAgIChtYWtl LXRlcm0gMCAyKSkpKSAiXG4iKQoKCgkoc2hvdyAjdCAiVGVzdDI0OmlucHV0OiBub3JtYWxpemUt ZnVsbHkgYSBiYWQgcG9seW5vbWlhbDogIgoJICAgICAgKG1ha2UtcG9seW5vbWlhbCAneQoJCQkJ IChsaXN0IChtYWtlLXRlcm0gMiAobWFrZS1wb2x5bm9taWFsCgkJCQkJCSAgICAgJ3gKCQkJCQkJ ICAgICAobGlzdCAobWFrZS10ZXJtIDIgMSkgKG1ha2UtdGVybSAwIDEpKSkpCgkJCQkgICAgICAg KG1ha2UtdGVybSAwIDIpKSkgIlxuIikKCShzaG93ICN0ICJUZXN0MjQ6cmVzdWx0OiBub3JtYWxp emUtZnVsbHkgYSBiYWQgcG9seW5vbWlhbDogIgoJICAgICAgKG5vcm1hbGl6ZS1mdWxseSAobWFr ZS1wb2x5bm9taWFsICd5CgkJCQkJICAgICAgIChsaXN0IChtYWtlLXRlcm0gMiAobWFrZS1wb2x5 bm9taWFsCgkJCQkJCQkJICAgJ3gKCQkJCQkJICAgICAobGlzdCAobWFrZS10ZXJtIDIgMSkgKG1h a2UtdGVybSAwIDEpKSkpCgkJCQkJCSAgICAgKG1ha2UtdGVybSAwIDIpKSkpICJcbiIpCgoKCgkn ZG9uZSkKCgogICAgICAoZGVmaW5lIChpbnN0YWxsLXBvbHlub21pYWwtc3BhcnNlLXBhY2thZ2Up CgkoZGVmaW5lIChjb2VmZiB0ZXJtKSAoY2FkciB0ZXJtKSkKCShkZWZpbmUgKGZpcnN0LXRlcm0t c3BhcnNlIHRlcm0tbGlzdCkgKGNhciB0ZXJtLWxpc3QpKQoJKGRlZmluZSAoYWRqb2luLXRlcm0t c3BhcnNlIHRlcm0gdGVybS1saXN0KQoJICAoaWYgKHplcm8/IChjb2VmZiB0ZXJtKSkKCSAgICAg IHRlcm0tbGlzdAoJICAgICAgKGNvbnMgdGVybSB0ZXJtLWxpc3QpKSkKCShwdXQgJ2Fkam9pbi10 ZXJtICdzcGFyc2UgYWRqb2luLXRlcm0tc3BhcnNlKQoJKHB1dCAnZmlyc3QtdGVybSAnc3BhcnNl IGZpcnN0LXRlcm0tc3BhcnNlKQoJJ2RvbmUpCiAgICAgIChpbnN0YWxsLXBvbHlub21pYWwtc3Bh cnNlLXBhY2thZ2UpCgogICAgICAoZGVmaW5lIChpbnN0YWxsLXBvbHlub21pYWwtZGVuc2UtcGFj a2FnZSkKCShkZWZpbmUgKG1ha2UtdGVybSBvcmRlciBjb2VmZikgKGxpc3Qgb3JkZXIgY29lZmYp KQoJKGRlZmluZSAob3JkZXIgdGVybSkgKGNhciB0ZXJtKSkKCShkZWZpbmUgKGNvZWZmIHRlcm0p IChjYWRyIHRlcm0pKQoKCShkZWZpbmUgKGFkam9pbi10ZXJtLWRlbnNlIHRlcm0gdGVybS1saXN0 KQoJICAgIChpZiAoemVybz8gKGNvZWZmIHRlcm0pKQoJCXRlcm0tbGlzdAoJCShpZiAoPiAob3Jk ZXIgdGVybSkgKGxlbmd0aCB0ZXJtLWxpc3QpKQoJCSAgICAoYXBwZW5kIChsaXN0IChjb2VmZiB0 ZXJtKSkKCQkJICAgIChtYWtlLWxpc3QgKC0gKG9yZGVyIHRlcm0pIChsZW5ndGggdGVybS1saXN0 KSkgMCkKCQkJICAgIHRlcm0tbGlzdCkKCQkgICAgKGVycm9yICJhZGpvaW4tdGVybTpBcHBlbmRp bmcgYSBzbWFsbGVyIG9yZGVyIHRlcm0uIFJlY2hlY2suIikpKSkKCShkZWZpbmUgKGZpcnN0LXRl cm0tZGVuc2UgdGVybS1saXN0KSAKCSAgICM7KHNob3cgI3QgImZpcnN0LXRlcm0tZGVuc2U6ICIg KGRpc3BsYXllZCAobWFrZS10ZXJtIChjYXIgdGVybS1saXN0KSAobGVuZ3RoIChjZHIgdGVybS1s aXN0KSkpKSAiXG4iKQoJICAgKG1ha2UtdGVybSAobGVuZ3RoIChjZHIgdGVybS1saXN0KSkgKGNh ciB0ZXJtLWxpc3QpICkpCgkocHV0ICdhZGpvaW4tdGVybSAnZGVuc2UgYWRqb2luLXRlcm0tZGVu c2UpCgkocHV0ICdmaXJzdC10ZXJtICdkZW5zZSBmaXJzdC10ZXJtLWRlbnNlKQoJJ2RvbmUpCiAg ICAgICM7KGluc3RhbGwtcG9seW5vbWlhbC1kZW5zZS1wYWNrYWdlKQoKICAgICAgKGRlZmluZSAo bWFrZS1wb2x5bm9taWFsIHZhciB0ZXJtcykKCSgoZ2V0ICdtYWtlICdwb2x5bm9taWFsKSB2YXIg dGVybXMpKQoKICAgIChpbnN0YWxsLXBvbHlub21pYWwtcGFja2FnZSkKCgogICAgICAjOyhzaG93 ICN0ICJUZXN0IDI6IE1ha2luZyBwb2x5bm9taWFsczogIiAKCSAgICAobWFrZS1wb2x5bm9taWFs ICd4IChsaXN0IChsaXN0IDUgMSkgKGxpc3QgNCAyKSkpICJcbiIpCiAgICAgICM7KHNob3cgI3Qg IlRlc3QgMzogWmVybz86ICIgCgkgICAgKHplcm8/IChtYWtlLXBvbHlub21pYWwgJ3ggKGxpc3Qg KGxpc3QgNSAxKSAobGlzdCA0IDIpKSkpICJcbiIpCiAgICAgICM7KHNob3cgI3QgIlRlc3QgNDog QWRkaW5nIHBvbHlub21pYWxzOiAiCgkgICAgKGFkZCAobWFrZS1wb2x5bm9taWFsICd4ICcoKDUg MSkgKDQgMikgKDAgMSkpKQoJCSAobWFrZS1wb2x5bm9taWFsICd4ICcoKDUgMSkpKSkgIlxuIikK ICAgICAgIzsoc2hvdyAjdCAiVGVzdCA0OiBaZXJvPzogIiAoemVybz8gKG1ha2UtcG9seW5vbWlh bCAneCAnKCg1IDApICgzIDEpKSkpICJcbiIpCgogICAgICAjOyhzaG93ICN0ICJUZXN0IDU6IFN1 YnRyYWN0aW5nIHBvbHlub21pYWxzOiAiCgkgICAgKHN1YiAobWFrZS1wb2x5bm9taWFsICd4ICco KDUgMSkgKDQgMikgKDAgMSkpKQoJCSAobWFrZS1wb2x5bm9taWFsICd4ICcoKDAgMSkpKSkgIlxu IikKCiAgICAgICM7KHNob3cgI3QgIlRlc3QgNjogTWFraW5nIGEgZGVuc2UgcG9seW5vbWlhbDog IiAobWFrZS1wb2x5bm9taWFsICd4ICcoMSAyIDMgNCA1KSkgIlxuIikKICAgICAgIzsoc2hvdyAj dCAiVGVzdCA3OiB6ZXJvPyBkZW5zZSBwb2x5bm9taWFsOiAiIChkaXNwbGF5ZWQgKHplcm8/ICht YWtlLXBvbHlub21pYWwgJ3ggJygwKSkpKSAiXG4iKQogICAgICAjOyhzaG93ICN0ICJUZXN0IDg6 IHplcm8/IGRlbnNlIHBvbHlub21pYWw6ICIgKGRpc3BsYXllZCAoemVybz8gKG1ha2UtcG9seW5v bWlhbCAneCAnKDEpKSkpICJcbiIpCiAgICAgICM7KHNob3cgI3QgIlRlc3QgOTogQWRkaW5nIGRl bnNlIHBvbHlub21pYWxzOiAiCgkgICAgKGFkZCAobWFrZS1wb2x5bm9taWFsICd4ICcoMSAyIDAg MCAwIDEpKQoJCSAobWFrZS1wb2x5bm9taWFsICd4ICcoMSAwIDAgMCAwIDApKSkgIlxuIikKICAg ICAgIzsoc2hvdyAjdCAiVGVzdDEwOiBTdWJ0cmFjdGluZyBkZW5zZSBwb2x5bm9taWFsczogIgoJ ICAgIChzdWIgKG1ha2UtcG9seW5vbWlhbCAneCAnKDEgMiAwIDAgMCAxKSkKCQkgKG1ha2UtcG9s eW5vbWlhbCAneCAnKDEgMCAwIDAgMCAwKSkpICJcbiIpCiAgICAgICM7KHNob3cgI3QgIlRlc3Qx MTogU3VidHJhY3RpbmcgZGVuc2UgYW5kIHNwYXJzZSBwb2x5bm9taWFsczogIgoJICAgIChzdWIg KG1ha2UtcG9seW5vbWlhbCAneCAnKDEgMiAwIDAgMCAxKSkKCQkgKG1ha2UtcG9seW5vbWlhbCAn eCAnKCg0IDIpKSkpICJcbiIpCiAgICAgICM7KHNob3cgI3QgIlRlc3QxMjogRGl2aWRpbmcgeF4y ICsgMnggKyAxIGJ5IHgrMTogIgoJICAgIChkaXNwbGF5ZWQKCSAgICAgKGRpdiAobWFrZS1wb2x5 bm9taWFsICd4ICcoKDIgMSkgKDEgMikgKDAgMSkpKQoJCSAgKG1ha2UtcG9seW5vbWlhbCAneCAn KCAgICAgICgxIDEpICgwIDEpKSkpICkgIlxuIikKICAgICAgIzsoc2hvdyAjdCAiVGVzdDE0OiBB ZGRpbmcgcG9seW5vbWlhbHMgb2YgdHdvIHZhcmlhYmxlczogIgoJICAgIChkaXNwbGF5ZWQKCSAg ICAgKGFkZCAobWFrZS1wb2x5bm9taWFsICd4ICcoKDEgMSkpKQoJCSAgKG1ha2UtcG9seW5vbWlh bCAneSAnKCgxIDEpKSkpKSkKICAgICAgIzsoc2hvdyAjdCAiVGVzdDE0OiBBZGRpbmcgcG9seW5v bWlhbHMgb2YgdHdvIHZhcmlhYmxlcywgd2hlbiBvbmUgb2YgdGhlbSBpcyBub25leGlzdGFudDog IgoJICAgIChkaXNwbGF5ZWQKCSAgICAgKGFkZCAobWFrZS1wb2x5bm9taWFsICd4ICcoKDEgMSkp KQoJCSAgKG1ha2UtcG9seW5vbWlhbCAneSAnKCgwIDEpKSkpKSkKICAgIChzaG93ICN0ICJUZXN0 MjU6IG11bHRpcGx5aW5nIGRpZmZlcmVudCB2YXJpYWJsZXM6ICIKCSAgKGRpc3BsYXllZCAobXVs IChtYWtlLXBvbHlub21pYWwgJ3ggJygoMSAxKSkpCgkJCSAgKG1ha2UtcG9seW5vbWlhbCAneSAn KCgxIDEpKSkpKSAiXG4iKQoKICAoZGVmaW5lIHAxIChtYWtlLXBvbHlub21pYWwgJ3ggJygoMiAx KSAoMCAxKSkpKQogIChkZWZpbmUgcDIgKG1ha2UtcG9seW5vbWlhbCAneCAnKCgzIDEpICgwIDEp KSkpCiAgKGRlZmluZSByZiAobWFrZS1yYXRpb25hbCBwMiBwMSkpCiAgKHNob3cgI3QgIlRlc3Qg MjY6IG1ha2UtcmF0aW9uYWwtcG9seW5vbWlhbDogIiByZiAiXG4iKQogIChzaG93ICN0ICJUZXN0 IDI3OiBhZGQtcmF0aW9uYWxcbiIpCiAgKHNob3cgI3QgIlRlc3QgMjc6ICIgKGFkZCByZiByZikg IlxuIikKIytlbmRfc3JjCgojK1JFU1VMVFM6CiMrYmVnaW5fZXhhbXBsZQpUZXN0OiBIaWdoZXIg dGhhbiAnaW50ZWdlcjogc2NoZW1lLW51bWJlcgpUZXN0IDE6IFN1YnRyYWN0aW5nIGNvbXBsZXgg bnVtYmVyczogKHNjaGVtZS1udW1iZXIgLiAxLjEpClRlc3RZMjogcG9seSBvZiBwb2x5OiAoeCAo MyAoeSAoMSAxKSAoMCAxKSkpICgxIDIpICgwIDQpKQpUZXN0MTM6IEV4cGFuZGluZyBhIHBvbHlu b21pYWwgYXMgbW9ub21pYWxzOiAocG9seW5vbWlhbCB4ICgyIChwb2x5bm9taWFsIHkgKDIgMSkp KSAoMCAocG9seW5vbWlhbCB5ICgyIDEpICgwIDIpKSkpCgpUZXN0MjA6IHN0YXJ0IG1vbm9taWFs OiAocG9seW5vbWlhbCB4ICgyIChwb2x5bm9taWFsIHkgKDIgMSkgKDAgMSkpKSkKVGVzdDIwOiBG bGlwcGluZyBhIG1vbm9taWFsIHZhcmlhYmxlOiAocG9seW5vbWlhbCB5ICgyIChwb2x5bm9taWFs IHggKDEgMSkpKSAoMCAocG9seW5vbWlhbCB4ICgxIDEpKSkpCgpUZXN0MjE6IG5vcm1hbC1wb2x5 bm9taWFsPzpzdGFydDogKHBvbHlub21pYWwgeSAoMiAocG9seW5vbWlhbCB4ICgyIDEpICgwIDEp KSkgKDAgMikpClRlc3QyMTogbm9ybWFsLXBvbHlub21pYWw/OnJlc3VsdDojZgpUZXN0MjI6IG5v cm1hbC1wb2x5bm9taWFsPy1nb29kOnN0YXJ0OiAocG9seW5vbWlhbCB4ICgyIChwb2x5bm9taWFs IHkgKDIgMSkgKDAgMSkpKSAoMCAyKSkKVGVzdDIyOiBub3JtYWwtcG9seW5vbWlhbD8tZ29vZDpy ZXN1bHQ6I3QKVGVzdDIzOmlucHV0OiBub3JtYWxpemluZyBhIGJhZCBwb2x5bm9taWFsOiAocG9s eW5vbWlhbCB5ICgyIChwb2x5bm9taWFsIHggKDIgMSkgKDAgMSkpKSAoMCAyKSkKVGVzdDIzOnJl c3VsdDogbm9ybWFsaXppbmcgYSBiYWQgcG9seW5vbWlhbDogKHBvbHlub21pYWwgeCAoMiAocG9s eW5vbWlhbCB5ICgyIDEpKSkgKDAgKHBvbHlub21pYWwgeSAoMiAxKSAoMCAyKSkpKQpUZXN0MjQ6 aW5wdXQ6IG5vcm1hbGl6aW5nIGEgYmFkIHBvbHlub21pYWw6IChwb2x5bm9taWFsIHggKDIgKHBv bHlub21pYWwgeCAoMiAxKSAoMCAxKSkpICgwIDIpKQpUZXN0MjQ6cmVzdWx0OiBub3JtYWxpemlu ZyBhIGJhZCBwb2x5bm9taWFsOiAocG9seW5vbWlhbCB4ICg0IDEpICgyIDEpICgwIDIpKQpUZXN0 MjQ6aW5wdXQ6IG5vcm1hbGl6ZS1mdWxseSBhIGJhZCBwb2x5bm9taWFsOiAocG9seW5vbWlhbCB5 ICgyIChwb2x5bm9taWFsIHggKDIgMSkgKDAgMSkpKSAoMCAyKSkKVGVzdDI0OnJlc3VsdDogbm9y bWFsaXplLWZ1bGx5IGEgYmFkIHBvbHlub21pYWw6IChwb2x5bm9taWFsIHggKDIgKHBvbHlub21p YWwgeSAoMiAxKSkpICgwIChwb2x5bm9taWFsIHkgKDIgMSkgKDAgMikpKSkKVGVzdDI1OiBtdWx0 aXBseWluZyBkaWZmZXJlbnQgdmFyaWFibGVzOiAocG9seW5vbWlhbCB4ICgxIChwb2x5bm9taWFs IHkgKDEgMSkpKSkKVGVzdCAyNjogbWFrZS1yYXRpb25hbC1wb2x5bm9taWFsOiAocmF0aW9uYWwg KHBvbHlub21pYWwgeCAoMyAxKSAoMCAxKSkgcG9seW5vbWlhbCB4ICgyIDEpICgwIDEpKQpUZXN0 IDI3OiBhZGQtcmF0aW9uYWwKcmF0aW9uYWwgbm90IGRyb3BwYWJsZTogI2YKVGVzdCAyNzogKHJh dGlvbmFsIChwb2x5bm9taWFsIHggKDUgMikgKDMgMikgKDIgMikgKDAgMikpIHBvbHlub21pYWwg eCAoNCAxKSAoMiAyKSAoMCAxKSkKIytlbmRfZXhhbXBsZQoKKioqIERPTkUgRXhlcmNpc2UgMi45 NCBHcmVhdGVzdC1jb21tb24tZGl2aXNvciBmb3IgcG9seW5vbWlhbHMKICAgIENMT1NFRDogWzIw MTktMTAtMjggTW9uIDAwOjQ3XQoKSSB3aWxsIHN0aWxsIGNvcHkgdGhlIHNvdXJjZSBjb2RlIG9m IHRoZSB3aG9sZSBDb21wdXRlciBBbGdlYnJhIFN5c3RlbSwKYmVjYXVzZSBleHRlbmRpbmcgdGhl IHN5c3RlbSB3aXRoIGEgR0NEIHN1YnJvdXRpbmUgd291bGQgcmVxdWlyZSBhZGRpbmcKZnVuY3Rp b25zIHRvIHRoZSBwb2x5bm9taWFsIHBhY2thZ2UsIHdoaWNoIGNhbm5vdCBiZSBkb25lIHdpdGgg YSBtZXJlCmluY2x1ZGUuCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0 cyBvdXRwdXQgOm5vd2ViLXJlZiBjYXMtd2l0aC1yYXRpb25hbC1wb2x5bm9taWFscwogICAgKGRl ZmluZSAodGhpbmd5LXNvdXJjZSB0aGluZ3kpCiAgICAgIChjb25kICgobGFtYmRhPyB0aGluZ3kp IChsaXN0ICJsYW1iZGEiIChsYW1iZGEtc291cmNlIHRoaW5neSkpKQoJICAgICgocHJvY2VkdXJl PyB0aGluZ3kpIChsaXN0ICJwcm9jZWR1cmUiIChwcm9jZWR1cmUtbmFtZSB0aGluZ3kpKSkKCSAg ICAoKHBhaXI/IHRoaW5neSkgKGxpc3QgInBhaXIiIChwYWlyLXNvdXJjZSB0aGluZ3kpKSkKCSAg ICAoZWxzZSAiTm8gc291cmNlPyByZWZhY3RvciIpKSkKCiAgICAgIChkZWZpbmUgKGFjY3VtdWxh dGUgb3AgaW5pdGlhbCBzZXF1ZW5jZSkKCShpZiAobnVsbD8gc2VxdWVuY2UpCgkgICAgaW5pdGlh bAoJICAgIChhY2N1bXVsYXRlIG9wIChvcCBpbml0aWFsIChjYXIgc2VxdWVuY2UpKSAoY2RyIHNl cXVlbmNlKSkpKQogICAgICAoZGVmaW5lIGZhbHNlICNmKQogICAgICAoZGVmaW5lIHRydWUgICN0 KQogICAgICAoZGVmaW5lIChtYWtlLXRhYmxlKQoJKGxldCAoKGxvY2FsLXRhYmxlIChsaXN0ICcq dGFibGUqKSkpCgkgIChkZWZpbmUgKGxvb2t1cCBrZXktMSBrZXktMikKCSAgICAobGV0ICgoc3Vi dGFibGUgKGFzc29jIGtleS0xIChjZHIgbG9jYWwtdGFibGUpKSkpCgkgICAgICAoaWYgc3VidGFi bGUKCQkgIChsZXQgKChyZWNvcmQgKGFzc29jIGtleS0yIChjZHIgc3VidGFibGUpKSkpCgkJICAg IChpZiByZWNvcmQKCQkJKGNkciByZWNvcmQpCgkJCWZhbHNlKSkKCQkgIGZhbHNlKSkpCgkgIChk ZWZpbmUgKGluc2VydCEga2V5LTEga2V5LTIgdmFsdWUpCgkgICAgKGxldCAoKHN1YnRhYmxlIChh c3NvYyBrZXktMSAoY2RyIGxvY2FsLXRhYmxlKSkpKQoJICAgICAgKGlmIHN1YnRhYmxlCgkJICAo bGV0ICgocmVjb3JkIChhc3NvYyBrZXktMiAoY2RyIHN1YnRhYmxlKSkpKQoJCSAgICAoaWYgcmVj b3JkCgkJCShzZXQtY2RyISByZWNvcmQgdmFsdWUpCgkJCShzZXQtY2RyISBzdWJ0YWJsZQoJCQkJ ICAoY29ucyAoY29ucyBrZXktMiB2YWx1ZSkKCQkJCQkoY2RyIHN1YnRhYmxlKSkpKSkKCQkgIChz ZXQtY2RyISBsb2NhbC10YWJsZQoJCQkgICAgKGNvbnMgKGxpc3Qga2V5LTEKCQkJCQkoY29ucyBr ZXktMiB2YWx1ZSkpCgkJCQkgIChjZHIgbG9jYWwtdGFibGUpKSkpKQoJICAgICdvaykKCSAgKGRl ZmluZSAoZGlzcGF0Y2ggbSkKCSAgICAoY29uZCAoKGVxPyBtICdsb29rdXAtcHJvYykgbG9va3Vw KQoJCSAgKChlcT8gbSAnaW5zZXJ0LXByb2MhKSBpbnNlcnQhKQoJCSAgKGVsc2UgKGVycm9yICJV bmtub3duIG9wZXJhdGlvbiAtLSBUQUJMRSIgbSkpKSkKCSAgZGlzcGF0Y2gpKQoKICAgICAgKGRl ZmluZSBvcGVyYXRpb24tdGFibGUgKG1ha2UtdGFibGUpKQogICAgICAoZGVmaW5lIGdldCAob3Bl cmF0aW9uLXRhYmxlICdsb29rdXAtcHJvYykpCiAgICAgIChkZWZpbmUgcHV0IChvcGVyYXRpb24t dGFibGUgJ2luc2VydC1wcm9jISkpCgogICAgICAoZGVmaW5lIGNvZXJjaW9uLXRhYmxlIChtYWtl LXRhYmxlKSkKICAgICAgKGRlZmluZSBnZXQtY29lcmNpb24gKGNvZXJjaW9uLXRhYmxlICdsb29r dXAtcHJvYykpCiAgICAgIChkZWZpbmUgcHV0LWNvZXJjaW9uIChjb2VyY2lvbi10YWJsZSAnaW5z ZXJ0LXByb2MhKSkKCiAgICAgIChkZWZpbmUgKGF0dGFjaC10YWcgdHlwZS10YWcgY29udGVudHMp CgkoY29ucyB0eXBlLXRhZyBjb250ZW50cykpCgogICAgICAoZGVmaW5lICh0eXBlLXRhZyBkYXR1 bSkKCShjb25kICgocGFpcj8gZGF0dW0pIChjYXIgZGF0dW0pKQoJICAgICAgKChleGFjdC1pbnRl Z2VyPyBkYXR1bSkgJ2ludGVnZXIpCgkgICAgICAoKHJlYWw/IGRhdHVtKSAnc2NoZW1lLW51bWJl cikKCSAgICAgIChlcnJvciAiQmFkIHRhZ2dlZCBkYXR1bSAtLSBUWVBFLVRBRyIgZGF0dW0pKSkK CiAgICAoZGVmaW5lIChjb250ZW50cyBkYXR1bSkKCShjb25kICgocGFpcj8gZGF0dW0pIChjZHIg ZGF0dW0pKQoJICAgICAgKChpbnRlZ2VyPyBkYXR1bSkgZGF0dW0pCgkgICAgICAoKHJlYWw/IGRh dHVtKSBkYXR1bSkKCSAgICAgIChlbHNlIChlcnJvciAiQmFkIHRhZ2dlZCBkYXR1bSAtLSBDT05U RU5UUyIgZGF0dW0pKSkpCgogICAgICAoZGVmaW5lIChpbnRlZ2VyPyB4KQoJKGVxPyAodHlwZS10 YWcgeCkgJ2ludGVnZXIpKQogICAgICAoZGVmaW5lIChyZWN0YW5ndWxhcj8geikKCShlcT8gKHR5 cGUtdGFnIHopICdyZWN0YW5ndWxhcikpCgogICAgICAoZGVmaW5lIChwb2xhcj8geikKCShlcT8g KHR5cGUtdGFnIHopICdwb2xhcikpCgoKICAgICAgKGRlZmluZSAocmVhbC1wYXJ0IHopIChhcHBs eS1nZW5lcmljICdyZWFsLXBhcnQgeikpCiAgICAgIChkZWZpbmUgKGltYWctcGFydCB6KSAoYXBw bHktZ2VuZXJpYyAnaW1hZy1wYXJ0IHopKQogICAgICAoZGVmaW5lIChtYWduaXR1ZGUgeikgKGFw cGx5LWdlbmVyaWMgJ21hZ25pdHVkZSB6KSkKICAgICAgKGRlZmluZSAoYW5nbGUgeikgKGFwcGx5 LWdlbmVyaWMgJ2FuZ2xlIHopKQoKICAgICAgKGRlZmluZSAoYWRkIHggeSkgKGFwcGx5LWdlbmVy aWMgJ2FkZCB4IHkpKQogICAgICAoZGVmaW5lIChzdWIgeCB5KSAoYXBwbHktZ2VuZXJpYyAnc3Vi IHggeSkpCiAgICAgIChkZWZpbmUgKG11bCB4IHkpIChhcHBseS1nZW5lcmljICdtdWwgeCB5KSkK ICAgICAgKGRlZmluZSAoZGl2IHggeSkgKGFwcGx5LWdlbmVyaWMgJ2RpdiB4IHkpKQoKICAgICAg KGRlZmluZSAoZXF1PyB4IHkpCgkoYXBwbHktZ2VuZXJpYyAnZXF1PyB4IHkpKQogICAgICAoZGVm aW5lICh6ZXJvPyB4KSAoYXBwbHktZ2VuZXJpYyAnemVybz8geCkpCgogICAgICAoZGVmaW5lIChl eHAgeCB5KSAoYXBwbHktZ2VuZXJpYyAnZXhwIHggeSkpCgogICAgICAoZGVmaW5lIChpbnN0YWxs LXNjaGVtZS1udW1iZXItcGFja2FnZSkKCShkZWZpbmUgKHRhZyB4KQoJICAoYXR0YWNoLXRhZyAn c2NoZW1lLW51bWJlciB4KSkKCShwdXQgJ2FkZCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJl cikKCSAgICAgKGxhbWJkYSAoeCB5KSAodGFnICgrIHggeSkpKSkKCShwdXQgJ3N1YiAnKHNjaGVt ZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAgICAgKGxhbWJkYSAoeCB5KSAodGFnICgtIHggeSkp KSkKCShwdXQgJ211bCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAgICAgKGxhbWJk YSAoeCB5KSAodGFnICgqIHggeSkpKSkKCShwdXQgJ2RpdiAnKHNjaGVtZS1udW1iZXIgc2NoZW1l LW51bWJlcikKCSAgICAgKGxhbWJkYSAoeCB5KSAodGFnICgvIHggeSkpKSkKCShwdXQgJ21ha2Ug J3NjaGVtZS1udW1iZXIKCSAgICAgKGxhbWJkYSAoeCkgKHRhZyB4KSkpCgkocHV0ICdlcXU/ICco c2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJICAgICAobGFtYmRhICh4IHkpICg9IHggeSkp KQoJKHB1dCAnemVybz8gJyhzY2hlbWUtbnVtYmVyKQoJICAgICAobGFtYmRhICh4KSAoPSAwIHgp KSkKCShwdXQgJ2V4cCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAgICAgKGxhbWJk YSAoeCB5KSAodGFnIChleHB0IHggeSkpKSkKCShwdXQgJ3Byb2plY3QgJyhzY2hlbWUtbnVtYmVy KQoJICAgICAobGFtYmRhICh4KQoJICAgICAgIChleGFjdCAodHJ1bmNhdGUgeCkpKSkKCShwdXQg J3NpbmUgJyhzY2hlbWUtbnVtYmVyKSBzaW4pCgkocHV0ICdjb3NpbmUgJyhzY2hlbWUtbnVtYmVy KSBjb3MpCgkocHV0ICdzcXVhcmUtcm9vdCAnKHNjaGVtZS1udW1iZXIpIHNxcnQpCgkocHV0ICdh cmN0YW5nZW50ICcoc2NoZW1lci1udW1iZXIpIGF0YW4pCgknZG9uZSkKCiAgICAgIChkZWZpbmUg KHNpbmUgeCkgKGFwcGx5LWdlbmVyaWMgJ3NpbmUgeCkpCiAgICAgIChkZWZpbmUgKGNvc2luZSB4 KSAoYXBwbHktZ2VuZXJpYyAnY29zaW5lIHgpKQogICAgICAoZGVmaW5lIChzcXVhcmUtcm9vdCB4 KSAoYXBwbHktZ2VuZXJpYyAnc3F1YXJlLXJvb3QgeCkpCiAgICAgIChkZWZpbmUgKGFyY3Rhbmdl bnQgeCkgKGFwcGx5LWdlbmVyaWMgJ2FyY3RhbmdlbnQgeCkpCgogICAgICAoZGVmaW5lIChtYWtl LXNjaGVtZS1udW1iZXIgbikKCSgoZ2V0ICdtYWtlICdzY2hlbWUtbnVtYmVyKSBuKSkKCiAgICAg IChkZWZpbmUgKGluc3RhbGwtcmF0aW9uYWwtcGFja2FnZSkKCShkZWZpbmUgKG51bWVyIHgpIChj YXIgeCkpCgkoZGVmaW5lIChkZW5vbSB4KSAoY2RyIHgpKQoJKGRlZmluZSAobWFrZS1yYXQgbiBk KQoJICAjOyhsZXQgKChnIChnY2QgbiBkKSkpCgkgICAgKGNvbnMgKC8gbiBnKSAoLyBkIGcpKSkK CSAgICAoY29ucyBuIGQpKQoJKGRlZmluZSAoYWRkLXJhdCB4IHkpCgkgIChtYWtlLXJhdCAoYWRk IChtdWwgKG51bWVyIHgpIChkZW5vbSB5KSkKCQkgICAgICAgKG11bCAobnVtZXIgeSkgKGRlbm9t IHgpKSkKCQkgICAgKG11bCAoZGVub20geCkgKGRlbm9tIHkpKSkpCgkoZGVmaW5lIChzdWItcmF0 IHggeSkKCSAgKG1ha2UtcmF0IChzdWIgKG11bCAobnVtZXIgeCkgKGRlbm9tIHkpKQoJCSAgICAg ICAobXVsIChudW1lciB5KSAoZGVub20geCkpKQoJCSAgICAobXVsIChkZW5vbSB4KSAoZGVub20g eSkpKSkKCShkZWZpbmUgKG11bC1yYXQgeCB5KQoJICAobWFrZS1yYXQgKG11bCAobnVtZXIgeCkg KG51bWVyIHkpKQoJCSAgICAobXVsIChkZW5vbSB4KSAoZGVub20geSkpKSkKCShkZWZpbmUgKGRp di1yYXQgeCB5KQoJICAobWFrZS1yYXQgKG11bCAobnVtZXIgeCkgKGRlbm9tIHkpKQoJCSAgICAo bXVsIChkZW5vbSB4KSAobnVtZXIgeSkpKSkKCgkoZGVmaW5lICh0YWcgeCkgKGF0dGFjaC10YWcg J3JhdGlvbmFsIHgpKQoJKHB1dCAnYWRkICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgICAgIChsYW1i ZGEgKHggeSkgKHRhZyAoYWRkLXJhdCB4IHkpKSkpCgkocHV0ICdzdWIgJyhyYXRpb25hbCByYXRp b25hbCkKCSAgICAgKGxhbWJkYSAoeCB5KSAodGFnIChzdWItcmF0IHggeSkpKSkKCShwdXQgJ211 bCAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJICAgICAobGFtYmRhICh4IHkpICh0YWcgKG11bC1yYXQg eCB5KSkpKQoJKHB1dCAnZGl2ICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgICAgIChsYW1iZGEgKHgg eSkgKHRhZyAoZGl2LXJhdCB4IHkpKSkpCgoJKHB1dCAnbWFrZSAncmF0aW9uYWwKCSAgICAgKGxh bWJkYSAobiBkKSAodGFnIChtYWtlLXJhdCBuIGQpKSkpCgkocHV0ICdlcXU/ICcocmF0aW9uYWwg cmF0aW9uYWwpCgkgICAgIChsYW1iZGEgKHggeSkgKHplcm8/IChudW1lciAoc3ViLXJhdCB4IHkp KSkpKQoJKHB1dCAnemVybz8gJyhyYXRpb25hbCkgKGxhbWJkYSAoeCkgKHplcm8/IChudW1lciB4 KSkpKQoJIzsocHV0ICdwcm9qZWN0ICcocmF0aW9uYWwpIChsYW1iZGEgKHgpIAoJCQkJICAgIChl eGFjdCAodHJ1bmNhdGUgKC8gKG51bWVyIHgpIChkZW5vbSB4KSkpKSkpCgkjOyhwdXQgJ3RvLXJl YWwgJyhyYXRpb25hbCkgKGxhbWJkYSAoeCkgKC8gKG51bWVyIChjb250ZW50cyB4KSkgKGRlbm9t IChjb250ZW50cyB4KSkpKSkKCSdkb25lKQoKICAgICAgKGRlZmluZSAobWFrZS1yYXRpb25hbCBu IGQpCgkoKGdldCAnbWFrZSAncmF0aW9uYWwpIG4gZCkpCgogICAgICAoZGVmaW5lIChpbnN0YWxs LXJlY3Rhbmd1bGFyLXBhY2thZ2UpCgoJKGRlZmluZSAocmVhbC1wYXJ0IHopIChjYXIgeikpCgko ZGVmaW5lIChpbWFnLXBhcnQgeikgKGNkciB6KSkKCShkZWZpbmUgKG1ha2UtZnJvbS1yZWFsLWlt YWcgeCB5KSAoY29ucyB4IHkpKQoJKGRlZmluZSAobWFnbml0dWRlIHopCgkgIChzcXVhcmUtcm9v dCAoYWRkIChzcXVhcmUgKHJlYWwtcGFydCB6KSkKCQkJICAgIChzcXVhcmUgKGltYWctcGFydCB6 KSkpKSkKCShkZWZpbmUgKGFuZ2xlIHopCgkgIChhcmN0YW5nZW50IChpbWFnLXBhcnQgeikgKHJl YWwtcGFydCB6KSkpCgkoZGVmaW5lIChtYWtlLWZyb20tbWFnLWFuZyByIGEpCgkgIChjb25zICht dWwgciAoY29zaW5lIGEpKSAobXVsIHIgKHNpbmUgYSkpKSkKCgkoZGVmaW5lICh0YWcgeCkgKGF0 dGFjaC10YWcgJ3JlY3Rhbmd1bGFyIHgpKQoJKHB1dCAncmVhbC1wYXJ0ICcocmVjdGFuZ3VsYXIp IHJlYWwtcGFydCkKCShwdXQgJ2ltYWctcGFydCAnKHJlY3Rhbmd1bGFyKSBpbWFnLXBhcnQpCgko cHV0ICdtYWduaXR1ZGUgJyhyZWN0YW5ndWxhcikgbWFnbml0dWRlKQoJKHB1dCAnYW5nbGUgJyhy ZWN0YW5ndWxhcikgYW5nbGUpCgkocHV0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdyZWN0YW5ndWxh cgoJICAgICAobGFtYmRhICh4IHkpICh0YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSkpKQoJ KHB1dCAnbWFrZS1mcm9tLW1hZy1hbmcgJ3JlY3Rhbmd1bGFyCgkgICAgIChsYW1iZGEgKHIgYSkg KHRhZyAobWFrZS1mcm9tLW1hZy1hbmcgciBhKSkpKQoJJ2RvbmUpCgogICAgICAoZGVmaW5lIChp bnN0YWxsLXBvbGFyLXBhY2thZ2UpCgoJKGRlZmluZSAobWFnbml0dWRlIHopIChjYXIgeikpCgko ZGVmaW5lIChhbmdsZSB6KSAoY2RyIHopKQoJKGRlZmluZSAobWFrZS1mcm9tLW1hZy1hbmcgciBh KSAoY29ucyByIGEpKQoJKGRlZmluZSAocmVhbC1wYXJ0IHopCgkgIChtdWwgKG1hZ25pdHVkZSB6 KSAoY29zaW5lIChhbmdsZSB6KSkpKQoJKGRlZmluZSAoaW1hZy1wYXJ0IHopCgkgIChtdWwgKG1h Z25pdHVkZSB6KSAoc2luZSAoYW5nbGUgeikpKSkKCShkZWZpbmUgKG1ha2UtZnJvbS1yZWFsLWlt YWcgeCB5KQoJICAoY29ucyAoc3F1YXJlLXJvb3QgKGFkZCAoc3F1YXJlIHgpIChzcXVhcmUgeSkp KQoJCShhcmN0YW5nZW50IHkgeCkpKQoKCShkZWZpbmUgKHRhZyB4KSAoYXR0YWNoLXRhZyAncG9s YXIgeCkpCgkocHV0ICdyZWFsLXBhcnQgJyhwb2xhcikgcmVhbC1wYXJ0KQoJKHB1dCAnaW1hZy1w YXJ0ICcocG9sYXIpIGltYWctcGFydCkKCShwdXQgJ21hZ25pdHVkZSAnKHBvbGFyKSBtYWduaXR1 ZGUpCgkocHV0ICdhbmdsZSAnKHBvbGFyKSBhbmdsZSkKCShwdXQgJ21ha2UtZnJvbS1yZWFsLWlt YWcgJ3BvbGFyCgkgICAgIChsYW1iZGEgKHggeSkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyB4 IHkpKSkpCgkocHV0ICdtYWtlLWZyb20tbWFnLWFuZyAncG9sYXIKCSAgICAgKGxhbWJkYSAociBh KSAodGFnIChtYWtlLWZyb20tbWFnLWFuZyByIGEpKSkpCgknZG9uZSkKCiAgICAgIChkZWZpbmUg KGluc3RhbGwtY29tcGxleC1wYWNrYWdlKQoJKGRlZmluZSAobWFrZS1mcm9tLXJlYWwtaW1hZyB4 IHkpCgkgICgoZ2V0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdyZWN0YW5ndWxhcikgeCB5KSkKCShk ZWZpbmUgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkKCSAgKChnZXQgJ21ha2UtZnJvbS1tYWctYW5n ICdwb2xhcikgciBhKSkKCShkZWZpbmUgKGFkZC1jb21wbGV4IHoxIHoyKQoJICAobWFrZS1mcm9t LXJlYWwtaW1hZyAoYWRkIChyZWFsLXBhcnQgejEpIChyZWFsLXBhcnQgejIpKQoJCQkgICAgICAg KGFkZCAoaW1hZy1wYXJ0IHoxKSAoaW1hZy1wYXJ0IHoyKSkpKQoJKGRlZmluZSAoc3ViLWNvbXBs ZXggejEgejIpCgkgIChtYWtlLWZyb20tcmVhbC1pbWFnIChzdWIgKHJlYWwtcGFydCB6MSkgKHJl YWwtcGFydCB6MikpCgkJCSAgICAgICAoc3ViIChpbWFnLXBhcnQgejEpIChpbWFnLXBhcnQgejIp KSkpCgkoZGVmaW5lIChtdWwtY29tcGxleCB6MSB6MikKCSAgKG1ha2UtZnJvbS1tYWctYW5nICht dWwgKG1hZ25pdHVkZSB6MSkgKG1hZ25pdHVkZSB6MikpCgkJCSAgICAgKGFkZCAoYW5nbGUgejEp IChhbmdsZSB6MikpKSkKCShkZWZpbmUgKGRpdi1jb21wbGV4IHoxIHoyKQoJICAobWFrZS1mcm9t LW1hZy1hbmcgKGRpdiAobWFnbml0dWRlIHoxKSAobWFnbml0dWRlIHoyKSkKCQkJICAgICAoc3Vi IChhbmdsZSB6MSkgKGFuZ2xlIHoyKSkpKQoJKGRlZmluZSAodGFnIHopIChhdHRhY2gtdGFnICdj b21wbGV4IHopKQoJKHB1dCAnYWRkICcoY29tcGxleCBjb21wbGV4KQoJICAgICAobGFtYmRhICh6 MSB6MikgKHRhZyAoYWRkLWNvbXBsZXggejEgejIpKSkpCgkocHV0ICdzdWIgJyhjb21wbGV4IGNv bXBsZXgpCgkgICAgIChsYW1iZGEgKHoxIHoyKSAodGFnIChzdWItY29tcGxleCB6MSB6MikpKSkK CShwdXQgJ211bCAnKGNvbXBsZXggY29tcGxleCkKCSAgICAgKGxhbWJkYSAoejEgejIpICh0YWcg KG11bC1jb21wbGV4IHoxIHoyKSkpKQoJKHB1dCAnZGl2ICcoY29tcGxleCBjb21wbGV4KQoJICAg ICAobGFtYmRhICh6MSB6MikgKHRhZyAoZGl2LWNvbXBsZXggejEgejIpKSkpCgkocHV0ICdtYWtl LWZyb20tcmVhbC1pbWFnICdjb21wbGV4CgkgICAgIChsYW1iZGEgKHggeSkgKHRhZyAobWFrZS1m cm9tLXJlYWwtaW1hZyB4IHkpKSkpCgkocHV0ICdtYWtlLWZyb20tbWFnLWFuZyAnY29tcGxleAoJ ICAgICAobGFtYmRhIChyIGEpICh0YWcgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkpKSkKCShwdXQg J2VxdT8gJyhjb21wbGV4IGNvbXBsZXgpCgkgICAgIChsYW1iZGEgKHggeSkgKGFuZCAoPSAwIChy ZWFsLXBhcnQgKHN1Yi1jb21wbGV4IHggeSkpKQoJCQkJKD0gMCAoaW1hZy1wYXJ0IChzdWItY29t cGxleCB4IHkpKSkpKSkKCShwdXQgJ2VxdT8gJyhyZWN0YW5ndWxhciBwb2xhcikgZXF1PykKCShw dXQgJ2VxdT8gJyhwb2xhciByZWN0YW5ndWxhcikgZXF1PykKCShwdXQgJ3plcm8/ICcoY29tcGxl eCkKCSAgICAgKGxhbWJkYSAoeCkgKGVxdT8gKHRhZyB4KSAodGFnIChtYWtlLWZyb20tcmVhbC1p bWFnIDAgMCkpKSkpCgkocHV0ICdwcm9qZWN0ICcoY29tcGxleCkgKGxhbWJkYSAoeikgKHJlYWwt cGFydCB6KSkpCgknZG9uZSkKCiAgICAgIChkZWZpbmUgKG1ha2UtY29tcGxleC1mcm9tLXJlYWwt aW1hZyB4IHkpCgkoKGdldCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAnY29tcGxleCkgeCB5KSkKCiAg ICAgIChkZWZpbmUgKG1ha2UtY29tcGxleC1mcm9tLW1hZy1hbmcgciBhKQoJKChnZXQgJ21ha2Ut ZnJvbS1tYWctYW5nICdjb21wbGV4KSByIGEpKQoKICAgICAgKGluc3RhbGwtcmVjdGFuZ3VsYXIt cGFja2FnZSkKICAgICAgKGluc3RhbGwtcG9sYXItcGFja2FnZSkKICAgICAgKGluc3RhbGwtcmF0 aW9uYWwtcGFja2FnZSkKICAgICAgKGluc3RhbGwtc2NoZW1lLW51bWJlci1wYWNrYWdlKQogICAg ICAoaW5zdGFsbC1jb21wbGV4LXBhY2thZ2UpCgogICAgICAocHV0ICdyZWFsLXBhcnQgJyhjb21w bGV4KSByZWFsLXBhcnQpCiAgICAgIChwdXQgJ2ltYWctcGFydCAnKGNvbXBsZXgpIGltYWctcGFy dCkKICAgICAgKHB1dCAnbWFnbml0dWRlICcoY29tcGxleCkgbWFnbml0dWRlKQogICAgICAocHV0 ICdhbmdsZSAnKGNvbXBsZXgpIGFuZ2xlKQoKICAgICAgKGRlZmluZSAoYXBwbHktZ2VuZXJpYyBv cCAuIGFyZ3MpCgkjOyhzaG93ICN0ICJhcHBseS1nZW5lcmljOmVudHJ5XG4iKQoJIzsoZXJyb3Ig ImRlYnVnIikKCShkZWZpbmUgKHZhcmlhYmxlIHBvbHkpIChjYXIgcG9seSkpCgkoZGVmaW5lIChh bGwtYXJndHlwZXMtc2FtZT8gLiBhcmdzKQoJICAobGV0ICgodHlwZSAodHlwZS10YWcgKGNhciBh cmdzKSkpKQoJICAgIChhY2N1bXVsYXRlIChsYW1iZGEgKHggeSkgKGFuZCB4IHkpKSAjdCAobWFw IChsYW1iZGEgKHgpIChlcT8gdHlwZSB4KSkgYXJncykpKSkKCShkZWZpbmUgKGNvZXJjaW9uLWlm LWV4aXN0cz8gdHlwZSBhcmctdGFncykKCSAgKGxldCAoKGNvZXJjaW9uLWxpc3QgKG1hcCAobGFt YmRhICh4KSAKCQkJCSAgICAgIChpZiAoZXE/IHR5cGUgeCkKCQkJCQkgIGlkZW50aXR5CgkJCQkJ ICAoZ2V0LWNvZXJjaW9uIHggdHlwZSkpKSBhcmctdGFncykpKQoJICAgIChpZiAoYWNjdW11bGF0 ZSAobGFtYmRhICh4IHkpIChhbmQgeCB5KSkgI3QgY29lcmNpb24tbGlzdCkKCQljb2VyY2lvbi1s aXN0CgkJI2YpKSkKCShkcm9wIChsZXQqICgodHlwZS10YWdzIChtYXAgdHlwZS10YWcgYXJncykp CgkJICAgICAocHJvYyAoZ2V0IG9wIHR5cGUtdGFncykpKQoJCSM7KHNob3cgI3QgImFwcGx5LWdl bmVyaWM6IHR5cGUtdGFncz0iIAoJCQkgKGRpc3BsYXllZCB0eXBlLXRhZ3MpCgkJCSAiIHByb2M9 IiAod3JpdHRlbiBwcm9jKQoJCQkgIiBwcm9jLXNvdXJjZT0iICh0aGluZ3ktc291cmNlIHByb2Mp ICJcbiIpCgkJKGNvbmQgKHByb2MgKGFwcGx5IHByb2MgKG1hcCBjb250ZW50cyBhcmdzKSkpCgkJ ICAgICAgKCg9IDEgKGxlbmd0aCBhcmdzKSkKCQkgICAgICAgIzsoc2hvdyAjdCAiTm8gcHJvYyBm b3VuZCBmb3Igb3A9IiBvcCAiLCB0eXBlLXRhZ3M9IiB0eXBlLXRhZ3MgIiwgYXJnPSIgKGRpc3Bs YXllZCBhcmdzKSAiXG4iKQoJCSAgICAgICAoYXBwbHktZ2VuZXJpYyBvcCAocmFpc2UtdHlwZSAo Y2FyIGFyZ3MpKSkpCgkJICAgICAgKCg9IDIgKGxlbmd0aCBhcmdzKSkKCQkgICAgICAgKGNvbmQg KChhbmQgKGVxPyAncG9seW5vbWlhbCAoY2FyIHR5cGUtdGFncykpCgkJCQkgKG51bWVyaWM/IChj YWRyIHR5cGUtdGFncykpKQoJCQkgICAgICAoYXBwbHktZ2VuZXJpYyBvcAoJCQkJCSAgICAgKGNh ciBhcmdzKQoJCQkJCSAgICAgKG1ha2UtcG9seW5vbWlhbCAodmFyaWFibGUgKGNvbnRlbnRzIChj YXIgYXJncykpKQoJCQkJCQkJICAgICAgKGxpc3QgKGxpc3QgMCAoY2FkciBhcmdzKSkpKSkpCgkJ CSAgICAgKChhbmQgKG51bWVyaWM/IChjYXIgdHlwZS10YWdzKSkKCQkJCSAoZXE/ICdwb2x5bm9t aWFsIChjYWRyIHR5cGUtdGFncykpKQoJCQkgICAgICAoYXBwbHktZ2VuZXJpYyBvcAoJCQkJCSAg ICAgKG1ha2UtcG9seW5vbWlhbCAodmFyaWFibGUgKGNvbnRlbnRzIChjYWRyIGFyZ3MpKSkKCQkJ CQkJCSAgICAgIChsaXN0IChsaXN0IDAgKGNhciBhcmdzKSkpKQoJCQkJCSAgICAgKGNhZHIgYXJn cykpKQkJCSAKCQkJICAgICAoKGFuZCAoZ2V0LWNvZXJjaW9uIChjYXIgdHlwZS10YWdzKSAoY2Fk ciB0eXBlLXRhZ3MpKQoJCQkJIChub3QgKGVxPyAoY2FyIHR5cGUtdGFncykgKGNhZHIgdHlwZS10 YWdzKSkpKQoJCQkgICAgICAoYXBwbHktZ2VuZXJpYyBvcAoJCQkJCSAgICAgKChnZXQtY29lcmNp b24KCQkJCQkgICAgICAgKGNhciB0eXBlLXRhZ3MpCgkJCQkJICAgICAgIChjYWRyIHR5cGUtdGFn cykpIChjYXIgYXJncykpCgkJCQkJICAgICAoY2FkciBhcmdzKSkpCgkJCSAgICAgKChhbmQgKGdl dC1jb2VyY2lvbiAoY2FkciB0eXBlLXRhZ3MpIChjYXIgdHlwZS10YWdzKSkKCQkJCSAobm90IChl cT8gKGNhciB0eXBlLXRhZ3MpIChjYWRyIHR5cGUtdGFncykpKSkKCQkJICAgICAgKGFwcGx5LWdl bmVyaWMgb3AKCQkJCQkgICAgIChjYXIgYXJncykKCQkJCQkgICAgICgoZ2V0LWNvZXJjaW9uCgkJ CQkJICAgICAgIChjYWRyIHR5cGUtdGFncykKCQkJCQkgICAgICAgKGNhciB0eXBlLXRhZ3MpKSAo Y2FkciBhcmdzKSApKSkKCQkJICAgICAoKGNvbXBhcmFibGU/IChjYXIgdHlwZS10YWdzKSAoY2Fk ciB0eXBlLXRhZ3MpKQoJCQkgICAgICAoaWYKCQkJICAgICAgICh0eXBlMTw9dHlwZTI/IChjYXIg dHlwZS10YWdzKSAoY2FkciB0eXBlLXRhZ3MpKQoJCQkgICAgICAgKGFwcGx5LWdlbmVyaWMgb3Ag KHJhaXNlLXR5cGUgKGNhciBhcmdzKSkgKGNhZHIgYXJncykpCgkJCSAgICAgICAoYXBwbHktZ2Vu ZXJpYyBvcCAoY2FyIGFyZ3MpICAocmFpc2UtdHlwZSAoY2FkciBhcmdzKSkpKSkKCQkJICAgICAo ZWxzZSAoZXJyb3IgImFwcGx5LWdlbmVyaWM6SW5jb21wYXJhYmxlIHR5cGVzOiAodHlwZS10YWdz LGFyZ3MpPSIgdHlwZS10YWdzIGFyZ3MpKSkpCgkJICAgICAgKChhbmQgKD4gKGxlbmd0aCBhcmdz KSAyKSAobm90IChhbGwtYXJndHlwZXMtc2FtZT8gYXJncykpKQoJCSAgICAgICAobGV0IHR5cGVz LWxvb3AgKCh0eXBlcyB0eXBlLXRhZ3MpKQoJCQkgKGxldCAoKGxpc3Qtb2YtY29lcmNpb24tZnVu Y3Rpb25zCgkJCQkoY29lcmNpb24taWYtZXhpc3RzPyAoY2FyIHR5cGVzKSB0eXBlLXRhZ3MpKSkK CQkJICAgKGlmIGxpc3Qtb2YtY29lcmNpb24tZnVuY3Rpb25zCgkJCSAgICAgICAoYXBwbHkgYXBw bHktZ2VuZXJpYyAoY29ucyBvcCAobWFwIChsYW1iZGEgKGZ1biBhcmcpIChmdW4gYXJnKSkKCQkJ CQkJCQkgIGxpc3Qtb2YtY29lcmNpb24tZnVuY3Rpb25zCgkJCQkJCQkJICBhcmdzKSkpCgkJCSAg ICAgICAoaWYgKG5vdCAobnVsbD8gKGNkciB0eXBlcykpKQoJCQkJICAgKHR5cGVzLWxvb3AgKGNk ciB0eXBlcykpCgkJCQkgICAoZXJyb3IgImFwcGx5LWdlbmVyaWM6RXZlbiBjb2VyY2lvbnMgZmFp bGVkLiBObyBtZXRob2QgZm9yIHRoZXNlIHR5cGVzLiIpKSkpKSkKCQkgICAgICAoZWxzZSAoZXJy b3IgImFwcGx5LWdlbmVyaWM6Tm8gbWV0aG9kIGZvciB0aGVzZSB0eXBlcyIKCQkJCSAgIChsaXN0 IG9wIHR5cGUtdGFncykpKSkpKSkKICAgICAgKGRlZmluZSAoc2NoZW1lLW51bWJlci0+Y29tcGxl eCBuKQoJKG1ha2UtY29tcGxleC1mcm9tLXJlYWwtaW1hZyAoY29udGVudHMgbikgMCkpCiAgICAg IChwdXQtY29lcmNpb24gJ3NjaGVtZS1udW1iZXIKCQkgICAgJ2NvbXBsZXgKCQkgICAgc2NoZW1l LW51bWJlci0+Y29tcGxleCkKCiAgICAgIChwdXQgJ21heDMtbWFnbml0dWRlICcoY29tcGxleCBj b21wbGV4IGNvbXBsZXgpIChsYW1iZGEgKHoxIHoyIHozKQoJCQkJCQkJKG1heCAobWFnbml0dWRl IHoxKSAobWFnbml0dWRlIHoyKSAobWFnbml0dWRlIHozKSkpKQogICAgICAoZGVmaW5lIChtYXgz LW1hZ25pdHVkZSB4MSB4MiB4MykgKGFwcGx5LWdlbmVyaWMgJ21heDMtbWFnbml0dWRlIHgxIHgy IHgzKSkKICAgICAgKGRlZmluZSAoaWRlbnRpdHkgeCkgeCkKCiAgICAjOyhkZWZpbmUgbnVtZXJp Yy10b3dlciAobGlzdCAnaW50ZWdlciAncmF0aW9uYWwgJ3NjaGVtZS1udW1iZXIgJ2NvbXBsZXgp KQogICAgKGRlZmluZSBudW1lcmljLXRvd2VyIChsaXN0ICdpbnRlZ2VyICdzY2hlbWUtbnVtYmVy ICdjb21wbGV4KSkKICAgIChkZWZpbmUgKGNvbXBhcmFibGU/IHR5cGUxIHR5cGUyKSAoYW5kICht ZW1xIHR5cGUxIG51bWVyaWMtdG93ZXIpIChtZW1xIHR5cGUyIG51bWVyaWMtdG93ZXIpKSkKICAg ICM7KGRlZmluZSAoaGlnaGVyLXR5cGUgeCkKICAgICAgKHNob3cgI3QgImhpZ2hlci10eXBlOng9 IiAoZGlzcGxheWVkIHgpICJcbiIpCgkoZGVmaW5lIChmaW5kLWhpZ2hlci10eXBlIHggdHlwZXMp CgkgIChjb25kICgob3IgKG51bGw/IHR5cGVzKSAobnVsbD8gKGNkciB0eXBlcykpKSAoZXJyb3Ig Ik5vIHR5cGUgaGlnaGVyIHRoYW4gZ2l2ZW4iIHggdHlwZXMpKQoJCSgoZXE/IHggKGNhciB0eXBl cykpIChjYWRyIHR5cGVzKSkKCQkoZWxzZSAoZmluZC1oaWdoZXItdHlwZSB4IChjZHIgdHlwZXMp KSkpKQoJKGZpbmQtaGlnaGVyLXR5cGUgeCBudW1lcmljLXRvd2VyKSkKCiAgICAoZGVmaW5lIChu dW1lcmljPyB4KQogICAgICAobWVtcSB4IG51bWVyaWMtdG93ZXIpKQogICAgKGRlZmluZSAocG9s eW5vbWlhbD8geCkKICAgICAgKGVxPyAodHlwZS10YWcgeCkgJ3BvbHlub21pYWwpKQogICAgKGRl ZmluZSAoaGlnaGVyLXR5cGUgeCkKICAgICAgKGxldCAoKHRhaWwgKG1lbXEgeCBudW1lcmljLXRv d2VyKSkpCgkoY29uZCAoKGVxPyAjZiB0YWlsKSAoZXJyb3IgIlR5cGUgbm90IGluIHRoZSB0b3dl ciIgeCkpCgkgICAgICAoKG51bGw/IChjZHIgdGFpbCkpIChlcnJvciAiQWxyZWFkeSB0aGUgaGln aGVzdCB0eXBlOiIgeCkpCgkgICAgICAoZWxzZSAoY2FkciB0YWlsKSkpKSkKCiAgICAoc2hvdyAj dCAiVGVzdDogSGlnaGVyIHRoYW4gJ2ludGVnZXI6ICIgKGhpZ2hlci10eXBlICdpbnRlZ2VyKSAi XG4iKQogICAgIzsoc2hvdyAjdCAiVGVzdDogSGlnaGVyIHRoYW4gJ2NvbXBsZXg6ICIgKGhpZ2hl ci10eXBlICdjb21wbGV4KSAiXG4iKQoKICAgICAgKGRlZmluZSAodHlwZTE8PXR5cGUyPyB0eXBl MSB0eXBlMikKCShpZiAobm90IChtZW1xIHR5cGUxIG51bWVyaWMtdG93ZXIpKQoJICAgIChlcnJv ciAiVHlwZSAxIG5vdCBpbiB0aGUgbnVtZXJpYyB0b3dlciIpKQoJKGlmIChub3QgKG1lbXEgdHlw ZTIgbnVtZXJpYy10b3dlcikpCgkgICAgKGVycm9yICJUeXBlIDIgbm90IGluIHRoZSBudW1lcmlj IHRvd2VyIikpCgkobGV0IGxvb3AgKCh0eXBlcyBudW1lcmljLXRvd2VyKSkKCSAgKGNvbmQgKChu dWxsPyB0eXBlcykgKGVycm9yICJUeXBlIDEgYW5kIHR5cGUgMiBhcmUgaW5jb21wYXJhYmxlIiB0 eXBlMSB0eXBlMikpCgkJKChlcT8gKGNhciB0eXBlcykgdHlwZTEpICN0KQoJCSgoZXE/IChjYXIg dHlwZXMpIHR5cGUyKSAjZikKCQkoZWxzZSAobG9vcCAoY2RyIHR5cGVzKSkpKSkpCgogICAgICAj OyhkZWZpbmUgKGludGVnZXItPnJhdGlvbmFsIHgpCgkobWFrZS1yYXRpb25hbCB4IDEpKQoKICAg ICAgIzsoZGVmaW5lIChyYXRpb25hbC0+c2NoZW1lLW51bWJlciB4KQoJKG1ha2Utc2NoZW1lLW51 bWJlciAoKGdldCAndG8tcmVhbCAnKHJhdGlvbmFsKSkgeCkpKQogICAgICAjOyhwdXQtY29lcmNp b24gJ2ludGVnZXIgJ3JhdGlvbmFsIGludGVnZXItPnJhdGlvbmFsKQogICAgICAjOyhwdXQtY29l cmNpb24gJ3JhdGlvbmFsICdzY2hlbWUtbnVtYmVyIHJhdGlvbmFsLT5zY2hlbWUtbnVtYmVyKQog ICAgKGRlZmluZSAoaW50ZWdlci0+c2NoZW1lLW51bWJlciB4KQogICAgICAgKG1ha2Utc2NoZW1l LW51bWJlciAoY29udGVudHMgKGV4YWN0LT5pbmV4YWN0IHgpKSkpCiAgICAocHV0LWNvZXJjaW9u ICdpbnRlZ2VyICdzY2hlbWUtbnVtYmVyIGludGVnZXItPnNjaGVtZS1udW1iZXIpICAKCiAgICAo ZGVmaW5lIChyYWlzZS10eXBlIHgpCiAgICAgICM7KHNob3cgI3QgIlJhaXNpbmcgdHlwZSBvZjog IiAoZGlzcGxheWVkIHgpICJcbiIpCgkobGV0ICgoY29udmVydGVyIChnZXQtY29lcmNpb24gKHR5 cGUtdGFnIHgpIChoaWdoZXItdHlwZSAodHlwZS10YWcgeCkpKSkpCgkgIChpZiBjb252ZXJ0ZXIK CSAgICAgIChjb252ZXJ0ZXIgeCkKCSAgICAgIChlcnJvciAiTm8gY29lcmNpb24gZm91bmQgZm9y IHgiICh0eXBlLXRhZyB4KSB4KSkpKQoKCiAgICAgIChkZWZpbmUgKHJlbWFpbmRlci1pbnRlZ2Vy IGEgYikKCSh3aGVuIChvciAobm90IChpbnRlZ2VyPyBhKSkgKG5vdCAoaW50ZWdlcj8gYikpKQoJ ICAoZXJyb3IgIkFyZ3VtZW50cyBtdXN0IGJlIGludGVnZXJzIiBhIGIpKQoJKHJlbWFpbmRlciBh IGIpKQoKICAgICAgKHB1dCAncmVtYWluZGVyICcoaW50ZWdlciBpbnRlZ2VyKSByZW1haW5kZXIt aW50ZWdlcikKICAgICAgKGRlZmluZSAocmVtYWluZGVyLWdlbmVyYWxpemVkIGEgYikgKGFwcGx5 LWdlbmVyaWMgJ3JlbWFpbmRlciBhIGIpKQoKICAgICAgKGRlZmluZSAocHJvamVjdCBvYmopCgko YXBwbHktZ2VuZXJpYyAncHJvamVjdCBvYmopKQogICAgICAoZGVmaW5lIChkcm9wcGFibGU/IG9i aikKCSM7KHNob3cgI3QgImRyb3BwYWJsZT86IG9iaj0iIG9iaiAiLCB0eXBlLXRhZz0iICh0eXBl LXRhZyBvYmopICJcbiIpCgkoY29uZCAoKGVxPyAodHlwZS10YWcgb2JqKSAncmF0aW9uYWwpIChi ZWdpbiAoc2hvdyAjdCAicmF0aW9uYWwgbm90IGRyb3BwYWJsZTogI2ZcbiIpICNmKSkKCSAgICAg ICgobm90IChtZW1xICh0eXBlLXRhZyBvYmopIG51bWVyaWMtdG93ZXIpKSAjZikKCSAgICAgICgo ZXE/ICh0eXBlLXRhZyBvYmopIChjYXIgbnVtZXJpYy10b3dlcikpICNmKQoJICAgICAgKChlcXU/ IG9iaiAocmFpc2UtdHlwZSAocHJvamVjdCBvYmopKSkgI3QpCgkgICAgICAoZWxzZSAjZikpKQog ICAgICAoZGVmaW5lIChkcm9wIG9iaikgCgkoaWYgKGRyb3BwYWJsZT8gb2JqKQoJICAgIChkcm9w IChwcm9qZWN0IG9iaikpCgkgICAgb2JqKSkKCiAgICAgIChzaG93ICN0ICJUZXN0IDE6IFN1YnRy YWN0aW5nIGNvbXBsZXggbnVtYmVyczogIgoJICAgIChzdWIKCSAgICAgKG1ha2UtY29tcGxleC1m cm9tLXJlYWwtaW1hZyAxLjEgMikKCSAgICAgKG1ha2UtY29tcGxleC1mcm9tLXJlYWwtaW1hZyAw IDIpKSAiXG4iKQogICAgKGRlZmluZSAoaW5zdGFsbC1wb2x5bm9taWFsLXBhY2thZ2UpCiAgICAg ICM7KGRlZmluZSAoY29udGVudHMgZ2VuZXJpYy1vYmplY3QpCgkoY2RyIGdlbmVyaWMtb2JqZWN0 KSkKCShkZWZpbmUgKG1ha2UtcG9seSB2YXJpYWJsZSB0ZXJtLWxpc3QpCgkgIChjb25zIHZhcmlh YmxlIHRlcm0tbGlzdCkpCgkoZGVmaW5lICh2YXJpYWJsZSBwKSAoY2FyIHApKQoJKGRlZmluZSAo dGVybS1saXN0IHApCgkgIChjZHIgcCkpCgkoZGVmaW5lICh2YXJpYWJsZT8geCkgKHN5bWJvbD8g eCkpCgkoZGVmaW5lIChzYW1lLXZhcmlhYmxlPyB2MSB2MikKCSAgKGFuZCAodmFyaWFibGU/IHYx KSAodmFyaWFibGU/IHYyKSAoZXE/IHYxIHYyKSkpCgkoZGVmaW5lICg9bnVtYmVyPyBleHAgbnVt KQoJICAoYW5kIChudW1iZXI/IGV4cCkgKD0gZXhwIG51bSkpKQoJKGRlZmluZSAodGhlLWVtcHR5 LXRlcm1saXN0KSAnKCkpCgoJKGRlZmluZSAocmVzdC10ZXJtcyB0ZXJtLWxpc3QpIChjZHIgdGVy bS1saXN0KSkKCShkZWZpbmUgKGVtcHR5LXRlcm1saXN0PyB0ZXJtLWxpc3QpIChudWxsPyB0ZXJt LWxpc3QpKQoKCShkZWZpbmUgKG1ha2UtdGVybSBvcmRlciBjb2VmZikgKGxpc3Qgb3JkZXIgY29l ZmYpKQoJKGRlZmluZSAob3JkZXIgdGVybSkgKGNhciB0ZXJtKSkKCShkZWZpbmUgKGNvZWZmIHRl cm0pIChjYWRyIHRlcm0pKQoJKGRlZmluZSAodGFnIHApIChhdHRhY2gtdGFnICdwb2x5bm9taWFs IHApKQoJKHB1dCAnbWFrZSAncG9seW5vbWlhbAoJICAgICAobGFtYmRhICh2YXIgdGVybXMpICh0 YWcgKG1ha2UtcG9seSB2YXIgdGVybXMpKSkpCgkjOyhjb250aW51ZWQgb24gbmV4dCBwYWdlKQoK CShkZWZpbmUgKGFkZC1wb2x5IHAxIHAyKQoJICAjOyhzaG93ICN0ICJhZGQtcG9seTogcDE9IiBw MSAiLCBwMj0iIHAyICJcbiIpCgkgIChpZiAoc2FtZS12YXJpYWJsZT8gKHZhcmlhYmxlIHAxKSAo dmFyaWFibGUgcDIpKQoJICAgICAgKG1ha2UtcG9seSAodmFyaWFibGUgcDEpCgkJCSAoYWRkLXRl cm1zICh0ZXJtLWxpc3QgcDEpCgkJCQkgICAgKHRlcm0tbGlzdCBwMikpKQoJICAgICAgKGxldCAo KHJlcyAoY2RyIChpZiAodmFyaWFibGVfMS1vcmRlcjx2YXJpYWJsZV8yLW9yZGVyICh2YXJpYWJs ZSBwMSkgKHZhcmlhYmxlIHAyKSkKCQkgIChhZGQgKHRhZyBwMSkgKHRhZyAobWFrZS1wb2x5ICh2 YXJpYWJsZSBwMSkgKGxpc3QgKG1ha2UtdGVybSAwICh0YWcgcDIpKSkpKSkKCQkgIChhZGQgKHRh ZyAobWFrZS1wb2x5ICh2YXJpYWJsZSBwMikgKGxpc3QgKG1ha2UtdGVybSAwICh0YWcgcDEpKSkp KSAodGFnIHAyKSkpKSkpCgkJIzsoc2hvdyAjdCAiYWRkLXBvbHk6cmVzdWx0OiAiIChkaXNwbGF5 ZWQgcmVzKSAiXG4iKSByZXMpKSkKCgkoc2hvdyAjdCAiVGVzdFkyOiBwb2x5IG9mIHBvbHk6ICIK CSAgICAgIChtYWtlLXBvbHkgJ3ggKGxpc3QKCQkJICAgICAobWFrZS10ZXJtIDMgKG1ha2UtcG9s eQoJCQkJCSAgICd5IChsaXN0IChtYWtlLXRlcm0gMSAxKSAobWFrZS10ZXJtIDAgMSkpKSkKCQkJ ICAgICAobWFrZS10ZXJtIDEgMikKCQkJICAgICAobWFrZS10ZXJtIDAgNCkpKSAiXG4iKQoKCShk ZWZpbmUgKHN1Yi1wb2x5IHAxIHAyKQoJICAoYWRkLXBvbHkgcDEgKG11bC1wb2x5IHAyIChtYWtl LXBvbHkgKHZhcmlhYmxlIHAyKSAobGlzdCAobWFrZS10ZXJtIDAgLTEpKSkpKSkKCShkZWZpbmUg KGFkZC10ZXJtcyBMMSBMMikKCSAgKGNvbmQgKChlbXB0eS10ZXJtbGlzdD8gTDEpIEwyKQoJCSgo ZW1wdHktdGVybWxpc3Q/IEwyKSBMMSkKCQkoZWxzZQoJCSAobGV0ICgodDEgKGZpcnN0LXRlcm0g TDEpKSAodDIgKGZpcnN0LXRlcm0gTDIpKSkKCQkgICAoY29uZCAoKD4gKG9yZGVyIHQxKSAob3Jk ZXIgdDIpKQoJCQkgIChhZGpvaW4tdGVybQoJCQkgICB0MSAoYWRkLXRlcm1zIChyZXN0LXRlcm1z IEwxKSBMMikpKQoJCQkgKCg8IChvcmRlciB0MSkgKG9yZGVyIHQyKSkKCQkJICAoYWRqb2luLXRl cm0KCQkJICAgdDIgKGFkZC10ZXJtcyBMMSAocmVzdC10ZXJtcyBMMikpKSkKCQkJIChlbHNlCgkJ CSAgKGFkam9pbi10ZXJtCgkJCSAgIChtYWtlLXRlcm0gKG9yZGVyIHQxKQoJCQkJICAgICAgKGFk ZCAoY29lZmYgdDEpIChjb2VmZiB0MikpKQoJCQkgICAoYWRkLXRlcm1zIChyZXN0LXRlcm1zIEwx KQoJCQkJICAgICAgKHJlc3QtdGVybXMgTDIpKSkpKSkpKSkKCgoJKGRlZmluZSAobXVsLXBvbHkg cDEgcDIpCgkgIChpZiAoc2FtZS12YXJpYWJsZT8gKHZhcmlhYmxlIHAxKSAodmFyaWFibGUgcDIp KQoJICAgICAgKG1ha2UtcG9seSAodmFyaWFibGUgcDEpCgkJCSAobXVsLXRlcm1zICh0ZXJtLWxp c3QgcDEpCgkJCQkgICAgKHRlcm0tbGlzdCBwMikpKQoJICAgICAgKGNvbnRlbnRzIChpZiAodmFy aWFibGVfMS1vcmRlcjx2YXJpYWJsZV8yLW9yZGVyICh2YXJpYWJsZSBwMSkgKHZhcmlhYmxlIHAy KSkKCQkgIChtdWwgKHRhZyBwMSkKCQkgICAgICAgKG1ha2UtcG9seW5vbWlhbCAodmFyaWFibGUg cDEpCgkJCQkJKGFkam9pbi10ZXJtCgkJCQkJIChtYWtlLXRlcm0gMAoJCQkJCQkgICAgKHRhZyBw MikpICh0aGUtZW1wdHktdGVybWxpc3QpKSkpCgkJICAobXVsICh0YWcgcDIpCgkJICAgICAgICht YWtlLXBvbHlub21pYWwgKHZhcmlhYmxlIHAyKQoJCQkJCShhZGpvaW4tdGVybQoJCQkJCSAobWFr ZS10ZXJtIDAKCQkJCQkJICAgICh0YWcgcDEpKSAodGhlLWVtcHR5LXRlcm1saXN0KSkpKSkpCgkg ICAgICAjOyhlcnJvciAiUG9seXMgbm90IGluIHNhbWUgdmFyIC0tIE1VTC1QT0xZIgoJCSAgICAg KGxpc3QgcDEgcDIpKSkpCgkoZGVmaW5lIChkaXYtcG9seSBwMSBwMikKCSAgKGlmIChzYW1lLXZh cmlhYmxlPyAodmFyaWFibGUgcDEpICh2YXJpYWJsZSBwMikpCgkgICAgICAobGV0ICgocXVvdGll bnQtYW5kLXJlbWFpbmRlciAoZGl2LXRlcm1zICh0ZXJtLWxpc3QgcDEpCgkJCQkJCSAgICAgICAo dGVybS1saXN0IHAyKSkpKQoJCShsaXN0IChtYWtlLXBvbHkgKHZhcmlhYmxlIHAxKSAoY2FyICBx dW90aWVudC1hbmQtcmVtYWluZGVyKSkKCQkgICAgICAobWFrZS1wb2x5ICh2YXJpYWJsZSBwMSkg KGNhZHIgcXVvdGllbnQtYW5kLXJlbWFpbmRlcikpKSkKCQkoZXJyb3IgImRpdi1wb2x5OiBQb2x5 cyBub3QgaW4gdGhlIHNhbWUgdmFyIiBwMSBwMikpKQoJKGRlZmluZSAoZGl2LXRlcm1zIEwxIEwy KQoJCShpZiAoZW1wdHktdGVybWxpc3Q/IEwxKQoJCSAgICAobGlzdCAodGhlLWVtcHR5LXRlcm1s aXN0KSAodGhlLWVtcHR5LXRlcm1saXN0KSkKCQkgICAgKGxldCAoKHQxIChmaXJzdC10ZXJtIEwx KSkKCQkJICAodDIgKGZpcnN0LXRlcm0gTDIpKSkKCQkgICAgICAoaWYgKD4gKG9yZGVyIHQyKSAo b3JkZXIgdDEpKQoJCQkgIChsaXN0ICh0aGUtZW1wdHktdGVybWxpc3QpIEwxKQoJCQkgIChsZXQg KChuZXctYyAoZGl2IChjb2VmZiB0MSkgKGNvZWZmIHQyKSkpCgkJCQkobmV3LW8gKC0gKG9yZGVy IHQxKSAob3JkZXIgdDIpKSkpCgkJCSAgICAobGV0ICgocmVzdC1vZi1yZXN1bHQgKGRpdi10ZXJt cyAodGVybS1saXN0CgkJCQkJCQkgICAgICAoc3ViLXBvbHkKCQkJCQkJCSAgICAgICAobWFrZS1w b2x5ICdmYWtlLXZhciBMMSkKCQkJCQkJCSAgICAgICAobXVsLXBvbHkKCQkJCQkJCQkobWFrZS1w b2x5ICdmYWtlLXZhciAobGlzdCAobWFrZS10ZXJtIG5ldy1vIG5ldy1jKSkpCgkJCQkJCQkJKG1h a2UtcG9seSAnZmFrZS12YXIgTDIpKSkpCgkJCQkJCQkgICAgIEwyKQoJCQkJCQkgICkpCgkJCSAg ICAgICM7KHNob3cgI3QgImRpdi10ZXJtczogcmVzdC1vZi1yZXN1bHQ6ICIgKGRpc3BsYXllZCBy ZXN0LW9mLXJlc3VsdCkgIlxuIikKCQkJICAgICAgKGxpc3QgKGFkam9pbi10ZXJtIChtYWtlLXRl cm0gbmV3LW8gbmV3LWMpIChjYXIgcmVzdC1vZi1yZXN1bHQpKSAoY2FkciByZXN0LW9mLXJlc3Vs dCkpCgkJCSAgICAgICkpKSkpKQoJKGRlZmluZSAoZ2NkLXRlcm1zIGEgYikKCSAgKGlmIChlbXB0 eS10ZXJtbGlzdD8gYikKCSAgICAgIGEKCSAgICAgIChnY2QtdGVybXMgYiAocmVtYWluZGVyLXRl cm1zIGEgYikpKSkKCShkZWZpbmUgKHJlbWFpbmRlci10ZXJtcyBhIGIpCgkgIChjYWRyIChkaXYt dGVybXMgYSBiKSkpCgkoZGVmaW5lIChnY2QtcG9seSBwMSBwMikKCSAgKGlmIChzYW1lLXZhcmlh YmxlPyAodmFyaWFibGUgcDEpICh2YXJpYWJsZSBwMikpCgkgICAgICAobWFrZS1wb2x5ICh2YXJp YWJsZSBwMSkgKGdjZC10ZXJtcyAodGVybS1saXN0IHAxKSAodGVybS1saXN0IHAyKSkpCgkgICAg ICAoZXJyb3IgImRpdi1wb2x5OiBQb2x5cyBub3QgaW4gdGhlIHNhbWUgdmFyIiBwMSBwMikpKQoJ KHB1dCAnZ2NkICcocG9seW5vbWlhbCBwb2x5bm9taWFsKQoJICAgICAobGFtYmRhICh4IHkpICh0 YWcgKGdjZC1wb2x5IHggeSkpKSkKCShwdXQgJ2djZCAnKGludGVnZXIgaW50ZWdlcikgZ2NkKQog ICAgICAKCShkZWZpbmUgKG11bC10ZXJtcyBMMSBMMikKCSAgKGlmIChlbXB0eS10ZXJtbGlzdD8g TDEpCgkgICAgICAodGhlLWVtcHR5LXRlcm1saXN0KQoJICAgICAgKGFkZC10ZXJtcyAobXVsLXRl cm0tYnktYWxsLXRlcm1zIChmaXJzdC10ZXJtIEwxKSBMMikKCQkJIChtdWwtdGVybXMgKHJlc3Qt dGVybXMgTDEpIEwyKSkpKQoKCShkZWZpbmUgKG11bC10ZXJtLWJ5LWFsbC10ZXJtcyB0MSBMKQoJ ICAoaWYgKGVtcHR5LXRlcm1saXN0PyBMKQoJICAgICAgKHRoZS1lbXB0eS10ZXJtbGlzdCkKCSAg ICAgIChsZXQgKCh0MiAoZmlyc3QtdGVybSBMKSkpCgkJKGFkam9pbi10ZXJtCgkJIChtYWtlLXRl cm0gKCsgKG9yZGVyIHQxKSAob3JkZXIgdDIpKQoJCQkgICAgKG11bCAoY29lZmYgdDEpIChjb2Vm ZiB0MikpKQoJCSAobXVsLXRlcm0tYnktYWxsLXRlcm1zIHQxIChyZXN0LXRlcm1zIEwpKSkpKSkK CShkZWZpbmUgKHplcm8tcG9seT8gcG9seSkKCSAgIzsoc2hvdyAjdCAiemVyby1wb2x5PzogcG9s eT0iIChkaXNwbGF5ZWQgcG9seSkgIlxuIikKCSAgKGNvbmQgKChlbXB0eS10ZXJtbGlzdD8gKHRl cm0tbGlzdCBwb2x5KSkgI3QpCgkJKChub3QgKHplcm8/IChjb2VmZiAoZmlyc3QtdGVybSAodGVy bS1saXN0IHBvbHkpKSkpKSAjZikKCQkoZWxzZSAoemVyby1wb2x5PyAKCQkgICAgICAgKG1ha2Ut cG9seSAodmFyaWFibGUgcG9seSkKCQkJCSAgKHJlc3QtdGVybXMgKHRlcm0tbGlzdCBwb2x5KSkp KSkpKQoKCShkZWZpbmUgKHRlcm1saXN0LXR5cGUtb2YgdGVybS1saXN0KQoJICAjOyhzaG93ICN0 ICJ0LXQtbzogdGVybS1saXN0PSIgKGRpc3BsYXllZCB0ZXJtLWxpc3QpICJcbiIpCgkgIChjb25k ICgobnVsbD8gdGVybS1saXN0KSAnc3BhcnNlKQoJCSgocGFpcj8gKGNhciB0ZXJtLWxpc3QpKSAn c3BhcnNlKQoJCSgobGlzdD8gdGVybS1saXN0KSAnZGVuc2UpCgkJKGVsc2UgKGVycm9yICJVbmtu b3duIHR5cGUgb2YgbGlzdCIgdGVybS1saXN0KSkpKQoJKGRlZmluZSAoYWRqb2luLXRlcm0gdGVy bSB0ZXJtLWxpc3QpCgkgICgoZ2V0ICdhZGpvaW4tdGVybSAodGVybWxpc3QtdHlwZS1vZiB0ZXJt LWxpc3QpKSB0ZXJtIHRlcm0tbGlzdCkpCgkoZGVmaW5lIChmaXJzdC10ZXJtIHRlcm0tbGlzdCkK CSAgKChnZXQgJ2ZpcnN0LXRlcm0gKHRlcm1saXN0LXR5cGUtb2YgdGVybS1saXN0KSkgdGVybS1s aXN0KSkKCShkZWZpbmUgKHZhcmlhYmxlXzEtb3JkZXI8dmFyaWFibGVfMi1vcmRlciB2YXJpYWJs ZV8xIHZhcmlhYmxlXzIpCgkgICM7KHNob3cgI3QgInZhcl8xLS4uOiB2YXJpYWJsZV8xPSIgdmFy aWFibGVfMSAiIHZhcmlhYmxlXzI9IiB2YXJpYWJsZV8yICJcbiIpCgkgICM7KHNob3cgI3QgInZh cjEyc3RyaW5nPSIgKHN5bWJvbC0+c3RyaW5nIHZhcmlhYmxlXzEpICJ2YXIyMnN0cmluZz0iIChz eW1ib2wtPnN0cmluZyB2YXJpYWJsZV8yKSAiXG4iKQoJICAoc3RyaW5nPD0/IChzeW1ib2wtPnN0 cmluZyB2YXJpYWJsZV8xKSAoc3ltYm9sLT5zdHJpbmcgdmFyaWFibGVfMikpKQoJKGRlZmluZSAo bm9ybWFsaXplLWZ1bGx5IHBvbHkpCgkgIChpZiAobm9ybWFsLXBvbHlub21pYWw/IHBvbHkpCgkg ICAgICBwb2x5CgkgICAgICAobm9ybWFsaXplLWZ1bGx5IChub3JtYWxpemUtb25jZSBwb2x5KSkp KQoJKHB1dCAnYWRkICcocG9seW5vbWlhbCBwb2x5bm9taWFsKQoJICAgICAobGFtYmRhIChwMSBw MikgCgkgICAgICAgIzsoc2hvdyAjdCAiZ2VuZXJpYy1hZGQtcG9seTpQb2x5bm9taWFsIGRpc3Bh dGNoIGZvdW5kOiBwMT0iCgkJICAgICAgKGRpc3BsYXllZCBwMSkgIiBwMj0iIChkaXNwbGF5ZWQg cDIpICJcbiIpCgkgICAgICAgKG5vcm1hbGl6ZS1mdWxseSAodGFnIChhZGQtcG9seSBwMSBwMikp KSkpCgkocHV0ICdtdWwgJyhwb2x5bm9taWFsIHBvbHlub21pYWwpCgkgICAgIChsYW1iZGEgKHAx IHAyKSAobm9ybWFsaXplLWZ1bGx5ICh0YWcgKG11bC1wb2x5IHAxIHAyKSkpKSkKCShwdXQgJ3N1 YiAnKHBvbHlub21pYWwgcG9seW5vbWlhbCkKCSAgICAgKGxhbWJkYSAocDEgcDIpICh0YWcgKHN1 Yi1wb2x5IHAxIHAyKSkpKQoKCShwdXQgJ3plcm8/ICcocG9seW5vbWlhbCkgemVyby1wb2x5PykK CShwdXQgJ2RpdiAnKHBvbHlub21pYWwgcG9seW5vbWlhbCkgZGl2LXBvbHkpCgkjOyhwdXQtY29l cmNpb24gJ3JhdGlvbmFsICdzY2hlbWUtbnVtYmVyIHJhdGlvbmFsLT5zY2hlbWUtbnVtYmVyKQoJ KGRlZmluZSAobW9ub21pYWwtZmxpcC12YXJpYWJsZXMgbW9ub21pYWwpCgkgICM7KHNob3cgI3Qg Im0tZi12OiBtb25vbWlhbD0iIG1vbm9taWFsICJcbiIpCgkgIChsZXQqICgobW9ubyAoY29udGVu dHMgbW9ub21pYWwpKQoJCSAoaW5uZXItcG9seW5vbWlhbCAoY29udGVudHMgKGNvZWZmIChmaXJz dC10ZXJtICh0ZXJtLWxpc3QgbW9ubykpKSkpCgkJIChpbm5lci1wb2x5IChjb250ZW50cyBpbm5l ci1wb2x5bm9taWFsKSkKCQkgKG91dGVyLW9yZGVyIChvcmRlciAoZmlyc3QtdGVybSAodGVybS1s aXN0IG1vbm8pKSkpCgkJIChvdXRlci12YXIgKHZhcmlhYmxlIG1vbm8pKQoJCSAoaW5uZXItdmFy ICh2YXJpYWJsZSBpbm5lci1wb2x5bm9taWFsKSkKCQkgKGlubmVyLXRlcm0tbGlzdCAodGVybS1s aXN0IGlubmVyLXBvbHkpKSkKCSAgICAjOyhzaG93ICN0ICJtLWYtdjogaW5uZXItcG9seT0iIGlu bmVyLXBvbHkgIlxuIikKCSAgICAoaWYgKHNhbWUtdmFyaWFibGU/IGlubmVyLXZhciBvdXRlci12 YXIpCgkJKG11bAoJCSAobWFrZS1wb2x5bm9taWFsIG91dGVyLXZhciAoYWRqb2luLXRlcm0gKG1h a2UtdGVybSBvdXRlci1vcmRlciAxKSAodGhlLWVtcHR5LXRlcm1saXN0KSkpCgkJICh0YWcgaW5u ZXItcG9seW5vbWlhbCkpCgkJKHRhZyAobWFrZS1wb2x5IGlubmVyLXZhcgoJCQkJKG11bC10ZXJt LWJ5LWFsbC10ZXJtcyAobWFrZS10ZXJtCgkJCQkJCQkwCgkJCQkJCQkobWFrZS1wb2x5bm9taWFs CgkJCQkJCQkgb3V0ZXItdmFyCgkJCQkJCQkgKGxpc3QgKG1ha2UtdGVybQoJCQkJCQkJCW91dGVy LW9yZGVyCgkJCQkJCQkJMSkpKSkgaW5uZXItcG9seSkpKSkpKQoJIzsoc2hvdyAjdCAiVGVzdFhY OiBzb3J0aW5nIHZhcmlhYmxlczogSXMgJ3ggPCAneT86ICIKCSAgICAgICh2YXJpYWJsZV8xLW9y ZGVyPHZhcmlhYmxlXzItb3JkZXIgJ3ggJ3kpICJcbiIpCgkjOyhzaG93ICN0ICJUZXN0WFg6IHNv cnRpbmcgdmFyaWFibGVzOiBJcyAneiA8ICd5PzogIgoJICAgICAgKHZhcmlhYmxlXzEtb3JkZXI8 dmFyaWFibGVfMi1vcmRlciAneiAneSkgIlxuIikKCSM7KHNob3cgI3QgIlRlc3RYWDogKGFkZGlu ZyB0d28gYmFzaWMgcG9seSk6ICIKCSAgICAgIChhZGQgKG1ha2UtcG9seW5vbWlhbCAneCAobGlz dCAobWFrZS10ZXJtIDEgMikgKG1ha2UtdGVybSAwIDQpKSkKCQkgICAobWFrZS1wb2x5bm9taWFs ICd5IChsaXN0IChtYWtlLXRlcm0gMiAzKSAobWFrZS10ZXJtIDAgNSkpKSkgIlxuIikKCgkoZGVm aW5lIChwb2x5bm9taWFsLT5zdW0tb2YtZmlyc3QtYW5kLXJlc3QgcG9seSkKCSAgIzsoc2hvdyAj dCAicC0+cy1vLWYtYS1yOiAiIChkaXNwbGF5ZWQgcG9seSkgIlxuIikKCSAgKGlmICh6ZXJvPyBw b2x5KQoJICAgICAgcG9seQoJICAgICAgKGxldCogKChwb2x5MSAoY29udGVudHMgcG9seSkpCgkJ ICAgICAoZmlyc3QtbW9ub21pYWwgKHRhZwoJCQkJICAgICAgKG1ha2UtcG9seQoJCQkJICAgICAg ICh2YXJpYWJsZSBwb2x5MSkKCQkJCSAgICAgICAobGlzdCAoZmlyc3QtdGVybSAodGVybS1saXN0 IHBvbHkxKSkpKSkpKQoJCSM7KHNob3cgI3QgInAtPnMtby1mLWEtcjogIiAoZGlzcGxheWVkIGZp cnN0LW1vbm9taWFsKSAiXG4iKQoJCShhZGQKCQkgIGZpcnN0LW1vbm9taWFsCgkJICAocG9seW5v bWlhbC0+c3VtLW9mLWZpcnN0LWFuZC1yZXN0CgkJICAgKHRhZyAobWFrZS1wb2x5ICh2YXJpYWJs ZSBwb2x5MSkgKHJlc3QtdGVybXMgKHRlcm0tbGlzdCBwb2x5MSkpKSkpKSkpKQoKCShzaG93ICN0 ICJUZXN0MTM6IEV4cGFuZGluZyBhIHBvbHlub21pYWwgYXMgbW9ub21pYWxzOiAiCgkgICAgICAo ZGlzcGxheWVkCgkgICAgICAgKHBvbHlub21pYWwtPnN1bS1vZi1maXJzdC1hbmQtcmVzdAoJCSht YWtlLXBvbHlub21pYWwgJ3kKCQkJCSAobGlzdCAobWFrZS10ZXJtIDIgKG1ha2UtcG9seW5vbWlh bAoJCQkJCQkgICAgICd4CgkJCQkJCSAgICAgKGxpc3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRl cm0gMCAxKSkpKQoJCQkJICAgICAgIChtYWtlLXRlcm0gMCAyKSkpKSkgIlxuIikKCgkoc2hvdyAj dCAiXG5UZXN0MjA6IHN0YXJ0IG1vbm9taWFsOiAiCgkgICAgICAoZGlzcGxheWVkIChtYWtlLXBv bHlub21pYWwgJ3gKCQkJCQkgIChsaXN0CgkJCQkJICAgKG1ha2UtdGVybQoJCQkJCSAgICAyCgkJ CQkJICAgIChtYWtlLXBvbHlub21pYWwKCQkJCQkgICAgICd5CgkJCQkJICAgICAobGlzdAoJCQkJ CSAgICAgIChtYWtlLXRlcm0gMiAxKSAobWFrZS10ZXJtIDAgMSkpKSkpKSkgIlxuIikKCShzaG93 ICN0ICJUZXN0MjA6IEZsaXBwaW5nIGEgbW9ub21pYWwgdmFyaWFibGU6ICIKCSAgICAgIChkaXNw bGF5ZWQKCSAgICAgICAobW9ub21pYWwtZmxpcC12YXJpYWJsZXMKCQkobWFrZS1wb2x5bm9taWFs ICd4CgkJCQkgKGxpc3QgKG1ha2UtdGVybSAxIChtYWtlLXBvbHlub21pYWwKCQkJCQkJICAgICAn eQoJCQkJCQkgICAgIChsaXN0CgkJCQkJCSAgICAgIChtYWtlLXRlcm0gMiAxKQoJCQkJCQkgICAg ICAobWFrZS10ZXJtIDAgMSkpKSkpKSkpICJcblxuIikKCgoJKGRlZmluZSAobm9ybWFsLXBvbHlu b21pYWw/IHBvbHkpCgkgICM7KHNob3cgI3QgIm4tcD86IHBvbHk9IiBwb2x5ICJcbiIpCgkgIChj b25kICgobm90IChwb2x5bm9taWFsPyBwb2x5KSkgI3QpCgkJKChudWxsPyAodGVybS1saXN0IChj b250ZW50cyBwb2x5KSkpICN0KQoJCShlbHNlIChsZXQqICgocG9seTEgKGNvbnRlbnRzIHBvbHkp KQoJCQkgICAgIChvdXRlci12YXIgKHZhcmlhYmxlIHBvbHkxKSkpCgkJCSM7KHNob3cgI3QgIklu bmVyLWxldDogb3V0ZXItdmFyPSIgKGRpc3BsYXllZCBvdXRlci12YXIpICJcbiIpCgkJCShsZXQg bG9vcCAoKHRlcm1zICh0ZXJtLWxpc3QgcG9seTEpKSkKCQkJICAjOyhzaG93ICN0ICJuLXA/LWxv b3A6IHRlcm1zPSIgKGRpc3BsYXllZCB0ZXJtcykgIlxuIikKCQkJICAoY29uZCAoKG51bGw/IHRl cm1zKSAjdCkKCQkJCSgobm90IChwb2x5bm9taWFsPyAoY29lZmYgKGZpcnN0LXRlcm0gdGVybXMp KSkpIChsb29wIChyZXN0LXRlcm1zIHRlcm1zKSkpCgkJCQkoKG5vdCAodmFyaWFibGVfMS1vcmRl cjx2YXJpYWJsZV8yLW9yZGVyIAoJCQkJICAgICBvdXRlci12YXIKCQkJCSAgICAgKHZhcmlhYmxl IChjb250ZW50cyAoY29lZmYgKGZpcnN0LXRlcm0gdGVybXMpKSkpKSkgKGJlZ2luICM7KHNob3cg I3QgIndyb25nIHZhcmlhYmxlIG9yZGVyIFxuIikgI2YpKQoJCQkJKChub3QgKG5vcm1hbC1wb2x5 bm9taWFsPyAoY29lZmYgKGZpcnN0LXRlcm0gdGVybXMpKSkpIChiZWdpbiAjOyhzaG93ICN0ICJu b3Qgbm9ybWFsIHBvbHlcbiIpICNmKSkKCQkJCShlbHNlIChsb29wIChyZXN0LXRlcm1zIHRlcm1z KSkpKSkKCQkJKSkpKQoJKGRlZmluZSAobm9ybWFsaXplLW9uY2UgcG9seSkKCSAgIzsoc2hvdyAj dCAibm9ybWFsaXplLW9uY2UgcG9seT0gIiAoZGlzcGxheWVkIHBvbHkpICJcbiIpCgkgIChpZiAo emVybz8gcG9seSkKCSAgICAgIHBvbHkKCSAgICAgIChsZXQqICgocG9seTEgKGNvbnRlbnRzIHBv bHkpKQoJCSAgICAgKGZpcnN0LW1vbm9taWFsICh0YWcKCQkJCSAgICAgIChtYWtlLXBvbHkKCQkJ CSAgICAgICAodmFyaWFibGUgcG9seTEpCgkJCQkgICAgICAgKGxpc3QgKG1ha2UtdGVybQoJCQkJ CSAgICAgIChvcmRlciAoZmlyc3QtdGVybSAodGVybS1saXN0IHBvbHkxKSkpCgkJCQkJICAgICAg KGlmIChwb2x5bm9taWFsPyAoY29lZmYgKGZpcnN0LXRlcm0gKHRlcm0tbGlzdCBwb2x5MSkpKSkK CQkJCQkJICAobm9ybWFsaXplLW9uY2UgKGNvZWZmIChmaXJzdC10ZXJtICh0ZXJtLWxpc3QgcG9s eTEpKSkpCgkJCQkJCSAgKGNvZWZmIChmaXJzdC10ZXJtICh0ZXJtLWxpc3QgcG9seTEpKSkpKSkp KSkpCgkJIzsoc2hvdyAjdCAicC0+cy1vLWYtYS1yOiAiIChkaXNwbGF5ZWQgZmlyc3QtbW9ub21p YWwpICJcbiIpCgkJKGFkZAoJCSAoaWYgKGFuZCAocG9seW5vbWlhbD8KCQkJIChjb2VmZgoJCQkg IChmaXJzdC10ZXJtCgkJCSAgICh0ZXJtLWxpc3QKCQkJICAgIChjb250ZW50cyBmaXJzdC1tb25v bWlhbCkpKSkpCgkJCSh2YXJpYWJsZV8xLW9yZGVyPHZhcmlhYmxlXzItb3JkZXIKCQkJICh2YXJp YWJsZQoJCQkgIChjb250ZW50cwoJCQkgICAoY29lZmYKCQkJICAgIChmaXJzdC10ZXJtCgkJCSAg ICAgKHRlcm0tbGlzdAoJCQkgICAgICAoY29udGVudHMgZmlyc3QtbW9ub21pYWwpKSkpKSkKCQkJ ICh2YXJpYWJsZQoJCQkgIChjb250ZW50cyBmaXJzdC1tb25vbWlhbCkpKSkKCQkgICAgIChtb25v bWlhbC1mbGlwLXZhcmlhYmxlcyBmaXJzdC1tb25vbWlhbCkKCQkgICAgIGZpcnN0LW1vbm9taWFs KQoJCSAgKHBvbHlub21pYWwtPnN1bS1vZi1maXJzdC1hbmQtcmVzdAoJCSAgICh0YWcgKG1ha2Ut cG9seSAodmFyaWFibGUgcG9seTEpIChyZXN0LXRlcm1zICh0ZXJtLWxpc3QgcG9seTEpKSkpKSkp KSkKCgkoc2hvdyAjdCAiVGVzdDIxOiBub3JtYWwtcG9seW5vbWlhbD86c3RhcnQ6ICIgKGRpc3Bs YXllZCAobWFrZS1wb2x5bm9taWFsICd5CgkJCQkJICAgICAgIChsaXN0IChtYWtlLXRlcm0gMiAo bWFrZS1wb2x5bm9taWFsCgkJCQkJCQkJICAgJ3gKCQkJCQkJICAgICAobGlzdCAobWFrZS10ZXJt IDIgMSkgKG1ha2UtdGVybSAwIDEpKSkpCgkJCQkJCSAgICAgKG1ha2UtdGVybSAwIDIpKSkpICJc biIpCgkoc2hvdyAjdCAiVGVzdDIxOiBub3JtYWwtcG9seW5vbWlhbD86cmVzdWx0OiIgKG5vcm1h bC1wb2x5bm9taWFsPyAobWFrZS1wb2x5bm9taWFsICd5CgkJCQkJICAgICAgIChsaXN0IChtYWtl LXRlcm0gMiAobWFrZS1wb2x5bm9taWFsCgkJCQkJCQkJICAgJ3gKCQkJCQkJICAgICAobGlzdCAo bWFrZS10ZXJtIDIgMSkgKG1ha2UtdGVybSAwIDEpKSkpCgkJCQkJCSAgICAgKG1ha2UtdGVybSAw IDIpKSkpICJcbiIpCgkoc2hvdyAjdCAiVGVzdDIyOiBub3JtYWwtcG9seW5vbWlhbD8tZ29vZDpz dGFydDogIgoJICAgICAgKGRpc3BsYXllZAoJICAgICAgIChtYWtlLXBvbHlub21pYWwgJ3gKCQkJ CShsaXN0IChtYWtlLXRlcm0gMiAobWFrZS1wb2x5bm9taWFsCgkJCQkJCSAgICAneQoJCQkJCQkg ICAgKGxpc3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0gMCAxKSkpKQoJCQkJICAgICAgKG1h a2UtdGVybSAwIDIpKSkpICJcbiIpCgkoc2hvdyAjdCAiVGVzdDIyOiBub3JtYWwtcG9seW5vbWlh bD8tZ29vZDpyZXN1bHQ6IgoJICAgICAgKG5vcm1hbC1wb2x5bm9taWFsPwoJICAgICAgIChtYWtl LXBvbHlub21pYWwgJ3gKCQkJCShsaXN0IChtYWtlLXRlcm0gMiAobWFrZS1wb2x5bm9taWFsCgkJ CQkJCSAgICAneQoJCQkJCQkgICAgKGxpc3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0gMCAx KSkpKQoJCQkJICAgICAgKG1ha2UtdGVybSAwIDIpKSkpICJcbiIpCgoJKHNob3cgI3QgIlRlc3Qy MzppbnB1dDogbm9ybWFsaXppbmcgYSBiYWQgcG9seW5vbWlhbDogIgoJICAgICAgKG1ha2UtcG9s eW5vbWlhbCAneQoJCQkJIChsaXN0IChtYWtlLXRlcm0gMiAobWFrZS1wb2x5bm9taWFsCgkJCQkJ CSAgICAgJ3gKCQkJCQkJICAgICAobGlzdCAobWFrZS10ZXJtIDIgMSkgKG1ha2UtdGVybSAwIDEp KSkpCgkJCQkgICAgICAgKG1ha2UtdGVybSAwIDIpKSkgIlxuIikKCShzaG93ICN0ICJUZXN0MjM6 cmVzdWx0OiBub3JtYWxpemluZyBhIGJhZCBwb2x5bm9taWFsOiAiCgkgICAgICAobm9ybWFsaXpl LW9uY2UgKG1ha2UtcG9seW5vbWlhbCAneQoJCQkJCSAgICAgICAobGlzdCAobWFrZS10ZXJtIDIg KG1ha2UtcG9seW5vbWlhbAoJCQkJCQkJCSAgICd4CgkJCQkJCSAgICAgKGxpc3QgKG1ha2UtdGVy bSAyIDEpIChtYWtlLXRlcm0gMCAxKSkpKQoJCQkJCQkgICAgIChtYWtlLXRlcm0gMCAyKSkpKSAi XG4iKQoJKHNob3cgI3QgIlRlc3QyNDppbnB1dDogbm9ybWFsaXppbmcgYSBiYWQgcG9seW5vbWlh bDogIgoJICAgICAgKG1ha2UtcG9seW5vbWlhbCAneAoJCQkJIChsaXN0IChtYWtlLXRlcm0gMiAo bWFrZS1wb2x5bm9taWFsCgkJCQkJCSAgICAgJ3gKCQkJCQkJICAgICAobGlzdCAobWFrZS10ZXJt IDIgMSkgKG1ha2UtdGVybSAwIDEpKSkpCgkJCQkgICAgICAgKG1ha2UtdGVybSAwIDIpKSkgIlxu IikKCShzaG93ICN0ICJUZXN0MjQ6cmVzdWx0OiBub3JtYWxpemluZyBhIGJhZCBwb2x5bm9taWFs OiAiCgkgICAgICAobm9ybWFsaXplLW9uY2UgKG1ha2UtcG9seW5vbWlhbCAneAoJCQkJCSAgICAg ICAobGlzdCAobWFrZS10ZXJtIDIgKG1ha2UtcG9seW5vbWlhbAoJCQkJCQkJCSAgICd4CgkJCQkJ CSAgICAgKGxpc3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0gMCAxKSkpKQoJCQkJCQkgICAg IChtYWtlLXRlcm0gMCAyKSkpKSAiXG4iKQoKCgkoc2hvdyAjdCAiVGVzdDI0OmlucHV0OiBub3Jt YWxpemUtZnVsbHkgYSBiYWQgcG9seW5vbWlhbDogIgoJICAgICAgKG1ha2UtcG9seW5vbWlhbCAn eQoJCQkJIChsaXN0IChtYWtlLXRlcm0gMiAobWFrZS1wb2x5bm9taWFsCgkJCQkJCSAgICAgJ3gK CQkJCQkJICAgICAobGlzdCAobWFrZS10ZXJtIDIgMSkgKG1ha2UtdGVybSAwIDEpKSkpCgkJCQkg ICAgICAgKG1ha2UtdGVybSAwIDIpKSkgIlxuIikKCShzaG93ICN0ICJUZXN0MjQ6cmVzdWx0OiBu b3JtYWxpemUtZnVsbHkgYSBiYWQgcG9seW5vbWlhbDogIgoJICAgICAgKG5vcm1hbGl6ZS1mdWxs eSAobWFrZS1wb2x5bm9taWFsICd5CgkJCQkJICAgICAgIChsaXN0IChtYWtlLXRlcm0gMiAobWFr ZS1wb2x5bm9taWFsCgkJCQkJCQkJICAgJ3gKCQkJCQkJICAgICAobGlzdCAobWFrZS10ZXJtIDIg MSkgKG1ha2UtdGVybSAwIDEpKSkpCgkJCQkJCSAgICAgKG1ha2UtdGVybSAwIDIpKSkpICJcbiIp CgoKCgknZG9uZSkKCgogICAgICAoZGVmaW5lIChpbnN0YWxsLXBvbHlub21pYWwtc3BhcnNlLXBh Y2thZ2UpCgkoZGVmaW5lIChjb2VmZiB0ZXJtKSAoY2FkciB0ZXJtKSkKCShkZWZpbmUgKGZpcnN0 LXRlcm0tc3BhcnNlIHRlcm0tbGlzdCkgKGNhciB0ZXJtLWxpc3QpKQoJKGRlZmluZSAoYWRqb2lu LXRlcm0tc3BhcnNlIHRlcm0gdGVybS1saXN0KQoJICAoaWYgKHplcm8/IChjb2VmZiB0ZXJtKSkK CSAgICAgIHRlcm0tbGlzdAoJICAgICAgKGNvbnMgdGVybSB0ZXJtLWxpc3QpKSkKCShwdXQgJ2Fk am9pbi10ZXJtICdzcGFyc2UgYWRqb2luLXRlcm0tc3BhcnNlKQoJKHB1dCAnZmlyc3QtdGVybSAn c3BhcnNlIGZpcnN0LXRlcm0tc3BhcnNlKQoJJ2RvbmUpCiAgICAgIChpbnN0YWxsLXBvbHlub21p YWwtc3BhcnNlLXBhY2thZ2UpCgogICAgICAoZGVmaW5lIChpbnN0YWxsLXBvbHlub21pYWwtZGVu c2UtcGFja2FnZSkKCShkZWZpbmUgKG1ha2UtdGVybSBvcmRlciBjb2VmZikgKGxpc3Qgb3JkZXIg Y29lZmYpKQoJKGRlZmluZSAob3JkZXIgdGVybSkgKGNhciB0ZXJtKSkKCShkZWZpbmUgKGNvZWZm IHRlcm0pIChjYWRyIHRlcm0pKQoKCShkZWZpbmUgKGFkam9pbi10ZXJtLWRlbnNlIHRlcm0gdGVy bS1saXN0KQoJICAgIChpZiAoemVybz8gKGNvZWZmIHRlcm0pKQoJCXRlcm0tbGlzdAoJCShpZiAo PiAob3JkZXIgdGVybSkgKGxlbmd0aCB0ZXJtLWxpc3QpKQoJCSAgICAoYXBwZW5kIChsaXN0IChj b2VmZiB0ZXJtKSkKCQkJICAgIChtYWtlLWxpc3QgKC0gKG9yZGVyIHRlcm0pIChsZW5ndGggdGVy bS1saXN0KSkgMCkKCQkJICAgIHRlcm0tbGlzdCkKCQkgICAgKGVycm9yICJhZGpvaW4tdGVybTpB cHBlbmRpbmcgYSBzbWFsbGVyIG9yZGVyIHRlcm0uIFJlY2hlY2suIikpKSkKCShkZWZpbmUgKGZp cnN0LXRlcm0tZGVuc2UgdGVybS1saXN0KSAKCSAgICM7KHNob3cgI3QgImZpcnN0LXRlcm0tZGVu c2U6ICIgKGRpc3BsYXllZCAobWFrZS10ZXJtIChjYXIgdGVybS1saXN0KSAobGVuZ3RoIChjZHIg dGVybS1saXN0KSkpKSAiXG4iKQoJICAgKG1ha2UtdGVybSAobGVuZ3RoIChjZHIgdGVybS1saXN0 KSkgKGNhciB0ZXJtLWxpc3QpICkpCgkocHV0ICdhZGpvaW4tdGVybSAnZGVuc2UgYWRqb2luLXRl cm0tZGVuc2UpCgkocHV0ICdmaXJzdC10ZXJtICdkZW5zZSBmaXJzdC10ZXJtLWRlbnNlKQoJJ2Rv bmUpCiAgICAgICM7KGluc3RhbGwtcG9seW5vbWlhbC1kZW5zZS1wYWNrYWdlKQoKICAgICAgKGRl ZmluZSAobWFrZS1wb2x5bm9taWFsIHZhciB0ZXJtcykKCSgoZ2V0ICdtYWtlICdwb2x5bm9taWFs KSB2YXIgdGVybXMpKQoKICAgIChpbnN0YWxsLXBvbHlub21pYWwtcGFja2FnZSkKCgogICAgICAj OyhzaG93ICN0ICJUZXN0IDI6IE1ha2luZyBwb2x5bm9taWFsczogIiAKCSAgICAobWFrZS1wb2x5 bm9taWFsICd4IChsaXN0IChsaXN0IDUgMSkgKGxpc3QgNCAyKSkpICJcbiIpCiAgICAgICM7KHNo b3cgI3QgIlRlc3QgMzogWmVybz86ICIgCgkgICAgKHplcm8/IChtYWtlLXBvbHlub21pYWwgJ3gg KGxpc3QgKGxpc3QgNSAxKSAobGlzdCA0IDIpKSkpICJcbiIpCiAgICAgICM7KHNob3cgI3QgIlRl c3QgNDogQWRkaW5nIHBvbHlub21pYWxzOiAiCgkgICAgKGFkZCAobWFrZS1wb2x5bm9taWFsICd4 ICcoKDUgMSkgKDQgMikgKDAgMSkpKQoJCSAobWFrZS1wb2x5bm9taWFsICd4ICcoKDUgMSkpKSkg IlxuIikKICAgICAgIzsoc2hvdyAjdCAiVGVzdCA0OiBaZXJvPzogIiAoemVybz8gKG1ha2UtcG9s eW5vbWlhbCAneCAnKCg1IDApICgzIDEpKSkpICJcbiIpCgogICAgICAjOyhzaG93ICN0ICJUZXN0 IDU6IFN1YnRyYWN0aW5nIHBvbHlub21pYWxzOiAiCgkgICAgKHN1YiAobWFrZS1wb2x5bm9taWFs ICd4ICcoKDUgMSkgKDQgMikgKDAgMSkpKQoJCSAobWFrZS1wb2x5bm9taWFsICd4ICcoKDAgMSkp KSkgIlxuIikKCiAgICAgICM7KHNob3cgI3QgIlRlc3QgNjogTWFraW5nIGEgZGVuc2UgcG9seW5v bWlhbDogIiAobWFrZS1wb2x5bm9taWFsICd4ICcoMSAyIDMgNCA1KSkgIlxuIikKICAgICAgIzso c2hvdyAjdCAiVGVzdCA3OiB6ZXJvPyBkZW5zZSBwb2x5bm9taWFsOiAiIChkaXNwbGF5ZWQgKHpl cm8/IChtYWtlLXBvbHlub21pYWwgJ3ggJygwKSkpKSAiXG4iKQogICAgICAjOyhzaG93ICN0ICJU ZXN0IDg6IHplcm8/IGRlbnNlIHBvbHlub21pYWw6ICIgKGRpc3BsYXllZCAoemVybz8gKG1ha2Ut cG9seW5vbWlhbCAneCAnKDEpKSkpICJcbiIpCiAgICAgICM7KHNob3cgI3QgIlRlc3QgOTogQWRk aW5nIGRlbnNlIHBvbHlub21pYWxzOiAiCgkgICAgKGFkZCAobWFrZS1wb2x5bm9taWFsICd4ICco MSAyIDAgMCAwIDEpKQoJCSAobWFrZS1wb2x5bm9taWFsICd4ICcoMSAwIDAgMCAwIDApKSkgIlxu IikKICAgICAgIzsoc2hvdyAjdCAiVGVzdDEwOiBTdWJ0cmFjdGluZyBkZW5zZSBwb2x5bm9taWFs czogIgoJICAgIChzdWIgKG1ha2UtcG9seW5vbWlhbCAneCAnKDEgMiAwIDAgMCAxKSkKCQkgKG1h a2UtcG9seW5vbWlhbCAneCAnKDEgMCAwIDAgMCAwKSkpICJcbiIpCiAgICAgICM7KHNob3cgI3Qg IlRlc3QxMTogU3VidHJhY3RpbmcgZGVuc2UgYW5kIHNwYXJzZSBwb2x5bm9taWFsczogIgoJICAg IChzdWIgKG1ha2UtcG9seW5vbWlhbCAneCAnKDEgMiAwIDAgMCAxKSkKCQkgKG1ha2UtcG9seW5v bWlhbCAneCAnKCg0IDIpKSkpICJcbiIpCiAgICAgICM7KHNob3cgI3QgIlRlc3QxMjogRGl2aWRp bmcgeF4yICsgMnggKyAxIGJ5IHgrMTogIgoJICAgIChkaXNwbGF5ZWQKCSAgICAgKGRpdiAobWFr ZS1wb2x5bm9taWFsICd4ICcoKDIgMSkgKDEgMikgKDAgMSkpKQoJCSAgKG1ha2UtcG9seW5vbWlh bCAneCAnKCAgICAgICgxIDEpICgwIDEpKSkpICkgIlxuIikKICAgICAgIzsoc2hvdyAjdCAiVGVz dDE0OiBBZGRpbmcgcG9seW5vbWlhbHMgb2YgdHdvIHZhcmlhYmxlczogIgoJICAgIChkaXNwbGF5 ZWQKCSAgICAgKGFkZCAobWFrZS1wb2x5bm9taWFsICd4ICcoKDEgMSkpKQoJCSAgKG1ha2UtcG9s eW5vbWlhbCAneSAnKCgxIDEpKSkpKSkKICAgICAgIzsoc2hvdyAjdCAiVGVzdDE0OiBBZGRpbmcg cG9seW5vbWlhbHMgb2YgdHdvIHZhcmlhYmxlcywgd2hlbiBvbmUgb2YgdGhlbSBpcyBub25leGlz dGFudDogIgoJICAgIChkaXNwbGF5ZWQKCSAgICAgKGFkZCAobWFrZS1wb2x5bm9taWFsICd4ICco KDEgMSkpKQoJCSAgKG1ha2UtcG9seW5vbWlhbCAneSAnKCgwIDEpKSkpKSkKICAgIChzaG93ICN0 ICJUZXN0MjU6IG11bHRpcGx5aW5nIGRpZmZlcmVudCB2YXJpYWJsZXM6ICIKCSAgKGRpc3BsYXll ZCAobXVsIChtYWtlLXBvbHlub21pYWwgJ3ggJygoMSAxKSkpCgkJCSAgKG1ha2UtcG9seW5vbWlh bCAneSAnKCgxIDEpKSkpKSAiXG4iKQogIChiZWdpbgogIChkZWZpbmUgcDEgKG1ha2UtcG9seW5v bWlhbCAneCAnKCgyIDEpICgwIDEpKSkpCiAgKGRlZmluZSBwMiAobWFrZS1wb2x5bm9taWFsICd4 ICcoKDMgMSkgKDAgMSkpKSkKICAoZGVmaW5lIHJmIChtYWtlLXJhdGlvbmFsIHAyIHAxKSkKICAo c2hvdyAjdCAiVGVzdCAyNjogbWFrZS1yYXRpb25hbC1wb2x5bm9taWFsOiAiIHJmICJcbiIpCiAg KHNob3cgI3QgIlRlc3QgMjc6IGFkZC1yYXRpb25hbFxuIikKICAoc2hvdyAjdCAiVGVzdCAyNzog IiAoYWRkIHJmIHJmKSAiXG4iKQogICkKCiAgKHNob3cgI3QgIlRlc3QgMjg6IHBvbHlub21pYWwt Z2NkOiBzdGFydFxuIikKICAoZGVmaW5lIChncmVhdGVzdC1jb21tb24tZGl2aXNvciBwMSBwMikg KGFwcGx5LWdlbmVyaWMgJ2djZCBwMSBwMikpCiAgKGJlZ2luCiAgICAoZGVmaW5lIHAxIChtYWtl LXBvbHlub21pYWwKCQkgJ3ggJygoNCAxKSAoMyAtMSkgKDIgLTIpICgxIDIpKSkpCiAgICAoZGVm aW5lIHAyIChtYWtlLXBvbHlub21pYWwgJ3ggJygoMyAxKSAoMSAtMSkpKSkKICAKICAgIChzaG93 ICN0ICJUZXN0IDI4OiBwb2x5bm9taWFsLWdjZDogIiAoZ3JlYXRlc3QtY29tbW9uLWRpdmlzb3Ig cDEgcDIpICJcbiIpKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKIytiZWdpbl9leGFtcGxlClRlc3Q6 IEhpZ2hlciB0aGFuICdpbnRlZ2VyOiBzY2hlbWUtbnVtYmVyClRlc3QgMTogU3VidHJhY3Rpbmcg Y29tcGxleCBudW1iZXJzOiAoc2NoZW1lLW51bWJlciAuIDEuMSkKVGVzdFkyOiBwb2x5IG9mIHBv bHk6ICh4ICgzICh5ICgxIDEpICgwIDEpKSkgKDEgMikgKDAgNCkpClRlc3QxMzogRXhwYW5kaW5n IGEgcG9seW5vbWlhbCBhcyBtb25vbWlhbHM6IChwb2x5bm9taWFsIHggKDIgKHBvbHlub21pYWwg eSAoMiAxKSkpICgwIChwb2x5bm9taWFsIHkgKDIgMSkgKDAgMikpKSkKClRlc3QyMDogc3RhcnQg bW9ub21pYWw6IChwb2x5bm9taWFsIHggKDIgKHBvbHlub21pYWwgeSAoMiAxKSAoMCAxKSkpKQpU ZXN0MjA6IEZsaXBwaW5nIGEgbW9ub21pYWwgdmFyaWFibGU6IChwb2x5bm9taWFsIHkgKDIgKHBv bHlub21pYWwgeCAoMSAxKSkpICgwIChwb2x5bm9taWFsIHggKDEgMSkpKSkKClRlc3QyMTogbm9y bWFsLXBvbHlub21pYWw/OnN0YXJ0OiAocG9seW5vbWlhbCB5ICgyIChwb2x5bm9taWFsIHggKDIg MSkgKDAgMSkpKSAoMCAyKSkKVGVzdDIxOiBub3JtYWwtcG9seW5vbWlhbD86cmVzdWx0OiNmClRl c3QyMjogbm9ybWFsLXBvbHlub21pYWw/LWdvb2Q6c3RhcnQ6IChwb2x5bm9taWFsIHggKDIgKHBv bHlub21pYWwgeSAoMiAxKSAoMCAxKSkpICgwIDIpKQpUZXN0MjI6IG5vcm1hbC1wb2x5bm9taWFs Py1nb29kOnJlc3VsdDojdApUZXN0MjM6aW5wdXQ6IG5vcm1hbGl6aW5nIGEgYmFkIHBvbHlub21p YWw6IChwb2x5bm9taWFsIHkgKDIgKHBvbHlub21pYWwgeCAoMiAxKSAoMCAxKSkpICgwIDIpKQpU ZXN0MjM6cmVzdWx0OiBub3JtYWxpemluZyBhIGJhZCBwb2x5bm9taWFsOiAocG9seW5vbWlhbCB4 ICgyIChwb2x5bm9taWFsIHkgKDIgMSkpKSAoMCAocG9seW5vbWlhbCB5ICgyIDEpICgwIDIpKSkp ClRlc3QyNDppbnB1dDogbm9ybWFsaXppbmcgYSBiYWQgcG9seW5vbWlhbDogKHBvbHlub21pYWwg eCAoMiAocG9seW5vbWlhbCB4ICgyIDEpICgwIDEpKSkgKDAgMikpClRlc3QyNDpyZXN1bHQ6IG5v cm1hbGl6aW5nIGEgYmFkIHBvbHlub21pYWw6IChwb2x5bm9taWFsIHggKDQgMSkgKDIgMSkgKDAg MikpClRlc3QyNDppbnB1dDogbm9ybWFsaXplLWZ1bGx5IGEgYmFkIHBvbHlub21pYWw6IChwb2x5 bm9taWFsIHkgKDIgKHBvbHlub21pYWwgeCAoMiAxKSAoMCAxKSkpICgwIDIpKQpUZXN0MjQ6cmVz dWx0OiBub3JtYWxpemUtZnVsbHkgYSBiYWQgcG9seW5vbWlhbDogKHBvbHlub21pYWwgeCAoMiAo cG9seW5vbWlhbCB5ICgyIDEpKSkgKDAgKHBvbHlub21pYWwgeSAoMiAxKSAoMCAyKSkpKQpUZXN0 MjU6IG11bHRpcGx5aW5nIGRpZmZlcmVudCB2YXJpYWJsZXM6IChwb2x5bm9taWFsIHggKDEgKHBv bHlub21pYWwgeSAoMSAxKSkpKQpUZXN0IDI2OiBtYWtlLXJhdGlvbmFsLXBvbHlub21pYWw6IChy YXRpb25hbCAocG9seW5vbWlhbCB4ICgzIDEpICgwIDEpKSBwb2x5bm9taWFsIHggKDIgMSkgKDAg MSkpClRlc3QgMjc6IGFkZC1yYXRpb25hbApyYXRpb25hbCBub3QgZHJvcHBhYmxlOiAjZgpUZXN0 IDI3OiAocmF0aW9uYWwgKHBvbHlub21pYWwgeCAoNSAyKSAoMyAyKSAoMiAyKSAoMCAyKSkgcG9s eW5vbWlhbCB4ICg0IDEpICgyIDIpICgwIDEpKQpUZXN0IDI4OiBwb2x5bm9taWFsLWdjZDogc3Rh cnQKVGVzdCAyODogcG9seW5vbWlhbC1nY2Q6IChwb2x5bm9taWFsIHggKDIgLTEpICgxIDEpKQoj K2VuZF9leGFtcGxlCgpTbyB0aGUgYW5zd2VyIGlzIFwoLXheMiArIHhcKS4gTm93IHdlIG5lZWQg dG8gY2hlY2sgdGhpcy4gTHVja2lseSwgdGhlIG51bWJlcgpvZiBpdGVyYXRpb25zIGlzIG5vdCB2 ZXJ5IGJpZy4KCldvbGZyYW0gQWxwaGEgZ2l2ZXMgbWUgXCh4XjIgLSB4XCksIHdoaWNoIGlzIHRo ZSBzYW1lIHRoaW5nLCBJIGd1ZXNzLgoKKioqIERPTkUgRXhlcmNpc2UgMi45NSBJbGx1c3RyYXRl IHRoZSBub24taW50ZWdlciBwcm9ibGVtCiAgICBDTE9TRUQ6IFsyMDE5LTEwLTI4IE1vbiAxMToz NV0KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAogICAg KGRlZmluZSAodGhpbmd5LXNvdXJjZSB0aGluZ3kpCiAgICAgIChjb25kICgobGFtYmRhPyB0aGlu Z3kpIChsaXN0ICJsYW1iZGEiIChsYW1iZGEtc291cmNlIHRoaW5neSkpKQoJICAgICgocHJvY2Vk dXJlPyB0aGluZ3kpIChsaXN0ICJwcm9jZWR1cmUiIChwcm9jZWR1cmUtbmFtZSB0aGluZ3kpKSkK CSAgICAoKHBhaXI/IHRoaW5neSkgKGxpc3QgInBhaXIiIChwYWlyLXNvdXJjZSB0aGluZ3kpKSkK CSAgICAoZWxzZSAiTm8gc291cmNlPyByZWZhY3RvciIpKSkKCiAgICAgIChkZWZpbmUgKGFjY3Vt dWxhdGUgb3AgaW5pdGlhbCBzZXF1ZW5jZSkKCShpZiAobnVsbD8gc2VxdWVuY2UpCgkgICAgaW5p dGlhbAoJICAgIChhY2N1bXVsYXRlIG9wIChvcCBpbml0aWFsIChjYXIgc2VxdWVuY2UpKSAoY2Ry IHNlcXVlbmNlKSkpKQogICAgICAoZGVmaW5lIGZhbHNlICNmKQogICAgICAoZGVmaW5lIHRydWUg ICN0KQogICAgICAoZGVmaW5lIChtYWtlLXRhYmxlKQoJKGxldCAoKGxvY2FsLXRhYmxlIChsaXN0 ICcqdGFibGUqKSkpCgkgIChkZWZpbmUgKGxvb2t1cCBrZXktMSBrZXktMikKCSAgICAobGV0ICgo c3VidGFibGUgKGFzc29jIGtleS0xIChjZHIgbG9jYWwtdGFibGUpKSkpCgkgICAgICAoaWYgc3Vi dGFibGUKCQkgIChsZXQgKChyZWNvcmQgKGFzc29jIGtleS0yIChjZHIgc3VidGFibGUpKSkpCgkJ ICAgIChpZiByZWNvcmQKCQkJKGNkciByZWNvcmQpCgkJCWZhbHNlKSkKCQkgIGZhbHNlKSkpCgkg IChkZWZpbmUgKGluc2VydCEga2V5LTEga2V5LTIgdmFsdWUpCgkgICAgKGxldCAoKHN1YnRhYmxl IChhc3NvYyBrZXktMSAoY2RyIGxvY2FsLXRhYmxlKSkpKQoJICAgICAgKGlmIHN1YnRhYmxlCgkJ ICAobGV0ICgocmVjb3JkIChhc3NvYyBrZXktMiAoY2RyIHN1YnRhYmxlKSkpKQoJCSAgICAoaWYg cmVjb3JkCgkJCShzZXQtY2RyISByZWNvcmQgdmFsdWUpCgkJCShzZXQtY2RyISBzdWJ0YWJsZQoJ CQkJICAoY29ucyAoY29ucyBrZXktMiB2YWx1ZSkKCQkJCQkoY2RyIHN1YnRhYmxlKSkpKSkKCQkg IChzZXQtY2RyISBsb2NhbC10YWJsZQoJCQkgICAgKGNvbnMgKGxpc3Qga2V5LTEKCQkJCQkoY29u cyBrZXktMiB2YWx1ZSkpCgkJCQkgIChjZHIgbG9jYWwtdGFibGUpKSkpKQoJICAgICdvaykKCSAg KGRlZmluZSAoZGlzcGF0Y2ggbSkKCSAgICAoY29uZCAoKGVxPyBtICdsb29rdXAtcHJvYykgbG9v a3VwKQoJCSAgKChlcT8gbSAnaW5zZXJ0LXByb2MhKSBpbnNlcnQhKQoJCSAgKGVsc2UgKGVycm9y ICJVbmtub3duIG9wZXJhdGlvbiAtLSBUQUJMRSIgbSkpKSkKCSAgZGlzcGF0Y2gpKQoKICAgICAg KGRlZmluZSBvcGVyYXRpb24tdGFibGUgKG1ha2UtdGFibGUpKQogICAgICAoZGVmaW5lIGdldCAo b3BlcmF0aW9uLXRhYmxlICdsb29rdXAtcHJvYykpCiAgICAgIChkZWZpbmUgcHV0IChvcGVyYXRp b24tdGFibGUgJ2luc2VydC1wcm9jISkpCgogICAgICAoZGVmaW5lIGNvZXJjaW9uLXRhYmxlICht YWtlLXRhYmxlKSkKICAgICAgKGRlZmluZSBnZXQtY29lcmNpb24gKGNvZXJjaW9uLXRhYmxlICds b29rdXAtcHJvYykpCiAgICAgIChkZWZpbmUgcHV0LWNvZXJjaW9uIChjb2VyY2lvbi10YWJsZSAn aW5zZXJ0LXByb2MhKSkKCiAgICAgIChkZWZpbmUgKGF0dGFjaC10YWcgdHlwZS10YWcgY29udGVu dHMpCgkoY29ucyB0eXBlLXRhZyBjb250ZW50cykpCgogICAgICAoZGVmaW5lICh0eXBlLXRhZyBk YXR1bSkKCShjb25kICgocGFpcj8gZGF0dW0pIChjYXIgZGF0dW0pKQoJICAgICAgKChleGFjdC1p bnRlZ2VyPyBkYXR1bSkgJ2ludGVnZXIpCgkgICAgICAoKHJlYWw/IGRhdHVtKSAnc2NoZW1lLW51 bWJlcikKCSAgICAgIChlcnJvciAiQmFkIHRhZ2dlZCBkYXR1bSAtLSBUWVBFLVRBRyIgZGF0dW0p KSkKCiAgICAoZGVmaW5lIChjb250ZW50cyBkYXR1bSkKCShjb25kICgocGFpcj8gZGF0dW0pIChj ZHIgZGF0dW0pKQoJICAgICAgKChpbnRlZ2VyPyBkYXR1bSkgZGF0dW0pCgkgICAgICAoKHJlYWw/ IGRhdHVtKSBkYXR1bSkKCSAgICAgIChlbHNlIChlcnJvciAiQmFkIHRhZ2dlZCBkYXR1bSAtLSBD T05URU5UUyIgZGF0dW0pKSkpCgogICAgICAoZGVmaW5lIChpbnRlZ2VyPyB4KQoJKGVxPyAodHlw ZS10YWcgeCkgJ2ludGVnZXIpKQogICAgICAoZGVmaW5lIChyZWN0YW5ndWxhcj8geikKCShlcT8g KHR5cGUtdGFnIHopICdyZWN0YW5ndWxhcikpCgogICAgICAoZGVmaW5lIChwb2xhcj8geikKCShl cT8gKHR5cGUtdGFnIHopICdwb2xhcikpCgoKICAgICAgKGRlZmluZSAocmVhbC1wYXJ0IHopIChh cHBseS1nZW5lcmljICdyZWFsLXBhcnQgeikpCiAgICAgIChkZWZpbmUgKGltYWctcGFydCB6KSAo YXBwbHktZ2VuZXJpYyAnaW1hZy1wYXJ0IHopKQogICAgICAoZGVmaW5lIChtYWduaXR1ZGUgeikg KGFwcGx5LWdlbmVyaWMgJ21hZ25pdHVkZSB6KSkKICAgICAgKGRlZmluZSAoYW5nbGUgeikgKGFw cGx5LWdlbmVyaWMgJ2FuZ2xlIHopKQoKICAgICAgKGRlZmluZSAoYWRkIHggeSkgKGFwcGx5LWdl bmVyaWMgJ2FkZCB4IHkpKQogICAgICAoZGVmaW5lIChzdWIgeCB5KSAoYXBwbHktZ2VuZXJpYyAn c3ViIHggeSkpCiAgICAgIChkZWZpbmUgKG11bCB4IHkpIChhcHBseS1nZW5lcmljICdtdWwgeCB5 KSkKICAgICAgKGRlZmluZSAoZGl2IHggeSkgKGFwcGx5LWdlbmVyaWMgJ2RpdiB4IHkpKQoKICAg ICAgKGRlZmluZSAoZXF1PyB4IHkpCgkoYXBwbHktZ2VuZXJpYyAnZXF1PyB4IHkpKQogICAgICAo ZGVmaW5lICh6ZXJvPyB4KSAoYXBwbHktZ2VuZXJpYyAnemVybz8geCkpCgogICAgICAoZGVmaW5l IChleHAgeCB5KSAoYXBwbHktZ2VuZXJpYyAnZXhwIHggeSkpCgogICAgICAoZGVmaW5lIChpbnN0 YWxsLXNjaGVtZS1udW1iZXItcGFja2FnZSkKCShkZWZpbmUgKHRhZyB4KQoJICAoYXR0YWNoLXRh ZyAnc2NoZW1lLW51bWJlciB4KSkKCShwdXQgJ2FkZCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51 bWJlcikKCSAgICAgKGxhbWJkYSAoeCB5KSAodGFnICgrIHggeSkpKSkKCShwdXQgJ3N1YiAnKHNj aGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAgICAgKGxhbWJkYSAoeCB5KSAodGFnICgtIHgg eSkpKSkKCShwdXQgJ211bCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAgICAgKGxh bWJkYSAoeCB5KSAodGFnICgqIHggeSkpKSkKCShwdXQgJ2RpdiAnKHNjaGVtZS1udW1iZXIgc2No ZW1lLW51bWJlcikKCSAgICAgKGxhbWJkYSAoeCB5KSAodGFnICgvIHggeSkpKSkKCShwdXQgJ21h a2UgJ3NjaGVtZS1udW1iZXIKCSAgICAgKGxhbWJkYSAoeCkgKHRhZyB4KSkpCgkocHV0ICdlcXU/ ICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJICAgICAobGFtYmRhICh4IHkpICg9IHgg eSkpKQoJKHB1dCAnemVybz8gJyhzY2hlbWUtbnVtYmVyKQoJICAgICAobGFtYmRhICh4KSAoPSAw IHgpKSkKCShwdXQgJ2V4cCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCSAgICAgKGxh bWJkYSAoeCB5KSAodGFnIChleHB0IHggeSkpKSkKCShwdXQgJ3Byb2plY3QgJyhzY2hlbWUtbnVt YmVyKQoJICAgICAobGFtYmRhICh4KQoJICAgICAgIChleGFjdCAodHJ1bmNhdGUgeCkpKSkKCShw dXQgJ3NpbmUgJyhzY2hlbWUtbnVtYmVyKSBzaW4pCgkocHV0ICdjb3NpbmUgJyhzY2hlbWUtbnVt YmVyKSBjb3MpCgkocHV0ICdzcXVhcmUtcm9vdCAnKHNjaGVtZS1udW1iZXIpIHNxcnQpCgkocHV0 ICdhcmN0YW5nZW50ICcoc2NoZW1lci1udW1iZXIpIGF0YW4pCgknZG9uZSkKCiAgICAgIChkZWZp bmUgKHNpbmUgeCkgKGFwcGx5LWdlbmVyaWMgJ3NpbmUgeCkpCiAgICAgIChkZWZpbmUgKGNvc2lu ZSB4KSAoYXBwbHktZ2VuZXJpYyAnY29zaW5lIHgpKQogICAgICAoZGVmaW5lIChzcXVhcmUtcm9v dCB4KSAoYXBwbHktZ2VuZXJpYyAnc3F1YXJlLXJvb3QgeCkpCiAgICAgIChkZWZpbmUgKGFyY3Rh bmdlbnQgeCkgKGFwcGx5LWdlbmVyaWMgJ2FyY3RhbmdlbnQgeCkpCgogICAgICAoZGVmaW5lICht YWtlLXNjaGVtZS1udW1iZXIgbikKCSgoZ2V0ICdtYWtlICdzY2hlbWUtbnVtYmVyKSBuKSkKCiAg ICAgIChkZWZpbmUgKGluc3RhbGwtcmF0aW9uYWwtcGFja2FnZSkKCShkZWZpbmUgKG51bWVyIHgp IChjYXIgeCkpCgkoZGVmaW5lIChkZW5vbSB4KSAoY2RyIHgpKQoJKGRlZmluZSAobWFrZS1yYXQg biBkKQoJICAjOyhsZXQgKChnIChnY2QgbiBkKSkpCgkgICAgKGNvbnMgKC8gbiBnKSAoLyBkIGcp KSkKCSAgICAoY29ucyBuIGQpKQoJKGRlZmluZSAoYWRkLXJhdCB4IHkpCgkgIChtYWtlLXJhdCAo YWRkIChtdWwgKG51bWVyIHgpIChkZW5vbSB5KSkKCQkgICAgICAgKG11bCAobnVtZXIgeSkgKGRl bm9tIHgpKSkKCQkgICAgKG11bCAoZGVub20geCkgKGRlbm9tIHkpKSkpCgkoZGVmaW5lIChzdWIt cmF0IHggeSkKCSAgKG1ha2UtcmF0IChzdWIgKG11bCAobnVtZXIgeCkgKGRlbm9tIHkpKQoJCSAg ICAgICAobXVsIChudW1lciB5KSAoZGVub20geCkpKQoJCSAgICAobXVsIChkZW5vbSB4KSAoZGVu b20geSkpKSkKCShkZWZpbmUgKG11bC1yYXQgeCB5KQoJICAobWFrZS1yYXQgKG11bCAobnVtZXIg eCkgKG51bWVyIHkpKQoJCSAgICAobXVsIChkZW5vbSB4KSAoZGVub20geSkpKSkKCShkZWZpbmUg KGRpdi1yYXQgeCB5KQoJICAobWFrZS1yYXQgKG11bCAobnVtZXIgeCkgKGRlbm9tIHkpKQoJCSAg ICAobXVsIChkZW5vbSB4KSAobnVtZXIgeSkpKSkKCgkoZGVmaW5lICh0YWcgeCkgKGF0dGFjaC10 YWcgJ3JhdGlvbmFsIHgpKQoJKHB1dCAnYWRkICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgICAgIChs YW1iZGEgKHggeSkgKHRhZyAoYWRkLXJhdCB4IHkpKSkpCgkocHV0ICdzdWIgJyhyYXRpb25hbCBy YXRpb25hbCkKCSAgICAgKGxhbWJkYSAoeCB5KSAodGFnIChzdWItcmF0IHggeSkpKSkKCShwdXQg J211bCAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJICAgICAobGFtYmRhICh4IHkpICh0YWcgKG11bC1y YXQgeCB5KSkpKQoJKHB1dCAnZGl2ICcocmF0aW9uYWwgcmF0aW9uYWwpCgkgICAgIChsYW1iZGEg KHggeSkgKHRhZyAoZGl2LXJhdCB4IHkpKSkpCgoJKHB1dCAnbWFrZSAncmF0aW9uYWwKCSAgICAg KGxhbWJkYSAobiBkKSAodGFnIChtYWtlLXJhdCBuIGQpKSkpCgkocHV0ICdlcXU/ICcocmF0aW9u YWwgcmF0aW9uYWwpCgkgICAgIChsYW1iZGEgKHggeSkgKHplcm8/IChudW1lciAoc3ViLXJhdCB4 IHkpKSkpKQoJKHB1dCAnemVybz8gJyhyYXRpb25hbCkgKGxhbWJkYSAoeCkgKHplcm8/IChudW1l ciB4KSkpKQoJIzsocHV0ICdwcm9qZWN0ICcocmF0aW9uYWwpIChsYW1iZGEgKHgpIAoJCQkJICAg IChleGFjdCAodHJ1bmNhdGUgKC8gKG51bWVyIHgpIChkZW5vbSB4KSkpKSkpCgkjOyhwdXQgJ3Rv LXJlYWwgJyhyYXRpb25hbCkgKGxhbWJkYSAoeCkgKC8gKG51bWVyIChjb250ZW50cyB4KSkgKGRl bm9tIChjb250ZW50cyB4KSkpKSkKCSdkb25lKQoKICAgICAgKGRlZmluZSAobWFrZS1yYXRpb25h bCBuIGQpCgkoKGdldCAnbWFrZSAncmF0aW9uYWwpIG4gZCkpCgogICAgICAoZGVmaW5lIChpbnN0 YWxsLXJlY3Rhbmd1bGFyLXBhY2thZ2UpCgoJKGRlZmluZSAocmVhbC1wYXJ0IHopIChjYXIgeikp CgkoZGVmaW5lIChpbWFnLXBhcnQgeikgKGNkciB6KSkKCShkZWZpbmUgKG1ha2UtZnJvbS1yZWFs LWltYWcgeCB5KSAoY29ucyB4IHkpKQoJKGRlZmluZSAobWFnbml0dWRlIHopCgkgIChzcXVhcmUt cm9vdCAoYWRkIChzcXVhcmUgKHJlYWwtcGFydCB6KSkKCQkJICAgIChzcXVhcmUgKGltYWctcGFy dCB6KSkpKSkKCShkZWZpbmUgKGFuZ2xlIHopCgkgIChhcmN0YW5nZW50IChpbWFnLXBhcnQgeikg KHJlYWwtcGFydCB6KSkpCgkoZGVmaW5lIChtYWtlLWZyb20tbWFnLWFuZyByIGEpCgkgIChjb25z IChtdWwgciAoY29zaW5lIGEpKSAobXVsIHIgKHNpbmUgYSkpKSkKCgkoZGVmaW5lICh0YWcgeCkg KGF0dGFjaC10YWcgJ3JlY3Rhbmd1bGFyIHgpKQoJKHB1dCAncmVhbC1wYXJ0ICcocmVjdGFuZ3Vs YXIpIHJlYWwtcGFydCkKCShwdXQgJ2ltYWctcGFydCAnKHJlY3Rhbmd1bGFyKSBpbWFnLXBhcnQp CgkocHV0ICdtYWduaXR1ZGUgJyhyZWN0YW5ndWxhcikgbWFnbml0dWRlKQoJKHB1dCAnYW5nbGUg JyhyZWN0YW5ndWxhcikgYW5nbGUpCgkocHV0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdyZWN0YW5n dWxhcgoJICAgICAobGFtYmRhICh4IHkpICh0YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSkp KQoJKHB1dCAnbWFrZS1mcm9tLW1hZy1hbmcgJ3JlY3Rhbmd1bGFyCgkgICAgIChsYW1iZGEgKHIg YSkgKHRhZyAobWFrZS1mcm9tLW1hZy1hbmcgciBhKSkpKQoJJ2RvbmUpCgogICAgICAoZGVmaW5l IChpbnN0YWxsLXBvbGFyLXBhY2thZ2UpCgoJKGRlZmluZSAobWFnbml0dWRlIHopIChjYXIgeikp CgkoZGVmaW5lIChhbmdsZSB6KSAoY2RyIHopKQoJKGRlZmluZSAobWFrZS1mcm9tLW1hZy1hbmcg ciBhKSAoY29ucyByIGEpKQoJKGRlZmluZSAocmVhbC1wYXJ0IHopCgkgIChtdWwgKG1hZ25pdHVk ZSB6KSAoY29zaW5lIChhbmdsZSB6KSkpKQoJKGRlZmluZSAoaW1hZy1wYXJ0IHopCgkgIChtdWwg KG1hZ25pdHVkZSB6KSAoc2luZSAoYW5nbGUgeikpKSkKCShkZWZpbmUgKG1ha2UtZnJvbS1yZWFs LWltYWcgeCB5KQoJICAoY29ucyAoc3F1YXJlLXJvb3QgKGFkZCAoc3F1YXJlIHgpIChzcXVhcmUg eSkpKQoJCShhcmN0YW5nZW50IHkgeCkpKQoKCShkZWZpbmUgKHRhZyB4KSAoYXR0YWNoLXRhZyAn cG9sYXIgeCkpCgkocHV0ICdyZWFsLXBhcnQgJyhwb2xhcikgcmVhbC1wYXJ0KQoJKHB1dCAnaW1h Zy1wYXJ0ICcocG9sYXIpIGltYWctcGFydCkKCShwdXQgJ21hZ25pdHVkZSAnKHBvbGFyKSBtYWdu aXR1ZGUpCgkocHV0ICdhbmdsZSAnKHBvbGFyKSBhbmdsZSkKCShwdXQgJ21ha2UtZnJvbS1yZWFs LWltYWcgJ3BvbGFyCgkgICAgIChsYW1iZGEgKHggeSkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1h ZyB4IHkpKSkpCgkocHV0ICdtYWtlLWZyb20tbWFnLWFuZyAncG9sYXIKCSAgICAgKGxhbWJkYSAo ciBhKSAodGFnIChtYWtlLWZyb20tbWFnLWFuZyByIGEpKSkpCgknZG9uZSkKCiAgICAgIChkZWZp bmUgKGluc3RhbGwtY29tcGxleC1wYWNrYWdlKQoJKGRlZmluZSAobWFrZS1mcm9tLXJlYWwtaW1h ZyB4IHkpCgkgICgoZ2V0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdyZWN0YW5ndWxhcikgeCB5KSkK CShkZWZpbmUgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkKCSAgKChnZXQgJ21ha2UtZnJvbS1tYWct YW5nICdwb2xhcikgciBhKSkKCShkZWZpbmUgKGFkZC1jb21wbGV4IHoxIHoyKQoJICAobWFrZS1m cm9tLXJlYWwtaW1hZyAoYWRkIChyZWFsLXBhcnQgejEpIChyZWFsLXBhcnQgejIpKQoJCQkgICAg ICAgKGFkZCAoaW1hZy1wYXJ0IHoxKSAoaW1hZy1wYXJ0IHoyKSkpKQoJKGRlZmluZSAoc3ViLWNv bXBsZXggejEgejIpCgkgIChtYWtlLWZyb20tcmVhbC1pbWFnIChzdWIgKHJlYWwtcGFydCB6MSkg KHJlYWwtcGFydCB6MikpCgkJCSAgICAgICAoc3ViIChpbWFnLXBhcnQgejEpIChpbWFnLXBhcnQg ejIpKSkpCgkoZGVmaW5lIChtdWwtY29tcGxleCB6MSB6MikKCSAgKG1ha2UtZnJvbS1tYWctYW5n IChtdWwgKG1hZ25pdHVkZSB6MSkgKG1hZ25pdHVkZSB6MikpCgkJCSAgICAgKGFkZCAoYW5nbGUg ejEpIChhbmdsZSB6MikpKSkKCShkZWZpbmUgKGRpdi1jb21wbGV4IHoxIHoyKQoJICAobWFrZS1m cm9tLW1hZy1hbmcgKGRpdiAobWFnbml0dWRlIHoxKSAobWFnbml0dWRlIHoyKSkKCQkJICAgICAo c3ViIChhbmdsZSB6MSkgKGFuZ2xlIHoyKSkpKQoJKGRlZmluZSAodGFnIHopIChhdHRhY2gtdGFn ICdjb21wbGV4IHopKQoJKHB1dCAnYWRkICcoY29tcGxleCBjb21wbGV4KQoJICAgICAobGFtYmRh ICh6MSB6MikgKHRhZyAoYWRkLWNvbXBsZXggejEgejIpKSkpCgkocHV0ICdzdWIgJyhjb21wbGV4 IGNvbXBsZXgpCgkgICAgIChsYW1iZGEgKHoxIHoyKSAodGFnIChzdWItY29tcGxleCB6MSB6Mikp KSkKCShwdXQgJ211bCAnKGNvbXBsZXggY29tcGxleCkKCSAgICAgKGxhbWJkYSAoejEgejIpICh0 YWcgKG11bC1jb21wbGV4IHoxIHoyKSkpKQoJKHB1dCAnZGl2ICcoY29tcGxleCBjb21wbGV4KQoJ ICAgICAobGFtYmRhICh6MSB6MikgKHRhZyAoZGl2LWNvbXBsZXggejEgejIpKSkpCgkocHV0ICdt YWtlLWZyb20tcmVhbC1pbWFnICdjb21wbGV4CgkgICAgIChsYW1iZGEgKHggeSkgKHRhZyAobWFr ZS1mcm9tLXJlYWwtaW1hZyB4IHkpKSkpCgkocHV0ICdtYWtlLWZyb20tbWFnLWFuZyAnY29tcGxl eAoJICAgICAobGFtYmRhIChyIGEpICh0YWcgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkpKSkKCShw dXQgJ2VxdT8gJyhjb21wbGV4IGNvbXBsZXgpCgkgICAgIChsYW1iZGEgKHggeSkgKGFuZCAoPSAw IChyZWFsLXBhcnQgKHN1Yi1jb21wbGV4IHggeSkpKQoJCQkJKD0gMCAoaW1hZy1wYXJ0IChzdWIt Y29tcGxleCB4IHkpKSkpKSkKCShwdXQgJ2VxdT8gJyhyZWN0YW5ndWxhciBwb2xhcikgZXF1PykK CShwdXQgJ2VxdT8gJyhwb2xhciByZWN0YW5ndWxhcikgZXF1PykKCShwdXQgJ3plcm8/ICcoY29t cGxleCkKCSAgICAgKGxhbWJkYSAoeCkgKGVxdT8gKHRhZyB4KSAodGFnIChtYWtlLWZyb20tcmVh bC1pbWFnIDAgMCkpKSkpCgkocHV0ICdwcm9qZWN0ICcoY29tcGxleCkgKGxhbWJkYSAoeikgKHJl YWwtcGFydCB6KSkpCgknZG9uZSkKCiAgICAgIChkZWZpbmUgKG1ha2UtY29tcGxleC1mcm9tLXJl YWwtaW1hZyB4IHkpCgkoKGdldCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAnY29tcGxleCkgeCB5KSkK CiAgICAgIChkZWZpbmUgKG1ha2UtY29tcGxleC1mcm9tLW1hZy1hbmcgciBhKQoJKChnZXQgJ21h a2UtZnJvbS1tYWctYW5nICdjb21wbGV4KSByIGEpKQoKICAgICAgKGluc3RhbGwtcmVjdGFuZ3Vs YXItcGFja2FnZSkKICAgICAgKGluc3RhbGwtcG9sYXItcGFja2FnZSkKICAgICAgKGluc3RhbGwt cmF0aW9uYWwtcGFja2FnZSkKICAgICAgKGluc3RhbGwtc2NoZW1lLW51bWJlci1wYWNrYWdlKQog ICAgICAoaW5zdGFsbC1jb21wbGV4LXBhY2thZ2UpCgogICAgICAocHV0ICdyZWFsLXBhcnQgJyhj b21wbGV4KSByZWFsLXBhcnQpCiAgICAgIChwdXQgJ2ltYWctcGFydCAnKGNvbXBsZXgpIGltYWct cGFydCkKICAgICAgKHB1dCAnbWFnbml0dWRlICcoY29tcGxleCkgbWFnbml0dWRlKQogICAgICAo cHV0ICdhbmdsZSAnKGNvbXBsZXgpIGFuZ2xlKQoKICAgICAgKGRlZmluZSAoYXBwbHktZ2VuZXJp YyBvcCAuIGFyZ3MpCgkjOyhzaG93ICN0ICJhcHBseS1nZW5lcmljOmVudHJ5XG4iKQoJIzsoZXJy b3IgImRlYnVnIikKCShkZWZpbmUgKHZhcmlhYmxlIHBvbHkpIChjYXIgcG9seSkpCgkoZGVmaW5l IChhbGwtYXJndHlwZXMtc2FtZT8gLiBhcmdzKQoJICAobGV0ICgodHlwZSAodHlwZS10YWcgKGNh ciBhcmdzKSkpKQoJICAgIChhY2N1bXVsYXRlIChsYW1iZGEgKHggeSkgKGFuZCB4IHkpKSAjdCAo bWFwIChsYW1iZGEgKHgpIChlcT8gdHlwZSB4KSkgYXJncykpKSkKCShkZWZpbmUgKGNvZXJjaW9u LWlmLWV4aXN0cz8gdHlwZSBhcmctdGFncykKCSAgKGxldCAoKGNvZXJjaW9uLWxpc3QgKG1hcCAo bGFtYmRhICh4KSAKCQkJCSAgICAgIChpZiAoZXE/IHR5cGUgeCkKCQkJCQkgIGlkZW50aXR5CgkJ CQkJICAoZ2V0LWNvZXJjaW9uIHggdHlwZSkpKSBhcmctdGFncykpKQoJICAgIChpZiAoYWNjdW11 bGF0ZSAobGFtYmRhICh4IHkpIChhbmQgeCB5KSkgI3QgY29lcmNpb24tbGlzdCkKCQljb2VyY2lv bi1saXN0CgkJI2YpKSkKCShkcm9wIChsZXQqICgodHlwZS10YWdzIChtYXAgdHlwZS10YWcgYXJn cykpCgkJICAgICAocHJvYyAoZ2V0IG9wIHR5cGUtdGFncykpKQoJCSM7KHNob3cgI3QgImFwcGx5 LWdlbmVyaWM6IHR5cGUtdGFncz0iIAoJCQkgKGRpc3BsYXllZCB0eXBlLXRhZ3MpCgkJCSAiIHBy b2M9IiAod3JpdHRlbiBwcm9jKQoJCQkgIiBwcm9jLXNvdXJjZT0iICh0aGluZ3ktc291cmNlIHBy b2MpICJcbiIpCgkJKGNvbmQgKHByb2MgKGFwcGx5IHByb2MgKG1hcCBjb250ZW50cyBhcmdzKSkp CgkJICAgICAgKCg9IDEgKGxlbmd0aCBhcmdzKSkKCQkgICAgICAgIzsoc2hvdyAjdCAiTm8gcHJv YyBmb3VuZCBmb3Igb3A9IiBvcCAiLCB0eXBlLXRhZ3M9IiB0eXBlLXRhZ3MgIiwgYXJnPSIgKGRp c3BsYXllZCBhcmdzKSAiXG4iKQoJCSAgICAgICAoYXBwbHktZ2VuZXJpYyBvcCAocmFpc2UtdHlw ZSAoY2FyIGFyZ3MpKSkpCgkJICAgICAgKCg9IDIgKGxlbmd0aCBhcmdzKSkKCQkgICAgICAgKGNv bmQgKChhbmQgKGVxPyAncG9seW5vbWlhbCAoY2FyIHR5cGUtdGFncykpCgkJCQkgKG51bWVyaWM/ IChjYWRyIHR5cGUtdGFncykpKQoJCQkgICAgICAoYXBwbHktZ2VuZXJpYyBvcAoJCQkJCSAgICAg KGNhciBhcmdzKQoJCQkJCSAgICAgKG1ha2UtcG9seW5vbWlhbCAodmFyaWFibGUgKGNvbnRlbnRz IChjYXIgYXJncykpKQoJCQkJCQkJICAgICAgKGxpc3QgKGxpc3QgMCAoY2FkciBhcmdzKSkpKSkp CgkJCSAgICAgKChhbmQgKG51bWVyaWM/IChjYXIgdHlwZS10YWdzKSkKCQkJCSAoZXE/ICdwb2x5 bm9taWFsIChjYWRyIHR5cGUtdGFncykpKQoJCQkgICAgICAoYXBwbHktZ2VuZXJpYyBvcAoJCQkJ CSAgICAgKG1ha2UtcG9seW5vbWlhbCAodmFyaWFibGUgKGNvbnRlbnRzIChjYWRyIGFyZ3MpKSkK CQkJCQkJCSAgICAgIChsaXN0IChsaXN0IDAgKGNhciBhcmdzKSkpKQoJCQkJCSAgICAgKGNhZHIg YXJncykpKQkJCSAKCQkJICAgICAoKGFuZCAoZ2V0LWNvZXJjaW9uIChjYXIgdHlwZS10YWdzKSAo Y2FkciB0eXBlLXRhZ3MpKQoJCQkJIChub3QgKGVxPyAoY2FyIHR5cGUtdGFncykgKGNhZHIgdHlw ZS10YWdzKSkpKQoJCQkgICAgICAoYXBwbHktZ2VuZXJpYyBvcAoJCQkJCSAgICAgKChnZXQtY29l cmNpb24KCQkJCQkgICAgICAgKGNhciB0eXBlLXRhZ3MpCgkJCQkJICAgICAgIChjYWRyIHR5cGUt dGFncykpIChjYXIgYXJncykpCgkJCQkJICAgICAoY2FkciBhcmdzKSkpCgkJCSAgICAgKChhbmQg KGdldC1jb2VyY2lvbiAoY2FkciB0eXBlLXRhZ3MpIChjYXIgdHlwZS10YWdzKSkKCQkJCSAobm90 IChlcT8gKGNhciB0eXBlLXRhZ3MpIChjYWRyIHR5cGUtdGFncykpKSkKCQkJICAgICAgKGFwcGx5 LWdlbmVyaWMgb3AKCQkJCQkgICAgIChjYXIgYXJncykKCQkJCQkgICAgICgoZ2V0LWNvZXJjaW9u CgkJCQkJICAgICAgIChjYWRyIHR5cGUtdGFncykKCQkJCQkgICAgICAgKGNhciB0eXBlLXRhZ3Mp KSAoY2FkciBhcmdzKSApKSkKCQkJICAgICAoKGNvbXBhcmFibGU/IChjYXIgdHlwZS10YWdzKSAo Y2FkciB0eXBlLXRhZ3MpKQoJCQkgICAgICAoaWYKCQkJICAgICAgICh0eXBlMTw9dHlwZTI/IChj YXIgdHlwZS10YWdzKSAoY2FkciB0eXBlLXRhZ3MpKQoJCQkgICAgICAgKGFwcGx5LWdlbmVyaWMg b3AgKHJhaXNlLXR5cGUgKGNhciBhcmdzKSkgKGNhZHIgYXJncykpCgkJCSAgICAgICAoYXBwbHkt Z2VuZXJpYyBvcCAoY2FyIGFyZ3MpICAocmFpc2UtdHlwZSAoY2FkciBhcmdzKSkpKSkKCQkJICAg ICAoZWxzZSAoZXJyb3IgImFwcGx5LWdlbmVyaWM6SW5jb21wYXJhYmxlIHR5cGVzOiAodHlwZS10 YWdzLGFyZ3MpPSIgdHlwZS10YWdzIGFyZ3MpKSkpCgkJICAgICAgKChhbmQgKD4gKGxlbmd0aCBh cmdzKSAyKSAobm90IChhbGwtYXJndHlwZXMtc2FtZT8gYXJncykpKQoJCSAgICAgICAobGV0IHR5 cGVzLWxvb3AgKCh0eXBlcyB0eXBlLXRhZ3MpKQoJCQkgKGxldCAoKGxpc3Qtb2YtY29lcmNpb24t ZnVuY3Rpb25zCgkJCQkoY29lcmNpb24taWYtZXhpc3RzPyAoY2FyIHR5cGVzKSB0eXBlLXRhZ3Mp KSkKCQkJICAgKGlmIGxpc3Qtb2YtY29lcmNpb24tZnVuY3Rpb25zCgkJCSAgICAgICAoYXBwbHkg YXBwbHktZ2VuZXJpYyAoY29ucyBvcCAobWFwIChsYW1iZGEgKGZ1biBhcmcpIChmdW4gYXJnKSkK CQkJCQkJCQkgIGxpc3Qtb2YtY29lcmNpb24tZnVuY3Rpb25zCgkJCQkJCQkJICBhcmdzKSkpCgkJ CSAgICAgICAoaWYgKG5vdCAobnVsbD8gKGNkciB0eXBlcykpKQoJCQkJICAgKHR5cGVzLWxvb3Ag KGNkciB0eXBlcykpCgkJCQkgICAoZXJyb3IgImFwcGx5LWdlbmVyaWM6RXZlbiBjb2VyY2lvbnMg ZmFpbGVkLiBObyBtZXRob2QgZm9yIHRoZXNlIHR5cGVzLiIpKSkpKSkKCQkgICAgICAoZWxzZSAo ZXJyb3IgImFwcGx5LWdlbmVyaWM6Tm8gbWV0aG9kIGZvciB0aGVzZSB0eXBlcyIKCQkJCSAgIChs aXN0IG9wIHR5cGUtdGFncykpKSkpKSkKICAgICAgKGRlZmluZSAoc2NoZW1lLW51bWJlci0+Y29t cGxleCBuKQoJKG1ha2UtY29tcGxleC1mcm9tLXJlYWwtaW1hZyAoY29udGVudHMgbikgMCkpCiAg ICAgIChwdXQtY29lcmNpb24gJ3NjaGVtZS1udW1iZXIKCQkgICAgJ2NvbXBsZXgKCQkgICAgc2No ZW1lLW51bWJlci0+Y29tcGxleCkKCiAgICAgIChwdXQgJ21heDMtbWFnbml0dWRlICcoY29tcGxl eCBjb21wbGV4IGNvbXBsZXgpIChsYW1iZGEgKHoxIHoyIHozKQoJCQkJCQkJKG1heCAobWFnbml0 dWRlIHoxKSAobWFnbml0dWRlIHoyKSAobWFnbml0dWRlIHozKSkpKQogICAgICAoZGVmaW5lICht YXgzLW1hZ25pdHVkZSB4MSB4MiB4MykgKGFwcGx5LWdlbmVyaWMgJ21heDMtbWFnbml0dWRlIHgx IHgyIHgzKSkKICAgICAgKGRlZmluZSAoaWRlbnRpdHkgeCkgeCkKCiAgICAjOyhkZWZpbmUgbnVt ZXJpYy10b3dlciAobGlzdCAnaW50ZWdlciAncmF0aW9uYWwgJ3NjaGVtZS1udW1iZXIgJ2NvbXBs ZXgpKQogICAgKGRlZmluZSBudW1lcmljLXRvd2VyIChsaXN0ICdpbnRlZ2VyICdzY2hlbWUtbnVt YmVyICdjb21wbGV4KSkKICAgIChkZWZpbmUgKGNvbXBhcmFibGU/IHR5cGUxIHR5cGUyKSAoYW5k IChtZW1xIHR5cGUxIG51bWVyaWMtdG93ZXIpIChtZW1xIHR5cGUyIG51bWVyaWMtdG93ZXIpKSkK ICAgICM7KGRlZmluZSAoaGlnaGVyLXR5cGUgeCkKICAgICAgKHNob3cgI3QgImhpZ2hlci10eXBl Ong9IiAoZGlzcGxheWVkIHgpICJcbiIpCgkoZGVmaW5lIChmaW5kLWhpZ2hlci10eXBlIHggdHlw ZXMpCgkgIChjb25kICgob3IgKG51bGw/IHR5cGVzKSAobnVsbD8gKGNkciB0eXBlcykpKSAoZXJy b3IgIk5vIHR5cGUgaGlnaGVyIHRoYW4gZ2l2ZW4iIHggdHlwZXMpKQoJCSgoZXE/IHggKGNhciB0 eXBlcykpIChjYWRyIHR5cGVzKSkKCQkoZWxzZSAoZmluZC1oaWdoZXItdHlwZSB4IChjZHIgdHlw ZXMpKSkpKQoJKGZpbmQtaGlnaGVyLXR5cGUgeCBudW1lcmljLXRvd2VyKSkKCiAgICAoZGVmaW5l IChudW1lcmljPyB4KQogICAgICAobWVtcSB4IG51bWVyaWMtdG93ZXIpKQogICAgKGRlZmluZSAo cG9seW5vbWlhbD8geCkKICAgICAgKGVxPyAodHlwZS10YWcgeCkgJ3BvbHlub21pYWwpKQogICAg KGRlZmluZSAoaGlnaGVyLXR5cGUgeCkKICAgICAgKGxldCAoKHRhaWwgKG1lbXEgeCBudW1lcmlj LXRvd2VyKSkpCgkoY29uZCAoKGVxPyAjZiB0YWlsKSAoZXJyb3IgIlR5cGUgbm90IGluIHRoZSB0 b3dlciIgeCkpCgkgICAgICAoKG51bGw/IChjZHIgdGFpbCkpIChlcnJvciAiQWxyZWFkeSB0aGUg aGlnaGVzdCB0eXBlOiIgeCkpCgkgICAgICAoZWxzZSAoY2FkciB0YWlsKSkpKSkKCiAgICAoc2hv dyAjdCAiVGVzdDogSGlnaGVyIHRoYW4gJ2ludGVnZXI6ICIgKGhpZ2hlci10eXBlICdpbnRlZ2Vy KSAiXG4iKQogICAgIzsoc2hvdyAjdCAiVGVzdDogSGlnaGVyIHRoYW4gJ2NvbXBsZXg6ICIgKGhp Z2hlci10eXBlICdjb21wbGV4KSAiXG4iKQoKICAgICAgKGRlZmluZSAodHlwZTE8PXR5cGUyPyB0 eXBlMSB0eXBlMikKCShpZiAobm90IChtZW1xIHR5cGUxIG51bWVyaWMtdG93ZXIpKQoJICAgIChl cnJvciAiVHlwZSAxIG5vdCBpbiB0aGUgbnVtZXJpYyB0b3dlciIpKQoJKGlmIChub3QgKG1lbXEg dHlwZTIgbnVtZXJpYy10b3dlcikpCgkgICAgKGVycm9yICJUeXBlIDIgbm90IGluIHRoZSBudW1l cmljIHRvd2VyIikpCgkobGV0IGxvb3AgKCh0eXBlcyBudW1lcmljLXRvd2VyKSkKCSAgKGNvbmQg KChudWxsPyB0eXBlcykgKGVycm9yICJUeXBlIDEgYW5kIHR5cGUgMiBhcmUgaW5jb21wYXJhYmxl IiB0eXBlMSB0eXBlMikpCgkJKChlcT8gKGNhciB0eXBlcykgdHlwZTEpICN0KQoJCSgoZXE/IChj YXIgdHlwZXMpIHR5cGUyKSAjZikKCQkoZWxzZSAobG9vcCAoY2RyIHR5cGVzKSkpKSkpCgogICAg ICAjOyhkZWZpbmUgKGludGVnZXItPnJhdGlvbmFsIHgpCgkobWFrZS1yYXRpb25hbCB4IDEpKQoK ICAgICAgIzsoZGVmaW5lIChyYXRpb25hbC0+c2NoZW1lLW51bWJlciB4KQoJKG1ha2Utc2NoZW1l LW51bWJlciAoKGdldCAndG8tcmVhbCAnKHJhdGlvbmFsKSkgeCkpKQogICAgICAjOyhwdXQtY29l cmNpb24gJ2ludGVnZXIgJ3JhdGlvbmFsIGludGVnZXItPnJhdGlvbmFsKQogICAgICAjOyhwdXQt Y29lcmNpb24gJ3JhdGlvbmFsICdzY2hlbWUtbnVtYmVyIHJhdGlvbmFsLT5zY2hlbWUtbnVtYmVy KQogICAgKGRlZmluZSAoaW50ZWdlci0+c2NoZW1lLW51bWJlciB4KQogICAgICAgKG1ha2Utc2No ZW1lLW51bWJlciAoY29udGVudHMgKGV4YWN0LT5pbmV4YWN0IHgpKSkpCiAgICAocHV0LWNvZXJj aW9uICdpbnRlZ2VyICdzY2hlbWUtbnVtYmVyIGludGVnZXItPnNjaGVtZS1udW1iZXIpICAKCiAg ICAoZGVmaW5lIChyYWlzZS10eXBlIHgpCiAgICAgICM7KHNob3cgI3QgIlJhaXNpbmcgdHlwZSBv ZjogIiAoZGlzcGxheWVkIHgpICJcbiIpCgkobGV0ICgoY29udmVydGVyIChnZXQtY29lcmNpb24g KHR5cGUtdGFnIHgpIChoaWdoZXItdHlwZSAodHlwZS10YWcgeCkpKSkpCgkgIChpZiBjb252ZXJ0 ZXIKCSAgICAgIChjb252ZXJ0ZXIgeCkKCSAgICAgIChlcnJvciAiTm8gY29lcmNpb24gZm91bmQg Zm9yIHgiICh0eXBlLXRhZyB4KSB4KSkpKQoKCiAgICAgIChkZWZpbmUgKHJlbWFpbmRlci1pbnRl Z2VyIGEgYikKCSh3aGVuIChvciAobm90IChpbnRlZ2VyPyBhKSkgKG5vdCAoaW50ZWdlcj8gYikp KQoJICAoZXJyb3IgIkFyZ3VtZW50cyBtdXN0IGJlIGludGVnZXJzIiBhIGIpKQoJKHJlbWFpbmRl ciBhIGIpKQoKICAgICAgKHB1dCAncmVtYWluZGVyICcoaW50ZWdlciBpbnRlZ2VyKSByZW1haW5k ZXItaW50ZWdlcikKICAgICAgKGRlZmluZSAocmVtYWluZGVyLWdlbmVyYWxpemVkIGEgYikgKGFw cGx5LWdlbmVyaWMgJ3JlbWFpbmRlciBhIGIpKQoKICAgICAgKGRlZmluZSAocHJvamVjdCBvYmop CgkoYXBwbHktZ2VuZXJpYyAncHJvamVjdCBvYmopKQogICAgICAoZGVmaW5lIChkcm9wcGFibGU/ IG9iaikKCSM7KHNob3cgI3QgImRyb3BwYWJsZT86IG9iaj0iIG9iaiAiLCB0eXBlLXRhZz0iICh0 eXBlLXRhZyBvYmopICJcbiIpCgkoY29uZCAoKGVxPyAodHlwZS10YWcgb2JqKSAncmF0aW9uYWwp IChiZWdpbiAoc2hvdyAjdCAicmF0aW9uYWwgbm90IGRyb3BwYWJsZTogI2ZcbiIpICNmKSkKCSAg ICAgICgobm90IChtZW1xICh0eXBlLXRhZyBvYmopIG51bWVyaWMtdG93ZXIpKSAjZikKCSAgICAg ICgoZXE/ICh0eXBlLXRhZyBvYmopIChjYXIgbnVtZXJpYy10b3dlcikpICNmKQoJICAgICAgKChl cXU/IG9iaiAocmFpc2UtdHlwZSAocHJvamVjdCBvYmopKSkgI3QpCgkgICAgICAoZWxzZSAjZikp KQogICAgICAoZGVmaW5lIChkcm9wIG9iaikgCgkoaWYgKGRyb3BwYWJsZT8gb2JqKQoJICAgIChk cm9wIChwcm9qZWN0IG9iaikpCgkgICAgb2JqKSkKCiAgICAgIChzaG93ICN0ICJUZXN0IDE6IFN1 YnRyYWN0aW5nIGNvbXBsZXggbnVtYmVyczogIgoJICAgIChzdWIKCSAgICAgKG1ha2UtY29tcGxl eC1mcm9tLXJlYWwtaW1hZyAxLjEgMikKCSAgICAgKG1ha2UtY29tcGxleC1mcm9tLXJlYWwtaW1h ZyAwIDIpKSAiXG4iKQogICAgKGRlZmluZSAoaW5zdGFsbC1wb2x5bm9taWFsLXBhY2thZ2UpCiAg ICAgICM7KGRlZmluZSAoY29udGVudHMgZ2VuZXJpYy1vYmplY3QpCgkoY2RyIGdlbmVyaWMtb2Jq ZWN0KSkKCShkZWZpbmUgKG1ha2UtcG9seSB2YXJpYWJsZSB0ZXJtLWxpc3QpCgkgIChjb25zIHZh cmlhYmxlIHRlcm0tbGlzdCkpCgkoZGVmaW5lICh2YXJpYWJsZSBwKSAoY2FyIHApKQoJKGRlZmlu ZSAodGVybS1saXN0IHApCgkgIChjZHIgcCkpCgkoZGVmaW5lICh2YXJpYWJsZT8geCkgKHN5bWJv bD8geCkpCgkoZGVmaW5lIChzYW1lLXZhcmlhYmxlPyB2MSB2MikKCSAgKGFuZCAodmFyaWFibGU/ IHYxKSAodmFyaWFibGU/IHYyKSAoZXE/IHYxIHYyKSkpCgkoZGVmaW5lICg9bnVtYmVyPyBleHAg bnVtKQoJICAoYW5kIChudW1iZXI/IGV4cCkgKD0gZXhwIG51bSkpKQoJKGRlZmluZSAodGhlLWVt cHR5LXRlcm1saXN0KSAnKCkpCgoJKGRlZmluZSAocmVzdC10ZXJtcyB0ZXJtLWxpc3QpIChjZHIg dGVybS1saXN0KSkKCShkZWZpbmUgKGVtcHR5LXRlcm1saXN0PyB0ZXJtLWxpc3QpIChudWxsPyB0 ZXJtLWxpc3QpKQoKCShkZWZpbmUgKG1ha2UtdGVybSBvcmRlciBjb2VmZikgKGxpc3Qgb3JkZXIg Y29lZmYpKQoJKGRlZmluZSAob3JkZXIgdGVybSkgKGNhciB0ZXJtKSkKCShkZWZpbmUgKGNvZWZm IHRlcm0pIChjYWRyIHRlcm0pKQoJKGRlZmluZSAodGFnIHApIChhdHRhY2gtdGFnICdwb2x5bm9t aWFsIHApKQoJKHB1dCAnbWFrZSAncG9seW5vbWlhbAoJICAgICAobGFtYmRhICh2YXIgdGVybXMp ICh0YWcgKG1ha2UtcG9seSB2YXIgdGVybXMpKSkpCgkjOyhjb250aW51ZWQgb24gbmV4dCBwYWdl KQoKCShkZWZpbmUgKGFkZC1wb2x5IHAxIHAyKQoJICAjOyhzaG93ICN0ICJhZGQtcG9seTogcDE9 IiBwMSAiLCBwMj0iIHAyICJcbiIpCgkgIChpZiAoc2FtZS12YXJpYWJsZT8gKHZhcmlhYmxlIHAx KSAodmFyaWFibGUgcDIpKQoJICAgICAgKG1ha2UtcG9seSAodmFyaWFibGUgcDEpCgkJCSAoYWRk LXRlcm1zICh0ZXJtLWxpc3QgcDEpCgkJCQkgICAgKHRlcm0tbGlzdCBwMikpKQoJICAgICAgKGxl dCAoKHJlcyAoY2RyIChpZiAodmFyaWFibGVfMS1vcmRlcjx2YXJpYWJsZV8yLW9yZGVyICh2YXJp YWJsZSBwMSkgKHZhcmlhYmxlIHAyKSkKCQkgIChhZGQgKHRhZyBwMSkgKHRhZyAobWFrZS1wb2x5 ICh2YXJpYWJsZSBwMSkgKGxpc3QgKG1ha2UtdGVybSAwICh0YWcgcDIpKSkpKSkKCQkgIChhZGQg KHRhZyAobWFrZS1wb2x5ICh2YXJpYWJsZSBwMikgKGxpc3QgKG1ha2UtdGVybSAwICh0YWcgcDEp KSkpKSAodGFnIHAyKSkpKSkpCgkJIzsoc2hvdyAjdCAiYWRkLXBvbHk6cmVzdWx0OiAiIChkaXNw bGF5ZWQgcmVzKSAiXG4iKSByZXMpKSkKCgkoc2hvdyAjdCAiVGVzdFkyOiBwb2x5IG9mIHBvbHk6 ICIKCSAgICAgIChtYWtlLXBvbHkgJ3ggKGxpc3QKCQkJICAgICAobWFrZS10ZXJtIDMgKG1ha2Ut cG9seQoJCQkJCSAgICd5IChsaXN0IChtYWtlLXRlcm0gMSAxKSAobWFrZS10ZXJtIDAgMSkpKSkK CQkJICAgICAobWFrZS10ZXJtIDEgMikKCQkJICAgICAobWFrZS10ZXJtIDAgNCkpKSAiXG4iKQoK CShkZWZpbmUgKHN1Yi1wb2x5IHAxIHAyKQoJICAoYWRkLXBvbHkgcDEgKG11bC1wb2x5IHAyICht YWtlLXBvbHkgKHZhcmlhYmxlIHAyKSAobGlzdCAobWFrZS10ZXJtIDAgLTEpKSkpKSkKCShkZWZp bmUgKGFkZC10ZXJtcyBMMSBMMikKCSAgKGNvbmQgKChlbXB0eS10ZXJtbGlzdD8gTDEpIEwyKQoJ CSgoZW1wdHktdGVybWxpc3Q/IEwyKSBMMSkKCQkoZWxzZQoJCSAobGV0ICgodDEgKGZpcnN0LXRl cm0gTDEpKSAodDIgKGZpcnN0LXRlcm0gTDIpKSkKCQkgICAoY29uZCAoKD4gKG9yZGVyIHQxKSAo b3JkZXIgdDIpKQoJCQkgIChhZGpvaW4tdGVybQoJCQkgICB0MSAoYWRkLXRlcm1zIChyZXN0LXRl cm1zIEwxKSBMMikpKQoJCQkgKCg8IChvcmRlciB0MSkgKG9yZGVyIHQyKSkKCQkJICAoYWRqb2lu LXRlcm0KCQkJICAgdDIgKGFkZC10ZXJtcyBMMSAocmVzdC10ZXJtcyBMMikpKSkKCQkJIChlbHNl CgkJCSAgKGFkam9pbi10ZXJtCgkJCSAgIChtYWtlLXRlcm0gKG9yZGVyIHQxKQoJCQkJICAgICAg KGFkZCAoY29lZmYgdDEpIChjb2VmZiB0MikpKQoJCQkgICAoYWRkLXRlcm1zIChyZXN0LXRlcm1z IEwxKQoJCQkJICAgICAgKHJlc3QtdGVybXMgTDIpKSkpKSkpKSkKCgoJKGRlZmluZSAobXVsLXBv bHkgcDEgcDIpCgkgIChpZiAoc2FtZS12YXJpYWJsZT8gKHZhcmlhYmxlIHAxKSAodmFyaWFibGUg cDIpKQoJICAgICAgKG1ha2UtcG9seSAodmFyaWFibGUgcDEpCgkJCSAobXVsLXRlcm1zICh0ZXJt LWxpc3QgcDEpCgkJCQkgICAgKHRlcm0tbGlzdCBwMikpKQoJICAgICAgKGNvbnRlbnRzIChpZiAo dmFyaWFibGVfMS1vcmRlcjx2YXJpYWJsZV8yLW9yZGVyICh2YXJpYWJsZSBwMSkgKHZhcmlhYmxl IHAyKSkKCQkgIChtdWwgKHRhZyBwMSkKCQkgICAgICAgKG1ha2UtcG9seW5vbWlhbCAodmFyaWFi bGUgcDEpCgkJCQkJKGFkam9pbi10ZXJtCgkJCQkJIChtYWtlLXRlcm0gMAoJCQkJCQkgICAgKHRh ZyBwMikpICh0aGUtZW1wdHktdGVybWxpc3QpKSkpCgkJICAobXVsICh0YWcgcDIpCgkJICAgICAg IChtYWtlLXBvbHlub21pYWwgKHZhcmlhYmxlIHAyKQoJCQkJCShhZGpvaW4tdGVybQoJCQkJCSAo bWFrZS10ZXJtIDAKCQkJCQkJICAgICh0YWcgcDEpKSAodGhlLWVtcHR5LXRlcm1saXN0KSkpKSkp CgkgICAgICAjOyhlcnJvciAiUG9seXMgbm90IGluIHNhbWUgdmFyIC0tIE1VTC1QT0xZIgoJCSAg ICAgKGxpc3QgcDEgcDIpKSkpCgkoZGVmaW5lIChkaXYtcG9seSBwMSBwMikKCSAgKGlmIChzYW1l LXZhcmlhYmxlPyAodmFyaWFibGUgcDEpICh2YXJpYWJsZSBwMikpCgkgICAgICAobGV0ICgocXVv dGllbnQtYW5kLXJlbWFpbmRlciAoZGl2LXRlcm1zICh0ZXJtLWxpc3QgcDEpCgkJCQkJCSAgICAg ICAodGVybS1saXN0IHAyKSkpKQoJCShsaXN0IChtYWtlLXBvbHkgKHZhcmlhYmxlIHAxKSAoY2Fy ICBxdW90aWVudC1hbmQtcmVtYWluZGVyKSkKCQkgICAgICAobWFrZS1wb2x5ICh2YXJpYWJsZSBw MSkgKGNhZHIgcXVvdGllbnQtYW5kLXJlbWFpbmRlcikpKSkKCQkoZXJyb3IgImRpdi1wb2x5OiBQ b2x5cyBub3QgaW4gdGhlIHNhbWUgdmFyIiBwMSBwMikpKQoJKGRlZmluZSAoZGl2LXRlcm1zIEwx IEwyKQoJCShpZiAoZW1wdHktdGVybWxpc3Q/IEwxKQoJCSAgICAobGlzdCAodGhlLWVtcHR5LXRl cm1saXN0KSAodGhlLWVtcHR5LXRlcm1saXN0KSkKCQkgICAgKGxldCAoKHQxIChmaXJzdC10ZXJt IEwxKSkKCQkJICAodDIgKGZpcnN0LXRlcm0gTDIpKSkKCQkgICAgICAoaWYgKD4gKG9yZGVyIHQy KSAob3JkZXIgdDEpKQoJCQkgIChsaXN0ICh0aGUtZW1wdHktdGVybWxpc3QpIEwxKQoJCQkgIChs ZXQgKChuZXctYyAoZGl2IChjb2VmZiB0MSkgKGNvZWZmIHQyKSkpCgkJCQkobmV3LW8gKC0gKG9y ZGVyIHQxKSAob3JkZXIgdDIpKSkpCgkJCSAgICAobGV0ICgocmVzdC1vZi1yZXN1bHQgKGRpdi10 ZXJtcyAodGVybS1saXN0CgkJCQkJCQkgICAgICAoc3ViLXBvbHkKCQkJCQkJCSAgICAgICAobWFr ZS1wb2x5ICdmYWtlLXZhciBMMSkKCQkJCQkJCSAgICAgICAobXVsLXBvbHkKCQkJCQkJCQkobWFr ZS1wb2x5ICdmYWtlLXZhciAobGlzdCAobWFrZS10ZXJtIG5ldy1vIG5ldy1jKSkpCgkJCQkJCQkJ KG1ha2UtcG9seSAnZmFrZS12YXIgTDIpKSkpCgkJCQkJCQkgICAgIEwyKQoJCQkJCQkgICkpCgkJ CSAgICAgICM7KHNob3cgI3QgImRpdi10ZXJtczogcmVzdC1vZi1yZXN1bHQ6ICIgKGRpc3BsYXll ZCByZXN0LW9mLXJlc3VsdCkgIlxuIikKCQkJICAgICAgKGxpc3QgKGFkam9pbi10ZXJtIChtYWtl LXRlcm0gbmV3LW8gbmV3LWMpIChjYXIgcmVzdC1vZi1yZXN1bHQpKSAoY2FkciByZXN0LW9mLXJl c3VsdCkpCgkJCSAgICAgICkpKSkpKQoJKGRlZmluZSAoZ2NkLXRlcm1zIGEgYikKCSAgKGlmIChl bXB0eS10ZXJtbGlzdD8gYikKCSAgICAgIGEKCSAgICAgIChiZWdpbiAKICAgICAgICAgICAgICAo c2hvdyAjdCAiZ2NkLXRlcm1zOiAodGVybS1saXN0IGIpPSIgKHRlcm0tbGlzdCBiKSAiXG4iKQog ICAgICAgICAgICAgIChnY2QtdGVybXMgYiAocmVtYWluZGVyLXRlcm1zIGEgYikpKSkpCgkoZGVm aW5lIChyZW1haW5kZXItdGVybXMgYSBiKQoJICAoY2FkciAoZGl2LXRlcm1zIGEgYikpKQoJKGRl ZmluZSAoZ2NkLXBvbHkgcDEgcDIpCgkgIChpZiAoc2FtZS12YXJpYWJsZT8gKHZhcmlhYmxlIHAx KSAodmFyaWFibGUgcDIpKQoJICAgICAgKG1ha2UtcG9seSAodmFyaWFibGUgcDEpIChnY2QtdGVy bXMgKHRlcm0tbGlzdCBwMSkgKHRlcm0tbGlzdCBwMikpKQoJICAgICAgKGVycm9yICJkaXYtcG9s eTogUG9seXMgbm90IGluIHRoZSBzYW1lIHZhciIgcDEgcDIpKSkKCShwdXQgJ2djZCAnKHBvbHlu b21pYWwgcG9seW5vbWlhbCkKCSAgICAgKGxhbWJkYSAoeCB5KSAodGFnIChnY2QtcG9seSB4IHkp KSkpCgkocHV0ICdnY2QgJyhpbnRlZ2VyIGludGVnZXIpIGdjZCkKICAgICAgCgkoZGVmaW5lICht dWwtdGVybXMgTDEgTDIpCgkgIChpZiAoZW1wdHktdGVybWxpc3Q/IEwxKQoJICAgICAgKHRoZS1l bXB0eS10ZXJtbGlzdCkKCSAgICAgIChhZGQtdGVybXMgKG11bC10ZXJtLWJ5LWFsbC10ZXJtcyAo Zmlyc3QtdGVybSBMMSkgTDIpCgkJCSAobXVsLXRlcm1zIChyZXN0LXRlcm1zIEwxKSBMMikpKSkK CgkoZGVmaW5lIChtdWwtdGVybS1ieS1hbGwtdGVybXMgdDEgTCkKCSAgKGlmIChlbXB0eS10ZXJt bGlzdD8gTCkKCSAgICAgICh0aGUtZW1wdHktdGVybWxpc3QpCgkgICAgICAobGV0ICgodDIgKGZp cnN0LXRlcm0gTCkpKQoJCShhZGpvaW4tdGVybQoJCSAobWFrZS10ZXJtICgrIChvcmRlciB0MSkg KG9yZGVyIHQyKSkKCQkJICAgIChtdWwgKGNvZWZmIHQxKSAoY29lZmYgdDIpKSkKCQkgKG11bC10 ZXJtLWJ5LWFsbC10ZXJtcyB0MSAocmVzdC10ZXJtcyBMKSkpKSkpCgkoZGVmaW5lICh6ZXJvLXBv bHk/IHBvbHkpCgkgICM7KHNob3cgI3QgInplcm8tcG9seT86IHBvbHk9IiAoZGlzcGxheWVkIHBv bHkpICJcbiIpCgkgIChjb25kICgoZW1wdHktdGVybWxpc3Q/ICh0ZXJtLWxpc3QgcG9seSkpICN0 KQoJCSgobm90ICh6ZXJvPyAoY29lZmYgKGZpcnN0LXRlcm0gKHRlcm0tbGlzdCBwb2x5KSkpKSkg I2YpCgkJKGVsc2UgKHplcm8tcG9seT8gCgkJICAgICAgIChtYWtlLXBvbHkgKHZhcmlhYmxlIHBv bHkpCgkJCQkgIChyZXN0LXRlcm1zICh0ZXJtLWxpc3QgcG9seSkpKSkpKSkKCgkoZGVmaW5lICh0 ZXJtbGlzdC10eXBlLW9mIHRlcm0tbGlzdCkKCSAgIzsoc2hvdyAjdCAidC10LW86IHRlcm0tbGlz dD0iIChkaXNwbGF5ZWQgdGVybS1saXN0KSAiXG4iKQoJICAoY29uZCAoKG51bGw/IHRlcm0tbGlz dCkgJ3NwYXJzZSkKCQkoKHBhaXI/IChjYXIgdGVybS1saXN0KSkgJ3NwYXJzZSkKCQkoKGxpc3Q/ IHRlcm0tbGlzdCkgJ2RlbnNlKQoJCShlbHNlIChlcnJvciAiVW5rbm93biB0eXBlIG9mIGxpc3Qi IHRlcm0tbGlzdCkpKSkKCShkZWZpbmUgKGFkam9pbi10ZXJtIHRlcm0gdGVybS1saXN0KQoJICAo KGdldCAnYWRqb2luLXRlcm0gKHRlcm1saXN0LXR5cGUtb2YgdGVybS1saXN0KSkgdGVybSB0ZXJt LWxpc3QpKQoJKGRlZmluZSAoZmlyc3QtdGVybSB0ZXJtLWxpc3QpCgkgICgoZ2V0ICdmaXJzdC10 ZXJtICh0ZXJtbGlzdC10eXBlLW9mIHRlcm0tbGlzdCkpIHRlcm0tbGlzdCkpCgkoZGVmaW5lICh2 YXJpYWJsZV8xLW9yZGVyPHZhcmlhYmxlXzItb3JkZXIgdmFyaWFibGVfMSB2YXJpYWJsZV8yKQoJ ICAjOyhzaG93ICN0ICJ2YXJfMS0uLjogdmFyaWFibGVfMT0iIHZhcmlhYmxlXzEgIiB2YXJpYWJs ZV8yPSIgdmFyaWFibGVfMiAiXG4iKQoJICAjOyhzaG93ICN0ICJ2YXIxMnN0cmluZz0iIChzeW1i b2wtPnN0cmluZyB2YXJpYWJsZV8xKSAidmFyMjJzdHJpbmc9IiAoc3ltYm9sLT5zdHJpbmcgdmFy aWFibGVfMikgIlxuIikKCSAgKHN0cmluZzw9PyAoc3ltYm9sLT5zdHJpbmcgdmFyaWFibGVfMSkg KHN5bWJvbC0+c3RyaW5nIHZhcmlhYmxlXzIpKSkKCShkZWZpbmUgKG5vcm1hbGl6ZS1mdWxseSBw b2x5KQoJICAoaWYgKG5vcm1hbC1wb2x5bm9taWFsPyBwb2x5KQoJICAgICAgcG9seQoJICAgICAg KG5vcm1hbGl6ZS1mdWxseSAobm9ybWFsaXplLW9uY2UgcG9seSkpKSkKCShwdXQgJ2FkZCAnKHBv bHlub21pYWwgcG9seW5vbWlhbCkKCSAgICAgKGxhbWJkYSAocDEgcDIpIAoJICAgICAgICM7KHNo b3cgI3QgImdlbmVyaWMtYWRkLXBvbHk6UG9seW5vbWlhbCBkaXNwYXRjaCBmb3VuZDogcDE9IgoJ CSAgICAgIChkaXNwbGF5ZWQgcDEpICIgcDI9IiAoZGlzcGxheWVkIHAyKSAiXG4iKQoJICAgICAg IChub3JtYWxpemUtZnVsbHkgKHRhZyAoYWRkLXBvbHkgcDEgcDIpKSkpKQoJKHB1dCAnbXVsICco cG9seW5vbWlhbCBwb2x5bm9taWFsKQoJICAgICAobGFtYmRhIChwMSBwMikgKG5vcm1hbGl6ZS1m dWxseSAodGFnIChtdWwtcG9seSBwMSBwMikpKSkpCgkocHV0ICdzdWIgJyhwb2x5bm9taWFsIHBv bHlub21pYWwpCgkgICAgIChsYW1iZGEgKHAxIHAyKSAodGFnIChzdWItcG9seSBwMSBwMikpKSkK CgkocHV0ICd6ZXJvPyAnKHBvbHlub21pYWwpIHplcm8tcG9seT8pCgkocHV0ICdkaXYgJyhwb2x5 bm9taWFsIHBvbHlub21pYWwpIGRpdi1wb2x5KQoJIzsocHV0LWNvZXJjaW9uICdyYXRpb25hbCAn c2NoZW1lLW51bWJlciByYXRpb25hbC0+c2NoZW1lLW51bWJlcikKCShkZWZpbmUgKG1vbm9taWFs LWZsaXAtdmFyaWFibGVzIG1vbm9taWFsKQoJICAjOyhzaG93ICN0ICJtLWYtdjogbW9ub21pYWw9 IiBtb25vbWlhbCAiXG4iKQoJICAobGV0KiAoKG1vbm8gKGNvbnRlbnRzIG1vbm9taWFsKSkKCQkg KGlubmVyLXBvbHlub21pYWwgKGNvbnRlbnRzIChjb2VmZiAoZmlyc3QtdGVybSAodGVybS1saXN0 IG1vbm8pKSkpKQoJCSAoaW5uZXItcG9seSAoY29udGVudHMgaW5uZXItcG9seW5vbWlhbCkpCgkJ IChvdXRlci1vcmRlciAob3JkZXIgKGZpcnN0LXRlcm0gKHRlcm0tbGlzdCBtb25vKSkpKQoJCSAo b3V0ZXItdmFyICh2YXJpYWJsZSBtb25vKSkKCQkgKGlubmVyLXZhciAodmFyaWFibGUgaW5uZXIt cG9seW5vbWlhbCkpCgkJIChpbm5lci10ZXJtLWxpc3QgKHRlcm0tbGlzdCBpbm5lci1wb2x5KSkp CgkgICAgIzsoc2hvdyAjdCAibS1mLXY6IGlubmVyLXBvbHk9IiBpbm5lci1wb2x5ICJcbiIpCgkg ICAgKGlmIChzYW1lLXZhcmlhYmxlPyBpbm5lci12YXIgb3V0ZXItdmFyKQoJCShtdWwKCQkgKG1h a2UtcG9seW5vbWlhbCBvdXRlci12YXIgKGFkam9pbi10ZXJtIChtYWtlLXRlcm0gb3V0ZXItb3Jk ZXIgMSkgKHRoZS1lbXB0eS10ZXJtbGlzdCkpKQoJCSAodGFnIGlubmVyLXBvbHlub21pYWwpKQoJ CSh0YWcgKG1ha2UtcG9seSBpbm5lci12YXIKCQkJCShtdWwtdGVybS1ieS1hbGwtdGVybXMgKG1h a2UtdGVybQoJCQkJCQkJMAoJCQkJCQkJKG1ha2UtcG9seW5vbWlhbAoJCQkJCQkJIG91dGVyLXZh cgoJCQkJCQkJIChsaXN0IChtYWtlLXRlcm0KCQkJCQkJCQlvdXRlci1vcmRlcgoJCQkJCQkJCTEp KSkpIGlubmVyLXBvbHkpKSkpKSkKCSM7KHNob3cgI3QgIlRlc3RYWDogc29ydGluZyB2YXJpYWJs ZXM6IElzICd4IDwgJ3k/OiAiCgkgICAgICAodmFyaWFibGVfMS1vcmRlcjx2YXJpYWJsZV8yLW9y ZGVyICd4ICd5KSAiXG4iKQoJIzsoc2hvdyAjdCAiVGVzdFhYOiBzb3J0aW5nIHZhcmlhYmxlczog SXMgJ3ogPCAneT86ICIKCSAgICAgICh2YXJpYWJsZV8xLW9yZGVyPHZhcmlhYmxlXzItb3JkZXIg J3ogJ3kpICJcbiIpCgkjOyhzaG93ICN0ICJUZXN0WFg6IChhZGRpbmcgdHdvIGJhc2ljIHBvbHkp OiAiCgkgICAgICAoYWRkIChtYWtlLXBvbHlub21pYWwgJ3ggKGxpc3QgKG1ha2UtdGVybSAxIDIp IChtYWtlLXRlcm0gMCA0KSkpCgkJICAgKG1ha2UtcG9seW5vbWlhbCAneSAobGlzdCAobWFrZS10 ZXJtIDIgMykgKG1ha2UtdGVybSAwIDUpKSkpICJcbiIpCgoJKGRlZmluZSAocG9seW5vbWlhbC0+ c3VtLW9mLWZpcnN0LWFuZC1yZXN0IHBvbHkpCgkgICM7KHNob3cgI3QgInAtPnMtby1mLWEtcjog IiAoZGlzcGxheWVkIHBvbHkpICJcbiIpCgkgIChpZiAoemVybz8gcG9seSkKCSAgICAgIHBvbHkK CSAgICAgIChsZXQqICgocG9seTEgKGNvbnRlbnRzIHBvbHkpKQoJCSAgICAgKGZpcnN0LW1vbm9t aWFsICh0YWcKCQkJCSAgICAgIChtYWtlLXBvbHkKCQkJCSAgICAgICAodmFyaWFibGUgcG9seTEp CgkJCQkgICAgICAgKGxpc3QgKGZpcnN0LXRlcm0gKHRlcm0tbGlzdCBwb2x5MSkpKSkpKSkKCQkj OyhzaG93ICN0ICJwLT5zLW8tZi1hLXI6ICIgKGRpc3BsYXllZCBmaXJzdC1tb25vbWlhbCkgIlxu IikKCQkoYWRkCgkJICBmaXJzdC1tb25vbWlhbAoJCSAgKHBvbHlub21pYWwtPnN1bS1vZi1maXJz dC1hbmQtcmVzdAoJCSAgICh0YWcgKG1ha2UtcG9seSAodmFyaWFibGUgcG9seTEpIChyZXN0LXRl cm1zICh0ZXJtLWxpc3QgcG9seTEpKSkpKSkpKSkKCgkoc2hvdyAjdCAiVGVzdDEzOiBFeHBhbmRp bmcgYSBwb2x5bm9taWFsIGFzIG1vbm9taWFsczogIgoJICAgICAgKGRpc3BsYXllZAoJICAgICAg IChwb2x5bm9taWFsLT5zdW0tb2YtZmlyc3QtYW5kLXJlc3QKCQkobWFrZS1wb2x5bm9taWFsICd5 CgkJCQkgKGxpc3QgKG1ha2UtdGVybSAyIChtYWtlLXBvbHlub21pYWwKCQkJCQkJICAgICAneAoJ CQkJCQkgICAgIChsaXN0IChtYWtlLXRlcm0gMiAxKSAobWFrZS10ZXJtIDAgMSkpKSkKCQkJCSAg ICAgICAobWFrZS10ZXJtIDAgMikpKSkpICJcbiIpCgoJKHNob3cgI3QgIlxuVGVzdDIwOiBzdGFy dCBtb25vbWlhbDogIgoJICAgICAgKGRpc3BsYXllZCAobWFrZS1wb2x5bm9taWFsICd4CgkJCQkJ ICAobGlzdAoJCQkJCSAgIChtYWtlLXRlcm0KCQkJCQkgICAgMgoJCQkJCSAgICAobWFrZS1wb2x5 bm9taWFsCgkJCQkJICAgICAneQoJCQkJCSAgICAgKGxpc3QKCQkJCQkgICAgICAobWFrZS10ZXJt IDIgMSkgKG1ha2UtdGVybSAwIDEpKSkpKSkpICJcbiIpCgkoc2hvdyAjdCAiVGVzdDIwOiBGbGlw cGluZyBhIG1vbm9taWFsIHZhcmlhYmxlOiAiCgkgICAgICAoZGlzcGxheWVkCgkgICAgICAgKG1v bm9taWFsLWZsaXAtdmFyaWFibGVzCgkJKG1ha2UtcG9seW5vbWlhbCAneAoJCQkJIChsaXN0ICht YWtlLXRlcm0gMSAobWFrZS1wb2x5bm9taWFsCgkJCQkJCSAgICAgJ3kKCQkJCQkJICAgICAobGlz dAoJCQkJCQkgICAgICAobWFrZS10ZXJtIDIgMSkKCQkJCQkJICAgICAgKG1ha2UtdGVybSAwIDEp KSkpKSkpKSAiXG5cbiIpCgoKCShkZWZpbmUgKG5vcm1hbC1wb2x5bm9taWFsPyBwb2x5KQoJICAj OyhzaG93ICN0ICJuLXA/OiBwb2x5PSIgcG9seSAiXG4iKQoJICAoY29uZCAoKG5vdCAocG9seW5v bWlhbD8gcG9seSkpICN0KQoJCSgobnVsbD8gKHRlcm0tbGlzdCAoY29udGVudHMgcG9seSkpKSAj dCkKCQkoZWxzZSAobGV0KiAoKHBvbHkxIChjb250ZW50cyBwb2x5KSkKCQkJICAgICAob3V0ZXIt dmFyICh2YXJpYWJsZSBwb2x5MSkpKQoJCQkjOyhzaG93ICN0ICJJbm5lci1sZXQ6IG91dGVyLXZh cj0iIChkaXNwbGF5ZWQgb3V0ZXItdmFyKSAiXG4iKQoJCQkobGV0IGxvb3AgKCh0ZXJtcyAodGVy bS1saXN0IHBvbHkxKSkpCgkJCSAgIzsoc2hvdyAjdCAibi1wPy1sb29wOiB0ZXJtcz0iIChkaXNw bGF5ZWQgdGVybXMpICJcbiIpCgkJCSAgKGNvbmQgKChudWxsPyB0ZXJtcykgI3QpCgkJCQkoKG5v dCAocG9seW5vbWlhbD8gKGNvZWZmIChmaXJzdC10ZXJtIHRlcm1zKSkpKSAobG9vcCAocmVzdC10 ZXJtcyB0ZXJtcykpKQoJCQkJKChub3QgKHZhcmlhYmxlXzEtb3JkZXI8dmFyaWFibGVfMi1vcmRl ciAKCQkJCSAgICAgb3V0ZXItdmFyCgkJCQkgICAgICh2YXJpYWJsZSAoY29udGVudHMgKGNvZWZm IChmaXJzdC10ZXJtIHRlcm1zKSkpKSkpIChiZWdpbiAjOyhzaG93ICN0ICJ3cm9uZyB2YXJpYWJs ZSBvcmRlciBcbiIpICNmKSkKCQkJCSgobm90IChub3JtYWwtcG9seW5vbWlhbD8gKGNvZWZmIChm aXJzdC10ZXJtIHRlcm1zKSkpKSAoYmVnaW4gIzsoc2hvdyAjdCAibm90IG5vcm1hbCBwb2x5XG4i KSAjZikpCgkJCQkoZWxzZSAobG9vcCAocmVzdC10ZXJtcyB0ZXJtcykpKSkpCgkJCSkpKSkKCShk ZWZpbmUgKG5vcm1hbGl6ZS1vbmNlIHBvbHkpCgkgICM7KHNob3cgI3QgIm5vcm1hbGl6ZS1vbmNl IHBvbHk9ICIgKGRpc3BsYXllZCBwb2x5KSAiXG4iKQoJICAoaWYgKHplcm8/IHBvbHkpCgkgICAg ICBwb2x5CgkgICAgICAobGV0KiAoKHBvbHkxIChjb250ZW50cyBwb2x5KSkKCQkgICAgIChmaXJz dC1tb25vbWlhbCAodGFnCgkJCQkgICAgICAobWFrZS1wb2x5CgkJCQkgICAgICAgKHZhcmlhYmxl IHBvbHkxKQoJCQkJICAgICAgIChsaXN0IChtYWtlLXRlcm0KCQkJCQkgICAgICAob3JkZXIgKGZp cnN0LXRlcm0gKHRlcm0tbGlzdCBwb2x5MSkpKQoJCQkJCSAgICAgIChpZiAocG9seW5vbWlhbD8g KGNvZWZmIChmaXJzdC10ZXJtICh0ZXJtLWxpc3QgcG9seTEpKSkpCgkJCQkJCSAgKG5vcm1hbGl6 ZS1vbmNlIChjb2VmZiAoZmlyc3QtdGVybSAodGVybS1saXN0IHBvbHkxKSkpKQoJCQkJCQkgIChj b2VmZiAoZmlyc3QtdGVybSAodGVybS1saXN0IHBvbHkxKSkpKSkpKSkpKQoJCSM7KHNob3cgI3Qg InAtPnMtby1mLWEtcjogIiAoZGlzcGxheWVkIGZpcnN0LW1vbm9taWFsKSAiXG4iKQoJCShhZGQK CQkgKGlmIChhbmQgKHBvbHlub21pYWw/CgkJCSAoY29lZmYKCQkJICAoZmlyc3QtdGVybQoJCQkg ICAodGVybS1saXN0CgkJCSAgICAoY29udGVudHMgZmlyc3QtbW9ub21pYWwpKSkpKQoJCQkodmFy aWFibGVfMS1vcmRlcjx2YXJpYWJsZV8yLW9yZGVyCgkJCSAodmFyaWFibGUKCQkJICAoY29udGVu dHMKCQkJICAgKGNvZWZmCgkJCSAgICAoZmlyc3QtdGVybQoJCQkgICAgICh0ZXJtLWxpc3QKCQkJ ICAgICAgKGNvbnRlbnRzIGZpcnN0LW1vbm9taWFsKSkpKSkpCgkJCSAodmFyaWFibGUKCQkJICAo Y29udGVudHMgZmlyc3QtbW9ub21pYWwpKSkpCgkJICAgICAobW9ub21pYWwtZmxpcC12YXJpYWJs ZXMgZmlyc3QtbW9ub21pYWwpCgkJICAgICBmaXJzdC1tb25vbWlhbCkKCQkgIChwb2x5bm9taWFs LT5zdW0tb2YtZmlyc3QtYW5kLXJlc3QKCQkgICAodGFnIChtYWtlLXBvbHkgKHZhcmlhYmxlIHBv bHkxKSAocmVzdC10ZXJtcyAodGVybS1saXN0IHBvbHkxKSkpKSkpKSkpCgoJKHNob3cgI3QgIlRl c3QyMTogbm9ybWFsLXBvbHlub21pYWw/OnN0YXJ0OiAiIChkaXNwbGF5ZWQgKG1ha2UtcG9seW5v bWlhbCAneQoJCQkJCSAgICAgICAobGlzdCAobWFrZS10ZXJtIDIgKG1ha2UtcG9seW5vbWlhbAoJ CQkJCQkJCSAgICd4CgkJCQkJCSAgICAgKGxpc3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0g MCAxKSkpKQoJCQkJCQkgICAgIChtYWtlLXRlcm0gMCAyKSkpKSAiXG4iKQoJKHNob3cgI3QgIlRl c3QyMTogbm9ybWFsLXBvbHlub21pYWw/OnJlc3VsdDoiIChub3JtYWwtcG9seW5vbWlhbD8gKG1h a2UtcG9seW5vbWlhbCAneQoJCQkJCSAgICAgICAobGlzdCAobWFrZS10ZXJtIDIgKG1ha2UtcG9s eW5vbWlhbAoJCQkJCQkJCSAgICd4CgkJCQkJCSAgICAgKGxpc3QgKG1ha2UtdGVybSAyIDEpICht YWtlLXRlcm0gMCAxKSkpKQoJCQkJCQkgICAgIChtYWtlLXRlcm0gMCAyKSkpKSAiXG4iKQoJKHNo b3cgI3QgIlRlc3QyMjogbm9ybWFsLXBvbHlub21pYWw/LWdvb2Q6c3RhcnQ6ICIKCSAgICAgIChk aXNwbGF5ZWQKCSAgICAgICAobWFrZS1wb2x5bm9taWFsICd4CgkJCQkobGlzdCAobWFrZS10ZXJt IDIgKG1ha2UtcG9seW5vbWlhbAoJCQkJCQkgICAgJ3kKCQkJCQkJICAgIChsaXN0IChtYWtlLXRl cm0gMiAxKSAobWFrZS10ZXJtIDAgMSkpKSkKCQkJCSAgICAgIChtYWtlLXRlcm0gMCAyKSkpKSAi XG4iKQoJKHNob3cgI3QgIlRlc3QyMjogbm9ybWFsLXBvbHlub21pYWw/LWdvb2Q6cmVzdWx0OiIK CSAgICAgIChub3JtYWwtcG9seW5vbWlhbD8KCSAgICAgICAobWFrZS1wb2x5bm9taWFsICd4CgkJ CQkobGlzdCAobWFrZS10ZXJtIDIgKG1ha2UtcG9seW5vbWlhbAoJCQkJCQkgICAgJ3kKCQkJCQkJ ICAgIChsaXN0IChtYWtlLXRlcm0gMiAxKSAobWFrZS10ZXJtIDAgMSkpKSkKCQkJCSAgICAgICht YWtlLXRlcm0gMCAyKSkpKSAiXG4iKQoKCShzaG93ICN0ICJUZXN0MjM6aW5wdXQ6IG5vcm1hbGl6 aW5nIGEgYmFkIHBvbHlub21pYWw6ICIKCSAgICAgIChtYWtlLXBvbHlub21pYWwgJ3kKCQkJCSAo bGlzdCAobWFrZS10ZXJtIDIgKG1ha2UtcG9seW5vbWlhbAoJCQkJCQkgICAgICd4CgkJCQkJCSAg ICAgKGxpc3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0gMCAxKSkpKQoJCQkJICAgICAgICht YWtlLXRlcm0gMCAyKSkpICJcbiIpCgkoc2hvdyAjdCAiVGVzdDIzOnJlc3VsdDogbm9ybWFsaXpp bmcgYSBiYWQgcG9seW5vbWlhbDogIgoJICAgICAgKG5vcm1hbGl6ZS1vbmNlIChtYWtlLXBvbHlu b21pYWwgJ3kKCQkJCQkgICAgICAgKGxpc3QgKG1ha2UtdGVybSAyIChtYWtlLXBvbHlub21pYWwK CQkJCQkJCQkgICAneAoJCQkJCQkgICAgIChsaXN0IChtYWtlLXRlcm0gMiAxKSAobWFrZS10ZXJt IDAgMSkpKSkKCQkJCQkJICAgICAobWFrZS10ZXJtIDAgMikpKSkgIlxuIikKCShzaG93ICN0ICJU ZXN0MjQ6aW5wdXQ6IG5vcm1hbGl6aW5nIGEgYmFkIHBvbHlub21pYWw6ICIKCSAgICAgIChtYWtl LXBvbHlub21pYWwgJ3gKCQkJCSAobGlzdCAobWFrZS10ZXJtIDIgKG1ha2UtcG9seW5vbWlhbAoJ CQkJCQkgICAgICd4CgkJCQkJCSAgICAgKGxpc3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0g MCAxKSkpKQoJCQkJICAgICAgIChtYWtlLXRlcm0gMCAyKSkpICJcbiIpCgkoc2hvdyAjdCAiVGVz dDI0OnJlc3VsdDogbm9ybWFsaXppbmcgYSBiYWQgcG9seW5vbWlhbDogIgoJICAgICAgKG5vcm1h bGl6ZS1vbmNlIChtYWtlLXBvbHlub21pYWwgJ3gKCQkJCQkgICAgICAgKGxpc3QgKG1ha2UtdGVy bSAyIChtYWtlLXBvbHlub21pYWwKCQkJCQkJCQkgICAneAoJCQkJCQkgICAgIChsaXN0IChtYWtl LXRlcm0gMiAxKSAobWFrZS10ZXJtIDAgMSkpKSkKCQkJCQkJICAgICAobWFrZS10ZXJtIDAgMikp KSkgIlxuIikKCgoJKHNob3cgI3QgIlRlc3QyNDppbnB1dDogbm9ybWFsaXplLWZ1bGx5IGEgYmFk IHBvbHlub21pYWw6ICIKCSAgICAgIChtYWtlLXBvbHlub21pYWwgJ3kKCQkJCSAobGlzdCAobWFr ZS10ZXJtIDIgKG1ha2UtcG9seW5vbWlhbAoJCQkJCQkgICAgICd4CgkJCQkJCSAgICAgKGxpc3Qg KG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0gMCAxKSkpKQoJCQkJICAgICAgIChtYWtlLXRlcm0g MCAyKSkpICJcbiIpCgkoc2hvdyAjdCAiVGVzdDI0OnJlc3VsdDogbm9ybWFsaXplLWZ1bGx5IGEg YmFkIHBvbHlub21pYWw6ICIKCSAgICAgIChub3JtYWxpemUtZnVsbHkgKG1ha2UtcG9seW5vbWlh bCAneQoJCQkJCSAgICAgICAobGlzdCAobWFrZS10ZXJtIDIgKG1ha2UtcG9seW5vbWlhbAoJCQkJ CQkJCSAgICd4CgkJCQkJCSAgICAgKGxpc3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0gMCAx KSkpKQoJCQkJCQkgICAgIChtYWtlLXRlcm0gMCAyKSkpKSAiXG4iKQoKCgoJJ2RvbmUpCgoKICAg ICAgKGRlZmluZSAoaW5zdGFsbC1wb2x5bm9taWFsLXNwYXJzZS1wYWNrYWdlKQoJKGRlZmluZSAo Y29lZmYgdGVybSkgKGNhZHIgdGVybSkpCgkoZGVmaW5lIChmaXJzdC10ZXJtLXNwYXJzZSB0ZXJt LWxpc3QpIChjYXIgdGVybS1saXN0KSkKCShkZWZpbmUgKGFkam9pbi10ZXJtLXNwYXJzZSB0ZXJt IHRlcm0tbGlzdCkKCSAgKGlmICh6ZXJvPyAoY29lZmYgdGVybSkpCgkgICAgICB0ZXJtLWxpc3QK CSAgICAgIChjb25zIHRlcm0gdGVybS1saXN0KSkpCgkocHV0ICdhZGpvaW4tdGVybSAnc3BhcnNl IGFkam9pbi10ZXJtLXNwYXJzZSkKCShwdXQgJ2ZpcnN0LXRlcm0gJ3NwYXJzZSBmaXJzdC10ZXJt LXNwYXJzZSkKCSdkb25lKQogICAgICAoaW5zdGFsbC1wb2x5bm9taWFsLXNwYXJzZS1wYWNrYWdl KQoKICAgICAgKGRlZmluZSAoaW5zdGFsbC1wb2x5bm9taWFsLWRlbnNlLXBhY2thZ2UpCgkoZGVm aW5lIChtYWtlLXRlcm0gb3JkZXIgY29lZmYpIChsaXN0IG9yZGVyIGNvZWZmKSkKCShkZWZpbmUg KG9yZGVyIHRlcm0pIChjYXIgdGVybSkpCgkoZGVmaW5lIChjb2VmZiB0ZXJtKSAoY2FkciB0ZXJt KSkKCgkoZGVmaW5lIChhZGpvaW4tdGVybS1kZW5zZSB0ZXJtIHRlcm0tbGlzdCkKCSAgICAoaWYg KHplcm8/IChjb2VmZiB0ZXJtKSkKCQl0ZXJtLWxpc3QKCQkoaWYgKD4gKG9yZGVyIHRlcm0pIChs ZW5ndGggdGVybS1saXN0KSkKCQkgICAgKGFwcGVuZCAobGlzdCAoY29lZmYgdGVybSkpCgkJCSAg ICAobWFrZS1saXN0ICgtIChvcmRlciB0ZXJtKSAobGVuZ3RoIHRlcm0tbGlzdCkpIDApCgkJCSAg ICB0ZXJtLWxpc3QpCgkJICAgIChlcnJvciAiYWRqb2luLXRlcm06QXBwZW5kaW5nIGEgc21hbGxl ciBvcmRlciB0ZXJtLiBSZWNoZWNrLiIpKSkpCgkoZGVmaW5lIChmaXJzdC10ZXJtLWRlbnNlIHRl cm0tbGlzdCkgCgkgICAjOyhzaG93ICN0ICJmaXJzdC10ZXJtLWRlbnNlOiAiIChkaXNwbGF5ZWQg KG1ha2UtdGVybSAoY2FyIHRlcm0tbGlzdCkgKGxlbmd0aCAoY2RyIHRlcm0tbGlzdCkpKSkgIlxu IikKCSAgIChtYWtlLXRlcm0gKGxlbmd0aCAoY2RyIHRlcm0tbGlzdCkpIChjYXIgdGVybS1saXN0 KSApKQoJKHB1dCAnYWRqb2luLXRlcm0gJ2RlbnNlIGFkam9pbi10ZXJtLWRlbnNlKQoJIzsocHV0 ICdmaXJzdC10ZXJtICdkZW5zZSBmaXJzdC10ZXJtLWRlbnNlKQoJJ2RvbmUpCiAgICAgICM7KGlu c3RhbGwtcG9seW5vbWlhbC1kZW5zZS1wYWNrYWdlKQoKICAgICAgKGRlZmluZSAobWFrZS1wb2x5 bm9taWFsIHZhciB0ZXJtcykKCSgoZ2V0ICdtYWtlICdwb2x5bm9taWFsKSB2YXIgdGVybXMpKQoK ICAgIChpbnN0YWxsLXBvbHlub21pYWwtcGFja2FnZSkKCgogICAgICAjOyhzaG93ICN0ICJUZXN0 IDI6IE1ha2luZyBwb2x5bm9taWFsczogIiAKCSAgICAobWFrZS1wb2x5bm9taWFsICd4IChsaXN0 IChsaXN0IDUgMSkgKGxpc3QgNCAyKSkpICJcbiIpCiAgICAgICM7KHNob3cgI3QgIlRlc3QgMzog WmVybz86ICIgCgkgICAgKHplcm8/IChtYWtlLXBvbHlub21pYWwgJ3ggKGxpc3QgKGxpc3QgNSAx KSAobGlzdCA0IDIpKSkpICJcbiIpCiAgICAgICM7KHNob3cgI3QgIlRlc3QgNDogQWRkaW5nIHBv bHlub21pYWxzOiAiCgkgICAgKGFkZCAobWFrZS1wb2x5bm9taWFsICd4ICcoKDUgMSkgKDQgMikg KDAgMSkpKQoJCSAobWFrZS1wb2x5bm9taWFsICd4ICcoKDUgMSkpKSkgIlxuIikKICAgICAgIzso c2hvdyAjdCAiVGVzdCA0OiBaZXJvPzogIiAoemVybz8gKG1ha2UtcG9seW5vbWlhbCAneCAnKCg1 IDApICgzIDEpKSkpICJcbiIpCgogICAgICAjOyhzaG93ICN0ICJUZXN0IDU6IFN1YnRyYWN0aW5n IHBvbHlub21pYWxzOiAiCgkgICAgKHN1YiAobWFrZS1wb2x5bm9taWFsICd4ICcoKDUgMSkgKDQg MikgKDAgMSkpKQoJCSAobWFrZS1wb2x5bm9taWFsICd4ICcoKDAgMSkpKSkgIlxuIikKCiAgICAg ICM7KHNob3cgI3QgIlRlc3QgNjogTWFraW5nIGEgZGVuc2UgcG9seW5vbWlhbDogIiAobWFrZS1w b2x5bm9taWFsICd4ICcoMSAyIDMgNCA1KSkgIlxuIikKICAgICAgIzsoc2hvdyAjdCAiVGVzdCA3 OiB6ZXJvPyBkZW5zZSBwb2x5bm9taWFsOiAiIChkaXNwbGF5ZWQgKHplcm8/IChtYWtlLXBvbHlu b21pYWwgJ3ggJygwKSkpKSAiXG4iKQogICAgICAjOyhzaG93ICN0ICJUZXN0IDg6IHplcm8/IGRl bnNlIHBvbHlub21pYWw6ICIgKGRpc3BsYXllZCAoemVybz8gKG1ha2UtcG9seW5vbWlhbCAneCAn KDEpKSkpICJcbiIpCiAgICAgICM7KHNob3cgI3QgIlRlc3QgOTogQWRkaW5nIGRlbnNlIHBvbHlu b21pYWxzOiAiCgkgICAgKGFkZCAobWFrZS1wb2x5bm9taWFsICd4ICcoMSAyIDAgMCAwIDEpKQoJ CSAobWFrZS1wb2x5bm9taWFsICd4ICcoMSAwIDAgMCAwIDApKSkgIlxuIikKICAgICAgIzsoc2hv dyAjdCAiVGVzdDEwOiBTdWJ0cmFjdGluZyBkZW5zZSBwb2x5bm9taWFsczogIgoJICAgIChzdWIg KG1ha2UtcG9seW5vbWlhbCAneCAnKDEgMiAwIDAgMCAxKSkKCQkgKG1ha2UtcG9seW5vbWlhbCAn eCAnKDEgMCAwIDAgMCAwKSkpICJcbiIpCiAgICAgICM7KHNob3cgI3QgIlRlc3QxMTogU3VidHJh Y3RpbmcgZGVuc2UgYW5kIHNwYXJzZSBwb2x5bm9taWFsczogIgoJICAgIChzdWIgKG1ha2UtcG9s eW5vbWlhbCAneCAnKDEgMiAwIDAgMCAxKSkKCQkgKG1ha2UtcG9seW5vbWlhbCAneCAnKCg0IDIp KSkpICJcbiIpCiAgICAgICM7KHNob3cgI3QgIlRlc3QxMjogRGl2aWRpbmcgeF4yICsgMnggKyAx IGJ5IHgrMTogIgoJICAgIChkaXNwbGF5ZWQKCSAgICAgKGRpdiAobWFrZS1wb2x5bm9taWFsICd4 ICcoKDIgMSkgKDEgMikgKDAgMSkpKQoJCSAgKG1ha2UtcG9seW5vbWlhbCAneCAnKCAgICAgICgx IDEpICgwIDEpKSkpICkgIlxuIikKICAgICAgIzsoc2hvdyAjdCAiVGVzdDE0OiBBZGRpbmcgcG9s eW5vbWlhbHMgb2YgdHdvIHZhcmlhYmxlczogIgoJICAgIChkaXNwbGF5ZWQKCSAgICAgKGFkZCAo bWFrZS1wb2x5bm9taWFsICd4ICcoKDEgMSkpKQoJCSAgKG1ha2UtcG9seW5vbWlhbCAneSAnKCgx IDEpKSkpKSkKICAgICAgIzsoc2hvdyAjdCAiVGVzdDE0OiBBZGRpbmcgcG9seW5vbWlhbHMgb2Yg dHdvIHZhcmlhYmxlcywgd2hlbiBvbmUgb2YgdGhlbSBpcyBub25leGlzdGFudDogIgoJICAgIChk aXNwbGF5ZWQKCSAgICAgKGFkZCAobWFrZS1wb2x5bm9taWFsICd4ICcoKDEgMSkpKQoJCSAgKG1h a2UtcG9seW5vbWlhbCAneSAnKCgwIDEpKSkpKSkKICAgIChzaG93ICN0ICJUZXN0MjU6IG11bHRp cGx5aW5nIGRpZmZlcmVudCB2YXJpYWJsZXM6ICIKCSAgKGRpc3BsYXllZCAobXVsIChtYWtlLXBv bHlub21pYWwgJ3ggJygoMSAxKSkpCgkJCSAgKG1ha2UtcG9seW5vbWlhbCAneSAnKCgxIDEpKSkp KSAiXG4iKQogIChiZWdpbgogIChkZWZpbmUgcDEgKG1ha2UtcG9seW5vbWlhbCAneCAnKCgyIDEp ICgwIDEpKSkpCiAgKGRlZmluZSBwMiAobWFrZS1wb2x5bm9taWFsICd4ICcoKDMgMSkgKDAgMSkp KSkKICAoZGVmaW5lIHJmIChtYWtlLXJhdGlvbmFsIHAyIHAxKSkKICAoc2hvdyAjdCAiVGVzdCAy NjogbWFrZS1yYXRpb25hbC1wb2x5bm9taWFsOiAiIHJmICJcbiIpCiAgKHNob3cgI3QgIlRlc3Qg Mjc6IGFkZC1yYXRpb25hbFxuIikKICAoc2hvdyAjdCAiVGVzdCAyNzogIiAoYWRkIHJmIHJmKSAi XG4iKQogICkKCiAgKHNob3cgI3QgIlRlc3QgMjg6IHBvbHlub21pYWwtZ2NkOiBzdGFydFxuIikK ICAoZGVmaW5lIChncmVhdGVzdC1jb21tb24tZGl2aXNvciBwMSBwMikgKGFwcGx5LWdlbmVyaWMg J2djZCBwMSBwMikpCiAgKGJlZ2luCiAgICAoZGVmaW5lIHAxIChtYWtlLXBvbHlub21pYWwKCQkg J3ggJygoNCAxKSAoMyAtMSkgKDIgLTIpICgxIDIpKSkpCiAgICAoZGVmaW5lIHAyIChtYWtlLXBv bHlub21pYWwgJ3ggJygoMyAxKSAoMSAtMSkpKSkKICAKICAgIChzaG93ICN0ICJUZXN0IDI4OiBw b2x5bm9taWFsLWdjZDogIiAoZ3JlYXRlc3QtY29tbW9uLWRpdmlzb3IgcDEgcDIpICJcbiIpKQoK ICAoYmVnaW4KICAgICAgKGRlZmluZSBwMSAobWFrZS1wb2x5bm9taWFsCgkJICAgJ3ggJygoMiAx KSAoMSAtMikgKDAgMSkpKSkKICAgICAgKGRlZmluZSBwMiAobWFrZS1wb2x5bm9taWFsICd4ICco KDIgMTEpICgwIDcpKSkpCgogICAgICAoZGVmaW5lIHAzIChtYWtlLXBvbHlub21pYWwgJ3ggJygo MSAxMykgKDAgNSkpKSkKICAgICAgKGRlZmluZSBxMSAobXVsIHAxIHAyKSkKICAgICAgKGRlZmlu ZSBxMiAobXVsIHAxIHAzKSkKICAgICAgKHNob3cgI3QgIlRlc3QgMjk6IGdjZC1pbnRlZ2VyLXBy b2JsZW06IHN0YXJ0XG4iKQogICAgICAoc2hvdyAjdCAiVGVzdCAyOTogZ2NkIDogIiAoZ3JlYXRl c3QtY29tbW9uLWRpdmlzb3IgcTEgcTIpICJcbiIpICAgICAgCiAgICApCiMrZW5kX3NyYwoKIytS RVNVTFRTOgojK2JlZ2luX2V4YW1wbGUKVGVzdDogSGlnaGVyIHRoYW4gJ2ludGVnZXI6IHNjaGVt ZS1udW1iZXIKVGVzdCAxOiBTdWJ0cmFjdGluZyBjb21wbGV4IG51bWJlcnM6IChzY2hlbWUtbnVt YmVyIC4gMS4xKQpUZXN0WTI6IHBvbHkgb2YgcG9seTogKHggKDMgKHkgKDEgMSkgKDAgMSkpKSAo MSAyKSAoMCA0KSkKVGVzdDEzOiBFeHBhbmRpbmcgYSBwb2x5bm9taWFsIGFzIG1vbm9taWFsczog KHBvbHlub21pYWwgeCAoMiAocG9seW5vbWlhbCB5ICgyIDEpKSkgKDAgKHBvbHlub21pYWwgeSAo MiAxKSAoMCAyKSkpKQoKVGVzdDIwOiBzdGFydCBtb25vbWlhbDogKHBvbHlub21pYWwgeCAoMiAo cG9seW5vbWlhbCB5ICgyIDEpICgwIDEpKSkpClRlc3QyMDogRmxpcHBpbmcgYSBtb25vbWlhbCB2 YXJpYWJsZTogKHBvbHlub21pYWwgeSAoMiAocG9seW5vbWlhbCB4ICgxIDEpKSkgKDAgKHBvbHlu b21pYWwgeCAoMSAxKSkpKQoKVGVzdDIxOiBub3JtYWwtcG9seW5vbWlhbD86c3RhcnQ6IChwb2x5 bm9taWFsIHkgKDIgKHBvbHlub21pYWwgeCAoMiAxKSAoMCAxKSkpICgwIDIpKQpUZXN0MjE6IG5v cm1hbC1wb2x5bm9taWFsPzpyZXN1bHQ6I2YKVGVzdDIyOiBub3JtYWwtcG9seW5vbWlhbD8tZ29v ZDpzdGFydDogKHBvbHlub21pYWwgeCAoMiAocG9seW5vbWlhbCB5ICgyIDEpICgwIDEpKSkgKDAg MikpClRlc3QyMjogbm9ybWFsLXBvbHlub21pYWw/LWdvb2Q6cmVzdWx0OiN0ClRlc3QyMzppbnB1 dDogbm9ybWFsaXppbmcgYSBiYWQgcG9seW5vbWlhbDogKHBvbHlub21pYWwgeSAoMiAocG9seW5v bWlhbCB4ICgyIDEpICgwIDEpKSkgKDAgMikpClRlc3QyMzpyZXN1bHQ6IG5vcm1hbGl6aW5nIGEg YmFkIHBvbHlub21pYWw6IChwb2x5bm9taWFsIHggKDIgKHBvbHlub21pYWwgeSAoMiAxKSkpICgw IChwb2x5bm9taWFsIHkgKDIgMSkgKDAgMikpKSkKVGVzdDI0OmlucHV0OiBub3JtYWxpemluZyBh IGJhZCBwb2x5bm9taWFsOiAocG9seW5vbWlhbCB4ICgyIChwb2x5bm9taWFsIHggKDIgMSkgKDAg MSkpKSAoMCAyKSkKVGVzdDI0OnJlc3VsdDogbm9ybWFsaXppbmcgYSBiYWQgcG9seW5vbWlhbDog KHBvbHlub21pYWwgeCAoNCAxKSAoMiAxKSAoMCAyKSkKVGVzdDI0OmlucHV0OiBub3JtYWxpemUt ZnVsbHkgYSBiYWQgcG9seW5vbWlhbDogKHBvbHlub21pYWwgeSAoMiAocG9seW5vbWlhbCB4ICgy IDEpICgwIDEpKSkgKDAgMikpClRlc3QyNDpyZXN1bHQ6IG5vcm1hbGl6ZS1mdWxseSBhIGJhZCBw b2x5bm9taWFsOiAocG9seW5vbWlhbCB4ICgyIChwb2x5bm9taWFsIHkgKDIgMSkpKSAoMCAocG9s eW5vbWlhbCB5ICgyIDEpICgwIDIpKSkpClRlc3QyNTogbXVsdGlwbHlpbmcgZGlmZmVyZW50IHZh cmlhYmxlczogKHBvbHlub21pYWwgeCAoMSAocG9seW5vbWlhbCB5ICgxIDEpKSkpClRlc3QgMjY6 IG1ha2UtcmF0aW9uYWwtcG9seW5vbWlhbDogKHJhdGlvbmFsIChwb2x5bm9taWFsIHggKDMgMSkg KDAgMSkpIHBvbHlub21pYWwgeCAoMiAxKSAoMCAxKSkKVGVzdCAyNzogYWRkLXJhdGlvbmFsCnJh dGlvbmFsIG5vdCBkcm9wcGFibGU6ICNmClRlc3QgMjc6IChyYXRpb25hbCAocG9seW5vbWlhbCB4 ICg1IDIpICgzIDIpICgyIDIpICgwIDIpKSBwb2x5bm9taWFsIHggKDQgMSkgKDIgMikgKDAgMSkp ClRlc3QgMjg6IHBvbHlub21pYWwtZ2NkOiBzdGFydApnY2QtdGVybXM6ICh0ZXJtLWxpc3QgYik9 KCgxIC0xKSkKZ2NkLXRlcm1zOiAodGVybS1saXN0IGIpPSgoMSAxKSkKVGVzdCAyODogcG9seW5v bWlhbC1nY2Q6IChwb2x5bm9taWFsIHggKDIgLTEpICgxIDEpKQpUZXN0IDI5OiBnY2QtaW50ZWdl ci1wcm9ibGVtOiBzdGFydApnY2QtdGVybXM6ICh0ZXJtLWxpc3QgYik9KCgyIC0yMSkgKDEgMykg KDAgNSkpCmdjZC10ZXJtczogKHRlcm0tbGlzdCBiKT0oKDEgKHNjaGVtZS1udW1iZXIgLiAtMTcu MjU0NDM3ODY5ODIyNDg1KSkgKDAgKHNjaGVtZS1udW1iZXIgLiA4LjYyNzIxODkzNDkxMTI0Mykp KQpnY2QtdGVybXM6ICh0ZXJtLWxpc3QgYik9KCgwIChzY2hlbWUtbnVtYmVyIC4gNy45OTM2MDU3 NzczMDExMjdlLTE1KSkpCmdjZC10ZXJtczogKHRlcm0tbGlzdCBiKT0oKQpUZXN0IDI5OiBnY2Qg OiAocG9seW5vbWlhbCB4ICgwIChzY2hlbWUtbnVtYmVyIC4gMS4xMDA0MTA1Nzg0MzI1NTgpKSkK IytlbmRfZXhhbXBsZQoKVGhlIGFuc3dlciBpcyBhIHBvbHlub21pYWwgXCh4XjAgXHRpbWVzIDEu MTAwNDEwNTc4NDMyNTU4XCksIHdoaWNoIGlzCmVzc2VudGlhbGx5IGp1c3QgYSBudW1iZXIuIENs ZWFybHksIHRoaXMgaXMgbm90IHRoZSBncmVhdGVzdCBjb21tb24KZGl2aXNvci4gSSBiZWxpZXZl LCB0aGlzIHByb2JsZW0gaGFwcGVucyBiZWNhdXNlIGF0IHNvbWUgcG9pbnQsIHRoZQpjb21wYXJp c29uICIoaWYgKD0gMCBiKSkiIGZhaWxzLCBiZWNhdXNlIGIgaXMgdmVyeSBzbWFsbCwgYnV0IHN0 aWxsIG5vbnplcm8KZHVlIHRvIHByZWNpc2lvbiBwcm9ibGVtcy4gSW4gcHJpbmNpcGxlLCB0aGlz IHNob3VsZCBiZSBwb3NzaWJsZSB0byBmaXggYnkKY2FyZWZ1bGx5IHN0dWR5aW5nIHRoZSBhbGdv cml0aG0gYW5kIGVuc3VyaW5nIHRoYXQgZXZlcnkgb3BlcmF0aW9uIGluCiJkaXYtdGVybXMiIHBy ZXNlcnZlcyBleGFjdG5lc3MuIFN0aWxsLCB0aGlzIHNob3VsZCBnaXZlIGEgcG9seW5vbWlhbCB3 aXRoCnZlcnkgbG9uZyBjb2VmZmljaWVudHMuCgpXaGVuIEkgd2FzIGRvaW5nIHRoZSBtYW51YWwg cmVwZXRpdGlvbiBvZiB0aGUgYWxnb3JpdGhtLCBJIGZvdW5kIHRoYXQgdGhlCm51bWVyYXRvcnMg YW5kIGRlbm9taW5hdG9ycyBvZiB0aGUgbnVtYmVycyBncm93IHZlcnkgZmFzdCwgc28gaXQgcXVp Y2tseQpiZWNvbWVzIHZlcnkgaGFyZCB0byBvcGVyYXRlIHdpdGggdGhlc2UgbnVtYmVycy4KKioq IERPTkUgRXhlcmNpc2UgMi45NiBJbnRlZ2VyaXppbmcgZmFjdG9yCiAgICBDTE9TRUQ6IFsyMDE5 LTEwLTI4IE1vbiAxOToyM10KClRoaXMgaXMgbm90IGEgdmVyeSBoYXJkIGV4ZXJjaXNlLiBUaGUg b25seSBwcm9ibGVtIGhlcmUgaXMgc3RpbGwgdGhlIG1lc3N5CnBhcnQgaW4gdGhlIGRpdmlzaW9u IGJ5IHRoZSBnY2QsIGJ1dCBoZXksIGZvcm1hbGx5IHRoZSBleGVyY2lzZSBpcyBkb25lLgoKIyti ZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CgoJKGRlZmluZSAo dGhpbmd5LXNvdXJjZSB0aGluZ3kpCgkgIChjb25kICgobGFtYmRhPyB0aGluZ3kpIChsaXN0ICJs YW1iZGEiIChsYW1iZGEtc291cmNlIHRoaW5neSkpKQoJCSgocHJvY2VkdXJlPyB0aGluZ3kpIChs aXN0ICJwcm9jZWR1cmUiIChwcm9jZWR1cmUtbmFtZSB0aGluZ3kpKSkKCQkoKHBhaXI/IHRoaW5n eSkgKGxpc3QgInBhaXIiIChwYWlyLXNvdXJjZSB0aGluZ3kpKSkKCQkoZWxzZSAiTm8gc291cmNl PyByZWZhY3RvciIpKSkKCgkgIChkZWZpbmUgKGFjY3VtdWxhdGUgb3AgaW5pdGlhbCBzZXF1ZW5j ZSkKCSAgICAoaWYgKG51bGw/IHNlcXVlbmNlKQoJCWluaXRpYWwKCQkoYWNjdW11bGF0ZSBvcCAo b3AgaW5pdGlhbCAoY2FyIHNlcXVlbmNlKSkgKGNkciBzZXF1ZW5jZSkpKSkKCSAgKGRlZmluZSBm YWxzZSAjZikKCSAgKGRlZmluZSB0cnVlICAjdCkKCSAgKGRlZmluZSAobWFrZS10YWJsZSkKCSAg ICAobGV0ICgobG9jYWwtdGFibGUgKGxpc3QgJyp0YWJsZSopKSkKCSAgICAgIChkZWZpbmUgKGxv b2t1cCBrZXktMSBrZXktMikKCQkobGV0ICgoc3VidGFibGUgKGFzc29jIGtleS0xIChjZHIgbG9j YWwtdGFibGUpKSkpCgkJICAoaWYgc3VidGFibGUKCQkgICAgICAobGV0ICgocmVjb3JkIChhc3Nv YyBrZXktMiAoY2RyIHN1YnRhYmxlKSkpKQoJCQkoaWYgcmVjb3JkCgkJCSAgICAoY2RyIHJlY29y ZCkKCQkJICAgIGZhbHNlKSkKCQkgICAgICBmYWxzZSkpKQoJICAgICAgKGRlZmluZSAoaW5zZXJ0 ISBrZXktMSBrZXktMiB2YWx1ZSkKCQkobGV0ICgoc3VidGFibGUgKGFzc29jIGtleS0xIChjZHIg bG9jYWwtdGFibGUpKSkpCgkJICAoaWYgc3VidGFibGUKCQkgICAgICAobGV0ICgocmVjb3JkIChh c3NvYyBrZXktMiAoY2RyIHN1YnRhYmxlKSkpKQoJCQkoaWYgcmVjb3JkCgkJCSAgICAoc2V0LWNk ciEgcmVjb3JkIHZhbHVlKQoJCQkgICAgKHNldC1jZHIhIHN1YnRhYmxlCgkJCQkgICAgICAoY29u cyAoY29ucyBrZXktMiB2YWx1ZSkKCQkJCQkgICAgKGNkciBzdWJ0YWJsZSkpKSkpCgkJICAgICAg KHNldC1jZHIhIGxvY2FsLXRhYmxlCgkJCQkoY29ucyAobGlzdCBrZXktMQoJCQkJCSAgICAoY29u cyBrZXktMiB2YWx1ZSkpCgkJCQkgICAgICAoY2RyIGxvY2FsLXRhYmxlKSkpKSkKCQknb2spCgkg ICAgICAoZGVmaW5lIChkaXNwYXRjaCBtKQoJCShjb25kICgoZXE/IG0gJ2xvb2t1cC1wcm9jKSBs b29rdXApCgkJICAgICAgKChlcT8gbSAnaW5zZXJ0LXByb2MhKSBpbnNlcnQhKQoJCSAgICAgIChl bHNlIChlcnJvciAiVW5rbm93biBvcGVyYXRpb24gLS0gVEFCTEUiIG0pKSkpCgkgICAgICBkaXNw YXRjaCkpCgoJICAoZGVmaW5lIG9wZXJhdGlvbi10YWJsZSAobWFrZS10YWJsZSkpCgkgIChkZWZp bmUgZ2V0IChvcGVyYXRpb24tdGFibGUgJ2xvb2t1cC1wcm9jKSkKCSAgKGRlZmluZSBwdXQgKG9w ZXJhdGlvbi10YWJsZSAnaW5zZXJ0LXByb2MhKSkKCgkgIChkZWZpbmUgY29lcmNpb24tdGFibGUg KG1ha2UtdGFibGUpKQoJICAoZGVmaW5lIGdldC1jb2VyY2lvbiAoY29lcmNpb24tdGFibGUgJ2xv b2t1cC1wcm9jKSkKCSAgKGRlZmluZSBwdXQtY29lcmNpb24gKGNvZXJjaW9uLXRhYmxlICdpbnNl cnQtcHJvYyEpKQoKCSAgKGRlZmluZSAoYXR0YWNoLXRhZyB0eXBlLXRhZyBjb250ZW50cykKCSAg ICAoY29ucyB0eXBlLXRhZyBjb250ZW50cykpCgoJICAoZGVmaW5lICh0eXBlLXRhZyBkYXR1bSkK CSAgICAoY29uZCAoKHBhaXI/IGRhdHVtKSAoY2FyIGRhdHVtKSkKCQkgICgoZXhhY3QtaW50ZWdl cj8gZGF0dW0pICdpbnRlZ2VyKQoJCSAgKChyZWFsPyBkYXR1bSkgJ3NjaGVtZS1udW1iZXIpCgkJ ICAoZXJyb3IgIkJhZCB0YWdnZWQgZGF0dW0gLS0gVFlQRS1UQUciIGRhdHVtKSkpCgoJKGRlZmlu ZSAoY29udGVudHMgZGF0dW0pCgkgICAgKGNvbmQgKChwYWlyPyBkYXR1bSkgKGNkciBkYXR1bSkp CgkJICAoKGludGVnZXI/IGRhdHVtKSBkYXR1bSkKCQkgICgocmVhbD8gZGF0dW0pIGRhdHVtKQoJ CSAgKGVsc2UgKGVycm9yICJCYWQgdGFnZ2VkIGRhdHVtIC0tIENPTlRFTlRTIiBkYXR1bSkpKSkK CgkgIChkZWZpbmUgKGludGVnZXI/IHgpCgkgICAgKGVxPyAodHlwZS10YWcgeCkgJ2ludGVnZXIp KQoJICAoZGVmaW5lIChyZWN0YW5ndWxhcj8geikKCSAgICAoZXE/ICh0eXBlLXRhZyB6KSAncmVj dGFuZ3VsYXIpKQoKCSAgKGRlZmluZSAocG9sYXI/IHopCgkgICAgKGVxPyAodHlwZS10YWcgeikg J3BvbGFyKSkKCgoJICAoZGVmaW5lIChyZWFsLXBhcnQgeikgKGFwcGx5LWdlbmVyaWMgJ3JlYWwt cGFydCB6KSkKCSAgKGRlZmluZSAoaW1hZy1wYXJ0IHopIChhcHBseS1nZW5lcmljICdpbWFnLXBh cnQgeikpCgkgIChkZWZpbmUgKG1hZ25pdHVkZSB6KSAoYXBwbHktZ2VuZXJpYyAnbWFnbml0dWRl IHopKQoJICAoZGVmaW5lIChhbmdsZSB6KSAoYXBwbHktZ2VuZXJpYyAnYW5nbGUgeikpCgoJICAo ZGVmaW5lIChhZGQgeCB5KSAKCSAgICAgIzsoc2hvdyAjdCAiZGVidWc6YWRkOiB4PSIgeCAiLCB5 PSIgeSAiLCBzdGFydGluZyBhcHBseS1nZW5lcmljXG4iKQoJICAgICAjOyhzaG93ICN0ICJkZWJ1 ZzphZGQ6ICh0eXBlLXRhZ3MgeCx5KT0oIiAodHlwZS10YWcgeCkgIiwiICh0eXBlLXRhZyB5KSAi KSIgIlxuIikKCSAgICAgIzsoc2hvdyAjdCAiZGVidWc6YWRkOmNhbiB3ZSBhY2Nlc3MgYXBwbHkt Z2VuZXJpYz8iICh3cml0dGVuIGFwcGx5LWdlbmVyaWMpCgkJICAgICAgIlxuIiApCgkgICAgICM7 KGVycm9yICJEZWJ1ZzEiKQoJICAgICAoYXBwbHktZ2VuZXJpYyAnYWRkIHggeSkpCgkgIChkZWZp bmUgKHN1YiB4IHkpIChhcHBseS1nZW5lcmljICdzdWIgeCB5KSkKCSAgKGRlZmluZSAobXVsIHgg eSkgKGFwcGx5LWdlbmVyaWMgJ211bCB4IHkpKQoJICAoZGVmaW5lIChkaXYgeCB5KSAoYXBwbHkt Z2VuZXJpYyAnZGl2IHggeSkpCgoJICAoZGVmaW5lIChlcXU/IHggeSkKCSAgICAoYXBwbHktZ2Vu ZXJpYyAnZXF1PyB4IHkpKQoJICAoZGVmaW5lICh6ZXJvPyB4KSAoYXBwbHktZ2VuZXJpYyAnemVy bz8geCkpCgoJICAoZGVmaW5lIChleHAgeCB5KSAoYXBwbHktZ2VuZXJpYyAnZXhwIHggeSkpCgoJ ICAoZGVmaW5lIChpbnN0YWxsLXNjaGVtZS1udW1iZXItcGFja2FnZSkKCSAgICAoZGVmaW5lICh0 YWcgeCkKCSAgICAgICM7KGF0dGFjaC10YWcgJ3NjaGVtZS1udW1iZXIgeCkgeCkKCSAgICAoc2hv dyAjdCAiKHRhZyA1KT0iICh0YWcgNSkgIlxuIikKCSAgICAocHV0ICdhZGQgJyhzY2hlbWUtbnVt YmVyIHNjaGVtZS1udW1iZXIpCgkJIChsYW1iZGEgKHggeSkgIzsoc2hvdyAjdCAiZGVidWc6Zm91 bmQgcGx1cyBkaXNwYXRjaFxuIikgKHRhZyAoKyB4IHkpKSkpCgkgICAgKHB1dCAnc3ViICcoc2No ZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJCSAobGFtYmRhICh4IHkpICh0YWcgKC0geCB5KSkp KQoJICAgIChwdXQgJ211bCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCQkgKGxhbWJk YSAoeCB5KSAodGFnICgqIHggeSkpKSkKCSAgICAocHV0ICdkaXYgJyhzY2hlbWUtbnVtYmVyIHNj aGVtZS1udW1iZXIpCgkJIChsYW1iZGEgKHggeSkgKHRhZyAoLyB4IHkpKSkpCgkgICAgKHB1dCAn bWFrZSAnc2NoZW1lLW51bWJlcgoJCSAobGFtYmRhICh4KSAjOyhzaG93ICN0ICJkZWJ1Zzpmb3Vu ZCAnbWFrZSAnc2NoZW1lLW51bWJlclxuIikgKHRhZyB4KSkpCgkgICAgKHB1dCAnZXF1PyAnKHNj aGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCQkgKGxhbWJkYSAoeCB5KSAoPSB4IHkpKSkKCSAg ICAocHV0ICd6ZXJvPyAnKHNjaGVtZS1udW1iZXIpCgkJIChsYW1iZGEgKHgpICg9IDAgeCkpKQoJ ICAgIChwdXQgJ2V4cCAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCQkgKGxhbWJkYSAo eCB5KSAodGFnIChleHB0IHggeSkpKSkKCSAgICAocHV0ICdwcm9qZWN0ICcoc2NoZW1lLW51bWJl cikKCQkgKGxhbWJkYSAoeCkKCQkgICAoaWYgKGZpbml0ZT8geCkKICAgICAgICAgICAgICAgICAg ICAgIChleGFjdCAodHJ1bmNhdGUgeCkpCiAgICAgICAgICAgICAgICAgICAgICAwKSkpCgkgICAg KHB1dCAnc2luZSAnKHNjaGVtZS1udW1iZXIpIHNpbikKCSAgICAocHV0ICdjb3NpbmUgJyhzY2hl bWUtbnVtYmVyKSBjb3MpCgkgICAgKHB1dCAnc3F1YXJlLXJvb3QgJyhzY2hlbWUtbnVtYmVyKSBz cXJ0KQoJICAgIChwdXQgJ2FyY3RhbmdlbnQgJyhzY2hlbWVyLW51bWJlcikgYXRhbikKCSAgICAn ZG9uZSkKICAoaW5zdGFsbC1zY2hlbWUtbnVtYmVyLXBhY2thZ2UpCgkoZGVmaW5lIChpbnRlZ2Vy LT5zY2hlbWUtbnVtYmVyIHgpCgkgICAobWFrZS1zY2hlbWUtbnVtYmVyIChpbmV4YWN0IChjb250 ZW50cyB4KSkpKQoJKHB1dC1jb2VyY2lvbiAnaW50ZWdlciAnc2NoZW1lLW51bWJlciBpbnRlZ2Vy LT5zY2hlbWUtbnVtYmVyKSAgCgoJICAoZGVmaW5lIChzaW5lIHgpIChhcHBseS1nZW5lcmljICdz aW5lIHgpKQoJICAoZGVmaW5lIChjb3NpbmUgeCkgKGFwcGx5LWdlbmVyaWMgJ2Nvc2luZSB4KSkK CSAgKGRlZmluZSAoc3F1YXJlLXJvb3QgeCkgKGFwcGx5LWdlbmVyaWMgJ3NxdWFyZS1yb290IHgp KQoJICAoZGVmaW5lIChhcmN0YW5nZW50IHgpIChhcHBseS1nZW5lcmljICdhcmN0YW5nZW50IHgp KQoKCSAgKGRlZmluZSAobWFrZS1zY2hlbWUtbnVtYmVyIG4pCgkgICAgICM7KHNob3cgI3QgImRl YnVnOm1ha2Utc2NoZW1lLW51bWJlcjogbj0iIG4gIlxuIikKCSAgICAoKGdldCAnbWFrZSAnc2No ZW1lLW51bWJlcikgbikpCgkgICM7KGNoZWNrICgrIDEgMSkgPT4gMikKCSAgKHNob3cgI3QgIlRl c3QgMzE6IHN0YXJ0XG4iKQoJICAoc2hvdyAjdCAiVGVzdCAzMToiIChlcXVhbD8gKG1ha2Utc2No ZW1lLW51bWJlciAxKSAxKSAiXG4iKQoKCSAgIzsoY2hlY2sgKGFkZCAobWFrZS1zY2hlbWUtbnVt YmVyIDEpIChtYWtlLXNjaGVtZS1udW1iZXIgMSkpID0+IDIpCgoJICAoZGVmaW5lIChpbnN0YWxs LXJhdGlvbmFsLXBhY2thZ2UpCgkgICAgKGRlZmluZSAobnVtZXIgeCkgKGNhciB4KSkKCSAgICAo ZGVmaW5lIChkZW5vbSB4KSAoY2RyIHgpKQoJICAgIChkZWZpbmUgKG1ha2UtcmF0IG4gZCkKCSAg ICAgICM7KGxldCAoKGcgKGdjZCBuIGQpKSkKCQkoY29ucyAoLyBuIGcpICgvIGQgZykpKQoJCShj b25zIG4gZCkpCgkgICAgKGRlZmluZSAoYWRkLXJhdCB4IHkpCgkgICAgICAobWFrZS1yYXQgKGFk ZCAobXVsIChudW1lciB4KSAoZGVub20geSkpCgkJCSAgIChtdWwgKG51bWVyIHkpIChkZW5vbSB4 KSkpCgkJCShtdWwgKGRlbm9tIHgpIChkZW5vbSB5KSkpKQoJICAgIChkZWZpbmUgKHN1Yi1yYXQg eCB5KQoJICAgICAgKG1ha2UtcmF0IChzdWIgKG11bCAobnVtZXIgeCkgKGRlbm9tIHkpKQoJCQkg ICAobXVsIChudW1lciB5KSAoZGVub20geCkpKQoJCQkobXVsIChkZW5vbSB4KSAoZGVub20geSkp KSkKCSAgICAoZGVmaW5lIChtdWwtcmF0IHggeSkKCSAgICAgIChtYWtlLXJhdCAobXVsIChudW1l ciB4KSAobnVtZXIgeSkpCgkJCShtdWwgKGRlbm9tIHgpIChkZW5vbSB5KSkpKQoJICAgIChkZWZp bmUgKGRpdi1yYXQgeCB5KQoJICAgICAgKG1ha2UtcmF0IChtdWwgKG51bWVyIHgpIChkZW5vbSB5 KSkKCQkJKG11bCAoZGVub20geCkgKG51bWVyIHkpKSkpCgoJICAgIChkZWZpbmUgKHRhZyB4KSAo YXR0YWNoLXRhZyAncmF0aW9uYWwgeCkpCgkgICAgKHB1dCAnYWRkICcocmF0aW9uYWwgcmF0aW9u YWwpCgkJIChsYW1iZGEgKHggeSkgKHRhZyAoYWRkLXJhdCB4IHkpKSkpCgkgICAgKHB1dCAnc3Vi ICcocmF0aW9uYWwgcmF0aW9uYWwpCgkJIChsYW1iZGEgKHggeSkgKHRhZyAoc3ViLXJhdCB4IHkp KSkpCgkgICAgKHB1dCAnbXVsICcocmF0aW9uYWwgcmF0aW9uYWwpCgkJIChsYW1iZGEgKHggeSkg KHRhZyAobXVsLXJhdCB4IHkpKSkpCgkgICAgKHB1dCAnZGl2ICcocmF0aW9uYWwgcmF0aW9uYWwp CgkJIChsYW1iZGEgKHggeSkgKHRhZyAoZGl2LXJhdCB4IHkpKSkpCgoJICAgIChwdXQgJ21ha2Ug J3JhdGlvbmFsCgkJIChsYW1iZGEgKG4gZCkgKHRhZyAobWFrZS1yYXQgbiBkKSkpKQoJICAgIChw dXQgJ2VxdT8gJyhyYXRpb25hbCByYXRpb25hbCkKCQkgKGxhbWJkYSAoeCB5KSAoemVybz8gKG51 bWVyIChzdWItcmF0IHggeSkpKSkpCgkgICAgKHB1dCAnemVybz8gJyhyYXRpb25hbCkgKGxhbWJk YSAoeCkgKHplcm8/IChudW1lciB4KSkpKQoJICAgICM7KHB1dCAncHJvamVjdCAnKHJhdGlvbmFs KSAobGFtYmRhICh4KSAKCQkJCQkoZXhhY3QgKHRydW5jYXRlICgvIChudW1lciB4KSAoZGVub20g eCkpKSkpKQoJICAgICM7KHB1dCAndG8tcmVhbCAnKHJhdGlvbmFsKSAobGFtYmRhICh4KSAoLyAo bnVtZXIgKGNvbnRlbnRzIHgpKSAoZGVub20gKGNvbnRlbnRzIHgpKSkpKQoJICAgICdkb25lKQoK CSAgKGRlZmluZSAobWFrZS1yYXRpb25hbCBuIGQpCgkgICAgKChnZXQgJ21ha2UgJ3JhdGlvbmFs KSBuIGQpKQoKCSAgKGRlZmluZSAoaW5zdGFsbC1yZWN0YW5ndWxhci1wYWNrYWdlKQoKCSAgICAo ZGVmaW5lIChyZWFsLXBhcnQgeikgKGNhciB6KSkKCSAgICAoZGVmaW5lIChpbWFnLXBhcnQgeikg KGNkciB6KSkKCSAgICAoZGVmaW5lIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkgKGNvbnMgeCB5 KSkKCSAgICAoZGVmaW5lIChtYWduaXR1ZGUgeikKCSAgICAgIChzcXVhcmUtcm9vdCAoYWRkIChz cXVhcmUgKHJlYWwtcGFydCB6KSkKCQkJCShzcXVhcmUgKGltYWctcGFydCB6KSkpKSkKCSAgICAo ZGVmaW5lIChhbmdsZSB6KQoJICAgICAgKGFyY3RhbmdlbnQgKGltYWctcGFydCB6KSAocmVhbC1w YXJ0IHopKSkKCSAgICAoZGVmaW5lIChtYWtlLWZyb20tbWFnLWFuZyByIGEpCgkgICAgICAoY29u cyAobXVsIHIgKGNvc2luZSBhKSkgKG11bCByIChzaW5lIGEpKSkpCgoJICAgIChkZWZpbmUgKHRh ZyB4KSAoYXR0YWNoLXRhZyAncmVjdGFuZ3VsYXIgeCkpCgkgICAgKHB1dCAncmVhbC1wYXJ0ICco cmVjdGFuZ3VsYXIpIHJlYWwtcGFydCkKCSAgICAocHV0ICdpbWFnLXBhcnQgJyhyZWN0YW5ndWxh cikgaW1hZy1wYXJ0KQoJICAgIChwdXQgJ21hZ25pdHVkZSAnKHJlY3Rhbmd1bGFyKSBtYWduaXR1 ZGUpCgkgICAgKHB1dCAnYW5nbGUgJyhyZWN0YW5ndWxhcikgYW5nbGUpCgkgICAgKHB1dCAnbWFr ZS1mcm9tLXJlYWwtaW1hZyAncmVjdGFuZ3VsYXIKCQkgKGxhbWJkYSAoeCB5KSAodGFnIChtYWtl LWZyb20tcmVhbC1pbWFnIHggeSkpKSkKCSAgICAocHV0ICdtYWtlLWZyb20tbWFnLWFuZyAncmVj dGFuZ3VsYXIKCQkgKGxhbWJkYSAociBhKSAodGFnIChtYWtlLWZyb20tbWFnLWFuZyByIGEpKSkp CgkgICAgJ2RvbmUpCgoJICAoZGVmaW5lIChpbnN0YWxsLXBvbGFyLXBhY2thZ2UpCgoJICAgIChk ZWZpbmUgKG1hZ25pdHVkZSB6KSAoY2FyIHopKQoJICAgIChkZWZpbmUgKGFuZ2xlIHopIChjZHIg eikpCgkgICAgKGRlZmluZSAobWFrZS1mcm9tLW1hZy1hbmcgciBhKSAoY29ucyByIGEpKQoJICAg IChkZWZpbmUgKHJlYWwtcGFydCB6KQoJICAgICAgKG11bCAobWFnbml0dWRlIHopIChjb3NpbmUg KGFuZ2xlIHopKSkpCgkgICAgKGRlZmluZSAoaW1hZy1wYXJ0IHopCgkgICAgICAobXVsIChtYWdu aXR1ZGUgeikgKHNpbmUgKGFuZ2xlIHopKSkpCgkgICAgKGRlZmluZSAobWFrZS1mcm9tLXJlYWwt aW1hZyB4IHkpCgkgICAgICAoY29ucyAoc3F1YXJlLXJvb3QgKGFkZCAoc3F1YXJlIHgpIChzcXVh cmUgeSkpKQoJCSAgICAoYXJjdGFuZ2VudCB5IHgpKSkKCgkgICAgKGRlZmluZSAodGFnIHgpIChh dHRhY2gtdGFnICdwb2xhciB4KSkKCSAgICAocHV0ICdyZWFsLXBhcnQgJyhwb2xhcikgcmVhbC1w YXJ0KQoJICAgIChwdXQgJ2ltYWctcGFydCAnKHBvbGFyKSBpbWFnLXBhcnQpCgkgICAgKHB1dCAn bWFnbml0dWRlICcocG9sYXIpIG1hZ25pdHVkZSkKCSAgICAocHV0ICdhbmdsZSAnKHBvbGFyKSBh bmdsZSkKCSAgICAocHV0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdwb2xhcgoJCSAobGFtYmRhICh4 IHkpICh0YWcgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KSkpKQoJICAgIChwdXQgJ21ha2UtZnJv bS1tYWctYW5nICdwb2xhcgoJCSAobGFtYmRhIChyIGEpICh0YWcgKG1ha2UtZnJvbS1tYWctYW5n IHIgYSkpKSkKCSAgICAnZG9uZSkKCgkgIChkZWZpbmUgKGluc3RhbGwtY29tcGxleC1wYWNrYWdl KQoJICAgIChkZWZpbmUgKG1ha2UtZnJvbS1yZWFsLWltYWcgeCB5KQoJICAgICAgKChnZXQgJ21h a2UtZnJvbS1yZWFsLWltYWcgJ3JlY3Rhbmd1bGFyKSB4IHkpKQoJICAgIChkZWZpbmUgKG1ha2Ut ZnJvbS1tYWctYW5nIHIgYSkKCSAgICAgICgoZ2V0ICdtYWtlLWZyb20tbWFnLWFuZyAncG9sYXIp IHIgYSkpCgkgICAgKGRlZmluZSAoYWRkLWNvbXBsZXggejEgejIpCgkgICAgICAobWFrZS1mcm9t LXJlYWwtaW1hZyAoYWRkIChyZWFsLXBhcnQgejEpIChyZWFsLXBhcnQgejIpKQoJCQkJICAgKGFk ZCAoaW1hZy1wYXJ0IHoxKSAoaW1hZy1wYXJ0IHoyKSkpKQoJICAgIChkZWZpbmUgKHN1Yi1jb21w bGV4IHoxIHoyKQoJICAgICAgKG1ha2UtZnJvbS1yZWFsLWltYWcgKHN1YiAocmVhbC1wYXJ0IHox KSAocmVhbC1wYXJ0IHoyKSkKCQkJCSAgIChzdWIgKGltYWctcGFydCB6MSkgKGltYWctcGFydCB6 MikpKSkKCSAgICAoZGVmaW5lIChtdWwtY29tcGxleCB6MSB6MikKCSAgICAgIChtYWtlLWZyb20t bWFnLWFuZyAobXVsIChtYWduaXR1ZGUgejEpIChtYWduaXR1ZGUgejIpKQoJCQkJIChhZGQgKGFu Z2xlIHoxKSAoYW5nbGUgejIpKSkpCgkgICAgKGRlZmluZSAoZGl2LWNvbXBsZXggejEgejIpCgkg ICAgICAobWFrZS1mcm9tLW1hZy1hbmcgKGRpdiAobWFnbml0dWRlIHoxKSAobWFnbml0dWRlIHoy KSkKCQkJCSAoc3ViIChhbmdsZSB6MSkgKGFuZ2xlIHoyKSkpKQoJICAgIChkZWZpbmUgKHRhZyB6 KSAoYXR0YWNoLXRhZyAnY29tcGxleCB6KSkKCSAgICAocHV0ICdhZGQgJyhjb21wbGV4IGNvbXBs ZXgpCgkJIChsYW1iZGEgKHoxIHoyKSAodGFnIChhZGQtY29tcGxleCB6MSB6MikpKSkKCSAgICAo cHV0ICdzdWIgJyhjb21wbGV4IGNvbXBsZXgpCgkJIChsYW1iZGEgKHoxIHoyKSAodGFnIChzdWIt Y29tcGxleCB6MSB6MikpKSkKCSAgICAocHV0ICdtdWwgJyhjb21wbGV4IGNvbXBsZXgpCgkJIChs YW1iZGEgKHoxIHoyKSAodGFnIChtdWwtY29tcGxleCB6MSB6MikpKSkKCSAgICAocHV0ICdkaXYg Jyhjb21wbGV4IGNvbXBsZXgpCgkJIChsYW1iZGEgKHoxIHoyKSAodGFnIChkaXYtY29tcGxleCB6 MSB6MikpKSkKCSAgICAocHV0ICdtYWtlLWZyb20tcmVhbC1pbWFnICdjb21wbGV4CgkJIChsYW1i ZGEgKHggeSkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkpKSkpCgkgICAgKHB1dCAnbWFr ZS1mcm9tLW1hZy1hbmcgJ2NvbXBsZXgKCQkgKGxhbWJkYSAociBhKSAodGFnIChtYWtlLWZyb20t bWFnLWFuZyByIGEpKSkpCgkgICAgKHB1dCAnZXF1PyAnKGNvbXBsZXggY29tcGxleCkKCQkgKGxh bWJkYSAoeCB5KSAoYW5kICg9IDAgKHJlYWwtcGFydCAoc3ViLWNvbXBsZXggeCB5KSkpCgkJCQkg ICAgKD0gMCAoaW1hZy1wYXJ0IChzdWItY29tcGxleCB4IHkpKSkpKSkKCSAgICAocHV0ICdlcXU/ ICcocmVjdGFuZ3VsYXIgcG9sYXIpIGVxdT8pCgkgICAgKHB1dCAnZXF1PyAnKHBvbGFyIHJlY3Rh bmd1bGFyKSBlcXU/KQoJICAgIChwdXQgJ3plcm8/ICcoY29tcGxleCkKCQkgKGxhbWJkYSAoeCkg KGVxdT8gKHRhZyB4KSAodGFnIChtYWtlLWZyb20tcmVhbC1pbWFnIDAgMCkpKSkpCgkgICAgKHB1 dCAncHJvamVjdCAnKGNvbXBsZXgpIChsYW1iZGEgKHopIChyZWFsLXBhcnQgeikpKQoJICAgICdk b25lKQoKCSAgKGRlZmluZSAobWFrZS1jb21wbGV4LWZyb20tcmVhbC1pbWFnIHggeSkKCSAgICAo KGdldCAnbWFrZS1mcm9tLXJlYWwtaW1hZyAnY29tcGxleCkgeCB5KSkKCgkgIChkZWZpbmUgKG1h a2UtY29tcGxleC1mcm9tLW1hZy1hbmcgciBhKQoJICAgICgoZ2V0ICdtYWtlLWZyb20tbWFnLWFu ZyAnY29tcGxleCkgciBhKSkKCgkgIChpbnN0YWxsLXJlY3Rhbmd1bGFyLXBhY2thZ2UpCgkgIChp bnN0YWxsLXBvbGFyLXBhY2thZ2UpCgkgIChpbnN0YWxsLXJhdGlvbmFsLXBhY2thZ2UpCgoJICAo aW5zdGFsbC1jb21wbGV4LXBhY2thZ2UpCgoJICAocHV0ICdyZWFsLXBhcnQgJyhjb21wbGV4KSBy ZWFsLXBhcnQpCgkgIChwdXQgJ2ltYWctcGFydCAnKGNvbXBsZXgpIGltYWctcGFydCkKCSAgKHB1 dCAnbWFnbml0dWRlICcoY29tcGxleCkgbWFnbml0dWRlKQoJICAocHV0ICdhbmdsZSAnKGNvbXBs ZXgpIGFuZ2xlKQoJICAoZGVmaW5lIChwb2x5bm9taWFsPyB4KQoJICAgIChlcT8gKHR5cGUtdGFn IHgpICdwb2x5bm9taWFsKSkKCSAgKGRlZmluZSBudW1lcmljLXRvd2VyIChsaXN0ICdpbnRlZ2Vy ICdzY2hlbWUtbnVtYmVyICdjb21wbGV4KSkKCSAgKGRlZmluZSAobnVtZXJpYz8geCkKCSAgICAo bWVtcSB4IG51bWVyaWMtdG93ZXIpKQoJICAoZGVmaW5lICh0eXBlMTw9dHlwZTI/IHR5cGUxIHR5 cGUyKQoJICAgIChpZiAobm90IChtZW1xIHR5cGUxIG51bWVyaWMtdG93ZXIpKQoJCShlcnJvciAi VHlwZSAxIG5vdCBpbiB0aGUgbnVtZXJpYyB0b3dlciIpKQoJICAgIChpZiAobm90IChtZW1xIHR5 cGUyIG51bWVyaWMtdG93ZXIpKQoJCShlcnJvciAiVHlwZSAyIG5vdCBpbiB0aGUgbnVtZXJpYyB0 b3dlciIpKQoJICAgIChsZXQgbG9vcCAoKHR5cGVzIG51bWVyaWMtdG93ZXIpKQoJICAgICAgKGNv bmQgKChudWxsPyB0eXBlcykgKGVycm9yICJUeXBlIDEgYW5kIHR5cGUgMiBhcmUgaW5jb21wYXJh YmxlIiB0eXBlMSB0eXBlMikpCgkJICAgICgoZXE/IChjYXIgdHlwZXMpIHR5cGUxKSAjdCkKCQkg ICAgKChlcT8gKGNhciB0eXBlcykgdHlwZTIpICNmKQoJCSAgICAoZWxzZSAobG9vcCAoY2RyIHR5 cGVzKSkpKSkpCgkgIChkZWZpbmUgKGNvbXBhcmFibGU/IHR5cGUxIHR5cGUyKSAKCSAgICAoYW5k IChtZW1xIHR5cGUxIG51bWVyaWMtdG93ZXIpIAoJCShtZW1xIHR5cGUyIG51bWVyaWMtdG93ZXIp KSkKCSAgKGRlZmluZSAocmFpc2UtdHlwZSB4KQoJICAjOyhzaG93ICN0ICJSYWlzaW5nIHR5cGUg b2Y6ICIgKGRpc3BsYXllZCB4KSAiXG4iKQoJICAgIChsZXQgKChjb252ZXJ0ZXIgKGdldC1jb2Vy Y2lvbiAodHlwZS10YWcgeCkgKGhpZ2hlci10eXBlICh0eXBlLXRhZyB4KSkpKSkKCSAgICAgIChp ZiBjb252ZXJ0ZXIKCQkgIChjb252ZXJ0ZXIgeCkKCQkgIChlcnJvciAiTm8gY29lcmNpb24gZm91 bmQgZm9yIHgiICh0eXBlLXRhZyB4KSB4KSkpKQoJKGRlZmluZSAoaGlnaGVyLXR5cGUgeCkKCSAg KGxldCAoKHRhaWwgKG1lbXEgeCBudW1lcmljLXRvd2VyKSkpCgkgICAgKGNvbmQgKChlcT8gI2Yg dGFpbCkgKGVycm9yICJUeXBlIG5vdCBpbiB0aGUgdG93ZXIiIHgpKQoJCSAgKChudWxsPyAoY2Ry IHRhaWwpKSAoZXJyb3IgIkFscmVhZHkgdGhlIGhpZ2hlc3QgdHlwZToiIHgpKQoJCSAgKGVsc2Ug KGNhZHIgdGFpbCkpKSkpCgoJKHNob3cgI3QgIlRlc3Q6IEhpZ2hlciB0aGFuICdpbnRlZ2VyOiAi IChoaWdoZXItdHlwZSAnaW50ZWdlcikgIlxuIikKCSAgKGRlZmluZSAocmVtYWluZGVyLWludGVn ZXIgYSBiKQoJICAgICh3aGVuIChvciAobm90IChpbnRlZ2VyPyBhKSkgKG5vdCAoaW50ZWdlcj8g YikpKQoJICAgICAgKGVycm9yICJBcmd1bWVudHMgbXVzdCBiZSBpbnRlZ2VycyIgYSBiKSkKCSAg ICAocmVtYWluZGVyIGEgYikpCgoJICAocHV0ICdyZW1haW5kZXIgJyhpbnRlZ2VyIGludGVnZXIp IHJlbWFpbmRlci1pbnRlZ2VyKQoJICAoZGVmaW5lIChyZW1haW5kZXItZ2VuZXJhbGl6ZWQgYSBi KSAoYXBwbHktZ2VuZXJpYyAncmVtYWluZGVyIGEgYikpCgoJICAoZGVmaW5lIChwcm9qZWN0IG9i aikKCSAgICAoYXBwbHktZ2VuZXJpYyAncHJvamVjdCBvYmopKQoJICAoZGVmaW5lIChkcm9wcGFi bGU/IG9iaikKCSAgICAjOyhzaG93ICN0ICJkcm9wcGFibGU/OiBvYmo9IiBvYmogIiwgdHlwZS10 YWc9IiAodHlwZS10YWcgb2JqKSAiXG4iKQoJICAgIChjb25kICgoZXE/ICh0eXBlLXRhZyBvYmop ICdyYXRpb25hbCkgKGJlZ2luIChzaG93ICN0ICJyYXRpb25hbCBub3QgZHJvcHBhYmxlOiAjZlxu IikgI2YpKQoJCSAgKChub3QgKG1lbXEgKHR5cGUtdGFnIG9iaikgbnVtZXJpYy10b3dlcikpICNm KQoJCSAgKChlcT8gKHR5cGUtdGFnIG9iaikgKGNhciBudW1lcmljLXRvd2VyKSkgI2YpCgkJICAo KGVxdT8gb2JqIChyYWlzZS10eXBlIChwcm9qZWN0IG9iaikpKSAjdCkKCQkgIChlbHNlICNmKSkp CgkgIChkZWZpbmUgKGRyb3Agb2JqKSAKCSAgICAoaWYgKGRyb3BwYWJsZT8gb2JqKQoJCShkcm9w IChwcm9qZWN0IG9iaikpCgkJb2JqKSkKCgkgIChkZWZpbmUgKGFwcGx5LWdlbmVyaWMgb3AgLiBh cmdzKQoJICAgICM7KHNob3cgI3QgImFwcGx5LWdlbmVyaWM6ZW50cnlcbiIpCgkgICAgIzsoZXJy b3IgImRlYnVnIikKCSAgICAoZGVmaW5lICh2YXJpYWJsZSBwb2x5KSAoY2FyIHBvbHkpKQoJICAg IChkZWZpbmUgKGFsbC1hcmd0eXBlcy1zYW1lPyAuIGFyZ3MpCgkgICAgICAobGV0ICgodHlwZSAo dHlwZS10YWcgKGNhciBhcmdzKSkpKQoJCShhY2N1bXVsYXRlIChsYW1iZGEgKHggeSkgKGFuZCB4 IHkpKSAjdCAobWFwIChsYW1iZGEgKHgpIChlcT8gdHlwZSB4KSkgYXJncykpKSkKCSAgICAoZGVm aW5lIChjb2VyY2lvbi1pZi1leGlzdHM/IHR5cGUgYXJnLXRhZ3MpCgkgICAgICAobGV0ICgoY29l cmNpb24tbGlzdCAobWFwIChsYW1iZGEgKHgpIAoJCQkJCSAgKGlmIChlcT8gdHlwZSB4KQoJCQkJ CSAgICAgIGlkZW50aXR5CgkJCQkJICAgICAgKGdldC1jb2VyY2lvbiB4IHR5cGUpKSkgYXJnLXRh Z3MpKSkKCQkoaWYgKGFjY3VtdWxhdGUgKGxhbWJkYSAoeCB5KSAoYW5kIHggeSkpICN0IGNvZXJj aW9uLWxpc3QpCgkJICAgIGNvZXJjaW9uLWxpc3QKCQkgICAgI2YpKSkKCSAgICAoZHJvcCAobGV0 KiAoKHR5cGUtdGFncyAobWFwIHR5cGUtdGFnIGFyZ3MpKQoJCQkgKHByb2MgKGdldCBvcCB0eXBl LXRhZ3MpKSkKCQkgICAjOyhzaG93ICN0ICJhcHBseS1nZW5lcmljOiB0eXBlLXRhZ3M9IiAKCQkJ ICAgICAoZGlzcGxheWVkIHR5cGUtdGFncykKCQkJICAgICAiIHByb2M9IiAod3JpdHRlbiBwcm9j KQoJCQkgICAgICIgcHJvYy1zb3VyY2U9IiAodGhpbmd5LXNvdXJjZSBwcm9jKSAiXG4iKQoJCSAg ICAoY29uZCAocHJvYyAoYXBwbHkgcHJvYyAobWFwIGNvbnRlbnRzIGFyZ3MpKSkKCQkJICAoKD0g MSAobGVuZ3RoIGFyZ3MpKQoJCSAgICM7KHNob3cgI3QgIk5vIHByb2MgZm91bmQgZm9yIG9wPSIg b3AgIiwgdHlwZS10YWdzPSIgdHlwZS10YWdzICIsIGFyZz0iIChkaXNwbGF5ZWQgYXJncykgIlxu IikKCQkJICAgKGFwcGx5LWdlbmVyaWMgb3AgKHJhaXNlLXR5cGUgKGNhciBhcmdzKSkpKQoJCQkg ICgoPSAyIChsZW5ndGggYXJncykpCgkJCSAgIChjb25kICgoYW5kIChlcT8gJ3BvbHlub21pYWwg KGNhciB0eXBlLXRhZ3MpKQoJCQkJICAgICAobnVtZXJpYz8gKGNhZHIgdHlwZS10YWdzKSkpCgkJ CQkgIChhcHBseS1nZW5lcmljIG9wCgkJCQkJCSAoY2FyIGFyZ3MpCgkJCQkJCSAobWFrZS1wb2x5 bm9taWFsICh2YXJpYWJsZSAoY29udGVudHMgKGNhciBhcmdzKSkpCgkJCQkJCQkJICAobGlzdCAo bGlzdCAwIChjYWRyIGFyZ3MpKSkpKSkKCQkJCSAoKGFuZCAobnVtZXJpYz8gKGNhciB0eXBlLXRh Z3MpKQoJCQkgICAgICAgKGVxPyAncG9seW5vbWlhbCAoY2FkciB0eXBlLXRhZ3MpKSkKCQkJCSAg KGFwcGx5LWdlbmVyaWMgb3AKCQkJCQkJIChtYWtlLXBvbHlub21pYWwgKHZhcmlhYmxlIChjb250 ZW50cyAoY2FkciBhcmdzKSkpCgkJCQkJCQkJICAobGlzdCAobGlzdCAwIChjYXIgYXJncykpKSkK CQkJCQkJIChjYWRyIGFyZ3MpKSkJCQkgCgkJCQkgKChhbmQgKGdldC1jb2VyY2lvbiAoY2FyIHR5 cGUtdGFncykgKGNhZHIgdHlwZS10YWdzKSkKCQkJCSAgICAgKG5vdCAoZXE/IChjYXIgdHlwZS10 YWdzKSAoY2FkciB0eXBlLXRhZ3MpKSkpCgkJCQkgIChhcHBseS1nZW5lcmljIG9wCgkJCQkJCSAo KGdldC1jb2VyY2lvbgoJCQkJCQkgICAoY2FyIHR5cGUtdGFncykKCQkJCQkJICAgKGNhZHIgdHlw ZS10YWdzKSkgKGNhciBhcmdzKSkKCQkJCQkJIChjYWRyIGFyZ3MpKSkKCQkJCSAoKGFuZCAoZ2V0 LWNvZXJjaW9uIChjYWRyIHR5cGUtdGFncykgKGNhciB0eXBlLXRhZ3MpKQoJCQkJICAgICAobm90 IChlcT8gKGNhciB0eXBlLXRhZ3MpIChjYWRyIHR5cGUtdGFncykpKSkKCQkJCSAgKGFwcGx5LWdl bmVyaWMgb3AKCQkJCQkJIChjYXIgYXJncykKCQkJCQkJICgoZ2V0LWNvZXJjaW9uCgkJCQkJCSAg IChjYWRyIHR5cGUtdGFncykKCQkJCQkJICAgKGNhciB0eXBlLXRhZ3MpKSAoY2FkciBhcmdzKSAp KSkKCQkJCSAoKGNvbXBhcmFibGU/IChjYXIgdHlwZS10YWdzKSAoY2FkciB0eXBlLXRhZ3MpKQoJ CQkJICAoaWYKCQkJCSAgICh0eXBlMTw9dHlwZTI/IChjYXIgdHlwZS10YWdzKSAoY2FkciB0eXBl LXRhZ3MpKQoJCQkJICAgKGFwcGx5LWdlbmVyaWMgb3AgKHJhaXNlLXR5cGUgKGNhciBhcmdzKSkg KGNhZHIgYXJncykpCgkJCQkgICAoYXBwbHktZ2VuZXJpYyBvcCAoY2FyIGFyZ3MpICAocmFpc2Ut dHlwZSAoY2FkciBhcmdzKSkpKSkKCQkJCSAoZWxzZSAoZXJyb3IgImFwcGx5LWdlbmVyaWM6SW5j b21wYXJhYmxlIHR5cGVzOiAodHlwZS10YWdzLGFyZ3MpPSIgdHlwZS10YWdzIGFyZ3MpKSkpCgkJ CSAgKChhbmQgKD4gKGxlbmd0aCBhcmdzKSAyKSAobm90IChhbGwtYXJndHlwZXMtc2FtZT8gYXJn cykpKQoJCQkgICAobGV0IHR5cGVzLWxvb3AgKCh0eXBlcyB0eXBlLXRhZ3MpKQoJCQkgICAgIChs ZXQgKChsaXN0LW9mLWNvZXJjaW9uLWZ1bmN0aW9ucwoJCQkJICAgIChjb2VyY2lvbi1pZi1leGlz dHM/IChjYXIgdHlwZXMpIHR5cGUtdGFncykpKQoJCQkgICAgICAgKGlmIGxpc3Qtb2YtY29lcmNp b24tZnVuY3Rpb25zCgkJCQkgICAoYXBwbHkgYXBwbHktZ2VuZXJpYyAoY29ucyBvcCAobWFwIChs YW1iZGEgKGZ1biBhcmcpIChmdW4gYXJnKSkKCQkJCQkJCQkgICAgICBsaXN0LW9mLWNvZXJjaW9u LWZ1bmN0aW9ucwoJCQkJCQkJCSAgICAgIGFyZ3MpKSkKCQkJCSAgIChpZiAobm90IChudWxsPyAo Y2RyIHR5cGVzKSkpCgkJCQkgICAgICAgKHR5cGVzLWxvb3AgKGNkciB0eXBlcykpCgkJCQkgICAg ICAgKGVycm9yICJhcHBseS1nZW5lcmljOkV2ZW4gY29lcmNpb25zIGZhaWxlZC4gTm8gbWV0aG9k IGZvciB0aGVzZSB0eXBlcy4iKSkpKSkpCgkJCSAgKGVsc2UgKGVycm9yICJhcHBseS1nZW5lcmlj Ok5vIG1ldGhvZCBmb3IgdGhlc2UgdHlwZXMiCgkJCQkgICAgICAgKGxpc3Qgb3AgdHlwZS10YWdz KSkpKSkpKQoJICAoc2hvdyAjdCAiVGVzdCAzMDogc3RhcnRcbiIpCgkgIChzaG93ICN0ICJUZXN0 IDMwOihhZGQgKG1ha2Utc2NoZW1lLW51bWJlciAxKSAobWFrZS1zY2hlbWUtbnVtYmVyIDEpKT0g IgoJICAgICAoYWRkIChtYWtlLXNjaGVtZS1udW1iZXIgMSkgKG1ha2Utc2NoZW1lLW51bWJlciAx KSkgIlxuIikKCSAgIzsoZXJyb3IgIkRlYnVnNiIpCgkgIChkZWZpbmUgKHNjaGVtZS1udW1iZXIt PmNvbXBsZXggbikKCSAgICAobWFrZS1jb21wbGV4LWZyb20tcmVhbC1pbWFnIChjb250ZW50cyBu KSAwKSkKCSAgKHB1dC1jb2VyY2lvbiAnc2NoZW1lLW51bWJlcgoJCQknY29tcGxleAoJCQlzY2hl bWUtbnVtYmVyLT5jb21wbGV4KQoKCSAgKHNob3cgI3QgIlRlc3QgMzI6IHN0YXJ0IikKCSAgKHNo b3cgI3QgIlRlc3QgMzI6IFN1YnRyYWN0aW5nIGNvbXBsZXggbnVtYmVyczogIgoJCShzdWIKCQkg KG1ha2UtY29tcGxleC1mcm9tLXJlYWwtaW1hZyAxLjEgMikKCQkgKG1ha2UtY29tcGxleC1mcm9t LXJlYWwtaW1hZyAwIDIpKSAiXG4iKQoKCgoJICAocHV0ICdtYXgzLW1hZ25pdHVkZSAnKGNvbXBs ZXggY29tcGxleCBjb21wbGV4KSAobGFtYmRhICh6MSB6MiB6MykKCQkJCQkJCSAgICAobWF4ICht YWduaXR1ZGUgejEpIChtYWduaXR1ZGUgejIpIChtYWduaXR1ZGUgejMpKSkpCgkgIChkZWZpbmUg KG1heDMtbWFnbml0dWRlIHgxIHgyIHgzKSAoYXBwbHktZ2VuZXJpYyAnbWF4My1tYWduaXR1ZGUg eDEgeDIgeDMpKQoJICAoZGVmaW5lIChpZGVudGl0eSB4KSB4KQoKCSM7KGRlZmluZSBudW1lcmlj LXRvd2VyIChsaXN0ICdpbnRlZ2VyICdyYXRpb25hbCAnc2NoZW1lLW51bWJlciAnY29tcGxleCkp CgoKCSM7KGRlZmluZSAoaGlnaGVyLXR5cGUgeCkKCSAgKHNob3cgI3QgImhpZ2hlci10eXBlOng9 IiAoZGlzcGxheWVkIHgpICJcbiIpCgkgICAgKGRlZmluZSAoZmluZC1oaWdoZXItdHlwZSB4IHR5 cGVzKQoJICAgICAgKGNvbmQgKChvciAobnVsbD8gdHlwZXMpIChudWxsPyAoY2RyIHR5cGVzKSkp IChlcnJvciAiTm8gdHlwZSBoaWdoZXIgdGhhbiBnaXZlbiIgeCB0eXBlcykpCgkJICAgICgoZXE/ IHggKGNhciB0eXBlcykpIChjYWRyIHR5cGVzKSkKCQkgICAgKGVsc2UgKGZpbmQtaGlnaGVyLXR5 cGUgeCAoY2RyIHR5cGVzKSkpKSkKCSAgICAoZmluZC1oaWdoZXItdHlwZSB4IG51bWVyaWMtdG93 ZXIpKQoKCSM7KHNob3cgI3QgIlRlc3Q6IEhpZ2hlciB0aGFuICdjb21wbGV4OiAiIChoaWdoZXIt dHlwZSAnY29tcGxleCkgIlxuIikKCgkgICM7KGRlZmluZSAoaW50ZWdlci0+cmF0aW9uYWwgeCkK CSAgICAobWFrZS1yYXRpb25hbCB4IDEpKQoKCSAgIzsoZGVmaW5lIChyYXRpb25hbC0+c2NoZW1l LW51bWJlciB4KQoJICAgIChtYWtlLXNjaGVtZS1udW1iZXIgKChnZXQgJ3RvLXJlYWwgJyhyYXRp b25hbCkpIHgpKSkKCSAgIzsocHV0LWNvZXJjaW9uICdpbnRlZ2VyICdyYXRpb25hbCBpbnRlZ2Vy LT5yYXRpb25hbCkKCSAgIzsocHV0LWNvZXJjaW9uICdyYXRpb25hbCAnc2NoZW1lLW51bWJlciBy YXRpb25hbC0+c2NoZW1lLW51bWJlcikKCgkoZGVmaW5lIChpbnN0YWxsLXBvbHlub21pYWwtcGFj a2FnZSkKCSAgIzsoZGVmaW5lIChjb250ZW50cyBnZW5lcmljLW9iamVjdCkKCSAgICAoY2RyIGdl bmVyaWMtb2JqZWN0KSkKCSAgICAoZGVmaW5lIChtYWtlLXBvbHkgdmFyaWFibGUgdGVybS1saXN0 KQoJICAgICAgKGNvbnMgdmFyaWFibGUgdGVybS1saXN0KSkKCSAgICAoZGVmaW5lICh2YXJpYWJs ZSBwKSAoY2FyIHApKQoJICAgIChkZWZpbmUgKHRlcm0tbGlzdCBwKQoJICAgICAgKGNkciBwKSkK CSAgICAoZGVmaW5lICh2YXJpYWJsZT8geCkgKHN5bWJvbD8geCkpCgkgICAgKGRlZmluZSAoc2Ft ZS12YXJpYWJsZT8gdjEgdjIpCgkgICAgICAoYW5kICh2YXJpYWJsZT8gdjEpICh2YXJpYWJsZT8g djIpIChlcT8gdjEgdjIpKSkKCSAgICAoZGVmaW5lICg9bnVtYmVyPyBleHAgbnVtKQoJICAgICAg KGFuZCAobnVtYmVyPyBleHApICg9IGV4cCBudW0pKSkKCSAgICAoZGVmaW5lICh0aGUtZW1wdHkt dGVybWxpc3QpICcoKSkKCgkgICAgKGRlZmluZSAocmVzdC10ZXJtcyB0ZXJtLWxpc3QpIChjZHIg dGVybS1saXN0KSkKCSAgICAoZGVmaW5lIChlbXB0eS10ZXJtbGlzdD8gdGVybS1saXN0KSAobnVs bD8gdGVybS1saXN0KSkKCgkgICAgKGRlZmluZSAobWFrZS10ZXJtIG9yZGVyIGNvZWZmKSAobGlz dCBvcmRlciBjb2VmZikpCgkgICAgKGRlZmluZSAob3JkZXIgdGVybSkgKGNhciB0ZXJtKSkKCSAg ICAoZGVmaW5lIChjb2VmZiB0ZXJtKSAoY2FkciB0ZXJtKSkKCSAgICAoZGVmaW5lICh0YWcgcCkg KGF0dGFjaC10YWcgJ3BvbHlub21pYWwgcCkpCgkgICAgKHB1dCAnbWFrZSAncG9seW5vbWlhbAoJ CSAobGFtYmRhICh2YXIgdGVybXMpICh0YWcgKG1ha2UtcG9seSB2YXIgdGVybXMpKSkpCgkgICAg IzsoY29udGludWVkIG9uIG5leHQgcGFnZSkKCgkgICAgKGRlZmluZSAoYWRkLXBvbHkgcDEgcDIp CgkgICAgICAjOyhzaG93ICN0ICJhZGQtcG9seTogcDE9IiBwMSAiLCBwMj0iIHAyICJcbiIpCgkg ICAgICAoaWYgKHNhbWUtdmFyaWFibGU/ICh2YXJpYWJsZSBwMSkgKHZhcmlhYmxlIHAyKSkKCQkg IChtYWtlLXBvbHkgKHZhcmlhYmxlIHAxKQoJCQkgICAgIChhZGQtdGVybXMgKHRlcm0tbGlzdCBw MSkKCQkJCQkodGVybS1saXN0IHAyKSkpCgkJICAobGV0ICgocmVzIChjZHIgKGlmICh2YXJpYWJs ZV8xLW9yZGVyPHZhcmlhYmxlXzItb3JkZXIgKHZhcmlhYmxlIHAxKSAodmFyaWFibGUgcDIpKQoJ CSAgICAgIChhZGQgKHRhZyBwMSkgKHRhZyAobWFrZS1wb2x5ICh2YXJpYWJsZSBwMSkgKGxpc3Qg KG1ha2UtdGVybSAwICh0YWcgcDIpKSkpKSkKCQkgICAgICAoYWRkICh0YWcgKG1ha2UtcG9seSAo dmFyaWFibGUgcDIpIChsaXN0IChtYWtlLXRlcm0gMCAodGFnIHAxKSkpKSkgKHRhZyBwMikpKSkp KQoJCSAgICAjOyhzaG93ICN0ICJhZGQtcG9seTpyZXN1bHQ6ICIgKGRpc3BsYXllZCByZXMpICJc biIpIHJlcykpKQoKCSAgICAoc2hvdyAjdCAiVGVzdFkyOiBwb2x5IG9mIHBvbHk6ICIKCQkgICht YWtlLXBvbHkgJ3ggKGxpc3QKCQkJCSAobWFrZS10ZXJtIDMgKG1ha2UtcG9seQoJCQkJCSAgICAg ICAneSAobGlzdCAobWFrZS10ZXJtIDEgMSkgKG1ha2UtdGVybSAwIDEpKSkpCgkJCQkgKG1ha2Ut dGVybSAxIDIpCgkJCQkgKG1ha2UtdGVybSAwIDQpKSkgIlxuIikKCgkgICAgKGRlZmluZSAoc3Vi LXBvbHkgcDEgcDIpCgkgICAgICAoYWRkLXBvbHkgcDEgKG11bC1wb2x5IHAyIChtYWtlLXBvbHkg KHZhcmlhYmxlIHAyKSAobGlzdCAobWFrZS10ZXJtIDAgLTEpKSkpKSkKCSAgICAoZGVmaW5lIChh ZGQtdGVybXMgTDEgTDIpCgkgICAgICAoY29uZCAoKGVtcHR5LXRlcm1saXN0PyBMMSkgTDIpCgkJ ICAgICgoZW1wdHktdGVybWxpc3Q/IEwyKSBMMSkKCQkgICAgKGVsc2UKCQkgICAgIChsZXQgKCh0 MSAoZmlyc3QtdGVybSBMMSkpICh0MiAoZmlyc3QtdGVybSBMMikpKQoJCSAgICAgICAoY29uZCAo KD4gKG9yZGVyIHQxKSAob3JkZXIgdDIpKQoJCQkgICAgICAoYWRqb2luLXRlcm0KCQkJICAgICAg IHQxIChhZGQtdGVybXMgKHJlc3QtdGVybXMgTDEpIEwyKSkpCgkJCSAgICAgKCg8IChvcmRlciB0 MSkgKG9yZGVyIHQyKSkKCQkJICAgICAgKGFkam9pbi10ZXJtCgkJCSAgICAgICB0MiAoYWRkLXRl cm1zIEwxIChyZXN0LXRlcm1zIEwyKSkpKQoJCQkgICAgIChlbHNlCgkJCSAgICAgIChhZGpvaW4t dGVybQoJCQkgICAgICAgKG1ha2UtdGVybSAob3JkZXIgdDEpCgkJCQkJICAoYWRkIChjb2VmZiB0 MSkgKGNvZWZmIHQyKSkpCgkJCSAgICAgICAoYWRkLXRlcm1zIChyZXN0LXRlcm1zIEwxKQoJCQkJ CSAgKHJlc3QtdGVybXMgTDIpKSkpKSkpKSkKCgoJICAgIChkZWZpbmUgKG11bC1wb2x5IHAxIHAy KQoJICAgICAgKGlmIChzYW1lLXZhcmlhYmxlPyAodmFyaWFibGUgcDEpICh2YXJpYWJsZSBwMikp CgkJICAobWFrZS1wb2x5ICh2YXJpYWJsZSBwMSkKCQkJICAgICAobXVsLXRlcm1zICh0ZXJtLWxp c3QgcDEpCgkJCQkJKHRlcm0tbGlzdCBwMikpKQoJCSAgKGNvbnRlbnRzIChpZiAodmFyaWFibGVf MS1vcmRlcjx2YXJpYWJsZV8yLW9yZGVyICh2YXJpYWJsZSBwMSkgKHZhcmlhYmxlIHAyKSkKCQkg ICAgICAobXVsICh0YWcgcDEpCgkJCSAgIChtYWtlLXBvbHlub21pYWwgKHZhcmlhYmxlIHAxKQoJ CQkJCSAgICAoYWRqb2luLXRlcm0KCQkJCQkgICAgIChtYWtlLXRlcm0gMAoJCQkJCQkJKHRhZyBw MikpICh0aGUtZW1wdHktdGVybWxpc3QpKSkpCgkJICAgICAgKG11bCAodGFnIHAyKQoJCQkgICAo bWFrZS1wb2x5bm9taWFsICh2YXJpYWJsZSBwMikKCQkJCQkgICAgKGFkam9pbi10ZXJtCgkJCQkJ ICAgICAobWFrZS10ZXJtIDAKCQkJCQkJCSh0YWcgcDEpKSAodGhlLWVtcHR5LXRlcm1saXN0KSkp KSkpCgkJICAjOyhlcnJvciAiUG9seXMgbm90IGluIHNhbWUgdmFyIC0tIE1VTC1QT0xZIgoJCQkg KGxpc3QgcDEgcDIpKSkpCgkgICAgKGRlZmluZSAoZGl2LXBvbHkgcDEgcDIpCgkgICAgICAoaWYg KHNhbWUtdmFyaWFibGU/ICh2YXJpYWJsZSBwMSkgKHZhcmlhYmxlIHAyKSkKCQkgIChsZXQgKChx dW90aWVudC1hbmQtcmVtYWluZGVyIChkaXYtdGVybXMgKHRlcm0tbGlzdCBwMSkKCQkJCQkJCSAg ICh0ZXJtLWxpc3QgcDIpKSkpCgkJICAgIChsaXN0IChtYWtlLXBvbHkgKHZhcmlhYmxlIHAxKSAo Y2FyICBxdW90aWVudC1hbmQtcmVtYWluZGVyKSkKCQkJICAobWFrZS1wb2x5ICh2YXJpYWJsZSBw MSkgKGNhZHIgcXVvdGllbnQtYW5kLXJlbWFpbmRlcikpKSkKCQkgICAgKGVycm9yICJkaXYtcG9s eTogUG9seXMgbm90IGluIHRoZSBzYW1lIHZhciIgcDEgcDIpKSkKCSAgICAoZGVmaW5lIChkaXYt dGVybXMgTDEgTDIpCiAgICAgICAgICAgICAgICAgICAgKHNob3cgI3QgImRpdi10ZXJtczogTDE9 IiBMMSAiLCBMMj0iIEwyICJcbiIpCgkJICAgIChpZiAoZW1wdHktdGVybWxpc3Q/IEwxKQoJCQko bGlzdCAodGhlLWVtcHR5LXRlcm1saXN0KSAodGhlLWVtcHR5LXRlcm1saXN0KSkKCQkJKGxldCAo KHQxIChmaXJzdC10ZXJtIEwxKSkKCQkJICAgICAgKHQyIChmaXJzdC10ZXJtIEwyKSkpCgkJCSAg KGlmICg+IChvcmRlciB0MikgKG9yZGVyIHQxKSkKCQkJICAgICAgKGxpc3QgKHRoZS1lbXB0eS10 ZXJtbGlzdCkgTDEpCgkJCSAgICAgIChsZXQgKChuZXctYyAoZGl2IChjb2VmZiB0MSkgKGNvZWZm IHQyKSkpCgkJCQkgICAgKG5ldy1vICgtIChvcmRlciB0MSkgKG9yZGVyIHQyKSkpKQoJCQkJKGxl dCAoKHJlc3Qtb2YtcmVzdWx0IChkaXYtdGVybXMgKHRlcm0tbGlzdAoJCQkJCQkJCSAgKHN1Yi1w b2x5CgkJCQkJCQkJICAgKG1ha2UtcG9seSAnZmFrZS12YXIgTDEpCgkJCQkJCQkJICAgKG11bC1w b2x5CgkJCQkJCQkJICAgIChtYWtlLXBvbHkgJ2Zha2UtdmFyIChsaXN0IChtYWtlLXRlcm0gbmV3 LW8gbmV3LWMpKSkKCQkJCQkJCQkgICAgKG1ha2UtcG9seSAnZmFrZS12YXIgTDIpKSkpCgkJCQkJ CQkJIEwyKQoJCQkJCQkgICAgICApKQoJCQkJICAjOyhzaG93ICN0ICJkaXYtdGVybXM6IHJlc3Qt b2YtcmVzdWx0OiAiIChkaXNwbGF5ZWQgcmVzdC1vZi1yZXN1bHQpICJcbiIpCgkJCQkgIChsaXN0 IChhZGpvaW4tdGVybSAobWFrZS10ZXJtIG5ldy1vIG5ldy1jKSAoY2FyIHJlc3Qtb2YtcmVzdWx0 KSkgKGNhZHIgcmVzdC1vZi1yZXN1bHQpKQoJCQkJICApKSkpKSkKCSAgICAoZGVmaW5lIChnY2Qt dGVybXMgYSBiKQogICAgICAgICAgICAoc2hvdyAjdCAiZ2NkLXRlcm1zOiBhPSIgYSAiLCBiPSIg YiAiXG4iKQoJICAgICAgKGlmIChlbXB0eS10ZXJtbGlzdD8gYikKCQkgIGEKCQkgIChnY2QtdGVy bXMgYiAocHNldWRvcmVtYWluZGVyLXRlcm1zIGEgYikpKSkKCSAgICAoZGVmaW5lIChwc2V1ZG9y ZW1haW5kZXItdGVybXMgUCBRKQoJICAgICAgKGxldCAoKE8xIChvcmRlciAoZmlyc3QtdGVybSBQ KSkpCgkJICAgIChPMiAob3JkZXIgKGZpcnN0LXRlcm0gUSkpKQoJCSAgICAoYyAgKGNvZWZmIChm aXJzdC10ZXJtIFEpKSkpCiAgICAgICAgICAgICAgICAgKHNob3cgI3QgInBzZXVkb3JlbWFpbmRl ci10ZXJtczogUD0iIFAgIlxuIikKICAgICAgICAgICAgICAgICAoc2hvdyAjdCAicHNldWRvcmVt YWluZGVyLXRlcm1zOiBRPSIgUSAiXG4iKQogICAgICAgICAgICAgICAgIChzaG93ICN0ICJwc2V1 ZG9yZW1haW5kZXItdGVybXM6IE8xPSIgTzEgIlxuIikKICAgICAgICAgICAgICAgICAoc2hvdyAj dCAicHNldWRvcmVtYWluZGVyLXRlcm1zOiBPMj0iIE8yICJcbiIpCiAgICAgICAgICAgICAgICAg KHNob3cgI3QgInBzZXVkb3JlbWFpbmRlci10ZXJtczogYz0iIGMgIlxuIikKCiAgICAgICAgICAg ICAgICAgKHNob3cgI3QgInBzZXVkb3JlbWFpbmRlci10ZXJtczogdGhlIGludGVnZXJpemluZyBm YWN0b3I9IgogICAgICAgICAgICAgICAgICAgIChtYWtlLXRlcm0gMCAoZXhwIGMgKGFkZCAxIChz dWIgTzEgTzIpKSkpICJcbiIgKQogICAgICAgICAgICAgICAgIChzaG93ICN0ICJwc2V1ZG9yZW1h aW5kZXItdGVybXM6IFAgYWZ0ZXIgbXVsdGlwbGljYXRpb249IgogICAgICAgICAgICAgICAgICAg KG11bC10ZXJtLWJ5LWFsbC10ZXJtcyAKCQkJCSAgICAgICAobWFrZS10ZXJtIDAgKGV4cCBjIChh ZGQgMSAoc3ViIE8xIE8yKSkpKSBQKSAgIlxuIiApCgkJIChjYWRyIChkaXYtdGVybXMgKG11bC10 ZXJtLWJ5LWFsbC10ZXJtcyAKCQkJCSAgICAgICAobWFrZS10ZXJtIDAgKGV4cCBjIChhZGQgMSAo c3ViIE8xIE8yKSkpKSBQKSBRKSkpKQoKCSAgICAoZGVmaW5lIChnY2QtcG9seSBwMSBwMikKICAg ICAgICAgICAgICAoc2hvdyAjdCAiZ2NkLXBvbHk6cDE9IiBwMSAiLCBwMj0iIHAyICJcbiIpIAog ICAgICAgICAgICAgIChkZWZpbmUgKG1hcHJlc3Qgb3BlcmF0aW9uIHRlcm0tbGlzdCkKICAgICAg ICAgICAgICAgICAgIChpZiAoZW1wdHktdGVybWxpc3Q/IHRlcm0tbGlzdCkKICAgICAgICAgICAg ICAgICAgICAgICAnKCkKICAgICAgICAgICAgICAgICAgICAgICAoY29ucyAob3BlcmF0aW9uIHRl cm0tbGlzdCkgKG1hcHJlc3Qgb3BlcmF0aW9uIChyZXN0LXRlcm1zIHRlcm0tbGlzdCkpKSkKICAg ICAgICAgICAgICApIAoJICAgICAgKGlmIChzYW1lLXZhcmlhYmxlPyAodmFyaWFibGUgcDEpICh2 YXJpYWJsZSBwMikpCgkJICAobGV0KiAoKHVub3B0aW1pemVkLXRlcm1saXN0IChnY2QtdGVybXMg KHRlcm0tbGlzdCBwMSkgKHRlcm0tbGlzdCBwMikpKQogICAgICAgICAgICAgICAgICAgICAgICAg KGZpcnN0LXRlcm1zIChtYXByZXN0IGZpcnN0LXRlcm0gdW5vcHRpbWl6ZWQtdGVybWxpc3QpKQog ICAgICAgICAgICAgICAgICAgICAgICAoY29lZmZpY2llbnRzIChtYXAgY29lZmYgZmlyc3QtdGVy bXMpKQogICAgICAgICAgICAgICAgICAgICAgICAoY29lZmYtZ2NkIChhcHBseSBnY2QgY29lZmZp Y2llbnRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGltaXplZC10ZXJtbGlzdCAobXVs LXRlcm0tYnktYWxsLXRlcm1zIAoJCQkJICAgICAgIChtYWtlLXRlcm0gMCAoZGl2IDEgY29lZmYt Z2NkKSkgdW5vcHRpbWl6ZWQtdGVybWxpc3QpKSkKICAgICAgICAgICAgICAgICAgICAgKHNob3cg I3QgImdjZC1wb2x5OiB1bm9wdGltaXplZC10ZXJtbGlzdD0iIHVub3B0aW1pemVkLXRlcm1saXN0 ICJcbiIpCiAgICAgICAgICAgICAgICAgICAgIChzaG93ICN0ICJnY2QtcG9seTogZmlyc3QtdGVy bXM9IiBmaXJzdC10ZXJtcyAiXG4iKQogICAgICAgICAgICAgICAgICAgICAoc2hvdyAjdCAiZ2Nk LXBvbHk6IGNvZWZmaWNpZW50cz0iIGNvZWZmaWNpZW50cyAiXG4iKQogICAgICAgICAgICAgICAg ICAgICAoc2hvdyAjdCAiZ2NkLXBvbHk6IGNvZWZmLWdjZD0iIGNvZWZmLWdjZCAiXG4iKQogICAg ICAgICAgICAgICAgICAgICAobWFrZS1wb2x5ICh2YXJpYWJsZSBwMSkgb3B0aW1pemVkLXRlcm1s aXN0KSkKCQkgIChlcnJvciAiZGl2LXBvbHk6IFBvbHlzIG5vdCBpbiB0aGUgc2FtZSB2YXIiIHAx IHAyKSkpCgkgICAgKHB1dCAnZ2NkICcocG9seW5vbWlhbCBwb2x5bm9taWFsKQoJCSAobGFtYmRh ICh4IHkpICh0YWcgKGdjZC1wb2x5IHggeSkpKSkKCSAgICAocHV0ICdnY2QgJyhpbnRlZ2VyIGlu dGVnZXIpIGdjZCkKCgkgICAgKGRlZmluZSAobXVsLXRlcm1zIEwxIEwyKQoJICAgICAgKGlmIChl bXB0eS10ZXJtbGlzdD8gTDEpCgkJICAodGhlLWVtcHR5LXRlcm1saXN0KQoJCSAgKGFkZC10ZXJt cyAobXVsLXRlcm0tYnktYWxsLXRlcm1zIChmaXJzdC10ZXJtIEwxKSBMMikKCQkJICAgICAobXVs LXRlcm1zIChyZXN0LXRlcm1zIEwxKSBMMikpKSkKCgkgICAgKGRlZmluZSAobXVsLXRlcm0tYnkt YWxsLXRlcm1zIHQxIEwpCgkgICAgICAoaWYgKGVtcHR5LXRlcm1saXN0PyBMKQoJCSAgKHRoZS1l bXB0eS10ZXJtbGlzdCkKCQkgIChsZXQgKCh0MiAoZmlyc3QtdGVybSBMKSkpCgkJICAgIChhZGpv aW4tdGVybQoJCSAgICAgKG1ha2UtdGVybSAoKyAob3JkZXIgdDEpIChvcmRlciB0MikpCgkJCQko bXVsIChjb2VmZiB0MSkgKGNvZWZmIHQyKSkpCgkJICAgICAobXVsLXRlcm0tYnktYWxsLXRlcm1z IHQxIChyZXN0LXRlcm1zIEwpKSkpKSkKCSAgICAoZGVmaW5lICh6ZXJvLXBvbHk/IHBvbHkpCgkg ICAgICAoc2hvdyAjdCAiemVyby1wb2x5PzogcG9seT0iIChkaXNwbGF5ZWQgcG9seSkgIlxuIikK CSAgICAgIChjb25kICgoZW1wdHktdGVybWxpc3Q/ICh0ZXJtLWxpc3QgcG9seSkpICN0KQoJCSAg ICAoKG5vdCAoemVybz8gKGNvZWZmIChmaXJzdC10ZXJtICh0ZXJtLWxpc3QgcG9seSkpKSkpICNm KQoJCSAgICAoZWxzZSAoemVyby1wb2x5PyAKCQkJICAgKG1ha2UtcG9seSAodmFyaWFibGUgcG9s eSkKCQkJCSAgICAgIChyZXN0LXRlcm1zICh0ZXJtLWxpc3QgcG9seSkpKSkpKSkKCgkgICAgKGRl ZmluZSAodGVybWxpc3QtdHlwZS1vZiB0ZXJtLWxpc3QpCgkgICAgICAjOyhzaG93ICN0ICJ0LXQt bzogdGVybS1saXN0PSIgKGRpc3BsYXllZCB0ZXJtLWxpc3QpICJcbiIpCgkgICAgICAoY29uZCAo KG51bGw/IHRlcm0tbGlzdCkgJ3NwYXJzZSkKCQkgICAgKChwYWlyPyAoY2FyIHRlcm0tbGlzdCkp ICdzcGFyc2UpCgkJICAgICgobGlzdD8gdGVybS1saXN0KSAnZGVuc2UpCgkJICAgIChlbHNlIChl cnJvciAiVW5rbm93biB0eXBlIG9mIGxpc3QiIHRlcm0tbGlzdCkpKSkKCSAgICAoZGVmaW5lIChh ZGpvaW4tdGVybSB0ZXJtIHRlcm0tbGlzdCkKCSAgICAgICgoZ2V0ICdhZGpvaW4tdGVybSAodGVy bWxpc3QtdHlwZS1vZiB0ZXJtLWxpc3QpKSB0ZXJtIHRlcm0tbGlzdCkpCgkgICAgKGRlZmluZSAo Zmlyc3QtdGVybSB0ZXJtLWxpc3QpCgkgICAgICAoKGdldCAnZmlyc3QtdGVybSAodGVybWxpc3Qt dHlwZS1vZiB0ZXJtLWxpc3QpKSB0ZXJtLWxpc3QpKQoJICAgIChkZWZpbmUgKHZhcmlhYmxlXzEt b3JkZXI8dmFyaWFibGVfMi1vcmRlciB2YXJpYWJsZV8xIHZhcmlhYmxlXzIpCgkgICAgICAjOyhz aG93ICN0ICJ2YXJfMS0uLjogdmFyaWFibGVfMT0iIHZhcmlhYmxlXzEgIiB2YXJpYWJsZV8yPSIg dmFyaWFibGVfMiAiXG4iKQoJICAgICAgIzsoc2hvdyAjdCAidmFyMTJzdHJpbmc9IiAoc3ltYm9s LT5zdHJpbmcgdmFyaWFibGVfMSkgInZhcjIyc3RyaW5nPSIgKHN5bWJvbC0+c3RyaW5nIHZhcmlh YmxlXzIpICJcbiIpCgkgICAgICAoc3RyaW5nPD0/IChzeW1ib2wtPnN0cmluZyB2YXJpYWJsZV8x KSAoc3ltYm9sLT5zdHJpbmcgdmFyaWFibGVfMikpKQoJICAgIChkZWZpbmUgKG5vcm1hbGl6ZS1m dWxseSBwb2x5KQoJICAgICAgKGlmIChub3JtYWwtcG9seW5vbWlhbD8gcG9seSkKCQkgIHBvbHkK CQkgIChub3JtYWxpemUtZnVsbHkgKG5vcm1hbGl6ZS1vbmNlIHBvbHkpKSkpCgkgICAgKHB1dCAn YWRkICcocG9seW5vbWlhbCBwb2x5bm9taWFsKQoJCSAobGFtYmRhIChwMSBwMikgCgkJICAgIzso c2hvdyAjdCAiZ2VuZXJpYy1hZGQtcG9seTpQb2x5bm9taWFsIGRpc3BhdGNoIGZvdW5kOiBwMT0i CgkJCSAgKGRpc3BsYXllZCBwMSkgIiBwMj0iIChkaXNwbGF5ZWQgcDIpICJcbiIpCgkJICAgKG5v cm1hbGl6ZS1mdWxseSAodGFnIChhZGQtcG9seSBwMSBwMikpKSkpCgkgICAgKHB1dCAnbXVsICco cG9seW5vbWlhbCBwb2x5bm9taWFsKQoJCSAobGFtYmRhIChwMSBwMikgKG5vcm1hbGl6ZS1mdWxs eSAodGFnIChtdWwtcG9seSBwMSBwMikpKSkpCgkgICAgKHB1dCAnc3ViICcocG9seW5vbWlhbCBw b2x5bm9taWFsKQoJCSAobGFtYmRhIChwMSBwMikgKHRhZyAoc3ViLXBvbHkgcDEgcDIpKSkpCgoJ ICAgIChwdXQgJ3plcm8/ICcocG9seW5vbWlhbCkgemVyby1wb2x5PykKCSAgICAocHV0ICdkaXYg Jyhwb2x5bm9taWFsIHBvbHlub21pYWwpIGRpdi1wb2x5KQoJICAgICM7KHB1dC1jb2VyY2lvbiAn cmF0aW9uYWwgJ3NjaGVtZS1udW1iZXIgcmF0aW9uYWwtPnNjaGVtZS1udW1iZXIpCgkgICAgKGRl ZmluZSAobW9ub21pYWwtZmxpcC12YXJpYWJsZXMgbW9ub21pYWwpCgkgICAgICAjOyhzaG93ICN0 ICJtLWYtdjogbW9ub21pYWw9IiBtb25vbWlhbCAiXG4iKQoJICAgICAgKGxldCogKChtb25vIChj b250ZW50cyBtb25vbWlhbCkpCgkJICAgICAoaW5uZXItcG9seW5vbWlhbCAoY29udGVudHMgKGNv ZWZmIChmaXJzdC10ZXJtICh0ZXJtLWxpc3QgbW9ubykpKSkpCgkJICAgICAoaW5uZXItcG9seSAo Y29udGVudHMgaW5uZXItcG9seW5vbWlhbCkpCgkJICAgICAob3V0ZXItb3JkZXIgKG9yZGVyIChm aXJzdC10ZXJtICh0ZXJtLWxpc3QgbW9ubykpKSkKCQkgICAgIChvdXRlci12YXIgKHZhcmlhYmxl IG1vbm8pKQoJCSAgICAgKGlubmVyLXZhciAodmFyaWFibGUgaW5uZXItcG9seW5vbWlhbCkpCgkJ ICAgICAoaW5uZXItdGVybS1saXN0ICh0ZXJtLWxpc3QgaW5uZXItcG9seSkpKQoJCSM7KHNob3cg I3QgIm0tZi12OiBpbm5lci1wb2x5PSIgaW5uZXItcG9seSAiXG4iKQoJCShpZiAoc2FtZS12YXJp YWJsZT8gaW5uZXItdmFyIG91dGVyLXZhcikKCQkgICAgKG11bAoJCSAgICAgKG1ha2UtcG9seW5v bWlhbCBvdXRlci12YXIgKGFkam9pbi10ZXJtIChtYWtlLXRlcm0gb3V0ZXItb3JkZXIgMSkgKHRo ZS1lbXB0eS10ZXJtbGlzdCkpKQoJCSAgICAgKHRhZyBpbm5lci1wb2x5bm9taWFsKSkKCQkgICAg KHRhZyAobWFrZS1wb2x5IGlubmVyLXZhcgoJCQkJICAgIChtdWwtdGVybS1ieS1hbGwtdGVybXMg KG1ha2UtdGVybQoJCQkJCQkJICAgIDAKCQkJCQkJCSAgICAobWFrZS1wb2x5bm9taWFsCgkJCQkJ CQkgICAgIG91dGVyLXZhcgoJCQkJCQkJICAgICAobGlzdCAobWFrZS10ZXJtCgkJCQkJCQkJICAg IG91dGVyLW9yZGVyCgkJCQkJCQkJICAgIDEpKSkpIGlubmVyLXBvbHkpKSkpKSkKCSAgICAjOyhz aG93ICN0ICJUZXN0WFg6IHNvcnRpbmcgdmFyaWFibGVzOiBJcyAneCA8ICd5PzogIgoJCSAgKHZh cmlhYmxlXzEtb3JkZXI8dmFyaWFibGVfMi1vcmRlciAneCAneSkgIlxuIikKCSAgICAjOyhzaG93 ICN0ICJUZXN0WFg6IHNvcnRpbmcgdmFyaWFibGVzOiBJcyAneiA8ICd5PzogIgoJCSAgKHZhcmlh YmxlXzEtb3JkZXI8dmFyaWFibGVfMi1vcmRlciAneiAneSkgIlxuIikKCSAgICAjOyhzaG93ICN0 ICJUZXN0WFg6IChhZGRpbmcgdHdvIGJhc2ljIHBvbHkpOiAiCgkJICAoYWRkIChtYWtlLXBvbHlu b21pYWwgJ3ggKGxpc3QgKG1ha2UtdGVybSAxIDIpIChtYWtlLXRlcm0gMCA0KSkpCgkJICAgICAg IChtYWtlLXBvbHlub21pYWwgJ3kgKGxpc3QgKG1ha2UtdGVybSAyIDMpIChtYWtlLXRlcm0gMCA1 KSkpKSAiXG4iKQoKCSAgICAoZGVmaW5lIChwb2x5bm9taWFsLT5zdW0tb2YtZmlyc3QtYW5kLXJl c3QgcG9seSkKCSAgICAgICM7KHNob3cgI3QgInAtPnMtby1mLWEtcjogIiAoZGlzcGxheWVkIHBv bHkpICJcbiIpCgkgICAgICAoaWYgKHplcm8/IHBvbHkpCgkJICBwb2x5CgkJICAobGV0KiAoKHBv bHkxIChjb250ZW50cyBwb2x5KSkKCQkJIChmaXJzdC1tb25vbWlhbCAodGFnCgkJCQkJICAobWFr ZS1wb2x5CgkJCQkJICAgKHZhcmlhYmxlIHBvbHkxKQoJCQkJCSAgIChsaXN0IChmaXJzdC10ZXJt ICh0ZXJtLWxpc3QgcG9seTEpKSkpKSkpCgkJICAgICM7KHNob3cgI3QgInAtPnMtby1mLWEtcjog IiAoZGlzcGxheWVkIGZpcnN0LW1vbm9taWFsKSAiXG4iKQoJCSAgICAoYWRkCgkJICAgICAgZmly c3QtbW9ub21pYWwKCQkgICAgICAocG9seW5vbWlhbC0+c3VtLW9mLWZpcnN0LWFuZC1yZXN0CgkJ ICAgICAgICh0YWcgKG1ha2UtcG9seSAodmFyaWFibGUgcG9seTEpIChyZXN0LXRlcm1zICh0ZXJt LWxpc3QgcG9seTEpKSkpKSkpKSkKCgkgICAgKHNob3cgI3QgIlRlc3QxMzogRXhwYW5kaW5nIGEg cG9seW5vbWlhbCBhcyBtb25vbWlhbHM6ICIKCQkgIChkaXNwbGF5ZWQKCQkgICAocG9seW5vbWlh bC0+c3VtLW9mLWZpcnN0LWFuZC1yZXN0CgkJICAgIChtYWtlLXBvbHlub21pYWwgJ3kKCQkJCSAg ICAgKGxpc3QgKG1ha2UtdGVybSAyIChtYWtlLXBvbHlub21pYWwKCQkJCQkJCSAneAoJCQkJCQkJ IChsaXN0IChtYWtlLXRlcm0gMiAxKSAobWFrZS10ZXJtIDAgMSkpKSkKCQkJCQkgICAobWFrZS10 ZXJtIDAgMikpKSkpICJcbiIpCgoJICAgIChzaG93ICN0ICJcblRlc3QyMDogc3RhcnQgbW9ub21p YWw6ICIKCQkgIChkaXNwbGF5ZWQgKG1ha2UtcG9seW5vbWlhbCAneAoJCQkJCSAgICAgIChsaXN0 CgkJCQkJICAgICAgIChtYWtlLXRlcm0KCQkJCQkJMgoJCQkJCQkobWFrZS1wb2x5bm9taWFsCgkJ CQkJCSAneQoJCQkJCQkgKGxpc3QKCQkJCQkJICAobWFrZS10ZXJtIDIgMSkgKG1ha2UtdGVybSAw IDEpKSkpKSkpICJcbiIpCgkgICAgKHNob3cgI3QgIlRlc3QyMDogRmxpcHBpbmcgYSBtb25vbWlh bCB2YXJpYWJsZTogIgoJCSAgKGRpc3BsYXllZAoJCSAgIChtb25vbWlhbC1mbGlwLXZhcmlhYmxl cwoJCSAgICAobWFrZS1wb2x5bm9taWFsICd4CgkJCQkgICAgIChsaXN0IChtYWtlLXRlcm0gMSAo bWFrZS1wb2x5bm9taWFsCgkJCQkJCQkgJ3kKCQkJCQkJCSAobGlzdAoJCQkJCQkJICAobWFrZS10 ZXJtIDIgMSkKCQkJCQkJCSAgKG1ha2UtdGVybSAwIDEpKSkpKSkpKSAiXG5cbiIpCgoKCSAgICAo ZGVmaW5lIChub3JtYWwtcG9seW5vbWlhbD8gcG9seSkKCSAgICAgICM7KHNob3cgI3QgIm4tcD86 IHBvbHk9IiBwb2x5ICJcbiIpCgkgICAgICAoY29uZCAoKG5vdCAocG9seW5vbWlhbD8gcG9seSkp ICN0KQoJCSAgICAoKG51bGw/ICh0ZXJtLWxpc3QgKGNvbnRlbnRzIHBvbHkpKSkgI3QpCgkJICAg IChlbHNlIChsZXQqICgocG9seTEgKGNvbnRlbnRzIHBvbHkpKQoJCQkJIChvdXRlci12YXIgKHZh cmlhYmxlIHBvbHkxKSkpCgkJCSAgICAjOyhzaG93ICN0ICJJbm5lci1sZXQ6IG91dGVyLXZhcj0i IChkaXNwbGF5ZWQgb3V0ZXItdmFyKSAiXG4iKQoJCQkgICAgKGxldCBsb29wICgodGVybXMgKHRl cm0tbGlzdCBwb2x5MSkpKQoJCQkgICAgICAjOyhzaG93ICN0ICJuLXA/LWxvb3A6IHRlcm1zPSIg KGRpc3BsYXllZCB0ZXJtcykgIlxuIikKCQkJICAgICAgKGNvbmQgKChudWxsPyB0ZXJtcykgI3Qp CgkJCQkgICAgKChub3QgKHBvbHlub21pYWw/IChjb2VmZiAoZmlyc3QtdGVybSB0ZXJtcykpKSkg KGxvb3AgKHJlc3QtdGVybXMgdGVybXMpKSkKCQkJCSAgICAoKG5vdCAodmFyaWFibGVfMS1vcmRl cjx2YXJpYWJsZV8yLW9yZGVyIAoJCQkJCSBvdXRlci12YXIKCQkJCQkgKHZhcmlhYmxlIChjb250 ZW50cyAoY29lZmYgKGZpcnN0LXRlcm0gdGVybXMpKSkpKSkgKGJlZ2luICM7KHNob3cgI3QgIndy b25nIHZhcmlhYmxlIG9yZGVyIFxuIikgI2YpKQoJCQkJICAgICgobm90IChub3JtYWwtcG9seW5v bWlhbD8gKGNvZWZmIChmaXJzdC10ZXJtIHRlcm1zKSkpKSAoYmVnaW4gIzsoc2hvdyAjdCAibm90 IG5vcm1hbCBwb2x5XG4iKSAjZikpCgkJCQkgICAgKGVsc2UgKGxvb3AgKHJlc3QtdGVybXMgdGVy bXMpKSkpKQoJCQkgICAgKSkpKQoJICAgIChkZWZpbmUgKG5vcm1hbGl6ZS1vbmNlIHBvbHkpCgkg ICAgICAjOyhzaG93ICN0ICJub3JtYWxpemUtb25jZSBwb2x5PSAiIChkaXNwbGF5ZWQgcG9seSkg IlxuIikKCSAgICAgIChpZiAoemVybz8gcG9seSkKCQkgIHBvbHkKCQkgIChsZXQqICgocG9seTEg KGNvbnRlbnRzIHBvbHkpKQoJCQkgKGZpcnN0LW1vbm9taWFsICh0YWcKCQkJCQkgIChtYWtlLXBv bHkKCQkJCQkgICAodmFyaWFibGUgcG9seTEpCgkJCQkJICAgKGxpc3QgKG1ha2UtdGVybQoJCQkJ CQkgIChvcmRlciAoZmlyc3QtdGVybSAodGVybS1saXN0IHBvbHkxKSkpCgkJCQkJCSAgKGlmIChw b2x5bm9taWFsPyAoY29lZmYgKGZpcnN0LXRlcm0gKHRlcm0tbGlzdCBwb2x5MSkpKSkKCQkJCQkJ ICAgICAgKG5vcm1hbGl6ZS1vbmNlIChjb2VmZiAoZmlyc3QtdGVybSAodGVybS1saXN0IHBvbHkx KSkpKQoJCQkJCQkgICAgICAoY29lZmYgKGZpcnN0LXRlcm0gKHRlcm0tbGlzdCBwb2x5MSkpKSkp KSkpKSkKCQkgICAgIzsoc2hvdyAjdCAicC0+cy1vLWYtYS1yOiAiIChkaXNwbGF5ZWQgZmlyc3Qt bW9ub21pYWwpICJcbiIpCgkJICAgIChhZGQKCQkgICAgIChpZiAoYW5kIChwb2x5bm9taWFsPwoJ CQkgICAgIChjb2VmZgoJCQkgICAgICAoZmlyc3QtdGVybQoJCQkgICAgICAgKHRlcm0tbGlzdAoJ CQkJKGNvbnRlbnRzIGZpcnN0LW1vbm9taWFsKSkpKSkKCQkJICAgICh2YXJpYWJsZV8xLW9yZGVy PHZhcmlhYmxlXzItb3JkZXIKCQkJICAgICAodmFyaWFibGUKCQkJICAgICAgKGNvbnRlbnRzCgkJ CSAgICAgICAoY29lZmYKCQkJCShmaXJzdC10ZXJtCgkJCQkgKHRlcm0tbGlzdAoJCQkJICAoY29u dGVudHMgZmlyc3QtbW9ub21pYWwpKSkpKSkKCQkJICAgICAodmFyaWFibGUKCQkJICAgICAgKGNv bnRlbnRzIGZpcnN0LW1vbm9taWFsKSkpKQoJCQkgKG1vbm9taWFsLWZsaXAtdmFyaWFibGVzIGZp cnN0LW1vbm9taWFsKQoJCQkgZmlyc3QtbW9ub21pYWwpCgkJICAgICAgKHBvbHlub21pYWwtPnN1 bS1vZi1maXJzdC1hbmQtcmVzdAoJCSAgICAgICAodGFnIChtYWtlLXBvbHkgKHZhcmlhYmxlIHBv bHkxKSAocmVzdC10ZXJtcyAodGVybS1saXN0IHBvbHkxKSkpKSkpKSkpCgoJICAgIChzaG93ICN0 ICJUZXN0MjE6IG5vcm1hbC1wb2x5bm9taWFsPzpzdGFydDogIiAoZGlzcGxheWVkIChtYWtlLXBv bHlub21pYWwgJ3kKCQkJCQkJICAgKGxpc3QgKG1ha2UtdGVybSAyIChtYWtlLXBvbHlub21pYWwK CQkJCQkJCQkgICAgICAgJ3gKCQkJCQkJCSAobGlzdCAobWFrZS10ZXJtIDIgMSkgKG1ha2UtdGVy bSAwIDEpKSkpCgkJCQkJCQkgKG1ha2UtdGVybSAwIDIpKSkpICJcbiIpCgkgICAgIzsoc2hvdyAj dCAiVGVzdDIxOiBub3JtYWwtcG9seW5vbWlhbD86cmVzdWx0OiIgKG5vcm1hbC1wb2x5bm9taWFs PyAobWFrZS1wb2x5bm9taWFsICd5CgkJCQkJCSAgIChsaXN0IChtYWtlLXRlcm0gMiAobWFrZS1w b2x5bm9taWFsCgkJCQkJCQkJICAgICAgICd4CgkJCQkJCQkgKGxpc3QgKG1ha2UtdGVybSAyIDEp IChtYWtlLXRlcm0gMCAxKSkpKQoJCQkJCQkJIChtYWtlLXRlcm0gMCAyKSkpKSAiXG4iKQoJICAg ICM7KHNob3cgI3QgIlRlc3QyMjogbm9ybWFsLXBvbHlub21pYWw/LWdvb2Q6c3RhcnQ6ICIKCQkg IChkaXNwbGF5ZWQKCQkgICAobWFrZS1wb2x5bm9taWFsICd4CgkJCQkgICAgKGxpc3QgKG1ha2Ut dGVybSAyIChtYWtlLXBvbHlub21pYWwKCQkJCQkJCSd5CgkJCQkJCQkobGlzdCAobWFrZS10ZXJt IDIgMSkgKG1ha2UtdGVybSAwIDEpKSkpCgkJCQkJICAobWFrZS10ZXJtIDAgMikpKSkgIlxuIikK CSAgICAjOyhzaG93ICN0ICJUZXN0MjI6IG5vcm1hbC1wb2x5bm9taWFsPy1nb29kOnJlc3VsdDoi CgkJICAobm9ybWFsLXBvbHlub21pYWw/CgkJICAgKG1ha2UtcG9seW5vbWlhbCAneAoJCQkJICAg IChsaXN0IChtYWtlLXRlcm0gMiAobWFrZS1wb2x5bm9taWFsCgkJCQkJCQkneQoJCQkJCQkJKGxp c3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0gMCAxKSkpKQoJCQkJCSAgKG1ha2UtdGVybSAw IDIpKSkpICJcbiIpCgoJICAgICM7KHNob3cgI3QgIlRlc3QyMzppbnB1dDogbm9ybWFsaXppbmcg YSBiYWQgcG9seW5vbWlhbDogIgoJCSAgKG1ha2UtcG9seW5vbWlhbCAneQoJCQkJICAgICAobGlz dCAobWFrZS10ZXJtIDIgKG1ha2UtcG9seW5vbWlhbAoJCQkJCQkJICd4CgkJCQkJCQkgKGxpc3Qg KG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0gMCAxKSkpKQoJCQkJCSAgIChtYWtlLXRlcm0gMCAy KSkpICJcbiIpCgkgICAgIzsoc2hvdyAjdCAiVGVzdDIzOnJlc3VsdDogbm9ybWFsaXppbmcgYSBi YWQgcG9seW5vbWlhbDogIgoJCSAgKG5vcm1hbGl6ZS1vbmNlIChtYWtlLXBvbHlub21pYWwgJ3kK CQkJCQkJICAgKGxpc3QgKG1ha2UtdGVybSAyIChtYWtlLXBvbHlub21pYWwKCQkJCQkJCQkgICAg ICAgJ3gKCQkJCQkJCSAobGlzdCAobWFrZS10ZXJtIDIgMSkgKG1ha2UtdGVybSAwIDEpKSkpCgkJ CQkJCQkgKG1ha2UtdGVybSAwIDIpKSkpICJcbiIpCgkgICAgIzsoc2hvdyAjdCAiVGVzdDI0Omlu cHV0OiBub3JtYWxpemluZyBhIGJhZCBwb2x5bm9taWFsOiAiCgkJICAobWFrZS1wb2x5bm9taWFs ICd4CgkJCQkgICAgIChsaXN0IChtYWtlLXRlcm0gMiAobWFrZS1wb2x5bm9taWFsCgkJCQkJCQkg J3gKCQkJCQkJCSAobGlzdCAobWFrZS10ZXJtIDIgMSkgKG1ha2UtdGVybSAwIDEpKSkpCgkJCQkJ ICAgKG1ha2UtdGVybSAwIDIpKSkgIlxuIikKCSAgICAjOyhzaG93ICN0ICJUZXN0MjQ6cmVzdWx0 OiBub3JtYWxpemluZyBhIGJhZCBwb2x5bm9taWFsOiAiCgkJICAobm9ybWFsaXplLW9uY2UgKG1h a2UtcG9seW5vbWlhbCAneAoJCQkJCQkgICAobGlzdCAobWFrZS10ZXJtIDIgKG1ha2UtcG9seW5v bWlhbAoJCQkJCQkJCSAgICAgICAneAoJCQkJCQkJIChsaXN0IChtYWtlLXRlcm0gMiAxKSAobWFr ZS10ZXJtIDAgMSkpKSkKCQkJCQkJCSAobWFrZS10ZXJtIDAgMikpKSkgIlxuIikKCgoJICAgICM7 KHNob3cgI3QgIlRlc3QyNDppbnB1dDogbm9ybWFsaXplLWZ1bGx5IGEgYmFkIHBvbHlub21pYWw6 ICIKCQkgIChtYWtlLXBvbHlub21pYWwgJ3kKCQkJCSAgICAgKGxpc3QgKG1ha2UtdGVybSAyICht YWtlLXBvbHlub21pYWwKCQkJCQkJCSAneAoJCQkJCQkJIChsaXN0IChtYWtlLXRlcm0gMiAxKSAo bWFrZS10ZXJtIDAgMSkpKSkKCQkJCQkgICAobWFrZS10ZXJtIDAgMikpKSAiXG4iKQoJICAgICM7 KHNob3cgI3QgIlRlc3QyNDpyZXN1bHQ6IG5vcm1hbGl6ZS1mdWxseSBhIGJhZCBwb2x5bm9taWFs OiAiCgkJICAobm9ybWFsaXplLWZ1bGx5IChtYWtlLXBvbHlub21pYWwgJ3kKCQkJCQkJICAgKGxp c3QgKG1ha2UtdGVybSAyIChtYWtlLXBvbHlub21pYWwKCQkJCQkJCQkgICAgICAgJ3gKCQkJCQkJ CSAobGlzdCAobWFrZS10ZXJtIDIgMSkgKG1ha2UtdGVybSAwIDEpKSkpCgkJCQkJCQkgKG1ha2Ut dGVybSAwIDIpKSkpICJcbiIpCgoKCgkgICAgJ2RvbmUpCgoKCSAgKGRlZmluZSAoaW5zdGFsbC1w b2x5bm9taWFsLXNwYXJzZS1wYWNrYWdlKQoJICAgIChkZWZpbmUgKGNvZWZmIHRlcm0pIChjYWRy IHRlcm0pKQoJICAgIChkZWZpbmUgKGZpcnN0LXRlcm0tc3BhcnNlIHRlcm0tbGlzdCkgKGNhciB0 ZXJtLWxpc3QpKQoJICAgIChkZWZpbmUgKGFkam9pbi10ZXJtLXNwYXJzZSB0ZXJtIHRlcm0tbGlz dCkKCSAgICAgIChpZiAoemVybz8gKGNvZWZmIHRlcm0pKQoJCSAgdGVybS1saXN0CgkJICAoY29u cyB0ZXJtIHRlcm0tbGlzdCkpKQoJICAgIChwdXQgJ2Fkam9pbi10ZXJtICdzcGFyc2UgYWRqb2lu LXRlcm0tc3BhcnNlKQoJICAgIChwdXQgJ2ZpcnN0LXRlcm0gJ3NwYXJzZSBmaXJzdC10ZXJtLXNw YXJzZSkKCSAgICAnZG9uZSkKCSAgKGluc3RhbGwtcG9seW5vbWlhbC1zcGFyc2UtcGFja2FnZSkK CgkgIChkZWZpbmUgKGluc3RhbGwtcG9seW5vbWlhbC1kZW5zZS1wYWNrYWdlKQoJICAgIChkZWZp bmUgKG1ha2UtdGVybSBvcmRlciBjb2VmZikgKGxpc3Qgb3JkZXIgY29lZmYpKQoJICAgIChkZWZp bmUgKG9yZGVyIHRlcm0pIChjYXIgdGVybSkpCgkgICAgKGRlZmluZSAoY29lZmYgdGVybSkgKGNh ZHIgdGVybSkpCgoJICAgIChkZWZpbmUgKGFkam9pbi10ZXJtLWRlbnNlIHRlcm0gdGVybS1saXN0 KQoJCShpZiAoemVybz8gKGNvZWZmIHRlcm0pKQoJCSAgICB0ZXJtLWxpc3QKCQkgICAgKGlmICg+ IChvcmRlciB0ZXJtKSAobGVuZ3RoIHRlcm0tbGlzdCkpCgkJCShhcHBlbmQgKGxpc3QgKGNvZWZm IHRlcm0pKQoJCQkJKG1ha2UtbGlzdCAoLSAob3JkZXIgdGVybSkgKGxlbmd0aCB0ZXJtLWxpc3Qp KSAwKQoJCQkJdGVybS1saXN0KQoJCQkoZXJyb3IgImFkam9pbi10ZXJtOkFwcGVuZGluZyBhIHNt YWxsZXIgb3JkZXIgdGVybS4gUmVjaGVjay4iKSkpKQoJICAgIChkZWZpbmUgKGZpcnN0LXRlcm0t ZGVuc2UgdGVybS1saXN0KSAKCSAgICAgICAjOyhzaG93ICN0ICJmaXJzdC10ZXJtLWRlbnNlOiAi IChkaXNwbGF5ZWQgKG1ha2UtdGVybSAoY2FyIHRlcm0tbGlzdCkgKGxlbmd0aCAoY2RyIHRlcm0t bGlzdCkpKSkgIlxuIikKCSAgICAgICAobWFrZS10ZXJtIChsZW5ndGggKGNkciB0ZXJtLWxpc3Qp KSAoY2FyIHRlcm0tbGlzdCkgKSkKCSAgICAocHV0ICdhZGpvaW4tdGVybSAnZGVuc2UgYWRqb2lu LXRlcm0tZGVuc2UpCgkgICAgKHB1dCAnZmlyc3QtdGVybSAnZGVuc2UgZmlyc3QtdGVybS1kZW5z ZSkKCSAgICAnZG9uZSkKCSAgIzsoaW5zdGFsbC1wb2x5bm9taWFsLWRlbnNlLXBhY2thZ2UpCgoJ ICAoZGVmaW5lIChtYWtlLXBvbHlub21pYWwgdmFyIHRlcm1zKQoJICAgICgoZ2V0ICdtYWtlICdw b2x5bm9taWFsKSB2YXIgdGVybXMpKQoKCShpbnN0YWxsLXBvbHlub21pYWwtcGFja2FnZSkKCgoJ ICAoc2hvdyAjdCAiVGVzdCAyOiBNYWtpbmcgcG9seW5vbWlhbHM6ICIgCgkJKG1ha2UtcG9seW5v bWlhbCAneCAobGlzdCAobGlzdCA1IDEpIChsaXN0IDQgMikpKSAiXG4iKQoJICAoc2hvdyAjdCAi VGVzdCAzOiBaZXJvPzogIiAKCQkoemVybz8gKG1ha2UtcG9seW5vbWlhbCAneCAobGlzdCAobGlz dCA1IDEpIChsaXN0IDQgMikpKSkgIlxuIikKCSAgKHNob3cgI3QgIlRlc3QgNDogQWRkaW5nIHBv bHlub21pYWxzOiAiCgkJKGFkZCAobWFrZS1wb2x5bm9taWFsICd4ICcoKDUgMSkgKDQgMikgKDAg MSkpKQoJCSAgICAgKG1ha2UtcG9seW5vbWlhbCAneCAnKCg1IDEpKSkpICJcbiIpCgkgIChzaG93 ICN0ICJUZXN0IDQ6IFplcm8/OiAiICh6ZXJvPyAobWFrZS1wb2x5bm9taWFsICd4ICcoKDUgMCkg KDMgMSkpKSkgIlxuIikKCgkgIChzaG93ICN0ICJUZXN0IDU6IFN1YnRyYWN0aW5nIHBvbHlub21p YWxzOiAiCgkJKHN1YiAobWFrZS1wb2x5bm9taWFsICd4ICcoKDUgMSkgKDQgMikgKDAgMSkpKQoJ CSAgICAgKG1ha2UtcG9seW5vbWlhbCAneCAnKCgwIDEpKSkpICJcbiIpCgoJICAjOyhzaG93ICN0 ICJUZXN0IDY6IE1ha2luZyBhIGRlbnNlIHBvbHlub21pYWw6ICIgKG1ha2UtcG9seW5vbWlhbCAn eCAnKDEgMiAzIDQgNSkpICJcbiIpCgkgICM7KHNob3cgI3QgIlRlc3QgNzogemVybz8gZGVuc2Ug cG9seW5vbWlhbDogIiAoZGlzcGxheWVkICh6ZXJvPyAobWFrZS1wb2x5bm9taWFsICd4ICcoMCkp KSkgIlxuIikKCSAgIzsoc2hvdyAjdCAiVGVzdCA4OiB6ZXJvPyBkZW5zZSBwb2x5bm9taWFsOiAi IChkaXNwbGF5ZWQgKHplcm8/IChtYWtlLXBvbHlub21pYWwgJ3ggJygxKSkpKSAiXG4iKQoJICAj OyhzaG93ICN0ICJUZXN0IDk6IEFkZGluZyBkZW5zZSBwb2x5bm9taWFsczogIgoJCShhZGQgKG1h a2UtcG9seW5vbWlhbCAneCAnKDEgMiAwIDAgMCAxKSkKCQkgICAgIChtYWtlLXBvbHlub21pYWwg J3ggJygxIDAgMCAwIDAgMCkpKSAiXG4iKQoJICAjOyhzaG93ICN0ICJUZXN0MTA6IFN1YnRyYWN0 aW5nIGRlbnNlIHBvbHlub21pYWxzOiAiCgkJKHN1YiAobWFrZS1wb2x5bm9taWFsICd4ICcoMSAy IDAgMCAwIDEpKQoJCSAgICAgKG1ha2UtcG9seW5vbWlhbCAneCAnKDEgMCAwIDAgMCAwKSkpICJc biIpCgkgICM7KHNob3cgI3QgIlRlc3QxMTogU3VidHJhY3RpbmcgZGVuc2UgYW5kIHNwYXJzZSBw b2x5bm9taWFsczogIgoJCShzdWIgKG1ha2UtcG9seW5vbWlhbCAneCAnKDEgMiAwIDAgMCAxKSkK CQkgICAgIChtYWtlLXBvbHlub21pYWwgJ3ggJygoNCAyKSkpKSAiXG4iKQoJICAoc2hvdyAjdCAi VGVzdDEyOiBEaXZpZGluZyB4XjIgKyAyeCArIDEgYnkgeCsxOiAiCgkJKGRpc3BsYXllZAoJCSAo ZGl2IChtYWtlLXBvbHlub21pYWwgJ3ggJygoMiAxKSAoMSAyKSAoMCAxKSkpCgkJICAgICAgKG1h a2UtcG9seW5vbWlhbCAneCAnKCAgICAgICgxIDEpICgwIDEpKSkpICkgIlxuIikKCSAgKHNob3cg I3QgIlRlc3QxNDogQWRkaW5nIHBvbHlub21pYWxzIG9mIHR3byB2YXJpYWJsZXM6ICIKCQkoZGlz cGxheWVkCgkJIChhZGQgKG1ha2UtcG9seW5vbWlhbCAneCAnKCgxIDEpKSkKCQkgICAgICAobWFr ZS1wb2x5bm9taWFsICd5ICcoKDEgMSkpKSkpKQoJICAoc2hvdyAjdCAiVGVzdDE0OiBBZGRpbmcg cG9seW5vbWlhbHMgb2YgdHdvIHZhcmlhYmxlcywgd2hlbiBvbmUgb2YgdGhlbSBpcyBub25leGlz dGFudDogIgoJCShkaXNwbGF5ZWQKCQkgKGFkZCAobWFrZS1wb2x5bm9taWFsICd4ICcoKDEgMSkp KQoJCSAgICAgIChtYWtlLXBvbHlub21pYWwgJ3kgJygoMCAxKSkpKSkpCgkgIChzaG93ICN0ICJU ZXN0MjU6IG11bHRpcGx5aW5nIGRpZmZlcmVudCB2YXJpYWJsZXM6ICIKCSAgICAgIChkaXNwbGF5 ZWQgKG11bCAobWFrZS1wb2x5bm9taWFsICd4ICcoKDEgMSkpKQoJCQkgICAgICAobWFrZS1wb2x5 bm9taWFsICd5ICcoKDEgMSkpKSkpICJcbiIpCiAgICAgIChiZWdpbgogICAgICAoZGVmaW5lIHAx IChtYWtlLXBvbHlub21pYWwgJ3ggJygoMiAxKSAoMCAxKSkpKQogICAgICAoZGVmaW5lIHAyICht YWtlLXBvbHlub21pYWwgJ3ggJygoMyAxKSAoMCAxKSkpKQogICAgICAoZGVmaW5lIHJmIChtYWtl LXJhdGlvbmFsIHAyIHAxKSkKICAgICAgKHNob3cgI3QgIlRlc3QgMjY6IG1ha2UtcmF0aW9uYWwt cG9seW5vbWlhbDogIiByZiAiXG4iKQogICAgICAoc2hvdyAjdCAiVGVzdCAyNzogYWRkLXJhdGlv bmFsXG4iKQogICAgICAoc2hvdyAjdCAiVGVzdCAyNzogIiAoYWRkIHJmIHJmKSAiXG4iKQogICAg ICApCgogICAgICAoc2hvdyAjdCAiVGVzdCAyODogcG9seW5vbWlhbC1nY2Q6IHN0YXJ0XG4iKQog ICAgICAoZGVmaW5lIChncmVhdGVzdC1jb21tb24tZGl2aXNvciBwMSBwMikgKGFwcGx5LWdlbmVy aWMgJ2djZCBwMSBwMikpCiAgICAgIChiZWdpbgoJKGRlZmluZSBwMSAobWFrZS1wb2x5bm9taWFs CgkJICAgICAneCAnKCg0IDEpICgzIC0xKSAoMiAtMikgKDEgMikpKSkKCShkZWZpbmUgcDIgKG1h a2UtcG9seW5vbWlhbCAneCAnKCgzIDEpICgxIC0xKSkpKQoKCShzaG93ICN0ICJUZXN0IDI4OiBw b2x5bm9taWFsLWdjZDogIiAoZ3JlYXRlc3QtY29tbW9uLWRpdmlzb3IgcDEgcDIpICJcbiIpKQoK ICAgICAgKGJlZ2luCgkgIChkZWZpbmUgcDEgKG1ha2UtcG9seW5vbWlhbAoJCSAgICAgICAneCAn KCgyIDEpICgxIC0yKSAoMCAxKSkpKQoJICAoZGVmaW5lIHAyIChtYWtlLXBvbHlub21pYWwgJ3gg JygoMiAxMSkgKDAgNykpKSkKCgkgIChkZWZpbmUgcDMgKG1ha2UtcG9seW5vbWlhbCAneCAnKCgx IDEzKSAoMCA1KSkpKQoJICAoZGVmaW5lIHExIChtdWwgcDEgcDIpKQoJICAoZGVmaW5lIHEyICht dWwgcDEgcDMpKQoJICAoc2hvdyAjdCAiVGVzdCAyOTogZ2NkLWludGVnZXItcHJvYmxlbTogc3Rh cnRcbiIpCiAgICAgICAgICAoc2hvdyAjdCAiVGVzdCAyOTogcDE9IiBwMSAiXG4iKQogICAgICAg ICAgKHNob3cgI3QgIlRlc3QgMjk6IHAyPSIgcDIgIlxuIikKICAgICAgICAgIChzaG93ICN0ICJU ZXN0IDI5OiBwMz0iIHAzICJcbiIpCiAgICAgICAgICAoc2hvdyAjdCAiVGVzdCAyOTogcTE9IiBx MSAiXG4iKQogICAgICAgICAgKHNob3cgI3QgIlRlc3QgMjk6IHEyPSIgcTIgIlxuIikKCSAgKHNo b3cgI3QgIlRlc3QgMjk6IGdjZCA6ICIgKGdyZWF0ZXN0LWNvbW1vbi1kaXZpc29yIHExIHEyKSAi XG4iKSAgICAgIAoJKQoKIytlbmRfc3JjCgojK1JFU1VMVFM6CiMrYmVnaW5fZXhhbXBsZQoodGFn IDUpPTUKVGVzdCAzMTogc3RhcnQKVGVzdCAzMTojdApUZXN0OiBIaWdoZXIgdGhhbiAnaW50ZWdl cjogc2NoZW1lLW51bWJlcgpUZXN0IDMwOiBzdGFydApUZXN0IDMwOihhZGQgKG1ha2Utc2NoZW1l LW51bWJlciAxKSAobWFrZS1zY2hlbWUtbnVtYmVyIDEpKT0gMgpUZXN0IDMyOiBzdGFydFRlc3Qg MzI6IFN1YnRyYWN0aW5nIGNvbXBsZXggbnVtYmVyczogMS4xClRlc3RZMjogcG9seSBvZiBwb2x5 OiAoeCAoMyAoeSAoMSAxKSAoMCAxKSkpICgxIDIpICgwIDQpKQp6ZXJvLXBvbHk/OiBwb2x5PSh5 ICgyIChwb2x5bm9taWFsIHggKDIgMSkgKDAgMSkpKSAoMCAyKSkKemVyby1wb2x5PzogcG9seT0o eCAoMiAxKSAoMCAxKSkKemVyby1wb2x5PzogcG9seT0oeSAoMCAyKSkKemVyby1wb2x5PzogcG9s eT0oeSkKemVyby1wb2x5PzogcG9seT0oeCAoMiAxKSAoMCAxKSkKemVyby1wb2x5PzogcG9seT0o eSAoMiAocG9seW5vbWlhbCB4ICgyIDEpICgwIDEpKSkgKDAgMikpCnplcm8tcG9seT86IHBvbHk9 KHggKDIgMSkgKDAgMSkpCnplcm8tcG9seT86IHBvbHk9KHggKDIgMSkgKDAgMSkpCnplcm8tcG9s eT86IHBvbHk9KHggKDAgMSkpCnplcm8tcG9seT86IHBvbHk9KHgpCnplcm8tcG9seT86IHBvbHk9 KHkgKDAgMikpCnplcm8tcG9seT86IHBvbHk9KHkpCnplcm8tcG9seT86IHBvbHk9KHkgKDIgMSkp Cnplcm8tcG9seT86IHBvbHk9KHkgKDIgMSkpCnplcm8tcG9seT86IHBvbHk9KHkgKDIgMSkgKDAg MikpCnplcm8tcG9seT86IHBvbHk9KHkgKDIgMSkpClRlc3QxMzogRXhwYW5kaW5nIGEgcG9seW5v bWlhbCBhcyBtb25vbWlhbHM6IChwb2x5bm9taWFsIHggKDIgKHBvbHlub21pYWwgeSAoMiAxKSkp ICgwIChwb2x5bm9taWFsIHkgKDIgMSkgKDAgMikpKSkKClRlc3QyMDogc3RhcnQgbW9ub21pYWw6 IChwb2x5bm9taWFsIHggKDIgKHBvbHlub21pYWwgeSAoMiAxKSAoMCAxKSkpKQp6ZXJvLXBvbHk/ OiBwb2x5PSh4ICgxIDEpKQp6ZXJvLXBvbHk/OiBwb2x5PSh4ICgxIDEpKQpUZXN0MjA6IEZsaXBw aW5nIGEgbW9ub21pYWwgdmFyaWFibGU6IChwb2x5bm9taWFsIHkgKDIgKHBvbHlub21pYWwgeCAo MSAxKSkpICgwIChwb2x5bm9taWFsIHggKDEgMSkpKSkKClRlc3QyMTogbm9ybWFsLXBvbHlub21p YWw/OnN0YXJ0OiAocG9seW5vbWlhbCB5ICgyIChwb2x5bm9taWFsIHggKDIgMSkgKDAgMSkpKSAo MCAyKSkKVGVzdCAyOiBNYWtpbmcgcG9seW5vbWlhbHM6IChwb2x5bm9taWFsIHggKDUgMSkgKDQg MikpCnplcm8tcG9seT86IHBvbHk9KHggKDUgMSkgKDQgMikpClRlc3QgMzogWmVybz86ICNmClRl c3QgNDogQWRkaW5nIHBvbHlub21pYWxzOiAocG9seW5vbWlhbCB4ICg1IDIpICg0IDIpICgwIDEp KQp6ZXJvLXBvbHk/OiBwb2x5PSh4ICg1IDApICgzIDEpKQp6ZXJvLXBvbHk/OiBwb2x5PSh4ICgz IDEpKQpUZXN0IDQ6IFplcm8/OiAjZgpUZXN0IDU6IFN1YnRyYWN0aW5nIHBvbHlub21pYWxzOiAo cG9seW5vbWlhbCB4ICg1IDEpICg0IDIpKQpkaXYtdGVybXM6IEwxPSgoMiAxKSAoMSAyKSAoMCAx KSksIEwyPSgoMSAxKSAoMCAxKSkKZGl2LXRlcm1zOiBMMT0oKDEgMSkgKDAgMSkpLCBMMj0oKDEg MSkgKDAgMSkpCmRpdi10ZXJtczogTDE9KCksIEwyPSgoMSAxKSAoMCAxKSkKVGVzdDEyOiBEaXZp ZGluZyB4XjIgKyAyeCArIDEgYnkgeCsxOiAoKHggKDEgMSkgKDAgMSkpICh4KSkKVGVzdDE0OiBB ZGRpbmcgcG9seW5vbWlhbHMgb2YgdHdvIHZhcmlhYmxlczogKHBvbHlub21pYWwgeCAoMSAxKSAo MCAocG9seW5vbWlhbCB5ICgxIDEpKSkpVGVzdDE0OiBBZGRpbmcgcG9seW5vbWlhbHMgb2YgdHdv IHZhcmlhYmxlcywgd2hlbiBvbmUgb2YgdGhlbSBpcyBub25leGlzdGFudDogKHBvbHlub21pYWwg eCAoMSAxKSAoMCAocG9seW5vbWlhbCB5ICgwIDEpKSkpemVyby1wb2x5PzogcG9seT0oeSAoMSAx KSkKemVyby1wb2x5PzogcG9seT0oeSAoMSAxKSkKVGVzdDI1OiBtdWx0aXBseWluZyBkaWZmZXJl bnQgdmFyaWFibGVzOiAocG9seW5vbWlhbCB4ICgxIChwb2x5bm9taWFsIHkgKDEgMSkpKSkKVGVz dCAyNjogbWFrZS1yYXRpb25hbC1wb2x5bm9taWFsOiAocmF0aW9uYWwgKHBvbHlub21pYWwgeCAo MyAxKSAoMCAxKSkgcG9seW5vbWlhbCB4ICgyIDEpICgwIDEpKQpUZXN0IDI3OiBhZGQtcmF0aW9u YWwKcmF0aW9uYWwgbm90IGRyb3BwYWJsZTogI2YKVGVzdCAyNzogKHJhdGlvbmFsIChwb2x5bm9t aWFsIHggKDUgMikgKDMgMikgKDIgMikgKDAgMikpIHBvbHlub21pYWwgeCAoNCAxKSAoMiAyKSAo MCAxKSkKVGVzdCAyODogcG9seW5vbWlhbC1nY2Q6IHN0YXJ0CmdjZC1wb2x5OnAxPSh4ICg0IDEp ICgzIC0xKSAoMiAtMikgKDEgMikpLCBwMj0oeCAoMyAxKSAoMSAtMSkpCmdjZC10ZXJtczogYT0o KDQgMSkgKDMgLTEpICgyIC0yKSAoMSAyKSksIGI9KCgzIDEpICgxIC0xKSkKcHNldWRvcmVtYWlu ZGVyLXRlcm1zOiBQPSgoNCAxKSAoMyAtMSkgKDIgLTIpICgxIDIpKQpwc2V1ZG9yZW1haW5kZXIt dGVybXM6IFE9KCgzIDEpICgxIC0xKSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBPMT00CnBzZXVk b3JlbWFpbmRlci10ZXJtczogTzI9Mwpwc2V1ZG9yZW1haW5kZXItdGVybXM6IGM9MQpwc2V1ZG9y ZW1haW5kZXItdGVybXM6IHRoZSBpbnRlZ2VyaXppbmcgZmFjdG9yPSgwIDEpCnBzZXVkb3JlbWFp bmRlci10ZXJtczogUCBhZnRlciBtdWx0aXBsaWNhdGlvbj0oKDQgMSkgKDMgLTEpICgyIC0yKSAo MSAyKSkKZGl2LXRlcm1zOiBMMT0oKDQgMSkgKDMgLTEpICgyIC0yKSAoMSAyKSksIEwyPSgoMyAx KSAoMSAtMSkpCmRpdi10ZXJtczogTDE9KCgzIC0xKSAoMiAtMSkgKDEgMikpLCBMMj0oKDMgMSkg KDEgLTEpKQpkaXYtdGVybXM6IEwxPSgoMiAtMSkgKDEgMSkpLCBMMj0oKDMgMSkgKDEgLTEpKQpn Y2QtdGVybXM6IGE9KCgzIDEpICgxIC0xKSksIGI9KCgyIC0xKSAoMSAxKSkKcHNldWRvcmVtYWlu ZGVyLXRlcm1zOiBQPSgoMyAxKSAoMSAtMSkpCnBzZXVkb3JlbWFpbmRlci10ZXJtczogUT0oKDIg LTEpICgxIDEpKQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IE8xPTMKcHNldWRvcmVtYWluZGVyLXRl cm1zOiBPMj0yCnBzZXVkb3JlbWFpbmRlci10ZXJtczogYz0tMQpwc2V1ZG9yZW1haW5kZXItdGVy bXM6IHRoZSBpbnRlZ2VyaXppbmcgZmFjdG9yPSgwIDEpCnBzZXVkb3JlbWFpbmRlci10ZXJtczog UCBhZnRlciBtdWx0aXBsaWNhdGlvbj0oKDMgMSkgKDEgLTEpKQpkaXYtdGVybXM6IEwxPSgoMyAx KSAoMSAtMSkpLCBMMj0oKDIgLTEpICgxIDEpKQpkaXYtdGVybXM6IEwxPSgoMiAxKSAoMSAtMSkp LCBMMj0oKDIgLTEpICgxIDEpKQpkaXYtdGVybXM6IEwxPSgpLCBMMj0oKDIgLTEpICgxIDEpKQpn Y2QtdGVybXM6IGE9KCgyIC0xKSAoMSAxKSksIGI9KCkKZ2NkLXBvbHk6IHVub3B0aW1pemVkLXRl cm1saXN0PSgoMiAtMSkgKDEgMSkpCmdjZC1wb2x5OiBmaXJzdC10ZXJtcz0oKDIgLTEpICgxIDEp KQpnY2QtcG9seTogY29lZmZpY2llbnRzPSgtMSAxKQpnY2QtcG9seTogY29lZmYtZ2NkPTEKVGVz dCAyODogcG9seW5vbWlhbC1nY2Q6IChwb2x5bm9taWFsIHggKDIgLTEpICgxIDEpKQpUZXN0IDI5 OiBnY2QtaW50ZWdlci1wcm9ibGVtOiBzdGFydApUZXN0IDI5OiBwMT0ocG9seW5vbWlhbCB4ICgy IDEpICgxIC0yKSAoMCAxKSkKVGVzdCAyOTogcDI9KHBvbHlub21pYWwgeCAoMiAxMSkgKDAgNykp ClRlc3QgMjk6IHAzPShwb2x5bm9taWFsIHggKDEgMTMpICgwIDUpKQpUZXN0IDI5OiBxMT0ocG9s eW5vbWlhbCB4ICg0IDExKSAoMyAtMjIpICgyIDE4KSAoMSAtMTQpICgwIDcpKQpUZXN0IDI5OiBx Mj0ocG9seW5vbWlhbCB4ICgzIDEzKSAoMiAtMjEpICgxIDMpICgwIDUpKQpnY2QtcG9seTpwMT0o eCAoNCAxMSkgKDMgLTIyKSAoMiAxOCkgKDEgLTE0KSAoMCA3KSksIHAyPSh4ICgzIDEzKSAoMiAt MjEpICgxIDMpICgwIDUpKQpnY2QtdGVybXM6IGE9KCg0IDExKSAoMyAtMjIpICgyIDE4KSAoMSAt MTQpICgwIDcpKSwgYj0oKDMgMTMpICgyIC0yMSkgKDEgMykgKDAgNSkpCnBzZXVkb3JlbWFpbmRl ci10ZXJtczogUD0oKDQgMTEpICgzIC0yMikgKDIgMTgpICgxIC0xNCkgKDAgNykpCnBzZXVkb3Jl bWFpbmRlci10ZXJtczogUT0oKDMgMTMpICgyIC0yMSkgKDEgMykgKDAgNSkpCnBzZXVkb3JlbWFp bmRlci10ZXJtczogTzE9NApwc2V1ZG9yZW1haW5kZXItdGVybXM6IE8yPTMKcHNldWRvcmVtYWlu ZGVyLXRlcm1zOiBjPTEzCnBzZXVkb3JlbWFpbmRlci10ZXJtczogdGhlIGludGVnZXJpemluZyBm YWN0b3I9KDAgMTY5KQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IFAgYWZ0ZXIgbXVsdGlwbGljYXRp b249KCg0IDE4NTkpICgzIC0zNzE4KSAoMiAzMDQyKSAoMSAtMjM2NikgKDAgMTE4MykpCmRpdi10 ZXJtczogTDE9KCg0IDE4NTkpICgzIC0zNzE4KSAoMiAzMDQyKSAoMSAtMjM2NikgKDAgMTE4Mykp LCBMMj0oKDMgMTMpICgyIC0yMSkgKDEgMykgKDAgNSkpCmRpdi10ZXJtczogTDE9KCgzIC03MTUp ICgyIDI2MTMpICgxIC0zMDgxKSAoMCAxMTgzKSksIEwyPSgoMyAxMykgKDIgLTIxKSAoMSAzKSAo MCA1KSkKZGl2LXRlcm1zOiBMMT0oKDIgMTQ1OCkgKDEgLTI5MTYpICgwIDE0NTgpKSwgTDI9KCgz IDEzKSAoMiAtMjEpICgxIDMpICgwIDUpKQpnY2QtdGVybXM6IGE9KCgzIDEzKSAoMiAtMjEpICgx IDMpICgwIDUpKSwgYj0oKDIgMTQ1OCkgKDEgLTI5MTYpICgwIDE0NTgpKQpwc2V1ZG9yZW1haW5k ZXItdGVybXM6IFA9KCgzIDEzKSAoMiAtMjEpICgxIDMpICgwIDUpKQpwc2V1ZG9yZW1haW5kZXIt dGVybXM6IFE9KCgyIDE0NTgpICgxIC0yOTE2KSAoMCAxNDU4KSkKcHNldWRvcmVtYWluZGVyLXRl cm1zOiBPMT0zCnBzZXVkb3JlbWFpbmRlci10ZXJtczogTzI9Mgpwc2V1ZG9yZW1haW5kZXItdGVy bXM6IGM9MTQ1OApwc2V1ZG9yZW1haW5kZXItdGVybXM6IHRoZSBpbnRlZ2VyaXppbmcgZmFjdG9y PSgwIDIxMjU3NjQpCnBzZXVkb3JlbWFpbmRlci10ZXJtczogUCBhZnRlciBtdWx0aXBsaWNhdGlv bj0oKDMgMjc2MzQ5MzIpICgyIC00NDY0MTA0NCkgKDEgNjM3NzI5MikgKDAgMTA2Mjg4MjApKQpk aXYtdGVybXM6IEwxPSgoMyAyNzYzNDkzMikgKDIgLTQ0NjQxMDQ0KSAoMSA2Mzc3MjkyKSAoMCAx MDYyODgyMCkpLCBMMj0oKDIgMTQ1OCkgKDEgLTI5MTYpICgwIDE0NTgpKQpkaXYtdGVybXM6IEwx PSgoMiAxMDYyODgyMCkgKDEgLTIxMjU3NjQwKSAoMCAxMDYyODgyMCkpLCBMMj0oKDIgMTQ1OCkg KDEgLTI5MTYpICgwIDE0NTgpKQpkaXYtdGVybXM6IEwxPSgpLCBMMj0oKDIgMTQ1OCkgKDEgLTI5 MTYpICgwIDE0NTgpKQpnY2QtdGVybXM6IGE9KCgyIDE0NTgpICgxIC0yOTE2KSAoMCAxNDU4KSks IGI9KCkKZ2NkLXBvbHk6IHVub3B0aW1pemVkLXRlcm1saXN0PSgoMiAxNDU4KSAoMSAtMjkxNikg KDAgMTQ1OCkpCmdjZC1wb2x5OiBmaXJzdC10ZXJtcz0oKDIgMTQ1OCkgKDEgLTI5MTYpICgwIDE0 NTgpKQpnY2QtcG9seTogY29lZmZpY2llbnRzPSgxNDU4IC0yOTE2IDE0NTgpCmdjZC1wb2x5OiBj b2VmZi1nY2Q9MTQ1OApUZXN0IDI5OiBnY2QgOiAocG9seW5vbWlhbCB4ICgyIDAuOTk5OTk5OTk5 OTk5OTk5OSkgKDEgLTEuOTk5OTk5OTk5OTk5OTk5OCkgKDAgMC45OTk5OTk5OTk5OTk5OTk5KSkK IytlbmRfZXhhbXBsZQoKV2UgdW5mb3J0dW5hdGVseSwgdGhlcmUgaXMgYW4gZXJyb3Igd2l0aCBl eGFjdC1pbmV4YWN0IG51bWJlcnMgc29tZXdoZXJlCmhlcmUuIEkgYW0gdG9vIHRpcmVkIHRvIGZp eCBpdCwgYnV0IHRoaXMgc2hvdWxkIGJlIGRvYWJsZS4gTGV0IG1lIHNheSwgSSdkCmFsc28gbGVh dmUgaXQgYXMgYW4gZXhlcmNpc2UgdG8gdGhlIHJlYWRlci4KCioqKiBET05FIEV4ZXJjaXNlIDIu OTcgUmVkdWN0aW9uIG9mIHBvbHlub21pYWxzCiAgICBDTE9TRUQ6IFsyMDE5LTEwLTI5IFR1ZSAw MDoxMl0KCkhlcmUgaXMgdGhlIHNvbHV0aW9uIG9mIHRoZSBleGVyY2lzZS4gSSBoYXZlIHRvIGNv cHkgdGhlIGNvZGUgYWdhaW4sIGJlY2F1c2UKaW1wbGVtZW50aW5nIHRlcm0gcmVkdWN0aW9uIHJl cXVpcmVzIGV4dGVuZGluZyB0aGUgcG9seW5vbWlhbCBwYWNrYWdlLgoKIytiZWdpbl9zcmMgc2No ZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CgkgIChkZWZpbmUgKHRoaW5neS1zb3Vy Y2UgdGhpbmd5KQoJICAgIChjb25kICgobGFtYmRhPyB0aGluZ3kpIChsaXN0ICJsYW1iZGEiIChs YW1iZGEtc291cmNlIHRoaW5neSkpKQoJCSAgKChwcm9jZWR1cmU/IHRoaW5neSkgKGxpc3QgInBy b2NlZHVyZSIgKHByb2NlZHVyZS1uYW1lIHRoaW5neSkpKQoJCSAgKChwYWlyPyB0aGluZ3kpIChs aXN0ICJwYWlyIiAocGFpci1zb3VyY2UgdGhpbmd5KSkpCgkJICAoZWxzZSAiTm8gc291cmNlPyBy ZWZhY3RvciIpKSkKCgkgICAgKGRlZmluZSAoYWNjdW11bGF0ZSBvcCBpbml0aWFsIHNlcXVlbmNl KQoJICAgICAgKGlmIChudWxsPyBzZXF1ZW5jZSkKCQkgIGluaXRpYWwKCQkgIChhY2N1bXVsYXRl IG9wIChvcCBpbml0aWFsIChjYXIgc2VxdWVuY2UpKSAoY2RyIHNlcXVlbmNlKSkpKQoJICAgIChk ZWZpbmUgZmFsc2UgI2YpCgkgICAgKGRlZmluZSB0cnVlICAjdCkKCSAgICAoZGVmaW5lIChtYWtl LXRhYmxlKQoJICAgICAgKGxldCAoKGxvY2FsLXRhYmxlIChsaXN0ICcqdGFibGUqKSkpCgkJKGRl ZmluZSAobG9va3VwIGtleS0xIGtleS0yKQoJCSAgKGxldCAoKHN1YnRhYmxlIChhc3NvYyBrZXkt MSAoY2RyIGxvY2FsLXRhYmxlKSkpKQoJCSAgICAoaWYgc3VidGFibGUKCQkJKGxldCAoKHJlY29y ZCAoYXNzb2Mga2V5LTIgKGNkciBzdWJ0YWJsZSkpKSkKCQkJICAoaWYgcmVjb3JkCgkJCSAgICAg IChjZHIgcmVjb3JkKQoJCQkgICAgICBmYWxzZSkpCgkJCWZhbHNlKSkpCgkJKGRlZmluZSAoaW5z ZXJ0ISBrZXktMSBrZXktMiB2YWx1ZSkKCQkgIChsZXQgKChzdWJ0YWJsZSAoYXNzb2Mga2V5LTEg KGNkciBsb2NhbC10YWJsZSkpKSkKCQkgICAgKGlmIHN1YnRhYmxlCgkJCShsZXQgKChyZWNvcmQg KGFzc29jIGtleS0yIChjZHIgc3VidGFibGUpKSkpCgkJCSAgKGlmIHJlY29yZAoJCQkgICAgICAo c2V0LWNkciEgcmVjb3JkIHZhbHVlKQoJCQkgICAgICAoc2V0LWNkciEgc3VidGFibGUKCQkJCQko Y29ucyAoY29ucyBrZXktMiB2YWx1ZSkKCQkJCQkgICAgICAoY2RyIHN1YnRhYmxlKSkpKSkKCQkJ KHNldC1jZHIhIGxvY2FsLXRhYmxlCgkJCQkgIChjb25zIChsaXN0IGtleS0xCgkJCQkJICAgICAg KGNvbnMga2V5LTIgdmFsdWUpKQoJCQkJCShjZHIgbG9jYWwtdGFibGUpKSkpKQoJCSAgJ29rKQoJ CShkZWZpbmUgKGRpc3BhdGNoIG0pCgkJICAoY29uZCAoKGVxPyBtICdsb29rdXAtcHJvYykgbG9v a3VwKQoJCQkoKGVxPyBtICdpbnNlcnQtcHJvYyEpIGluc2VydCEpCgkJCShlbHNlIChlcnJvciAi VW5rbm93biBvcGVyYXRpb24gLS0gVEFCTEUiIG0pKSkpCgkJZGlzcGF0Y2gpKQoKCSAgICAoZGVm aW5lIG9wZXJhdGlvbi10YWJsZSAobWFrZS10YWJsZSkpCgkgICAgKGRlZmluZSBnZXQgKG9wZXJh dGlvbi10YWJsZSAnbG9va3VwLXByb2MpKQoJICAgIChkZWZpbmUgcHV0IChvcGVyYXRpb24tdGFi bGUgJ2luc2VydC1wcm9jISkpCgoJICAgIChkZWZpbmUgY29lcmNpb24tdGFibGUgKG1ha2UtdGFi bGUpKQoJICAgIChkZWZpbmUgZ2V0LWNvZXJjaW9uIChjb2VyY2lvbi10YWJsZSAnbG9va3VwLXBy b2MpKQoJICAgIChkZWZpbmUgcHV0LWNvZXJjaW9uIChjb2VyY2lvbi10YWJsZSAnaW5zZXJ0LXBy b2MhKSkKCgkgICAgKGRlZmluZSAoYXR0YWNoLXRhZyB0eXBlLXRhZyBjb250ZW50cykKCSAgICAg IChjb25zIHR5cGUtdGFnIGNvbnRlbnRzKSkKCgkgICAgKGRlZmluZSAodHlwZS10YWcgZGF0dW0p CgkgICAgICAoY29uZCAoKHBhaXI/IGRhdHVtKSAoY2FyIGRhdHVtKSkKCQkgICAgKChleGFjdC1p bnRlZ2VyPyBkYXR1bSkgJ2ludGVnZXIpCgkJICAgICgocmVhbD8gZGF0dW0pICdzY2hlbWUtbnVt YmVyKQoJCSAgICAoZXJyb3IgIkJhZCB0YWdnZWQgZGF0dW0gLS0gVFlQRS1UQUciIGRhdHVtKSkp CgoJICAoZGVmaW5lIChjb250ZW50cyBkYXR1bSkKCSAgICAgIChjb25kICgocGFpcj8gZGF0dW0p IChjZHIgZGF0dW0pKQoJCSAgICAoKGludGVnZXI/IGRhdHVtKSBkYXR1bSkKCQkgICAgKChyZWFs PyBkYXR1bSkgZGF0dW0pCgkJICAgIChlbHNlIChlcnJvciAiQmFkIHRhZ2dlZCBkYXR1bSAtLSBD T05URU5UUyIgZGF0dW0pKSkpCgoJICAgIChkZWZpbmUgKGludGVnZXI/IHgpCgkgICAgICAoZXE/ ICh0eXBlLXRhZyB4KSAnaW50ZWdlcikpCgkgICAgKGRlZmluZSAocmVjdGFuZ3VsYXI/IHopCgkg ICAgICAoZXE/ICh0eXBlLXRhZyB6KSAncmVjdGFuZ3VsYXIpKQoKCSAgICAoZGVmaW5lIChwb2xh cj8geikKCSAgICAgIChlcT8gKHR5cGUtdGFnIHopICdwb2xhcikpCgoKCSAgICAoZGVmaW5lIChy ZWFsLXBhcnQgeikgKGFwcGx5LWdlbmVyaWMgJ3JlYWwtcGFydCB6KSkKCSAgICAoZGVmaW5lIChp bWFnLXBhcnQgeikgKGFwcGx5LWdlbmVyaWMgJ2ltYWctcGFydCB6KSkKCSAgICAoZGVmaW5lICht YWduaXR1ZGUgeikgKGFwcGx5LWdlbmVyaWMgJ21hZ25pdHVkZSB6KSkKCSAgICAoZGVmaW5lIChh bmdsZSB6KSAoYXBwbHktZ2VuZXJpYyAnYW5nbGUgeikpCgoJICAgIChkZWZpbmUgKGFkZCB4IHkp IAoJICAgICAgICM7KHNob3cgI3QgImRlYnVnOmFkZDogeD0iIHggIiwgeT0iIHkgIiwgc3RhcnRp bmcgYXBwbHktZ2VuZXJpY1xuIikKCSAgICAgICAjOyhzaG93ICN0ICJkZWJ1ZzphZGQ6ICh0eXBl LXRhZ3MgeCx5KT0oIiAodHlwZS10YWcgeCkgIiwiICh0eXBlLXRhZyB5KSAiKSIgIlxuIikKCSAg ICAgICAjOyhzaG93ICN0ICJkZWJ1ZzphZGQ6Y2FuIHdlIGFjY2VzcyBhcHBseS1nZW5lcmljPyIg KHdyaXR0ZW4gYXBwbHktZ2VuZXJpYykKCQkJIlxuIiApCgkgICAgICAgIzsoZXJyb3IgIkRlYnVn MSIpCgkgICAgICAgKGFwcGx5LWdlbmVyaWMgJ2FkZCB4IHkpKQoJICAgIChkZWZpbmUgKHN1YiB4 IHkpIChhcHBseS1nZW5lcmljICdzdWIgeCB5KSkKCSAgICAoZGVmaW5lIChtdWwgeCB5KSAoYXBw bHktZ2VuZXJpYyAnbXVsIHggeSkpCgkgICAgKGRlZmluZSAoZGl2IHggeSkgKGFwcGx5LWdlbmVy aWMgJ2RpdiB4IHkpKQoKCSAgICAoZGVmaW5lIChlcXU/IHggeSkKCSAgICAgIChhcHBseS1nZW5l cmljICdlcXU/IHggeSkpCgkgICAgKGRlZmluZSAoemVybz8geCkgKGFwcGx5LWdlbmVyaWMgJ3pl cm8/IHgpKQoKCSAgICAoZGVmaW5lIChleHAgeCB5KSAoYXBwbHktZ2VuZXJpYyAnZXhwIHggeSkp CgoJICAgIChkZWZpbmUgKGluc3RhbGwtc2NoZW1lLW51bWJlci1wYWNrYWdlKQoJICAgICAgKGRl ZmluZSAodGFnIHgpCgkJIzsoYXR0YWNoLXRhZyAnc2NoZW1lLW51bWJlciB4KSB4KQoJICAgICAg KHNob3cgI3QgIih0YWcgNSk9IiAodGFnIDUpICJcbiIpCgkgICAgICAocHV0ICdhZGQgJyhzY2hl bWUtbnVtYmVyIHNjaGVtZS1udW1iZXIpCgkJICAgKGxhbWJkYSAoeCB5KSAjOyhzaG93ICN0ICJk ZWJ1Zzpmb3VuZCBwbHVzIGRpc3BhdGNoXG4iKSAodGFnICgrIHggeSkpKSkKCSAgICAgIChwdXQg J3N1YiAnKHNjaGVtZS1udW1iZXIgc2NoZW1lLW51bWJlcikKCQkgICAobGFtYmRhICh4IHkpICh0 YWcgKC0geCB5KSkpKQoJICAgICAgKHB1dCAnbXVsICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVt YmVyKQoJCSAgIChsYW1iZGEgKHggeSkgKHRhZyAoKiB4IHkpKSkpCgkgICAgICAocHV0ICdkaXYg JyhzY2hlbWUtbnVtYmVyIHNjaGVtZS1udW1iZXIpCgkJICAgKGxhbWJkYSAoeCB5KSAodGFnICgv IHggeSkpKSkKCSAgICAgIChwdXQgJ21ha2UgJ3NjaGVtZS1udW1iZXIKCQkgICAobGFtYmRhICh4 KSAjOyhzaG93ICN0ICJkZWJ1Zzpmb3VuZCAnbWFrZSAnc2NoZW1lLW51bWJlclxuIikgKHRhZyB4 KSkpCgkgICAgICAocHV0ICdlcXU/ICcoc2NoZW1lLW51bWJlciBzY2hlbWUtbnVtYmVyKQoJCSAg IChsYW1iZGEgKHggeSkgKD0geCB5KSkpCgkgICAgICAocHV0ICd6ZXJvPyAnKHNjaGVtZS1udW1i ZXIpCgkJICAgKGxhbWJkYSAoeCkgKD0gMCB4KSkpCgkgICAgICAocHV0ICdleHAgJyhzY2hlbWUt bnVtYmVyIHNjaGVtZS1udW1iZXIpCgkJICAgKGxhbWJkYSAoeCB5KSAodGFnIChleHB0IHggeSkp KSkKCSAgICAgIChwdXQgJ3Byb2plY3QgJyhzY2hlbWUtbnVtYmVyKQoJCSAgIChsYW1iZGEgKHgp CgkJICAgICAoaWYgKGZpbml0ZT8geCkKCQkJKGV4YWN0ICh0cnVuY2F0ZSB4KSkKCQkJMCkpKQoJ ICAgICAgKHB1dCAnc2luZSAnKHNjaGVtZS1udW1iZXIpIHNpbikKCSAgICAgIChwdXQgJ2Nvc2lu ZSAnKHNjaGVtZS1udW1iZXIpIGNvcykKCSAgICAgIChwdXQgJ3NxdWFyZS1yb290ICcoc2NoZW1l LW51bWJlcikgc3FydCkKCSAgICAgIChwdXQgJ2FyY3RhbmdlbnQgJyhzY2hlbWVyLW51bWJlcikg YXRhbikKCSAgICAgICdkb25lKQogICAgKGluc3RhbGwtc2NoZW1lLW51bWJlci1wYWNrYWdlKQoJ ICAoZGVmaW5lIChpbnRlZ2VyLT5zY2hlbWUtbnVtYmVyIHgpCgkgICAgIChtYWtlLXNjaGVtZS1u dW1iZXIgKGluZXhhY3QgKGNvbnRlbnRzIHgpKSkpCgkgIChwdXQtY29lcmNpb24gJ2ludGVnZXIg J3NjaGVtZS1udW1iZXIgaW50ZWdlci0+c2NoZW1lLW51bWJlcikgIAoKCSAgICAoZGVmaW5lIChz aW5lIHgpIChhcHBseS1nZW5lcmljICdzaW5lIHgpKQoJICAgIChkZWZpbmUgKGNvc2luZSB4KSAo YXBwbHktZ2VuZXJpYyAnY29zaW5lIHgpKQoJICAgIChkZWZpbmUgKHNxdWFyZS1yb290IHgpIChh cHBseS1nZW5lcmljICdzcXVhcmUtcm9vdCB4KSkKCSAgICAoZGVmaW5lIChhcmN0YW5nZW50IHgp IChhcHBseS1nZW5lcmljICdhcmN0YW5nZW50IHgpKQoKCSAgICAoZGVmaW5lIChtYWtlLXNjaGVt ZS1udW1iZXIgbikKCSAgICAgICAjOyhzaG93ICN0ICJkZWJ1ZzptYWtlLXNjaGVtZS1udW1iZXI6 IG49IiBuICJcbiIpCgkgICAgICAoKGdldCAnbWFrZSAnc2NoZW1lLW51bWJlcikgbikpCgkgICAg IzsoY2hlY2sgKCsgMSAxKSA9PiAyKQoJICAgIChzaG93ICN0ICJUZXN0IDMxOiBzdGFydFxuIikK CSAgICAoc2hvdyAjdCAiVGVzdCAzMToiIChlcXVhbD8gKG1ha2Utc2NoZW1lLW51bWJlciAxKSAx KSAiXG4iKQoKCSAgICAjOyhjaGVjayAoYWRkIChtYWtlLXNjaGVtZS1udW1iZXIgMSkgKG1ha2Ut c2NoZW1lLW51bWJlciAxKSkgPT4gMikKCgkgICAgKGRlZmluZSAoaW5zdGFsbC1yYXRpb25hbC1w YWNrYWdlKQoJICAgICAgKGRlZmluZSAobnVtZXIgeCkgKGNhciB4KSkKCSAgICAgIChkZWZpbmUg KGRlbm9tIHgpIChjZHIgeCkpCgkgICAgICAoZGVmaW5lIChtYWtlLXJhdCBuIGQpCgkJKHNob3cg I3QgIm1ha2UtcmF0OiBuPSIgbiAiLCBkPSJkICJcbiIpCgkJIzsobGV0ICgoZyAoZ2NkIG4gZCkp KQoJCSAgKGNvbnMgKC8gbiBnKSAoLyBkIGcpKSkKCQkgIChsZXQgKChuZXctbGlzdCAocmVkdWNl IG4gZCkpKQoJCSAgICAgKGNvbnMgKGNhciBuZXctbGlzdCkgKGNhZHIgbmV3LWxpc3QpKSkpCgkg ICAgICAoZGVmaW5lIChhZGQtcmF0IHggeSkKCQkobWFrZS1yYXQgKGFkZCAobXVsIChudW1lciB4 KSAoZGVub20geSkpCgkJCSAgICAgKG11bCAobnVtZXIgeSkgKGRlbm9tIHgpKSkKCQkJICAobXVs IChkZW5vbSB4KSAoZGVub20geSkpKSkKCSAgICAgIChkZWZpbmUgKHN1Yi1yYXQgeCB5KQoJCSht YWtlLXJhdCAoc3ViIChtdWwgKG51bWVyIHgpIChkZW5vbSB5KSkKCQkJICAgICAobXVsIChudW1l ciB5KSAoZGVub20geCkpKQoJCQkgIChtdWwgKGRlbm9tIHgpIChkZW5vbSB5KSkpKQoJICAgICAg KGRlZmluZSAobXVsLXJhdCB4IHkpCgkJKG1ha2UtcmF0IChtdWwgKG51bWVyIHgpIChudW1lciB5 KSkKCQkJICAobXVsIChkZW5vbSB4KSAoZGVub20geSkpKSkKCSAgICAgIChkZWZpbmUgKGRpdi1y YXQgeCB5KQoJCShtYWtlLXJhdCAobXVsIChudW1lciB4KSAoZGVub20geSkpCgkJCSAgKG11bCAo ZGVub20geCkgKG51bWVyIHkpKSkpCgoJICAgICAgKGRlZmluZSAodGFnIHgpIChhdHRhY2gtdGFn ICdyYXRpb25hbCB4KSkKCSAgICAgIChwdXQgJ2FkZCAnKHJhdGlvbmFsIHJhdGlvbmFsKQoJCSAg IChsYW1iZGEgKHggeSkgKHRhZyAoYWRkLXJhdCB4IHkpKSkpCgkgICAgICAocHV0ICdzdWIgJyhy YXRpb25hbCByYXRpb25hbCkKCQkgICAobGFtYmRhICh4IHkpICh0YWcgKHN1Yi1yYXQgeCB5KSkp KQoJICAgICAgKHB1dCAnbXVsICcocmF0aW9uYWwgcmF0aW9uYWwpCgkJICAgKGxhbWJkYSAoeCB5 KSAodGFnIChtdWwtcmF0IHggeSkpKSkKCSAgICAgIChwdXQgJ2RpdiAnKHJhdGlvbmFsIHJhdGlv bmFsKQoJCSAgIChsYW1iZGEgKHggeSkgKHRhZyAoZGl2LXJhdCB4IHkpKSkpCgoJICAgICAgKHB1 dCAnbWFrZSAncmF0aW9uYWwKCQkgICAobGFtYmRhIChuIGQpICh0YWcgKG1ha2UtcmF0IG4gZCkp KSkKCSAgICAgIChwdXQgJ2VxdT8gJyhyYXRpb25hbCByYXRpb25hbCkKCQkgICAobGFtYmRhICh4 IHkpICh6ZXJvPyAobnVtZXIgKHN1Yi1yYXQgeCB5KSkpKSkKCSAgICAgIChwdXQgJ3plcm8/ICco cmF0aW9uYWwpIChsYW1iZGEgKHgpICh6ZXJvPyAobnVtZXIgeCkpKSkKCSAgICAgICM7KHB1dCAn cHJvamVjdCAnKHJhdGlvbmFsKSAobGFtYmRhICh4KSAKCQkJCQkgIChleGFjdCAodHJ1bmNhdGUg KC8gKG51bWVyIHgpIChkZW5vbSB4KSkpKSkpCgkgICAgICAjOyhwdXQgJ3RvLXJlYWwgJyhyYXRp b25hbCkgKGxhbWJkYSAoeCkgKC8gKG51bWVyIChjb250ZW50cyB4KSkgKGRlbm9tIChjb250ZW50 cyB4KSkpKSkKCSAgICAgICdkb25lKQoKCSAgICAoZGVmaW5lIChtYWtlLXJhdGlvbmFsIG4gZCkK CSAgICAgICgoZ2V0ICdtYWtlICdyYXRpb25hbCkgbiBkKSkKCgkgICAgKGRlZmluZSAoaW5zdGFs bC1yZWN0YW5ndWxhci1wYWNrYWdlKQoKCSAgICAgIChkZWZpbmUgKHJlYWwtcGFydCB6KSAoY2Fy IHopKQoJICAgICAgKGRlZmluZSAoaW1hZy1wYXJ0IHopIChjZHIgeikpCgkgICAgICAoZGVmaW5l IChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkgKGNvbnMgeCB5KSkKCSAgICAgIChkZWZpbmUgKG1h Z25pdHVkZSB6KQoJCShzcXVhcmUtcm9vdCAoYWRkIChzcXVhcmUgKHJlYWwtcGFydCB6KSkKCQkJ CSAgKHNxdWFyZSAoaW1hZy1wYXJ0IHopKSkpKQoJICAgICAgKGRlZmluZSAoYW5nbGUgeikKCQko YXJjdGFuZ2VudCAoaW1hZy1wYXJ0IHopIChyZWFsLXBhcnQgeikpKQoJICAgICAgKGRlZmluZSAo bWFrZS1mcm9tLW1hZy1hbmcgciBhKQoJCShjb25zIChtdWwgciAoY29zaW5lIGEpKSAobXVsIHIg KHNpbmUgYSkpKSkKCgkgICAgICAoZGVmaW5lICh0YWcgeCkgKGF0dGFjaC10YWcgJ3JlY3Rhbmd1 bGFyIHgpKQoJICAgICAgKHB1dCAncmVhbC1wYXJ0ICcocmVjdGFuZ3VsYXIpIHJlYWwtcGFydCkK CSAgICAgIChwdXQgJ2ltYWctcGFydCAnKHJlY3Rhbmd1bGFyKSBpbWFnLXBhcnQpCgkgICAgICAo cHV0ICdtYWduaXR1ZGUgJyhyZWN0YW5ndWxhcikgbWFnbml0dWRlKQoJICAgICAgKHB1dCAnYW5n bGUgJyhyZWN0YW5ndWxhcikgYW5nbGUpCgkgICAgICAocHV0ICdtYWtlLWZyb20tcmVhbC1pbWFn ICdyZWN0YW5ndWxhcgoJCSAgIChsYW1iZGEgKHggeSkgKHRhZyAobWFrZS1mcm9tLXJlYWwtaW1h ZyB4IHkpKSkpCgkgICAgICAocHV0ICdtYWtlLWZyb20tbWFnLWFuZyAncmVjdGFuZ3VsYXIKCQkg ICAobGFtYmRhIChyIGEpICh0YWcgKG1ha2UtZnJvbS1tYWctYW5nIHIgYSkpKSkKCSAgICAgICdk b25lKQoKCSAgICAoZGVmaW5lIChpbnN0YWxsLXBvbGFyLXBhY2thZ2UpCgoJICAgICAgKGRlZmlu ZSAobWFnbml0dWRlIHopIChjYXIgeikpCgkgICAgICAoZGVmaW5lIChhbmdsZSB6KSAoY2RyIHop KQoJICAgICAgKGRlZmluZSAobWFrZS1mcm9tLW1hZy1hbmcgciBhKSAoY29ucyByIGEpKQoJICAg ICAgKGRlZmluZSAocmVhbC1wYXJ0IHopCgkJKG11bCAobWFnbml0dWRlIHopIChjb3NpbmUgKGFu Z2xlIHopKSkpCgkgICAgICAoZGVmaW5lIChpbWFnLXBhcnQgeikKCQkobXVsIChtYWduaXR1ZGUg eikgKHNpbmUgKGFuZ2xlIHopKSkpCgkgICAgICAoZGVmaW5lIChtYWtlLWZyb20tcmVhbC1pbWFn IHggeSkKCQkoY29ucyAoc3F1YXJlLXJvb3QgKGFkZCAoc3F1YXJlIHgpIChzcXVhcmUgeSkpKQoJ CSAgICAgIChhcmN0YW5nZW50IHkgeCkpKQoKCSAgICAgIChkZWZpbmUgKHRhZyB4KSAoYXR0YWNo LXRhZyAncG9sYXIgeCkpCgkgICAgICAocHV0ICdyZWFsLXBhcnQgJyhwb2xhcikgcmVhbC1wYXJ0 KQoJICAgICAgKHB1dCAnaW1hZy1wYXJ0ICcocG9sYXIpIGltYWctcGFydCkKCSAgICAgIChwdXQg J21hZ25pdHVkZSAnKHBvbGFyKSBtYWduaXR1ZGUpCgkgICAgICAocHV0ICdhbmdsZSAnKHBvbGFy KSBhbmdsZSkKCSAgICAgIChwdXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ3BvbGFyCgkJICAgKGxh bWJkYSAoeCB5KSAodGFnIChtYWtlLWZyb20tcmVhbC1pbWFnIHggeSkpKSkKCSAgICAgIChwdXQg J21ha2UtZnJvbS1tYWctYW5nICdwb2xhcgoJCSAgIChsYW1iZGEgKHIgYSkgKHRhZyAobWFrZS1m cm9tLW1hZy1hbmcgciBhKSkpKQoJICAgICAgJ2RvbmUpCgoJICAgIChkZWZpbmUgKGluc3RhbGwt Y29tcGxleC1wYWNrYWdlKQoJICAgICAgKGRlZmluZSAobWFrZS1mcm9tLXJlYWwtaW1hZyB4IHkp CgkJKChnZXQgJ21ha2UtZnJvbS1yZWFsLWltYWcgJ3JlY3Rhbmd1bGFyKSB4IHkpKQoJICAgICAg KGRlZmluZSAobWFrZS1mcm9tLW1hZy1hbmcgciBhKQoJCSgoZ2V0ICdtYWtlLWZyb20tbWFnLWFu ZyAncG9sYXIpIHIgYSkpCgkgICAgICAoZGVmaW5lIChhZGQtY29tcGxleCB6MSB6MikKCQkobWFr ZS1mcm9tLXJlYWwtaW1hZyAoYWRkIChyZWFsLXBhcnQgejEpIChyZWFsLXBhcnQgejIpKQoJCQkJ ICAgICAoYWRkIChpbWFnLXBhcnQgejEpIChpbWFnLXBhcnQgejIpKSkpCgkgICAgICAoZGVmaW5l IChzdWItY29tcGxleCB6MSB6MikKCQkobWFrZS1mcm9tLXJlYWwtaW1hZyAoc3ViIChyZWFsLXBh cnQgejEpIChyZWFsLXBhcnQgejIpKQoJCQkJICAgICAoc3ViIChpbWFnLXBhcnQgejEpIChpbWFn LXBhcnQgejIpKSkpCgkgICAgICAoZGVmaW5lIChtdWwtY29tcGxleCB6MSB6MikKCQkobWFrZS1m cm9tLW1hZy1hbmcgKG11bCAobWFnbml0dWRlIHoxKSAobWFnbml0dWRlIHoyKSkKCQkJCSAgIChh ZGQgKGFuZ2xlIHoxKSAoYW5nbGUgejIpKSkpCgkgICAgICAoZGVmaW5lIChkaXYtY29tcGxleCB6 MSB6MikKCQkobWFrZS1mcm9tLW1hZy1hbmcgKGRpdiAobWFnbml0dWRlIHoxKSAobWFnbml0dWRl IHoyKSkKCQkJCSAgIChzdWIgKGFuZ2xlIHoxKSAoYW5nbGUgejIpKSkpCgkgICAgICAoZGVmaW5l ICh0YWcgeikgKGF0dGFjaC10YWcgJ2NvbXBsZXggeikpCgkgICAgICAocHV0ICdhZGQgJyhjb21w bGV4IGNvbXBsZXgpCgkJICAgKGxhbWJkYSAoejEgejIpICh0YWcgKGFkZC1jb21wbGV4IHoxIHoy KSkpKQoJICAgICAgKHB1dCAnc3ViICcoY29tcGxleCBjb21wbGV4KQoJCSAgIChsYW1iZGEgKHox IHoyKSAodGFnIChzdWItY29tcGxleCB6MSB6MikpKSkKCSAgICAgIChwdXQgJ211bCAnKGNvbXBs ZXggY29tcGxleCkKCQkgICAobGFtYmRhICh6MSB6MikgKHRhZyAobXVsLWNvbXBsZXggejEgejIp KSkpCgkgICAgICAocHV0ICdkaXYgJyhjb21wbGV4IGNvbXBsZXgpCgkJICAgKGxhbWJkYSAoejEg ejIpICh0YWcgKGRpdi1jb21wbGV4IHoxIHoyKSkpKQoJICAgICAgKHB1dCAnbWFrZS1mcm9tLXJl YWwtaW1hZyAnY29tcGxleAoJCSAgIChsYW1iZGEgKHggeSkgKHRhZyAobWFrZS1mcm9tLXJlYWwt aW1hZyB4IHkpKSkpCgkgICAgICAocHV0ICdtYWtlLWZyb20tbWFnLWFuZyAnY29tcGxleAoJCSAg IChsYW1iZGEgKHIgYSkgKHRhZyAobWFrZS1mcm9tLW1hZy1hbmcgciBhKSkpKQoJICAgICAgKHB1 dCAnZXF1PyAnKGNvbXBsZXggY29tcGxleCkKCQkgICAobGFtYmRhICh4IHkpIChhbmQgKD0gMCAo cmVhbC1wYXJ0IChzdWItY29tcGxleCB4IHkpKSkKCQkJCSAgICAgICg9IDAgKGltYWctcGFydCAo c3ViLWNvbXBsZXggeCB5KSkpKSkpCgkgICAgICAocHV0ICdlcXU/ICcocmVjdGFuZ3VsYXIgcG9s YXIpIGVxdT8pCgkgICAgICAocHV0ICdlcXU/ICcocG9sYXIgcmVjdGFuZ3VsYXIpIGVxdT8pCgkg ICAgICAocHV0ICd6ZXJvPyAnKGNvbXBsZXgpCgkJICAgKGxhbWJkYSAoeCkgKGVxdT8gKHRhZyB4 KSAodGFnIChtYWtlLWZyb20tcmVhbC1pbWFnIDAgMCkpKSkpCgkgICAgICAocHV0ICdwcm9qZWN0 ICcoY29tcGxleCkgKGxhbWJkYSAoeikgKHJlYWwtcGFydCB6KSkpCgkgICAgICAnZG9uZSkKCgkg ICAgKGRlZmluZSAobWFrZS1jb21wbGV4LWZyb20tcmVhbC1pbWFnIHggeSkKCSAgICAgICgoZ2V0 ICdtYWtlLWZyb20tcmVhbC1pbWFnICdjb21wbGV4KSB4IHkpKQoKCSAgICAoZGVmaW5lIChtYWtl LWNvbXBsZXgtZnJvbS1tYWctYW5nIHIgYSkKCSAgICAgICgoZ2V0ICdtYWtlLWZyb20tbWFnLWFu ZyAnY29tcGxleCkgciBhKSkKCgkgICAgKGluc3RhbGwtcmVjdGFuZ3VsYXItcGFja2FnZSkKCSAg ICAoaW5zdGFsbC1wb2xhci1wYWNrYWdlKQoJICAgIChpbnN0YWxsLXJhdGlvbmFsLXBhY2thZ2Up CgoJICAgIChpbnN0YWxsLWNvbXBsZXgtcGFja2FnZSkKCgkgICAgKHB1dCAncmVhbC1wYXJ0ICco Y29tcGxleCkgcmVhbC1wYXJ0KQoJICAgIChwdXQgJ2ltYWctcGFydCAnKGNvbXBsZXgpIGltYWct cGFydCkKCSAgICAocHV0ICdtYWduaXR1ZGUgJyhjb21wbGV4KSBtYWduaXR1ZGUpCgkgICAgKHB1 dCAnYW5nbGUgJyhjb21wbGV4KSBhbmdsZSkKCSAgICAoZGVmaW5lIChwb2x5bm9taWFsPyB4KQoJ ICAgICAgKGVxPyAodHlwZS10YWcgeCkgJ3BvbHlub21pYWwpKQoJICAgIChkZWZpbmUgbnVtZXJp Yy10b3dlciAobGlzdCAnaW50ZWdlciAnc2NoZW1lLW51bWJlciAnY29tcGxleCkpCgkgICAgKGRl ZmluZSAobnVtZXJpYz8geCkKCSAgICAgIChtZW1xIHggbnVtZXJpYy10b3dlcikpCgkgICAgKGRl ZmluZSAodHlwZTE8PXR5cGUyPyB0eXBlMSB0eXBlMikKCSAgICAgIChpZiAobm90IChtZW1xIHR5 cGUxIG51bWVyaWMtdG93ZXIpKQoJCSAgKGVycm9yICJUeXBlIDEgbm90IGluIHRoZSBudW1lcmlj IHRvd2VyIikpCgkgICAgICAoaWYgKG5vdCAobWVtcSB0eXBlMiBudW1lcmljLXRvd2VyKSkKCQkg IChlcnJvciAiVHlwZSAyIG5vdCBpbiB0aGUgbnVtZXJpYyB0b3dlciIpKQoJICAgICAgKGxldCBs b29wICgodHlwZXMgbnVtZXJpYy10b3dlcikpCgkJKGNvbmQgKChudWxsPyB0eXBlcykgKGVycm9y ICJUeXBlIDEgYW5kIHR5cGUgMiBhcmUgaW5jb21wYXJhYmxlIiB0eXBlMSB0eXBlMikpCgkJICAg ICAgKChlcT8gKGNhciB0eXBlcykgdHlwZTEpICN0KQoJCSAgICAgICgoZXE/IChjYXIgdHlwZXMp IHR5cGUyKSAjZikKCQkgICAgICAoZWxzZSAobG9vcCAoY2RyIHR5cGVzKSkpKSkpCgkgICAgKGRl ZmluZSAoY29tcGFyYWJsZT8gdHlwZTEgdHlwZTIpIAoJICAgICAgKGFuZCAobWVtcSB0eXBlMSBu dW1lcmljLXRvd2VyKSAKCQkgIChtZW1xIHR5cGUyIG51bWVyaWMtdG93ZXIpKSkKCSAgICAoZGVm aW5lIChyYWlzZS10eXBlIHgpCgkgICAgIzsoc2hvdyAjdCAiUmFpc2luZyB0eXBlIG9mOiAiIChk aXNwbGF5ZWQgeCkgIlxuIikKCSAgICAgIChsZXQgKChjb252ZXJ0ZXIgKGdldC1jb2VyY2lvbiAo dHlwZS10YWcgeCkgKGhpZ2hlci10eXBlICh0eXBlLXRhZyB4KSkpKSkKCQkoaWYgY29udmVydGVy CgkJICAgIChjb252ZXJ0ZXIgeCkKCQkgICAgKGVycm9yICJObyBjb2VyY2lvbiBmb3VuZCBmb3Ig eCIgKHR5cGUtdGFnIHgpIHgpKSkpCgkgIChkZWZpbmUgKGhpZ2hlci10eXBlIHgpCgkgICAgKGxl dCAoKHRhaWwgKG1lbXEgeCBudW1lcmljLXRvd2VyKSkpCgkgICAgICAoY29uZCAoKGVxPyAjZiB0 YWlsKSAoZXJyb3IgIlR5cGUgbm90IGluIHRoZSB0b3dlciIgeCkpCgkJICAgICgobnVsbD8gKGNk ciB0YWlsKSkgKGVycm9yICJBbHJlYWR5IHRoZSBoaWdoZXN0IHR5cGU6IiB4KSkKCQkgICAgKGVs c2UgKGNhZHIgdGFpbCkpKSkpCgoJICAoc2hvdyAjdCAiVGVzdDogSGlnaGVyIHRoYW4gJ2ludGVn ZXI6ICIgKGhpZ2hlci10eXBlICdpbnRlZ2VyKSAiXG4iKQoJICAgIChkZWZpbmUgKHJlbWFpbmRl ci1pbnRlZ2VyIGEgYikKCSAgICAgICh3aGVuIChvciAobm90IChpbnRlZ2VyPyBhKSkgKG5vdCAo aW50ZWdlcj8gYikpKQoJCShlcnJvciAiQXJndW1lbnRzIG11c3QgYmUgaW50ZWdlcnMiIGEgYikp CgkgICAgICAocmVtYWluZGVyIGEgYikpCgoJICAgIChwdXQgJ3JlbWFpbmRlciAnKGludGVnZXIg aW50ZWdlcikgcmVtYWluZGVyLWludGVnZXIpCgkgICAgKGRlZmluZSAocmVtYWluZGVyLWdlbmVy YWxpemVkIGEgYikgKGFwcGx5LWdlbmVyaWMgJ3JlbWFpbmRlciBhIGIpKQoKCSAgICAoZGVmaW5l IChwcm9qZWN0IG9iaikKCSAgICAgIChhcHBseS1nZW5lcmljICdwcm9qZWN0IG9iaikpCgkgICAg KGRlZmluZSAoZHJvcHBhYmxlPyBvYmopCgkgICAgICAjOyhzaG93ICN0ICJkcm9wcGFibGU/OiBv Ymo9IiBvYmogIiwgdHlwZS10YWc9IiAodHlwZS10YWcgb2JqKSAiXG4iKQoJICAgICAgKGNvbmQg KChlcT8gKHR5cGUtdGFnIG9iaikgJ3JhdGlvbmFsKSAoYmVnaW4gKHNob3cgI3QgInJhdGlvbmFs IG5vdCBkcm9wcGFibGU6ICNmXG4iKSAjZikpCgkJICAgICgobm90IChtZW1xICh0eXBlLXRhZyBv YmopIG51bWVyaWMtdG93ZXIpKSAjZikKCQkgICAgKChlcT8gKHR5cGUtdGFnIG9iaikgKGNhciBu dW1lcmljLXRvd2VyKSkgI2YpCgkJICAgICgoZXF1PyBvYmogKHJhaXNlLXR5cGUgKHByb2plY3Qg b2JqKSkpICN0KQoJCSAgICAoZWxzZSAjZikpKQoJICAgIChkZWZpbmUgKGRyb3Agb2JqKSAKCSAg ICAgIChpZiAoZHJvcHBhYmxlPyBvYmopCgkJICAoZHJvcCAocHJvamVjdCBvYmopKQoJCSAgb2Jq KSkKCgkgICAgKGRlZmluZSAoYXBwbHktZ2VuZXJpYyBvcCAuIGFyZ3MpCgkgICAgICAjOyhzaG93 ICN0ICJhcHBseS1nZW5lcmljOmVudHJ5XG4iKQoJICAgICAgIzsoZXJyb3IgImRlYnVnIikKCSAg ICAgIChkZWZpbmUgKHZhcmlhYmxlIHBvbHkpIChjYXIgcG9seSkpCgkgICAgICAoZGVmaW5lIChh bGwtYXJndHlwZXMtc2FtZT8gLiBhcmdzKQoJCShsZXQgKCh0eXBlICh0eXBlLXRhZyAoY2FyIGFy Z3MpKSkpCgkJICAoYWNjdW11bGF0ZSAobGFtYmRhICh4IHkpIChhbmQgeCB5KSkgI3QgKG1hcCAo bGFtYmRhICh4KSAoZXE/IHR5cGUgeCkpIGFyZ3MpKSkpCgkgICAgICAoZGVmaW5lIChjb2VyY2lv bi1pZi1leGlzdHM/IHR5cGUgYXJnLXRhZ3MpCgkJKGxldCAoKGNvZXJjaW9uLWxpc3QgKG1hcCAo bGFtYmRhICh4KSAKCQkJCQkgICAgKGlmIChlcT8gdHlwZSB4KQoJCQkJCQlpZGVudGl0eQoJCQkJ CQkoZ2V0LWNvZXJjaW9uIHggdHlwZSkpKSBhcmctdGFncykpKQoJCSAgKGlmIChhY2N1bXVsYXRl IChsYW1iZGEgKHggeSkgKGFuZCB4IHkpKSAjdCBjb2VyY2lvbi1saXN0KQoJCSAgICAgIGNvZXJj aW9uLWxpc3QKCQkgICAgICAjZikpKQoJICAgICAgKGRyb3AgKGxldCogKCh0eXBlLXRhZ3MgKG1h cCB0eXBlLXRhZyBhcmdzKSkKCQkJICAgKHByb2MgKGdldCBvcCB0eXBlLXRhZ3MpKSkKCQkgICAg ICM7KHNob3cgI3QgImFwcGx5LWdlbmVyaWM6IHR5cGUtdGFncz0iIAoJCQkgICAgICAgKGRpc3Bs YXllZCB0eXBlLXRhZ3MpCgkJCSAgICAgICAiIHByb2M9IiAod3JpdHRlbiBwcm9jKQoJCQkgICAg ICAgIiBwcm9jLXNvdXJjZT0iICh0aGluZ3ktc291cmNlIHByb2MpICJcbiIpCgkJICAgICAgKGNv bmQgKHByb2MgKGFwcGx5IHByb2MgKG1hcCBjb250ZW50cyBhcmdzKSkpCgkJCSAgICAoKD0gMSAo bGVuZ3RoIGFyZ3MpKQoJCSAgICAgIzsoc2hvdyAjdCAiTm8gcHJvYyBmb3VuZCBmb3Igb3A9IiBv cCAiLCB0eXBlLXRhZ3M9IiB0eXBlLXRhZ3MgIiwgYXJnPSIgKGRpc3BsYXllZCBhcmdzKSAiXG4i KQoJCQkgICAgIChhcHBseS1nZW5lcmljIG9wIChyYWlzZS10eXBlIChjYXIgYXJncykpKSkKCQkJ ICAgICgoPSAyIChsZW5ndGggYXJncykpCgkJCSAgICAgKGNvbmQgKChhbmQgKGVxPyAncG9seW5v bWlhbCAoY2FyIHR5cGUtdGFncykpCgkJCQkgICAgICAgKG51bWVyaWM/IChjYWRyIHR5cGUtdGFn cykpKQoJCQkJICAgIChhcHBseS1nZW5lcmljIG9wCgkJCQkJCSAgIChjYXIgYXJncykKCQkJCQkJ ICAgKG1ha2UtcG9seW5vbWlhbCAodmFyaWFibGUgKGNvbnRlbnRzIChjYXIgYXJncykpKQoJCQkJ CQkJCSAgICAobGlzdCAobGlzdCAwIChjYWRyIGFyZ3MpKSkpKSkKCQkJCSAgICgoYW5kIChudW1l cmljPyAoY2FyIHR5cGUtdGFncykpCgkJCQkgKGVxPyAncG9seW5vbWlhbCAoY2FkciB0eXBlLXRh Z3MpKSkKCQkJCSAgICAoYXBwbHktZ2VuZXJpYyBvcAoJCQkJCQkgICAobWFrZS1wb2x5bm9taWFs ICh2YXJpYWJsZSAoY29udGVudHMgKGNhZHIgYXJncykpKQoJCQkJCQkJCSAgICAobGlzdCAobGlz dCAwIChjYXIgYXJncykpKSkKCQkJCQkJICAgKGNhZHIgYXJncykpKQkJCSAKCQkJCSAgICgoYW5k IChnZXQtY29lcmNpb24gKGNhciB0eXBlLXRhZ3MpIChjYWRyIHR5cGUtdGFncykpCgkJCQkgICAg ICAgKG5vdCAoZXE/IChjYXIgdHlwZS10YWdzKSAoY2FkciB0eXBlLXRhZ3MpKSkpCgkJCQkgICAg KGFwcGx5LWdlbmVyaWMgb3AKCQkJCQkJICAgKChnZXQtY29lcmNpb24KCQkJCQkJICAgICAoY2Fy IHR5cGUtdGFncykKCQkJCQkJICAgICAoY2FkciB0eXBlLXRhZ3MpKSAoY2FyIGFyZ3MpKQoJCQkJ CQkgICAoY2FkciBhcmdzKSkpCgkJCQkgICAoKGFuZCAoZ2V0LWNvZXJjaW9uIChjYWRyIHR5cGUt dGFncykgKGNhciB0eXBlLXRhZ3MpKQoJCQkJICAgICAgIChub3QgKGVxPyAoY2FyIHR5cGUtdGFn cykgKGNhZHIgdHlwZS10YWdzKSkpKQoJCQkJICAgIChhcHBseS1nZW5lcmljIG9wCgkJCQkJCSAg IChjYXIgYXJncykKCQkJCQkJICAgKChnZXQtY29lcmNpb24KCQkJCQkJICAgICAoY2FkciB0eXBl LXRhZ3MpCgkJCQkJCSAgICAgKGNhciB0eXBlLXRhZ3MpKSAoY2FkciBhcmdzKSApKSkKCQkJCSAg ICgoY29tcGFyYWJsZT8gKGNhciB0eXBlLXRhZ3MpIChjYWRyIHR5cGUtdGFncykpCgkJCQkgICAg KGlmCgkJCQkgICAgICh0eXBlMTw9dHlwZTI/IChjYXIgdHlwZS10YWdzKSAoY2FkciB0eXBlLXRh Z3MpKQoJCQkJICAgICAoYXBwbHktZ2VuZXJpYyBvcCAocmFpc2UtdHlwZSAoY2FyIGFyZ3MpKSAo Y2FkciBhcmdzKSkKCQkJCSAgICAgKGFwcGx5LWdlbmVyaWMgb3AgKGNhciBhcmdzKSAgKHJhaXNl LXR5cGUgKGNhZHIgYXJncykpKSkpCgkJCQkgICAoZWxzZSAoZXJyb3IgImFwcGx5LWdlbmVyaWM6 SW5jb21wYXJhYmxlIHR5cGVzOiAodHlwZS10YWdzLGFyZ3MpPSIgdHlwZS10YWdzIGFyZ3MpKSkp CgkJCSAgICAoKGFuZCAoPiAobGVuZ3RoIGFyZ3MpIDIpIChub3QgKGFsbC1hcmd0eXBlcy1zYW1l PyBhcmdzKSkpCgkJCSAgICAgKGxldCB0eXBlcy1sb29wICgodHlwZXMgdHlwZS10YWdzKSkKCQkJ ICAgICAgIChsZXQgKChsaXN0LW9mLWNvZXJjaW9uLWZ1bmN0aW9ucwoJCQkJICAgICAgKGNvZXJj aW9uLWlmLWV4aXN0cz8gKGNhciB0eXBlcykgdHlwZS10YWdzKSkpCgkJCQkgKGlmIGxpc3Qtb2Yt Y29lcmNpb24tZnVuY3Rpb25zCgkJCQkgICAgIChhcHBseSBhcHBseS1nZW5lcmljIChjb25zIG9w IChtYXAgKGxhbWJkYSAoZnVuIGFyZykgKGZ1biBhcmcpKQoJCQkJCQkJCQlsaXN0LW9mLWNvZXJj aW9uLWZ1bmN0aW9ucwoJCQkJCQkJCQlhcmdzKSkpCgkJCQkgICAgIChpZiAobm90IChudWxsPyAo Y2RyIHR5cGVzKSkpCgkJCQkJICh0eXBlcy1sb29wIChjZHIgdHlwZXMpKQoJCQkJCSAoZXJyb3Ig ImFwcGx5LWdlbmVyaWM6RXZlbiBjb2VyY2lvbnMgZmFpbGVkLiBObyBtZXRob2QgZm9yIHRoZXNl IHR5cGVzLiIpKSkpKSkKCQkJICAgIChlbHNlIChlcnJvciAiYXBwbHktZ2VuZXJpYzpObyBtZXRo b2QgZm9yIHRoZXNlIHR5cGVzIgoJCQkJCSAobGlzdCBvcCB0eXBlLXRhZ3MpKSkpKSkpCgkgICAg KHNob3cgI3QgIlRlc3QgMzA6IHN0YXJ0XG4iKQoJICAgIChzaG93ICN0ICJUZXN0IDMwOihhZGQg KG1ha2Utc2NoZW1lLW51bWJlciAxKSAobWFrZS1zY2hlbWUtbnVtYmVyIDEpKT0gIgoJICAgICAg IChhZGQgKG1ha2Utc2NoZW1lLW51bWJlciAxKSAobWFrZS1zY2hlbWUtbnVtYmVyIDEpKSAiXG4i KQoJICAgICM7KGVycm9yICJEZWJ1ZzYiKQoJICAgIChkZWZpbmUgKHNjaGVtZS1udW1iZXItPmNv bXBsZXggbikKCSAgICAgIChtYWtlLWNvbXBsZXgtZnJvbS1yZWFsLWltYWcgKGNvbnRlbnRzIG4p IDApKQoJICAgIChwdXQtY29lcmNpb24gJ3NjaGVtZS1udW1iZXIKCQkJICAnY29tcGxleAoJCQkg IHNjaGVtZS1udW1iZXItPmNvbXBsZXgpCgoJICAgIChzaG93ICN0ICJUZXN0IDMyOiBzdGFydCIp CgkgICAgKHNob3cgI3QgIlRlc3QgMzI6IFN1YnRyYWN0aW5nIGNvbXBsZXggbnVtYmVyczogIgoJ CSAgKHN1YgoJCSAgIChtYWtlLWNvbXBsZXgtZnJvbS1yZWFsLWltYWcgMS4xIDIpCgkJICAgKG1h a2UtY29tcGxleC1mcm9tLXJlYWwtaW1hZyAwIDIpKSAiXG4iKQoKCgoJICAgIChwdXQgJ21heDMt bWFnbml0dWRlICcoY29tcGxleCBjb21wbGV4IGNvbXBsZXgpIChsYW1iZGEgKHoxIHoyIHozKQoJ CQkJCQkJICAgICAgKG1heCAobWFnbml0dWRlIHoxKSAobWFnbml0dWRlIHoyKSAobWFnbml0dWRl IHozKSkpKQoJICAgIChkZWZpbmUgKG1heDMtbWFnbml0dWRlIHgxIHgyIHgzKSAoYXBwbHktZ2Vu ZXJpYyAnbWF4My1tYWduaXR1ZGUgeDEgeDIgeDMpKQoJICAgIChkZWZpbmUgKGlkZW50aXR5IHgp IHgpCgoJICAjOyhkZWZpbmUgbnVtZXJpYy10b3dlciAobGlzdCAnaW50ZWdlciAncmF0aW9uYWwg J3NjaGVtZS1udW1iZXIgJ2NvbXBsZXgpKQoKCgkgICM7KGRlZmluZSAoaGlnaGVyLXR5cGUgeCkK CSAgICAoc2hvdyAjdCAiaGlnaGVyLXR5cGU6eD0iIChkaXNwbGF5ZWQgeCkgIlxuIikKCSAgICAg IChkZWZpbmUgKGZpbmQtaGlnaGVyLXR5cGUgeCB0eXBlcykKCQkoY29uZCAoKG9yIChudWxsPyB0 eXBlcykgKG51bGw/IChjZHIgdHlwZXMpKSkgKGVycm9yICJObyB0eXBlIGhpZ2hlciB0aGFuIGdp dmVuIiB4IHR5cGVzKSkKCQkgICAgICAoKGVxPyB4IChjYXIgdHlwZXMpKSAoY2FkciB0eXBlcykp CgkJICAgICAgKGVsc2UgKGZpbmQtaGlnaGVyLXR5cGUgeCAoY2RyIHR5cGVzKSkpKSkKCSAgICAg IChmaW5kLWhpZ2hlci10eXBlIHggbnVtZXJpYy10b3dlcikpCgoJICAjOyhzaG93ICN0ICJUZXN0 OiBIaWdoZXIgdGhhbiAnY29tcGxleDogIiAoaGlnaGVyLXR5cGUgJ2NvbXBsZXgpICJcbiIpCgoJ ICAgICM7KGRlZmluZSAoaW50ZWdlci0+cmF0aW9uYWwgeCkKCSAgICAgIChtYWtlLXJhdGlvbmFs IHggMSkpCgoJICAgICM7KGRlZmluZSAocmF0aW9uYWwtPnNjaGVtZS1udW1iZXIgeCkKCSAgICAg IChtYWtlLXNjaGVtZS1udW1iZXIgKChnZXQgJ3RvLXJlYWwgJyhyYXRpb25hbCkpIHgpKSkKCSAg ICAjOyhwdXQtY29lcmNpb24gJ2ludGVnZXIgJ3JhdGlvbmFsIGludGVnZXItPnJhdGlvbmFsKQoJ ICAgICM7KHB1dC1jb2VyY2lvbiAncmF0aW9uYWwgJ3NjaGVtZS1udW1iZXIgcmF0aW9uYWwtPnNj aGVtZS1udW1iZXIpCgkgICAgICAoZGVmaW5lIChyZWR1Y2UtaW50ZWdlcnMgbiBkKQoJCSAgIChs ZXQgKChnIChnY2QgbiBkKSkpCgkJICAgICAobGlzdCAoLyBuIGcpICgvIGQgZykpKSkKCSAgKHB1 dCAncmVkdWNlICcoaW50ZWdlciBpbnRlZ2VyKSByZWR1Y2UtaW50ZWdlcnMpCgkgIChkZWZpbmUg KHJlZHVjZSBhIGIpIChhcHBseS1nZW5lcmljICdyZWR1Y2UgYSBiKSkKCSAgKGRlZmluZSAoaW5z dGFsbC1wb2x5bm9taWFsLXBhY2thZ2UpCgkgICAgIzsoZGVmaW5lIChjb250ZW50cyBnZW5lcmlj LW9iamVjdCkKCSAgICAgIChjZHIgZ2VuZXJpYy1vYmplY3QpKQoJICAgICAgKGRlZmluZSAobWFr ZS1wb2x5IHZhcmlhYmxlIHRlcm0tbGlzdCkKCQkoY29ucyB2YXJpYWJsZSB0ZXJtLWxpc3QpKQoJ ICAgICAgKGRlZmluZSAodmFyaWFibGUgcCkgKGNhciBwKSkKCSAgICAgIChkZWZpbmUgKHRlcm0t bGlzdCBwKQoJCShjZHIgcCkpCgkgICAgICAoZGVmaW5lICh2YXJpYWJsZT8geCkgKHN5bWJvbD8g eCkpCgkgICAgICAoZGVmaW5lIChzYW1lLXZhcmlhYmxlPyB2MSB2MikKCQkoYW5kICh2YXJpYWJs ZT8gdjEpICh2YXJpYWJsZT8gdjIpIChlcT8gdjEgdjIpKSkKCSAgICAgIChkZWZpbmUgKD1udW1i ZXI/IGV4cCBudW0pCgkJKGFuZCAobnVtYmVyPyBleHApICg9IGV4cCBudW0pKSkKCSAgICAgIChk ZWZpbmUgKHRoZS1lbXB0eS10ZXJtbGlzdCkgJygpKQoKCSAgICAgIChkZWZpbmUgKHJlc3QtdGVy bXMgdGVybS1saXN0KSAoY2RyIHRlcm0tbGlzdCkpCgkgICAgICAoZGVmaW5lIChlbXB0eS10ZXJt bGlzdD8gdGVybS1saXN0KSAobnVsbD8gdGVybS1saXN0KSkKCgkgICAgICAoZGVmaW5lIChtYWtl LXRlcm0gb3JkZXIgY29lZmYpIChsaXN0IG9yZGVyIGNvZWZmKSkKCSAgICAgIChkZWZpbmUgKG9y ZGVyIHRlcm0pIChjYXIgdGVybSkpCgkgICAgICAoZGVmaW5lIChjb2VmZiB0ZXJtKSAoY2FkciB0 ZXJtKSkKCSAgICAgIChkZWZpbmUgKHRhZyBwKSAoYXR0YWNoLXRhZyAncG9seW5vbWlhbCBwKSkK CSAgICAgIChwdXQgJ21ha2UgJ3BvbHlub21pYWwKCQkgICAobGFtYmRhICh2YXIgdGVybXMpICh0 YWcgKG1ha2UtcG9seSB2YXIgdGVybXMpKSkpCgkgICAgICAjOyhjb250aW51ZWQgb24gbmV4dCBw YWdlKQoKCSAgICAgIChkZWZpbmUgKGFkZC1wb2x5IHAxIHAyKQoJCSM7KHNob3cgI3QgImFkZC1w b2x5OiBwMT0iIHAxICIsIHAyPSIgcDIgIlxuIikKCQkoaWYgKHNhbWUtdmFyaWFibGU/ICh2YXJp YWJsZSBwMSkgKHZhcmlhYmxlIHAyKSkKCQkgICAgKG1ha2UtcG9seSAodmFyaWFibGUgcDEpCgkJ CSAgICAgICAoYWRkLXRlcm1zICh0ZXJtLWxpc3QgcDEpCgkJCQkJICAodGVybS1saXN0IHAyKSkp CgkJICAgIChsZXQgKChyZXMgKGNkciAoaWYgKHZhcmlhYmxlXzEtb3JkZXI8dmFyaWFibGVfMi1v cmRlciAodmFyaWFibGUgcDEpICh2YXJpYWJsZSBwMikpCgkJCShhZGQgKHRhZyBwMSkgKHRhZyAo bWFrZS1wb2x5ICh2YXJpYWJsZSBwMSkgKGxpc3QgKG1ha2UtdGVybSAwICh0YWcgcDIpKSkpKSkK CQkJKGFkZCAodGFnIChtYWtlLXBvbHkgKHZhcmlhYmxlIHAyKSAobGlzdCAobWFrZS10ZXJtIDAg KHRhZyBwMSkpKSkpICh0YWcgcDIpKSkpKSkKCQkgICAgICAjOyhzaG93ICN0ICJhZGQtcG9seTpy ZXN1bHQ6ICIgKGRpc3BsYXllZCByZXMpICJcbiIpIHJlcykpKQoKCSAgICAgIChzaG93ICN0ICJU ZXN0WTI6IHBvbHkgb2YgcG9seTogIgoJCSAgICAobWFrZS1wb2x5ICd4IChsaXN0CgkJCQkgICAo bWFrZS10ZXJtIDMgKG1ha2UtcG9seQoJCQkJCQkgJ3kgKGxpc3QgKG1ha2UtdGVybSAxIDEpICht YWtlLXRlcm0gMCAxKSkpKQoJCQkJICAgKG1ha2UtdGVybSAxIDIpCgkJCQkgICAobWFrZS10ZXJt IDAgNCkpKSAiXG4iKQoKCSAgICAgIChkZWZpbmUgKHN1Yi1wb2x5IHAxIHAyKQoJCShhZGQtcG9s eSBwMSAobXVsLXBvbHkgcDIgKG1ha2UtcG9seSAodmFyaWFibGUgcDIpIChsaXN0IChtYWtlLXRl cm0gMCAtMSkpKSkpKQoJICAgICAgKGRlZmluZSAoYWRkLXRlcm1zIEwxIEwyKQoJCShjb25kICgo ZW1wdHktdGVybWxpc3Q/IEwxKSBMMikKCQkgICAgICAoKGVtcHR5LXRlcm1saXN0PyBMMikgTDEp CgkJICAgICAgKGVsc2UKCQkgICAgICAgKGxldCAoKHQxIChmaXJzdC10ZXJtIEwxKSkgKHQyIChm aXJzdC10ZXJtIEwyKSkpCgkJCSAoY29uZCAoKD4gKG9yZGVyIHQxKSAob3JkZXIgdDIpKQoJCQkJ KGFkam9pbi10ZXJtCgkJCQkgdDEgKGFkZC10ZXJtcyAocmVzdC10ZXJtcyBMMSkgTDIpKSkKCQkJ ICAgICAgICgoPCAob3JkZXIgdDEpIChvcmRlciB0MikpCgkJCQkoYWRqb2luLXRlcm0KCQkJCSB0 MiAoYWRkLXRlcm1zIEwxIChyZXN0LXRlcm1zIEwyKSkpKQoJCQkgICAgICAgKGVsc2UKCQkJCShh ZGpvaW4tdGVybQoJCQkJIChtYWtlLXRlcm0gKG9yZGVyIHQxKQoJCQkJCSAgICAoYWRkIChjb2Vm ZiB0MSkgKGNvZWZmIHQyKSkpCgkJCQkgKGFkZC10ZXJtcyAocmVzdC10ZXJtcyBMMSkKCQkJCQkg ICAgKHJlc3QtdGVybXMgTDIpKSkpKSkpKSkKCgoJICAgICAgKGRlZmluZSAobXVsLXBvbHkgcDEg cDIpCgkJKGlmIChzYW1lLXZhcmlhYmxlPyAodmFyaWFibGUgcDEpICh2YXJpYWJsZSBwMikpCgkJ ICAgIChtYWtlLXBvbHkgKHZhcmlhYmxlIHAxKQoJCQkgICAgICAgKG11bC10ZXJtcyAodGVybS1s aXN0IHAxKQoJCQkJCSAgKHRlcm0tbGlzdCBwMikpKQoJCSAgICAoY29udGVudHMgKGlmICh2YXJp YWJsZV8xLW9yZGVyPHZhcmlhYmxlXzItb3JkZXIgKHZhcmlhYmxlIHAxKSAodmFyaWFibGUgcDIp KQoJCQkobXVsICh0YWcgcDEpCgkJCSAgICAgKG1ha2UtcG9seW5vbWlhbCAodmFyaWFibGUgcDEp CgkJCQkJICAgICAgKGFkam9pbi10ZXJtCgkJCQkJICAgICAgIChtYWtlLXRlcm0gMAoJCQkJCQkJ ICAodGFnIHAyKSkgKHRoZS1lbXB0eS10ZXJtbGlzdCkpKSkKCQkJKG11bCAodGFnIHAyKQoJCQkg ICAgIChtYWtlLXBvbHlub21pYWwgKHZhcmlhYmxlIHAyKQoJCQkJCSAgICAgIChhZGpvaW4tdGVy bQoJCQkJCSAgICAgICAobWFrZS10ZXJtIDAKCQkJCQkJCSAgKHRhZyBwMSkpICh0aGUtZW1wdHkt dGVybWxpc3QpKSkpKSkKCQkgICAgIzsoZXJyb3IgIlBvbHlzIG5vdCBpbiBzYW1lIHZhciAtLSBN VUwtUE9MWSIKCQkJICAgKGxpc3QgcDEgcDIpKSkpCgkgICAgICAoZGVmaW5lIChkaXYtcG9seSBw MSBwMikKCQkoc2hvdyAjdCAiZGl2LXBvbHk6IHAxPSIgcDEgIiwgcDI9IiBwMiAiXG4iKQoJCShp ZiAoc2FtZS12YXJpYWJsZT8gKHZhcmlhYmxlIHAxKSAodmFyaWFibGUgcDIpKQoJCSAgICAobGV0 ICgocXVvdGllbnQtYW5kLXJlbWFpbmRlciAoZGl2LXRlcm1zICh0ZXJtLWxpc3QgcDEpCgkJCQkJ CQkgICAgICh0ZXJtLWxpc3QgcDIpKSkpCgkJICAgICAgKGxpc3QgKG1ha2UtcG9seSAodmFyaWFi bGUgcDEpIChjYXIgIHF1b3RpZW50LWFuZC1yZW1haW5kZXIpKQoJCQkgICAgKG1ha2UtcG9seSAo dmFyaWFibGUgcDEpIChjYWRyIHF1b3RpZW50LWFuZC1yZW1haW5kZXIpKSkpCgkJICAgICAgKGVy cm9yICJkaXYtcG9seTogUG9seXMgbm90IGluIHRoZSBzYW1lIHZhciIgcDEgcDIpKSkKCSAgICAg IChkZWZpbmUgKGRpdi10ZXJtcyBMMSBMMikKCQkgICAgICAoc2hvdyAjdCAiZGl2LXRlcm1zOiBM MT0iIEwxICIsIEwyPSIgTDIgIlxuIikKCQkgICAgICAoaWYgKGVtcHR5LXRlcm1saXN0PyBMMSkK CQkJICAobGlzdCAodGhlLWVtcHR5LXRlcm1saXN0KSAodGhlLWVtcHR5LXRlcm1saXN0KSkKCQkJ ICAobGV0ICgodDEgKGZpcnN0LXRlcm0gTDEpKQoJCQkJKHQyIChmaXJzdC10ZXJtIEwyKSkpCgkJ CSAgICAoaWYgKD4gKG9yZGVyIHQyKSAob3JkZXIgdDEpKQoJCQkJKGxpc3QgKHRoZS1lbXB0eS10 ZXJtbGlzdCkgTDEpCgkJCQkobGV0ICgobmV3LWMgKGRpdiAoY29lZmYgdDEpIChjb2VmZiB0Mikp KQoJCQkJICAgICAgKG5ldy1vICgtIChvcmRlciB0MSkgKG9yZGVyIHQyKSkpKQoJCQkJICAobGV0 ICgocmVzdC1vZi1yZXN1bHQgKGRpdi10ZXJtcyAodGVybS1saXN0CgkJCQkJCQkJICAgIChzdWIt cG9seQoJCQkJCQkJCSAgICAgKG1ha2UtcG9seSAnZmFrZS12YXIgTDEpCgkJCQkJCQkJICAgICAo bXVsLXBvbHkKCQkJCQkJCQkgICAgICAobWFrZS1wb2x5ICdmYWtlLXZhciAobGlzdCAobWFrZS10 ZXJtIG5ldy1vIG5ldy1jKSkpCgkJCQkJCQkJICAgICAgKG1ha2UtcG9seSAnZmFrZS12YXIgTDIp KSkpCgkJCQkJCQkJICAgTDIpCgkJCQkJCQkpKQoJCQkJICAgICM7KHNob3cgI3QgImRpdi10ZXJt czogcmVzdC1vZi1yZXN1bHQ6ICIgKGRpc3BsYXllZCByZXN0LW9mLXJlc3VsdCkgIlxuIikKCQkJ CSAgICAobGlzdCAoYWRqb2luLXRlcm0gKG1ha2UtdGVybSBuZXctbyBuZXctYykgKGNhciByZXN0 LW9mLXJlc3VsdCkpIChjYWRyIHJlc3Qtb2YtcmVzdWx0KSkKCQkJCSAgICApKSkpKSkKCSAgICAg IChkZWZpbmUgKGdjZC10ZXJtcyBhIGIpCgkgICAgICAoc2hvdyAjdCAiZ2NkLXRlcm1zOiBhPSIg YSAiLCBiPSIgYiAiXG4iKQoJCShpZiAoZW1wdHktdGVybWxpc3Q/IGIpCgkJICAgIGEKCQkgICAg KGdjZC10ZXJtcyBiIChwc2V1ZG9yZW1haW5kZXItdGVybXMgYSBiKSkpKQoJICAgICAgKGRlZmlu ZSAocHNldWRvcmVtYWluZGVyLXRlcm1zIFAgUSkKCQkobGV0ICgoTzEgKG9yZGVyIChmaXJzdC10 ZXJtIFApKSkKCQkgICAgICAoTzIgKG9yZGVyIChmaXJzdC10ZXJtIFEpKSkKCQkgICAgICAoYyAg KGNvZWZmIChmaXJzdC10ZXJtIFEpKSkpCgkJICAgKHNob3cgI3QgInBzZXVkb3JlbWFpbmRlci10 ZXJtczogUD0iIFAgIlxuIikKCQkgICAoc2hvdyAjdCAicHNldWRvcmVtYWluZGVyLXRlcm1zOiBR PSIgUSAiXG4iKQoJCSAgIChzaG93ICN0ICJwc2V1ZG9yZW1haW5kZXItdGVybXM6IE8xPSIgTzEg IlxuIikKCQkgICAoc2hvdyAjdCAicHNldWRvcmVtYWluZGVyLXRlcm1zOiBPMj0iIE8yICJcbiIp CgkJICAgKHNob3cgI3QgInBzZXVkb3JlbWFpbmRlci10ZXJtczogYz0iIGMgIlxuIikKCgkJICAg KHNob3cgI3QgInBzZXVkb3JlbWFpbmRlci10ZXJtczogdGhlIGludGVnZXJpemluZyBmYWN0b3I9 IgoJCSAgICAgIChtYWtlLXRlcm0gMCAoZXhwIGMgKGFkZCAxIChzdWIgTzEgTzIpKSkpICJcbiIg KQoJCSAgIChzaG93ICN0ICJwc2V1ZG9yZW1haW5kZXItdGVybXM6IFAgYWZ0ZXIgbXVsdGlwbGlj YXRpb249IgoJCSAgICAgKG11bC10ZXJtLWJ5LWFsbC10ZXJtcyAKCQkJCQkgKG1ha2UtdGVybSAw IChleHAgYyAoYWRkIDEgKHN1YiBPMSBPMikpKSkgUCkgICJcbiIgKQoJCSAgIChjYWRyIChkaXYt dGVybXMgKG11bC10ZXJtLWJ5LWFsbC10ZXJtcyAKCQkJCQkgKG1ha2UtdGVybSAwIChleHAgYyAo YWRkIDEgKHN1YiBPMSBPMikpKSkgUCkgUSkpKSkKCQkoZGVmaW5lIChtYXByZXN0IG9wZXJhdGlv biB0ZXJtLWxpc3QpCgkJKHNob3cgI3QgIm1hcHJlc3Q6IG9wZXJhdGlvbj0iICh3cml0dGVuIG9w ZXJhdGlvbikgInRlcm0tbGlzdD0iIHRlcm0tbGlzdCAiXG4iICkKCQkgICAgIChpZiAoZW1wdHkt dGVybWxpc3Q/IHRlcm0tbGlzdCkKCQkJICcoKQoJCQkgKGNvbnMgKG9wZXJhdGlvbiB0ZXJtLWxp c3QpIChtYXByZXN0IG9wZXJhdGlvbiAocmVzdC10ZXJtcyB0ZXJtLWxpc3QpKSkpCgkJKQoJCShk ZWZpbmUgKGdjZC1wb2x5IHAxIHAyKQoJCShzaG93ICN0ICJnY2QtcG9seTpwMT0iIHAxICIsIHAy PSIgcDIgIlxuIikgCgoJCShpZiAoc2FtZS12YXJpYWJsZT8gKHZhcmlhYmxlIHAxKSAodmFyaWFi bGUgcDIpKQoJCSAgICAobGV0KiAoKHVub3B0aW1pemVkLXRlcm1saXN0IChnY2QtdGVybXMgKHRl cm0tbGlzdCBwMSkgKHRlcm0tbGlzdCBwMikpKQoJCQkgICAoZmlyc3QtdGVybXMgKG1hcHJlc3Qg Zmlyc3QtdGVybSB1bm9wdGltaXplZC10ZXJtbGlzdCkpCgkJCSAgKGNvZWZmaWNpZW50cyAobWFw IGNvZWZmIGZpcnN0LXRlcm1zKSkKCQkJICAoY29lZmYtZ2NkIChhcHBseSBnY2QgY29lZmZpY2ll bnRzKSkKCQkJICAob3B0aW1pemVkLXRlcm1saXN0IChtdWwtdGVybS1ieS1hbGwtdGVybXMgCgkJ CQkJIChtYWtlLXRlcm0gMCAoZGl2IDEgY29lZmYtZ2NkKSkgdW5vcHRpbWl6ZWQtdGVybWxpc3Qp KSkKCQkgICAgICAgKHNob3cgI3QgImdjZC1wb2x5OiB1bm9wdGltaXplZC10ZXJtbGlzdD0iIHVu b3B0aW1pemVkLXRlcm1saXN0ICJcbiIpCgkJICAgICAgIChzaG93ICN0ICJnY2QtcG9seTogZmly c3QtdGVybXM9IiBmaXJzdC10ZXJtcyAiXG4iKQoJCSAgICAgICAoc2hvdyAjdCAiZ2NkLXBvbHk6 IGNvZWZmaWNpZW50cz0iIGNvZWZmaWNpZW50cyAiXG4iKQoJCSAgICAgICAoc2hvdyAjdCAiZ2Nk LXBvbHk6IGNvZWZmLWdjZD0iIGNvZWZmLWdjZCAiXG4iKQoJCSAgICAgICAobWFrZS1wb2x5ICh2 YXJpYWJsZSBwMSkgb3B0aW1pemVkLXRlcm1saXN0KSkKCQkgICAgKGVycm9yICJkaXYtcG9seTog UG9seXMgbm90IGluIHRoZSBzYW1lIHZhciIgcDEgcDIpKSkKCSAgICAgIChwdXQgJ2djZCAnKHBv bHlub21pYWwgcG9seW5vbWlhbCkKCQkgICAobGFtYmRhICh4IHkpICh0YWcgKGdjZC1wb2x5IHgg eSkpKSkKCSAgICAgIChwdXQgJ2djZCAnKGludGVnZXIgaW50ZWdlcikgZ2NkKQoKCSAgICAgIChk ZWZpbmUgKG11bC10ZXJtcyBMMSBMMikKCQkoaWYgKGVtcHR5LXRlcm1saXN0PyBMMSkKCQkgICAg KHRoZS1lbXB0eS10ZXJtbGlzdCkKCQkgICAgKGFkZC10ZXJtcyAobXVsLXRlcm0tYnktYWxsLXRl cm1zIChmaXJzdC10ZXJtIEwxKSBMMikKCQkJICAgICAgIChtdWwtdGVybXMgKHJlc3QtdGVybXMg TDEpIEwyKSkpKQoKCSAgICAgIChkZWZpbmUgKG11bC10ZXJtLWJ5LWFsbC10ZXJtcyB0MSBMKQoJ CShpZiAoZW1wdHktdGVybWxpc3Q/IEwpCgkJICAgICh0aGUtZW1wdHktdGVybWxpc3QpCgkJICAg IChsZXQgKCh0MiAoZmlyc3QtdGVybSBMKSkpCgkJICAgICAgKGFkam9pbi10ZXJtCgkJICAgICAg IChtYWtlLXRlcm0gKCsgKG9yZGVyIHQxKSAob3JkZXIgdDIpKQoJCQkJICAobXVsIChjb2VmZiB0 MSkgKGNvZWZmIHQyKSkpCgkJICAgICAgIChtdWwtdGVybS1ieS1hbGwtdGVybXMgdDEgKHJlc3Qt dGVybXMgTCkpKSkpKQoKCSAgICAgIChkZWZpbmUgKHJlZHVjZS10ZXJtcyB0ZXJtbGlzdC0xIHRl cm1saXN0LTIpCgkJKHNob3cgI3QgInJlZHVjZS10ZXJtczogdGVybWxpc3QtMT0iIHRlcm1saXN0 LTEKCQkJCSAgICAgIiwgdGVybWxpc3QtMj0iIHRlcm1saXN0LTIgIlxuIikKCQkobGV0KiAoKHBv bHktZ2NkIChnY2QtdGVybXMgdGVybWxpc3QtMSB0ZXJtbGlzdC0yKSkKCQkgICAgICAoTzEgKG1h eCAob3JkZXIgKGZpcnN0LXRlcm0gdGVybWxpc3QtMSkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAob3JkZXIgKGZpcnN0LXRlcm0gdGVybWxpc3QtMikpKSkKCQkgICAgICAoTzIgKG9y ZGVyIChmaXJzdC10ZXJtIHBvbHktZ2NkKSkpCgkJICAgICAgKGMgIChjb2VmZiAoZmlyc3QtdGVy bSBwb2x5LWdjZCkpKQoJCSAgICAgIChpbnQtZmFjdG9yIChleHAgYyAoKyAxICgtIE8xIE8yKSkp KQoJCSAgICAgIChpbnQtdGVybSAobWFrZS10ZXJtIDAgaW50LWZhY3RvcikpIAoJCSAgICAgIChp bXByLXRlcm1saXN0LTEgKG11bC10ZXJtLWJ5LWFsbC10ZXJtcyBpbnQtdGVybSB0ZXJtbGlzdC0x KSkKCQkgICAgICAoaW1wci10ZXJtbGlzdC0yIChtdWwtdGVybS1ieS1hbGwtdGVybXMgaW50LXRl cm0gdGVybWxpc3QtMikpCgkJICAgICAgKG5ldy10MSAoY2FyIChkaXYtdGVybXMgaW1wci10ZXJt bGlzdC0xIHBvbHktZ2NkKSkpCgkJICAgICAgKG5ldy10MiAoY2FyIChkaXYtdGVybXMgaW1wci10 ZXJtbGlzdC0yIHBvbHktZ2NkKSkpCgkJICAgICAgKG5ldy10MS10ZXJtcyAobWFwIGNvZWZmICht YXByZXN0IGZpcnN0LXRlcm0gbmV3LXQxKSkpCgkJICAgICAgKG5ldy10Mi10ZXJtcyAobWFwIGNv ZWZmIChtYXByZXN0IGZpcnN0LXRlcm0gbmV3LXQyKSkpCgkJICAgICAgKGZ1bGwtbGlzdCAoYXBw ZW5kIG5ldy10MS10ZXJtcyBuZXctdDItdGVybXMpKQoJCSAgICAgIChuZXctZ2NkIChiZWdpbiAo c2hvdyAjdCAiZnVsbC1saXN0PSIgZnVsbC1saXN0ICJcbiIpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGFwcGx5IGdjZCBmdWxsLWxpc3QpKSkKCQkgICAgICAoZGl2aXNv ci10ZXJtIChtYWtlLXRlcm0gMCAoZGl2IDEgbmV3LWdjZCkpKQoJCSAgICAgIChuZXctdDEtaW1w ciAobXVsLXRlcm0tYnktYWxsLXRlcm1zIGRpdmlzb3ItdGVybSBuZXctdDEpKQoJCSAgICAgIChu ZXctdDItaW1wciAobXVsLXRlcm0tYnktYWxsLXRlcm1zIGRpdmlzb3ItdGVybSBuZXctdDIpKSkK CQkgIChsaXN0IG5ldy10MS1pbXByIG5ldy10Mi1pbXByKSkpCgkgICAgICAoZGVmaW5lIChyZWR1 Y2UtcG9seSBwMSBwMikKCQkoc2hvdyAjdCAicmVkdWNlLXBvbHk6IHAxPSIgcDEgIiwgcDI9IiBw MiAiXG4iKQoJCShpZiAoc2FtZS12YXJpYWJsZT8gKHZhcmlhYmxlIHAxKSAodmFyaWFibGUgcDIp KQoJCSAgICAobGV0KiAoKG51bS1kZW4tbGlzdCAocmVkdWNlLXRlcm1zICh0ZXJtLWxpc3QgcDEp ICh0ZXJtLWxpc3QgcDIpKSkKCQkJICAgKG15LXZhciAodmFyaWFibGUgcDEpKQoJCQkgICAobmV3 LXAxIChtYWtlLXBvbHkgbXktdmFyIChjYXIgbnVtLWRlbi1saXN0KSkpCgkJCSAgIChuZXctcDIg KG1ha2UtcG9seSBteS12YXIgKGNhZHIgbnVtLWRlbi1saXN0KSkpKQoJCQkobGlzdCAodGFnIG5l dy1wMSkgKHRhZyBuZXctcDIpKSkKCQkgICAgKGVycm9yICJyZWR1Y2UtcG9seTogZGlmZmVyZW50 IHZhcmlhYmxlcyIpKSkKCSAgICAgIChwdXQgJ3JlZHVjZSAnKHBvbHlub21pYWwgcG9seW5vbWlh bCkgcmVkdWNlLXBvbHkpCgkgICAgICAoZGVmaW5lICh6ZXJvLXBvbHk/IHBvbHkpCgkJKHNob3cg I3QgInplcm8tcG9seT86IHBvbHk9IiAoZGlzcGxheWVkIHBvbHkpICJcbiIpCgkJKGNvbmQgKChl bXB0eS10ZXJtbGlzdD8gKHRlcm0tbGlzdCBwb2x5KSkgI3QpCgkJICAgICAgKChub3QgKHplcm8/ IChjb2VmZiAoZmlyc3QtdGVybSAodGVybS1saXN0IHBvbHkpKSkpKSAjZikKCQkgICAgICAoZWxz ZSAoemVyby1wb2x5PyAKCQkJICAgICAobWFrZS1wb2x5ICh2YXJpYWJsZSBwb2x5KQoJCQkJCShy ZXN0LXRlcm1zICh0ZXJtLWxpc3QgcG9seSkpKSkpKSkKCgkgICAgICAoZGVmaW5lICh0ZXJtbGlz dC10eXBlLW9mIHRlcm0tbGlzdCkKCQkjOyhzaG93ICN0ICJ0LXQtbzogdGVybS1saXN0PSIgKGRp c3BsYXllZCB0ZXJtLWxpc3QpICJcbiIpCgkJKGNvbmQgKChudWxsPyB0ZXJtLWxpc3QpICdzcGFy c2UpCgkJICAgICAgKChwYWlyPyAoY2FyIHRlcm0tbGlzdCkpICdzcGFyc2UpCgkJICAgICAgKChs aXN0PyB0ZXJtLWxpc3QpICdkZW5zZSkKCQkgICAgICAoZWxzZSAoZXJyb3IgIlVua25vd24gdHlw ZSBvZiBsaXN0IiB0ZXJtLWxpc3QpKSkpCgkgICAgICAoZGVmaW5lIChhZGpvaW4tdGVybSB0ZXJt IHRlcm0tbGlzdCkKCQkoKGdldCAnYWRqb2luLXRlcm0gKHRlcm1saXN0LXR5cGUtb2YgdGVybS1s aXN0KSkgdGVybSB0ZXJtLWxpc3QpKQoJICAgICAgKGRlZmluZSAoZmlyc3QtdGVybSB0ZXJtLWxp c3QpCgkJKChnZXQgJ2ZpcnN0LXRlcm0gKHRlcm1saXN0LXR5cGUtb2YgdGVybS1saXN0KSkgdGVy bS1saXN0KSkKCSAgICAgIChkZWZpbmUgKHZhcmlhYmxlXzEtb3JkZXI8dmFyaWFibGVfMi1vcmRl ciB2YXJpYWJsZV8xIHZhcmlhYmxlXzIpCgkJIzsoc2hvdyAjdCAidmFyXzEtLi46IHZhcmlhYmxl XzE9IiB2YXJpYWJsZV8xICIgdmFyaWFibGVfMj0iIHZhcmlhYmxlXzIgIlxuIikKCQkjOyhzaG93 ICN0ICJ2YXIxMnN0cmluZz0iIChzeW1ib2wtPnN0cmluZyB2YXJpYWJsZV8xKSAidmFyMjJzdHJp bmc9IiAoc3ltYm9sLT5zdHJpbmcgdmFyaWFibGVfMikgIlxuIikKCQkoc3RyaW5nPD0/IChzeW1i b2wtPnN0cmluZyB2YXJpYWJsZV8xKSAoc3ltYm9sLT5zdHJpbmcgdmFyaWFibGVfMikpKQoJICAg ICAgKGRlZmluZSAobm9ybWFsaXplLWZ1bGx5IHBvbHkpCgkJKGlmIChub3JtYWwtcG9seW5vbWlh bD8gcG9seSkKCQkgICAgcG9seQoJCSAgICAobm9ybWFsaXplLWZ1bGx5IChub3JtYWxpemUtb25j ZSBwb2x5KSkpKQoJICAgICAgKHB1dCAnYWRkICcocG9seW5vbWlhbCBwb2x5bm9taWFsKQoJCSAg IChsYW1iZGEgKHAxIHAyKSAKCQkgICAgICM7KHNob3cgI3QgImdlbmVyaWMtYWRkLXBvbHk6UG9s eW5vbWlhbCBkaXNwYXRjaCBmb3VuZDogcDE9IgoJCQkgICAgKGRpc3BsYXllZCBwMSkgIiBwMj0i IChkaXNwbGF5ZWQgcDIpICJcbiIpCgkJICAgICAobm9ybWFsaXplLWZ1bGx5ICh0YWcgKGFkZC1w b2x5IHAxIHAyKSkpKSkKCSAgICAgIChwdXQgJ211bCAnKHBvbHlub21pYWwgcG9seW5vbWlhbCkK CQkgICAobGFtYmRhIChwMSBwMikgKG5vcm1hbGl6ZS1mdWxseSAodGFnIChtdWwtcG9seSBwMSBw MikpKSkpCgkgICAgICAocHV0ICdzdWIgJyhwb2x5bm9taWFsIHBvbHlub21pYWwpCgkJICAgKGxh bWJkYSAocDEgcDIpICh0YWcgKHN1Yi1wb2x5IHAxIHAyKSkpKQoKCSAgICAgIChwdXQgJ3plcm8/ ICcocG9seW5vbWlhbCkgemVyby1wb2x5PykKCSAgICAgIChwdXQgJ2RpdiAnKHBvbHlub21pYWwg cG9seW5vbWlhbCkgZGl2LXBvbHkpCgkgICAgICAjOyhwdXQtY29lcmNpb24gJ3JhdGlvbmFsICdz Y2hlbWUtbnVtYmVyIHJhdGlvbmFsLT5zY2hlbWUtbnVtYmVyKQoJICAgICAgKGRlZmluZSAobW9u b21pYWwtZmxpcC12YXJpYWJsZXMgbW9ub21pYWwpCgkJIzsoc2hvdyAjdCAibS1mLXY6IG1vbm9t aWFsPSIgbW9ub21pYWwgIlxuIikKCQkobGV0KiAoKG1vbm8gKGNvbnRlbnRzIG1vbm9taWFsKSkK CQkgICAgICAgKGlubmVyLXBvbHlub21pYWwgKGNvbnRlbnRzIChjb2VmZiAoZmlyc3QtdGVybSAo dGVybS1saXN0IG1vbm8pKSkpKQoJCSAgICAgICAoaW5uZXItcG9seSAoY29udGVudHMgaW5uZXIt cG9seW5vbWlhbCkpCgkJICAgICAgIChvdXRlci1vcmRlciAob3JkZXIgKGZpcnN0LXRlcm0gKHRl cm0tbGlzdCBtb25vKSkpKQoJCSAgICAgICAob3V0ZXItdmFyICh2YXJpYWJsZSBtb25vKSkKCQkg ICAgICAgKGlubmVyLXZhciAodmFyaWFibGUgaW5uZXItcG9seW5vbWlhbCkpCgkJICAgICAgIChp bm5lci10ZXJtLWxpc3QgKHRlcm0tbGlzdCBpbm5lci1wb2x5KSkpCgkJICAjOyhzaG93ICN0ICJt LWYtdjogaW5uZXItcG9seT0iIGlubmVyLXBvbHkgIlxuIikKCQkgIChpZiAoc2FtZS12YXJpYWJs ZT8gaW5uZXItdmFyIG91dGVyLXZhcikKCQkgICAgICAobXVsCgkJICAgICAgIChtYWtlLXBvbHlu b21pYWwgb3V0ZXItdmFyIChhZGpvaW4tdGVybSAobWFrZS10ZXJtIG91dGVyLW9yZGVyIDEpICh0 aGUtZW1wdHktdGVybWxpc3QpKSkKCQkgICAgICAgKHRhZyBpbm5lci1wb2x5bm9taWFsKSkKCQkg ICAgICAodGFnIChtYWtlLXBvbHkgaW5uZXItdmFyCgkJCQkgICAgICAobXVsLXRlcm0tYnktYWxs LXRlcm1zIChtYWtlLXRlcm0KCQkJCQkJCSAgICAgIDAKCQkJCQkJCSAgICAgIChtYWtlLXBvbHlu b21pYWwKCQkJCQkJCSAgICAgICBvdXRlci12YXIKCQkJCQkJCSAgICAgICAobGlzdCAobWFrZS10 ZXJtCgkJCQkJCQkJICAgICAgb3V0ZXItb3JkZXIKCQkJCQkJCQkgICAgICAxKSkpKSBpbm5lci1w b2x5KSkpKSkpCgkgICAgICAjOyhzaG93ICN0ICJUZXN0WFg6IHNvcnRpbmcgdmFyaWFibGVzOiBJ cyAneCA8ICd5PzogIgoJCSAgICAodmFyaWFibGVfMS1vcmRlcjx2YXJpYWJsZV8yLW9yZGVyICd4 ICd5KSAiXG4iKQoJICAgICAgIzsoc2hvdyAjdCAiVGVzdFhYOiBzb3J0aW5nIHZhcmlhYmxlczog SXMgJ3ogPCAneT86ICIKCQkgICAgKHZhcmlhYmxlXzEtb3JkZXI8dmFyaWFibGVfMi1vcmRlciAn eiAneSkgIlxuIikKCSAgICAgICM7KHNob3cgI3QgIlRlc3RYWDogKGFkZGluZyB0d28gYmFzaWMg cG9seSk6ICIKCQkgICAgKGFkZCAobWFrZS1wb2x5bm9taWFsICd4IChsaXN0IChtYWtlLXRlcm0g MSAyKSAobWFrZS10ZXJtIDAgNCkpKQoJCQkgKG1ha2UtcG9seW5vbWlhbCAneSAobGlzdCAobWFr ZS10ZXJtIDIgMykgKG1ha2UtdGVybSAwIDUpKSkpICJcbiIpCgoJICAgICAgKGRlZmluZSAocG9s eW5vbWlhbC0+c3VtLW9mLWZpcnN0LWFuZC1yZXN0IHBvbHkpCgkJIzsoc2hvdyAjdCAicC0+cy1v LWYtYS1yOiAiIChkaXNwbGF5ZWQgcG9seSkgIlxuIikKCQkoaWYgKHplcm8/IHBvbHkpCgkJICAg IHBvbHkKCQkgICAgKGxldCogKChwb2x5MSAoY29udGVudHMgcG9seSkpCgkJCSAgIChmaXJzdC1t b25vbWlhbCAodGFnCgkJCQkJICAgIChtYWtlLXBvbHkKCQkJCQkgICAgICh2YXJpYWJsZSBwb2x5 MSkKCQkJCQkgICAgIChsaXN0IChmaXJzdC10ZXJtICh0ZXJtLWxpc3QgcG9seTEpKSkpKSkpCgkJ ICAgICAgIzsoc2hvdyAjdCAicC0+cy1vLWYtYS1yOiAiIChkaXNwbGF5ZWQgZmlyc3QtbW9ub21p YWwpICJcbiIpCgkJICAgICAgKGFkZAoJCQlmaXJzdC1tb25vbWlhbAoJCQkocG9seW5vbWlhbC0+ c3VtLW9mLWZpcnN0LWFuZC1yZXN0CgkJCSAodGFnIChtYWtlLXBvbHkgKHZhcmlhYmxlIHBvbHkx KSAocmVzdC10ZXJtcyAodGVybS1saXN0IHBvbHkxKSkpKSkpKSkpCgoJICAgICAgKHNob3cgI3Qg IlRlc3QxMzogRXhwYW5kaW5nIGEgcG9seW5vbWlhbCBhcyBtb25vbWlhbHM6ICIKCQkgICAgKGRp c3BsYXllZAoJCSAgICAgKHBvbHlub21pYWwtPnN1bS1vZi1maXJzdC1hbmQtcmVzdAoJCSAgICAg IChtYWtlLXBvbHlub21pYWwgJ3kKCQkJCSAgICAgICAobGlzdCAobWFrZS10ZXJtIDIgKG1ha2Ut cG9seW5vbWlhbAoJCQkJCQkJICAgJ3gKCQkJCQkJCSAgIChsaXN0IChtYWtlLXRlcm0gMiAxKSAo bWFrZS10ZXJtIDAgMSkpKSkKCQkJCQkgICAgIChtYWtlLXRlcm0gMCAyKSkpKSkgIlxuIikKCgkg ICAgICAoc2hvdyAjdCAiXG5UZXN0MjA6IHN0YXJ0IG1vbm9taWFsOiAiCgkJICAgIChkaXNwbGF5 ZWQgKG1ha2UtcG9seW5vbWlhbCAneAoJCQkJCQkobGlzdAoJCQkJCQkgKG1ha2UtdGVybQoJCQkJ CQkgIDIKCQkJCQkJICAobWFrZS1wb2x5bm9taWFsCgkJCQkJCSAgICd5CgkJCQkJCSAgIChsaXN0 CgkJCQkJCSAgICAobWFrZS10ZXJtIDIgMSkgKG1ha2UtdGVybSAwIDEpKSkpKSkpICJcbiIpCgkg ICAgICAoc2hvdyAjdCAiVGVzdDIwOiBGbGlwcGluZyBhIG1vbm9taWFsIHZhcmlhYmxlOiAiCgkJ ICAgIChkaXNwbGF5ZWQKCQkgICAgIChtb25vbWlhbC1mbGlwLXZhcmlhYmxlcwoJCSAgICAgICht YWtlLXBvbHlub21pYWwgJ3gKCQkJCSAgICAgICAobGlzdCAobWFrZS10ZXJtIDEgKG1ha2UtcG9s eW5vbWlhbAoJCQkJCQkJICAgJ3kKCQkJCQkJCSAgIChsaXN0CgkJCQkJCQkgICAgKG1ha2UtdGVy bSAyIDEpCgkJCQkJCQkgICAgKG1ha2UtdGVybSAwIDEpKSkpKSkpKSAiXG5cbiIpCgoKCSAgICAg IChkZWZpbmUgKG5vcm1hbC1wb2x5bm9taWFsPyBwb2x5KQoJCSM7KHNob3cgI3QgIm4tcD86IHBv bHk9IiBwb2x5ICJcbiIpCgkJKGNvbmQgKChub3QgKHBvbHlub21pYWw/IHBvbHkpKSAjdCkKCQkg ICAgICAoKG51bGw/ICh0ZXJtLWxpc3QgKGNvbnRlbnRzIHBvbHkpKSkgI3QpCgkJICAgICAgKGVs c2UgKGxldCogKChwb2x5MSAoY29udGVudHMgcG9seSkpCgkJCQkgICAob3V0ZXItdmFyICh2YXJp YWJsZSBwb2x5MSkpKQoJCQkgICAgICAjOyhzaG93ICN0ICJJbm5lci1sZXQ6IG91dGVyLXZhcj0i IChkaXNwbGF5ZWQgb3V0ZXItdmFyKSAiXG4iKQoJCQkgICAgICAobGV0IGxvb3AgKCh0ZXJtcyAo dGVybS1saXN0IHBvbHkxKSkpCgkJCQkjOyhzaG93ICN0ICJuLXA/LWxvb3A6IHRlcm1zPSIgKGRp c3BsYXllZCB0ZXJtcykgIlxuIikKCQkJCShjb25kICgobnVsbD8gdGVybXMpICN0KQoJCQkJICAg ICAgKChub3QgKHBvbHlub21pYWw/IChjb2VmZiAoZmlyc3QtdGVybSB0ZXJtcykpKSkgKGxvb3Ag KHJlc3QtdGVybXMgdGVybXMpKSkKCQkJCSAgICAgICgobm90ICh2YXJpYWJsZV8xLW9yZGVyPHZh cmlhYmxlXzItb3JkZXIgCgkJCQkJICAgb3V0ZXItdmFyCgkJCQkJICAgKHZhcmlhYmxlIChjb250 ZW50cyAoY29lZmYgKGZpcnN0LXRlcm0gdGVybXMpKSkpKSkgKGJlZ2luICM7KHNob3cgI3QgIndy b25nIHZhcmlhYmxlIG9yZGVyIFxuIikgI2YpKQoJCQkJICAgICAgKChub3QgKG5vcm1hbC1wb2x5 bm9taWFsPyAoY29lZmYgKGZpcnN0LXRlcm0gdGVybXMpKSkpIChiZWdpbiAjOyhzaG93ICN0ICJu b3Qgbm9ybWFsIHBvbHlcbiIpICNmKSkKCQkJCSAgICAgIChlbHNlIChsb29wIChyZXN0LXRlcm1z IHRlcm1zKSkpKSkKCQkJICAgICAgKSkpKQoJICAgICAgKGRlZmluZSAobm9ybWFsaXplLW9uY2Ug cG9seSkKCQkjOyhzaG93ICN0ICJub3JtYWxpemUtb25jZSBwb2x5PSAiIChkaXNwbGF5ZWQgcG9s eSkgIlxuIikKCQkoaWYgKHplcm8/IHBvbHkpCgkJICAgIHBvbHkKCQkgICAgKGxldCogKChwb2x5 MSAoY29udGVudHMgcG9seSkpCgkJCSAgIChmaXJzdC1tb25vbWlhbCAodGFnCgkJCQkJICAgICht YWtlLXBvbHkKCQkJCQkgICAgICh2YXJpYWJsZSBwb2x5MSkKCQkJCQkgICAgIChsaXN0IChtYWtl LXRlcm0KCQkJCQkJICAgIChvcmRlciAoZmlyc3QtdGVybSAodGVybS1saXN0IHBvbHkxKSkpCgkJ CQkJCSAgICAoaWYgKHBvbHlub21pYWw/IChjb2VmZiAoZmlyc3QtdGVybSAodGVybS1saXN0IHBv bHkxKSkpKQoJCQkJCQkJKG5vcm1hbGl6ZS1vbmNlIChjb2VmZiAoZmlyc3QtdGVybSAodGVybS1s aXN0IHBvbHkxKSkpKQoJCQkJCQkJKGNvZWZmIChmaXJzdC10ZXJtICh0ZXJtLWxpc3QgcG9seTEp KSkpKSkpKSkpCgkJICAgICAgIzsoc2hvdyAjdCAicC0+cy1vLWYtYS1yOiAiIChkaXNwbGF5ZWQg Zmlyc3QtbW9ub21pYWwpICJcbiIpCgkJICAgICAgKGFkZAoJCSAgICAgICAoaWYgKGFuZCAocG9s eW5vbWlhbD8KCQkJICAgICAgIChjb2VmZgoJCQkJKGZpcnN0LXRlcm0KCQkJCSAodGVybS1saXN0 CgkJCQkgIChjb250ZW50cyBmaXJzdC1tb25vbWlhbCkpKSkpCgkJCSAgICAgICh2YXJpYWJsZV8x LW9yZGVyPHZhcmlhYmxlXzItb3JkZXIKCQkJICAgICAgICh2YXJpYWJsZQoJCQkJKGNvbnRlbnRz CgkJCQkgKGNvZWZmCgkJCQkgIChmaXJzdC10ZXJtCgkJCQkgICAodGVybS1saXN0CgkJCQkgICAg KGNvbnRlbnRzIGZpcnN0LW1vbm9taWFsKSkpKSkpCgkJCSAgICAgICAodmFyaWFibGUKCQkJCShj b250ZW50cyBmaXJzdC1tb25vbWlhbCkpKSkKCQkJICAgKG1vbm9taWFsLWZsaXAtdmFyaWFibGVz IGZpcnN0LW1vbm9taWFsKQoJCQkgICBmaXJzdC1tb25vbWlhbCkKCQkJKHBvbHlub21pYWwtPnN1 bS1vZi1maXJzdC1hbmQtcmVzdAoJCQkgKHRhZyAobWFrZS1wb2x5ICh2YXJpYWJsZSBwb2x5MSkg KHJlc3QtdGVybXMgKHRlcm0tbGlzdCBwb2x5MSkpKSkpKSkpKQoKCSAgICAgIChzaG93ICN0ICJU ZXN0MjE6IG5vcm1hbC1wb2x5bm9taWFsPzpzdGFydDogIiAoZGlzcGxheWVkIChtYWtlLXBvbHlu b21pYWwgJ3kKCQkJCQkJICAgICAobGlzdCAobWFrZS10ZXJtIDIgKG1ha2UtcG9seW5vbWlhbAoJ CQkJCQkJCQkgJ3gKCQkJCQkJCSAgIChsaXN0IChtYWtlLXRlcm0gMiAxKSAobWFrZS10ZXJtIDAg MSkpKSkKCQkJCQkJCSAgIChtYWtlLXRlcm0gMCAyKSkpKSAiXG4iKQoJICAgICAgIzsoc2hvdyAj dCAiVGVzdDIxOiBub3JtYWwtcG9seW5vbWlhbD86cmVzdWx0OiIgKG5vcm1hbC1wb2x5bm9taWFs PyAobWFrZS1wb2x5bm9taWFsICd5CgkJCQkJCSAgICAgKGxpc3QgKG1ha2UtdGVybSAyIChtYWtl LXBvbHlub21pYWwKCQkJCQkJCQkJICd4CgkJCQkJCQkgICAobGlzdCAobWFrZS10ZXJtIDIgMSkg KG1ha2UtdGVybSAwIDEpKSkpCgkJCQkJCQkgICAobWFrZS10ZXJtIDAgMikpKSkgIlxuIikKCSAg ICAgICM7KHNob3cgI3QgIlRlc3QyMjogbm9ybWFsLXBvbHlub21pYWw/LWdvb2Q6c3RhcnQ6ICIK CQkgICAgKGRpc3BsYXllZAoJCSAgICAgKG1ha2UtcG9seW5vbWlhbCAneAoJCQkJICAgICAgKGxp c3QgKG1ha2UtdGVybSAyIChtYWtlLXBvbHlub21pYWwKCQkJCQkJCSAgJ3kKCQkJCQkJCSAgKGxp c3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0gMCAxKSkpKQoJCQkJCSAgICAobWFrZS10ZXJt IDAgMikpKSkgIlxuIikKCSAgICAgICM7KHNob3cgI3QgIlRlc3QyMjogbm9ybWFsLXBvbHlub21p YWw/LWdvb2Q6cmVzdWx0OiIKCQkgICAgKG5vcm1hbC1wb2x5bm9taWFsPwoJCSAgICAgKG1ha2Ut cG9seW5vbWlhbCAneAoJCQkJICAgICAgKGxpc3QgKG1ha2UtdGVybSAyIChtYWtlLXBvbHlub21p YWwKCQkJCQkJCSAgJ3kKCQkJCQkJCSAgKGxpc3QgKG1ha2UtdGVybSAyIDEpIChtYWtlLXRlcm0g MCAxKSkpKQoJCQkJCSAgICAobWFrZS10ZXJtIDAgMikpKSkgIlxuIikKCgkgICAgICAjOyhzaG93 ICN0ICJUZXN0MjM6aW5wdXQ6IG5vcm1hbGl6aW5nIGEgYmFkIHBvbHlub21pYWw6ICIKCQkgICAg KG1ha2UtcG9seW5vbWlhbCAneQoJCQkJICAgICAgIChsaXN0IChtYWtlLXRlcm0gMiAobWFrZS1w b2x5bm9taWFsCgkJCQkJCQkgICAneAoJCQkJCQkJICAgKGxpc3QgKG1ha2UtdGVybSAyIDEpICht YWtlLXRlcm0gMCAxKSkpKQoJCQkJCSAgICAgKG1ha2UtdGVybSAwIDIpKSkgIlxuIikKCSAgICAg ICM7KHNob3cgI3QgIlRlc3QyMzpyZXN1bHQ6IG5vcm1hbGl6aW5nIGEgYmFkIHBvbHlub21pYWw6 ICIKCQkgICAgKG5vcm1hbGl6ZS1vbmNlIChtYWtlLXBvbHlub21pYWwgJ3kKCQkJCQkJICAgICAo bGlzdCAobWFrZS10ZXJtIDIgKG1ha2UtcG9seW5vbWlhbAoJCQkJCQkJCQkgJ3gKCQkJCQkJCSAg IChsaXN0IChtYWtlLXRlcm0gMiAxKSAobWFrZS10ZXJtIDAgMSkpKSkKCQkJCQkJCSAgIChtYWtl LXRlcm0gMCAyKSkpKSAiXG4iKQoJICAgICAgIzsoc2hvdyAjdCAiVGVzdDI0OmlucHV0OiBub3Jt YWxpemluZyBhIGJhZCBwb2x5bm9taWFsOiAiCgkJICAgIChtYWtlLXBvbHlub21pYWwgJ3gKCQkJ CSAgICAgICAobGlzdCAobWFrZS10ZXJtIDIgKG1ha2UtcG9seW5vbWlhbAoJCQkJCQkJICAgJ3gK CQkJCQkJCSAgIChsaXN0IChtYWtlLXRlcm0gMiAxKSAobWFrZS10ZXJtIDAgMSkpKSkKCQkJCQkg ICAgIChtYWtlLXRlcm0gMCAyKSkpICJcbiIpCgkgICAgICAjOyhzaG93ICN0ICJUZXN0MjQ6cmVz dWx0OiBub3JtYWxpemluZyBhIGJhZCBwb2x5bm9taWFsOiAiCgkJICAgIChub3JtYWxpemUtb25j ZSAobWFrZS1wb2x5bm9taWFsICd4CgkJCQkJCSAgICAgKGxpc3QgKG1ha2UtdGVybSAyIChtYWtl LXBvbHlub21pYWwKCQkJCQkJCQkJICd4CgkJCQkJCQkgICAobGlzdCAobWFrZS10ZXJtIDIgMSkg KG1ha2UtdGVybSAwIDEpKSkpCgkJCQkJCQkgICAobWFrZS10ZXJtIDAgMikpKSkgIlxuIikKCgoJ ICAgICAgIzsoc2hvdyAjdCAiVGVzdDI0OmlucHV0OiBub3JtYWxpemUtZnVsbHkgYSBiYWQgcG9s eW5vbWlhbDogIgoJCSAgICAobWFrZS1wb2x5bm9taWFsICd5CgkJCQkgICAgICAgKGxpc3QgKG1h a2UtdGVybSAyIChtYWtlLXBvbHlub21pYWwKCQkJCQkJCSAgICd4CgkJCQkJCQkgICAobGlzdCAo bWFrZS10ZXJtIDIgMSkgKG1ha2UtdGVybSAwIDEpKSkpCgkJCQkJICAgICAobWFrZS10ZXJtIDAg MikpKSAiXG4iKQoJICAgICAgIzsoc2hvdyAjdCAiVGVzdDI0OnJlc3VsdDogbm9ybWFsaXplLWZ1 bGx5IGEgYmFkIHBvbHlub21pYWw6ICIKCQkgICAgKG5vcm1hbGl6ZS1mdWxseSAobWFrZS1wb2x5 bm9taWFsICd5CgkJCQkJCSAgICAgKGxpc3QgKG1ha2UtdGVybSAyIChtYWtlLXBvbHlub21pYWwK CQkJCQkJCQkJICd4CgkJCQkJCQkgICAobGlzdCAobWFrZS10ZXJtIDIgMSkgKG1ha2UtdGVybSAw IDEpKSkpCgkJCQkJCQkgICAobWFrZS10ZXJtIDAgMikpKSkgIlxuIikKCgoKCSAgICAgICdkb25l KQoKCgkgICAgKGRlZmluZSAoaW5zdGFsbC1wb2x5bm9taWFsLXNwYXJzZS1wYWNrYWdlKQoJICAg ICAgKGRlZmluZSAoY29lZmYgdGVybSkgKGNhZHIgdGVybSkpCgkgICAgICAoZGVmaW5lIChmaXJz dC10ZXJtLXNwYXJzZSB0ZXJtLWxpc3QpIChjYXIgdGVybS1saXN0KSkKCSAgICAgIChkZWZpbmUg KGFkam9pbi10ZXJtLXNwYXJzZSB0ZXJtIHRlcm0tbGlzdCkKCQkoaWYgKHplcm8/IChjb2VmZiB0 ZXJtKSkKCQkgICAgdGVybS1saXN0CgkJICAgIChjb25zIHRlcm0gdGVybS1saXN0KSkpCgkgICAg ICAocHV0ICdhZGpvaW4tdGVybSAnc3BhcnNlIGFkam9pbi10ZXJtLXNwYXJzZSkKCSAgICAgIChw dXQgJ2ZpcnN0LXRlcm0gJ3NwYXJzZSBmaXJzdC10ZXJtLXNwYXJzZSkKCSAgICAgICdkb25lKQoJ ICAgIChpbnN0YWxsLXBvbHlub21pYWwtc3BhcnNlLXBhY2thZ2UpCgoJICAgIChkZWZpbmUgKGlu c3RhbGwtcG9seW5vbWlhbC1kZW5zZS1wYWNrYWdlKQoJICAgICAgKGRlZmluZSAobWFrZS10ZXJt IG9yZGVyIGNvZWZmKSAobGlzdCBvcmRlciBjb2VmZikpCgkgICAgICAoZGVmaW5lIChvcmRlciB0 ZXJtKSAoY2FyIHRlcm0pKQoJICAgICAgKGRlZmluZSAoY29lZmYgdGVybSkgKGNhZHIgdGVybSkp CgoJICAgICAgKGRlZmluZSAoYWRqb2luLXRlcm0tZGVuc2UgdGVybSB0ZXJtLWxpc3QpCgkJICAo aWYgKHplcm8/IChjb2VmZiB0ZXJtKSkKCQkgICAgICB0ZXJtLWxpc3QKCQkgICAgICAoaWYgKD4g KG9yZGVyIHRlcm0pIChsZW5ndGggdGVybS1saXN0KSkKCQkJICAoYXBwZW5kIChsaXN0IChjb2Vm ZiB0ZXJtKSkKCQkJCSAgKG1ha2UtbGlzdCAoLSAob3JkZXIgdGVybSkgKGxlbmd0aCB0ZXJtLWxp c3QpKSAwKQoJCQkJICB0ZXJtLWxpc3QpCgkJCSAgKGVycm9yICJhZGpvaW4tdGVybTpBcHBlbmRp bmcgYSBzbWFsbGVyIG9yZGVyIHRlcm0uIFJlY2hlY2suIikpKSkKCSAgICAgIChkZWZpbmUgKGZp cnN0LXRlcm0tZGVuc2UgdGVybS1saXN0KSAKCQkgIzsoc2hvdyAjdCAiZmlyc3QtdGVybS1kZW5z ZTogIiAoZGlzcGxheWVkIChtYWtlLXRlcm0gKGNhciB0ZXJtLWxpc3QpIChsZW5ndGggKGNkciB0 ZXJtLWxpc3QpKSkpICJcbiIpCgkJIChtYWtlLXRlcm0gKGxlbmd0aCAoY2RyIHRlcm0tbGlzdCkp IChjYXIgdGVybS1saXN0KSApKQoJICAgICAgKHB1dCAnYWRqb2luLXRlcm0gJ2RlbnNlIGFkam9p bi10ZXJtLWRlbnNlKQoJICAgICAgKHB1dCAnZmlyc3QtdGVybSAnZGVuc2UgZmlyc3QtdGVybS1k ZW5zZSkKCSAgICAgICdkb25lKQoJICAgICM7KGluc3RhbGwtcG9seW5vbWlhbC1kZW5zZS1wYWNr YWdlKQoKCSAgICAoZGVmaW5lIChtYWtlLXBvbHlub21pYWwgdmFyIHRlcm1zKQoJICAgICAgKChn ZXQgJ21ha2UgJ3BvbHlub21pYWwpIHZhciB0ZXJtcykpCgoJICAoaW5zdGFsbC1wb2x5bm9taWFs LXBhY2thZ2UpCgoKCSAgICAoc2hvdyAjdCAiVGVzdCAyOiBNYWtpbmcgcG9seW5vbWlhbHM6ICIg CgkJICAobWFrZS1wb2x5bm9taWFsICd4IChsaXN0IChsaXN0IDUgMSkgKGxpc3QgNCAyKSkpICJc biIpCgkgICAgKHNob3cgI3QgIlRlc3QgMzogWmVybz86ICIgCgkJICAoemVybz8gKG1ha2UtcG9s eW5vbWlhbCAneCAobGlzdCAobGlzdCA1IDEpIChsaXN0IDQgMikpKSkgIlxuIikKCSAgICAoc2hv dyAjdCAiVGVzdCA0OiBBZGRpbmcgcG9seW5vbWlhbHM6ICIKCQkgIChhZGQgKG1ha2UtcG9seW5v bWlhbCAneCAnKCg1IDEpICg0IDIpICgwIDEpKSkKCQkgICAgICAgKG1ha2UtcG9seW5vbWlhbCAn eCAnKCg1IDEpKSkpICJcbiIpCgkgICAgKHNob3cgI3QgIlRlc3QgNDogWmVybz86ICIgKHplcm8/ IChtYWtlLXBvbHlub21pYWwgJ3ggJygoNSAwKSAoMyAxKSkpKSAiXG4iKQoKCSAgICAoc2hvdyAj dCAiVGVzdCA1OiBTdWJ0cmFjdGluZyBwb2x5bm9taWFsczogIgoJCSAgKHN1YiAobWFrZS1wb2x5 bm9taWFsICd4ICcoKDUgMSkgKDQgMikgKDAgMSkpKQoJCSAgICAgICAobWFrZS1wb2x5bm9taWFs ICd4ICcoKDAgMSkpKSkgIlxuIikKCgkgICAgIzsoc2hvdyAjdCAiVGVzdCA2OiBNYWtpbmcgYSBk ZW5zZSBwb2x5bm9taWFsOiAiIChtYWtlLXBvbHlub21pYWwgJ3ggJygxIDIgMyA0IDUpKSAiXG4i KQoJICAgICM7KHNob3cgI3QgIlRlc3QgNzogemVybz8gZGVuc2UgcG9seW5vbWlhbDogIiAoZGlz cGxheWVkICh6ZXJvPyAobWFrZS1wb2x5bm9taWFsICd4ICcoMCkpKSkgIlxuIikKCSAgICAjOyhz aG93ICN0ICJUZXN0IDg6IHplcm8/IGRlbnNlIHBvbHlub21pYWw6ICIgKGRpc3BsYXllZCAoemVy bz8gKG1ha2UtcG9seW5vbWlhbCAneCAnKDEpKSkpICJcbiIpCgkgICAgIzsoc2hvdyAjdCAiVGVz dCA5OiBBZGRpbmcgZGVuc2UgcG9seW5vbWlhbHM6ICIKCQkgIChhZGQgKG1ha2UtcG9seW5vbWlh bCAneCAnKDEgMiAwIDAgMCAxKSkKCQkgICAgICAgKG1ha2UtcG9seW5vbWlhbCAneCAnKDEgMCAw IDAgMCAwKSkpICJcbiIpCgkgICAgIzsoc2hvdyAjdCAiVGVzdDEwOiBTdWJ0cmFjdGluZyBkZW5z ZSBwb2x5bm9taWFsczogIgoJCSAgKHN1YiAobWFrZS1wb2x5bm9taWFsICd4ICcoMSAyIDAgMCAw IDEpKQoJCSAgICAgICAobWFrZS1wb2x5bm9taWFsICd4ICcoMSAwIDAgMCAwIDApKSkgIlxuIikK CSAgICAjOyhzaG93ICN0ICJUZXN0MTE6IFN1YnRyYWN0aW5nIGRlbnNlIGFuZCBzcGFyc2UgcG9s eW5vbWlhbHM6ICIKCQkgIChzdWIgKG1ha2UtcG9seW5vbWlhbCAneCAnKDEgMiAwIDAgMCAxKSkK CQkgICAgICAgKG1ha2UtcG9seW5vbWlhbCAneCAnKCg0IDIpKSkpICJcbiIpCgkgICAgKHNob3cg I3QgIlRlc3QxMjogRGl2aWRpbmcgeF4yICsgMnggKyAxIGJ5IHgrMTogIgoJCSAgKGRpc3BsYXll ZAoJCSAgIChkaXYgKG1ha2UtcG9seW5vbWlhbCAneCAnKCgyIDEpICgxIDIpICgwIDEpKSkKCQkJ KG1ha2UtcG9seW5vbWlhbCAneCAnKCAgICAgICgxIDEpICgwIDEpKSkpICkgIlxuIikKCSAgICAo c2hvdyAjdCAiVGVzdDE0OiBBZGRpbmcgcG9seW5vbWlhbHMgb2YgdHdvIHZhcmlhYmxlczogIgoJ CSAgKGRpc3BsYXllZAoJCSAgIChhZGQgKG1ha2UtcG9seW5vbWlhbCAneCAnKCgxIDEpKSkKCQkJ KG1ha2UtcG9seW5vbWlhbCAneSAnKCgxIDEpKSkpKSkKCSAgICAoc2hvdyAjdCAiVGVzdDE0OiBB ZGRpbmcgcG9seW5vbWlhbHMgb2YgdHdvIHZhcmlhYmxlcywgd2hlbiBvbmUgb2YgdGhlbSBpcyBu b25leGlzdGFudDogIgoJCSAgKGRpc3BsYXllZAoJCSAgIChhZGQgKG1ha2UtcG9seW5vbWlhbCAn eCAnKCgxIDEpKSkKCQkJKG1ha2UtcG9seW5vbWlhbCAneSAnKCgwIDEpKSkpKSkKCSAgICAoc2hv dyAjdCAiVGVzdDI1OiBtdWx0aXBseWluZyBkaWZmZXJlbnQgdmFyaWFibGVzOiAiCgkJKGRpc3Bs YXllZCAobXVsIChtYWtlLXBvbHlub21pYWwgJ3ggJygoMSAxKSkpCgkJCQkobWFrZS1wb2x5bm9t aWFsICd5ICcoKDEgMSkpKSkpICJcbiIpCgkoYmVnaW4KCShzaG93ICN0ICJUZXN0IDI2OnN0YXJ0 XG4iKQoJKGRlZmluZSBwMSAobWFrZS1wb2x5bm9taWFsICd4ICcoKDIgMSkgKDAgMSkpKSkKCShk ZWZpbmUgcDIgKG1ha2UtcG9seW5vbWlhbCAneCAnKCgzIDEpICgwIDEpKSkpCgkoZGVmaW5lIHJm IChtYWtlLXJhdGlvbmFsIHAyIHAxKSkKCgkoc2hvdyAjdCAiVGVzdCAyNjogbWFrZS1yYXRpb25h bC1wb2x5bm9taWFsOiAiIHJmICJcbiIpCgkoc2hvdyAjdCAiVGVzdCAyNzogYWRkLXJhdGlvbmFs XG4iKQoJKHNob3cgI3QgIlRlc3QgMjc6ICIgKGFkZCByZiByZikgIlxuIikKCSkKCgkoc2hvdyAj dCAiVGVzdCAyODogcG9seW5vbWlhbC1nY2Q6IHN0YXJ0XG4iKQoJKGRlZmluZSAoZ3JlYXRlc3Qt Y29tbW9uLWRpdmlzb3IgcDEgcDIpIChhcHBseS1nZW5lcmljICdnY2QgcDEgcDIpKQoJKGJlZ2lu CgkgIChkZWZpbmUgcDEgKG1ha2UtcG9seW5vbWlhbAoJCSAgICAgICAneCAnKCg0IDEpICgzIC0x KSAoMiAtMikgKDEgMikpKSkKCSAgKGRlZmluZSBwMiAobWFrZS1wb2x5bm9taWFsICd4ICcoKDMg MSkgKDEgLTEpKSkpCgoJICAoc2hvdyAjdCAiVGVzdCAyODogcG9seW5vbWlhbC1nY2Q6ICIgKGdy ZWF0ZXN0LWNvbW1vbi1kaXZpc29yIHAxIHAyKSAiXG4iKSkKCgkoYmVnaW4KCSAgICAoZGVmaW5l IHAxIChtYWtlLXBvbHlub21pYWwKCQkJICd4ICcoKDIgMSkgKDEgLTIpICgwIDEpKSkpCgkgICAg KGRlZmluZSBwMiAobWFrZS1wb2x5bm9taWFsICd4ICcoKDIgMTEpICgwIDcpKSkpCgoJICAgIChk ZWZpbmUgcDMgKG1ha2UtcG9seW5vbWlhbCAneCAnKCgxIDEzKSAoMCA1KSkpKQoJICAgIChkZWZp bmUgcTEgKG11bCBwMSBwMikpCgkgICAgKGRlZmluZSBxMiAobXVsIHAxIHAzKSkKCSAgICAoc2hv dyAjdCAiVGVzdCAyOTogZ2NkLWludGVnZXItcHJvYmxlbTogc3RhcnRcbiIpCgkgICAgKHNob3cg I3QgIlRlc3QgMjk6IHAxPSIgcDEgIlxuIikKCSAgICAoc2hvdyAjdCAiVGVzdCAyOTogcDI9IiBw MiAiXG4iKQoJICAgIChzaG93ICN0ICJUZXN0IDI5OiBwMz0iIHAzICJcbiIpCgkgICAgKHNob3cg I3QgIlRlc3QgMjk6IHExPSIgcTEgIlxuIikKCSAgICAoc2hvdyAjdCAiVGVzdCAyOTogcTI9IiBx MiAiXG4iKQoJICAgIChzaG93ICN0ICJUZXN0IDI5OiBnY2QgOiAiIChncmVhdGVzdC1jb21tb24t ZGl2aXNvciBxMSBxMikgIlxuIikgICAgICAKCSAgKQoKICAoYmVnaW4gCiAgICAgICAgICAgICAg ICAgKHNob3cgI3QgIlRlc3QgMzA6IHN0YXJ0XG4iKQoJCSAoZGVmaW5lIHAxIChtYWtlLXBvbHlu b21pYWwgJ3ggJygoMSAxKSgwIDEpKSkpCgkJIChkZWZpbmUgcDIgKG1ha2UtcG9seW5vbWlhbCAn eCAnKCgzIDEpKDAgLTEpKSkpCgkJIChkZWZpbmUgcDMgKG1ha2UtcG9seW5vbWlhbCAneCAnKCgx IDEpKSkpCgkJIChkZWZpbmUgcDQgKG1ha2UtcG9seW5vbWlhbCAneCAnKCgyIDEpKDAgLTEpKSkp CgoJCSAoZGVmaW5lIHJmMSAobWFrZS1yYXRpb25hbCBwMSBwMikpCgkJIChkZWZpbmUgcmYyICht YWtlLXJhdGlvbmFsIHAzIHA0KSkKCgkJIChzaG93ICN0ICJUZXN0IDMzOiAiIChhZGQgcmYxIHJm MikgIlxuIikpCgoKIytlbmRfc3JjCgojK1JFU1VMVFM6CiMrYmVnaW5fZXhhbXBsZQoodGFnIDUp PTUKVGVzdCAzMTogc3RhcnQKVGVzdCAzMTojdApUZXN0OiBIaWdoZXIgdGhhbiAnaW50ZWdlcjog c2NoZW1lLW51bWJlcgpUZXN0IDMwOiBzdGFydApUZXN0IDMwOihhZGQgKG1ha2Utc2NoZW1lLW51 bWJlciAxKSAobWFrZS1zY2hlbWUtbnVtYmVyIDEpKT0gMgpUZXN0IDMyOiBzdGFydFRlc3QgMzI6 IFN1YnRyYWN0aW5nIGNvbXBsZXggbnVtYmVyczogMS4xClRlc3RZMjogcG9seSBvZiBwb2x5OiAo eCAoMyAoeSAoMSAxKSAoMCAxKSkpICgxIDIpICgwIDQpKQp6ZXJvLXBvbHk/OiBwb2x5PSh5ICgy IChwb2x5bm9taWFsIHggKDIgMSkgKDAgMSkpKSAoMCAyKSkKemVyby1wb2x5PzogcG9seT0oeCAo MiAxKSAoMCAxKSkKemVyby1wb2x5PzogcG9seT0oeSAoMCAyKSkKemVyby1wb2x5PzogcG9seT0o eSkKemVyby1wb2x5PzogcG9seT0oeCAoMiAxKSAoMCAxKSkKemVyby1wb2x5PzogcG9seT0oeSAo MiAocG9seW5vbWlhbCB4ICgyIDEpICgwIDEpKSkgKDAgMikpCnplcm8tcG9seT86IHBvbHk9KHgg KDIgMSkgKDAgMSkpCnplcm8tcG9seT86IHBvbHk9KHggKDIgMSkgKDAgMSkpCnplcm8tcG9seT86 IHBvbHk9KHggKDAgMSkpCnplcm8tcG9seT86IHBvbHk9KHgpCnplcm8tcG9seT86IHBvbHk9KHkg KDAgMikpCnplcm8tcG9seT86IHBvbHk9KHkpCnplcm8tcG9seT86IHBvbHk9KHkgKDIgMSkpCnpl cm8tcG9seT86IHBvbHk9KHkgKDIgMSkpCnplcm8tcG9seT86IHBvbHk9KHkgKDIgMSkgKDAgMikp Cnplcm8tcG9seT86IHBvbHk9KHkgKDIgMSkpClRlc3QxMzogRXhwYW5kaW5nIGEgcG9seW5vbWlh bCBhcyBtb25vbWlhbHM6IChwb2x5bm9taWFsIHggKDIgKHBvbHlub21pYWwgeSAoMiAxKSkpICgw IChwb2x5bm9taWFsIHkgKDIgMSkgKDAgMikpKSkKClRlc3QyMDogc3RhcnQgbW9ub21pYWw6IChw b2x5bm9taWFsIHggKDIgKHBvbHlub21pYWwgeSAoMiAxKSAoMCAxKSkpKQp6ZXJvLXBvbHk/OiBw b2x5PSh4ICgxIDEpKQp6ZXJvLXBvbHk/OiBwb2x5PSh4ICgxIDEpKQpUZXN0MjA6IEZsaXBwaW5n IGEgbW9ub21pYWwgdmFyaWFibGU6IChwb2x5bm9taWFsIHkgKDIgKHBvbHlub21pYWwgeCAoMSAx KSkpICgwIChwb2x5bm9taWFsIHggKDEgMSkpKSkKClRlc3QyMTogbm9ybWFsLXBvbHlub21pYWw/ OnN0YXJ0OiAocG9seW5vbWlhbCB5ICgyIChwb2x5bm9taWFsIHggKDIgMSkgKDAgMSkpKSAoMCAy KSkKVGVzdCAyOiBNYWtpbmcgcG9seW5vbWlhbHM6IChwb2x5bm9taWFsIHggKDUgMSkgKDQgMikp Cnplcm8tcG9seT86IHBvbHk9KHggKDUgMSkgKDQgMikpClRlc3QgMzogWmVybz86ICNmClRlc3Qg NDogQWRkaW5nIHBvbHlub21pYWxzOiAocG9seW5vbWlhbCB4ICg1IDIpICg0IDIpICgwIDEpKQp6 ZXJvLXBvbHk/OiBwb2x5PSh4ICg1IDApICgzIDEpKQp6ZXJvLXBvbHk/OiBwb2x5PSh4ICgzIDEp KQpUZXN0IDQ6IFplcm8/OiAjZgpUZXN0IDU6IFN1YnRyYWN0aW5nIHBvbHlub21pYWxzOiAocG9s eW5vbWlhbCB4ICg1IDEpICg0IDIpKQpkaXYtcG9seTogcDE9KHggKDIgMSkgKDEgMikgKDAgMSkp LCBwMj0oeCAoMSAxKSAoMCAxKSkKZGl2LXRlcm1zOiBMMT0oKDIgMSkgKDEgMikgKDAgMSkpLCBM Mj0oKDEgMSkgKDAgMSkpCmRpdi10ZXJtczogTDE9KCgxIDEpICgwIDEpKSwgTDI9KCgxIDEpICgw IDEpKQpkaXYtdGVybXM6IEwxPSgpLCBMMj0oKDEgMSkgKDAgMSkpClRlc3QxMjogRGl2aWRpbmcg eF4yICsgMnggKyAxIGJ5IHgrMTogKCh4ICgxIDEpICgwIDEpKSAoeCkpClRlc3QxNDogQWRkaW5n IHBvbHlub21pYWxzIG9mIHR3byB2YXJpYWJsZXM6IChwb2x5bm9taWFsIHggKDEgMSkgKDAgKHBv bHlub21pYWwgeSAoMSAxKSkpKVRlc3QxNDogQWRkaW5nIHBvbHlub21pYWxzIG9mIHR3byB2YXJp YWJsZXMsIHdoZW4gb25lIG9mIHRoZW0gaXMgbm9uZXhpc3RhbnQ6IChwb2x5bm9taWFsIHggKDEg MSkgKDAgKHBvbHlub21pYWwgeSAoMCAxKSkpKXplcm8tcG9seT86IHBvbHk9KHkgKDEgMSkpCnpl cm8tcG9seT86IHBvbHk9KHkgKDEgMSkpClRlc3QyNTogbXVsdGlwbHlpbmcgZGlmZmVyZW50IHZh cmlhYmxlczogKHBvbHlub21pYWwgeCAoMSAocG9seW5vbWlhbCB5ICgxIDEpKSkpClRlc3QgMjY6 c3RhcnQKbWFrZS1yYXQ6IG49KHBvbHlub21pYWwgeCAoMyAxKSAoMCAxKSksIGQ9KHBvbHlub21p YWwgeCAoMiAxKSAoMCAxKSkKcmVkdWNlLXBvbHk6IHAxPSh4ICgzIDEpICgwIDEpKSwgcDI9KHgg KDIgMSkgKDAgMSkpCnJlZHVjZS10ZXJtczogdGVybWxpc3QtMT0oKDMgMSkgKDAgMSkpLCB0ZXJt bGlzdC0yPSgoMiAxKSAoMCAxKSkKZ2NkLXRlcm1zOiBhPSgoMyAxKSAoMCAxKSksIGI9KCgyIDEp ICgwIDEpKQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IFA9KCgzIDEpICgwIDEpKQpwc2V1ZG9yZW1h aW5kZXItdGVybXM6IFE9KCgyIDEpICgwIDEpKQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IE8xPTMK cHNldWRvcmVtYWluZGVyLXRlcm1zOiBPMj0yCnBzZXVkb3JlbWFpbmRlci10ZXJtczogYz0xCnBz ZXVkb3JlbWFpbmRlci10ZXJtczogdGhlIGludGVnZXJpemluZyBmYWN0b3I9KDAgMSkKcHNldWRv cmVtYWluZGVyLXRlcm1zOiBQIGFmdGVyIG11bHRpcGxpY2F0aW9uPSgoMyAxKSAoMCAxKSkKZGl2 LXRlcm1zOiBMMT0oKDMgMSkgKDAgMSkpLCBMMj0oKDIgMSkgKDAgMSkpCmRpdi10ZXJtczogTDE9 KCgxIC0xKSAoMCAxKSksIEwyPSgoMiAxKSAoMCAxKSkKZ2NkLXRlcm1zOiBhPSgoMiAxKSAoMCAx KSksIGI9KCgxIC0xKSAoMCAxKSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBQPSgoMiAxKSAoMCAx KSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBRPSgoMSAtMSkgKDAgMSkpCnBzZXVkb3JlbWFpbmRl ci10ZXJtczogTzE9Mgpwc2V1ZG9yZW1haW5kZXItdGVybXM6IE8yPTEKcHNldWRvcmVtYWluZGVy LXRlcm1zOiBjPS0xCnBzZXVkb3JlbWFpbmRlci10ZXJtczogdGhlIGludGVnZXJpemluZyBmYWN0 b3I9KDAgMSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBQIGFmdGVyIG11bHRpcGxpY2F0aW9uPSgo MiAxKSAoMCAxKSkKZGl2LXRlcm1zOiBMMT0oKDIgMSkgKDAgMSkpLCBMMj0oKDEgLTEpICgwIDEp KQpkaXYtdGVybXM6IEwxPSgoMSAxKSAoMCAxKSksIEwyPSgoMSAtMSkgKDAgMSkpCmRpdi10ZXJt czogTDE9KCgwIDIpKSwgTDI9KCgxIC0xKSAoMCAxKSkKZ2NkLXRlcm1zOiBhPSgoMSAtMSkgKDAg MSkpLCBiPSgoMCAyKSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBQPSgoMSAtMSkgKDAgMSkpCnBz ZXVkb3JlbWFpbmRlci10ZXJtczogUT0oKDAgMikpCnBzZXVkb3JlbWFpbmRlci10ZXJtczogTzE9 MQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IE8yPTAKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBjPTIK cHNldWRvcmVtYWluZGVyLXRlcm1zOiB0aGUgaW50ZWdlcml6aW5nIGZhY3Rvcj0oMCA0KQpwc2V1 ZG9yZW1haW5kZXItdGVybXM6IFAgYWZ0ZXIgbXVsdGlwbGljYXRpb249KCgxIC00KSAoMCA0KSkK ZGl2LXRlcm1zOiBMMT0oKDEgLTQpICgwIDQpKSwgTDI9KCgwIDIpKQpkaXYtdGVybXM6IEwxPSgo MCA0KSksIEwyPSgoMCAyKSkKZGl2LXRlcm1zOiBMMT0oKSwgTDI9KCgwIDIpKQpnY2QtdGVybXM6 IGE9KCgwIDIpKSwgYj0oKQpkaXYtdGVybXM6IEwxPSgoMyAxNikgKDAgMTYpKSwgTDI9KCgwIDIp KQpkaXYtdGVybXM6IEwxPSgoMCAxNikpLCBMMj0oKDAgMikpCmRpdi10ZXJtczogTDE9KCksIEwy PSgoMCAyKSkKZGl2LXRlcm1zOiBMMT0oKDIgMTYpICgwIDE2KSksIEwyPSgoMCAyKSkKZGl2LXRl cm1zOiBMMT0oKDAgMTYpKSwgTDI9KCgwIDIpKQpkaXYtdGVybXM6IEwxPSgpLCBMMj0oKDAgMikp Cm1hcHJlc3Q6IG9wZXJhdGlvbj0jPHByb2NlZHVyZSBmaXJzdC10ZXJtPnRlcm0tbGlzdD0oKDMg OCkgKDAgOCkpCm1hcHJlc3Q6IG9wZXJhdGlvbj0jPHByb2NlZHVyZSBmaXJzdC10ZXJtPnRlcm0t bGlzdD0oKDAgOCkpCm1hcHJlc3Q6IG9wZXJhdGlvbj0jPHByb2NlZHVyZSBmaXJzdC10ZXJtPnRl cm0tbGlzdD0oKQptYXByZXN0OiBvcGVyYXRpb249Izxwcm9jZWR1cmUgZmlyc3QtdGVybT50ZXJt LWxpc3Q9KCgyIDgpICgwIDgpKQptYXByZXN0OiBvcGVyYXRpb249Izxwcm9jZWR1cmUgZmlyc3Qt dGVybT50ZXJtLWxpc3Q9KCgwIDgpKQptYXByZXN0OiBvcGVyYXRpb249Izxwcm9jZWR1cmUgZmly c3QtdGVybT50ZXJtLWxpc3Q9KCkKZnVsbC1saXN0PSg4IDggOCA4KQpUZXN0IDI2OiBtYWtlLXJh dGlvbmFsLXBvbHlub21pYWw6IChyYXRpb25hbCAocG9seW5vbWlhbCB4ICgzIDEpICgwIDEpKSBw b2x5bm9taWFsIHggKDIgMSkgKDAgMSkpClRlc3QgMjc6IGFkZC1yYXRpb25hbAptYWtlLXJhdDog bj0ocG9seW5vbWlhbCB4ICg1IDIpICgzIDIpICgyIDIpICgwIDIpKSwgZD0ocG9seW5vbWlhbCB4 ICg0IDEpICgyIDIpICgwIDEpKQpyZWR1Y2UtcG9seTogcDE9KHggKDUgMikgKDMgMikgKDIgMikg KDAgMikpLCBwMj0oeCAoNCAxKSAoMiAyKSAoMCAxKSkKcmVkdWNlLXRlcm1zOiB0ZXJtbGlzdC0x PSgoNSAyKSAoMyAyKSAoMiAyKSAoMCAyKSksIHRlcm1saXN0LTI9KCg0IDEpICgyIDIpICgwIDEp KQpnY2QtdGVybXM6IGE9KCg1IDIpICgzIDIpICgyIDIpICgwIDIpKSwgYj0oKDQgMSkgKDIgMikg KDAgMSkpCnBzZXVkb3JlbWFpbmRlci10ZXJtczogUD0oKDUgMikgKDMgMikgKDIgMikgKDAgMikp CnBzZXVkb3JlbWFpbmRlci10ZXJtczogUT0oKDQgMSkgKDIgMikgKDAgMSkpCnBzZXVkb3JlbWFp bmRlci10ZXJtczogTzE9NQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IE8yPTQKcHNldWRvcmVtYWlu ZGVyLXRlcm1zOiBjPTEKcHNldWRvcmVtYWluZGVyLXRlcm1zOiB0aGUgaW50ZWdlcml6aW5nIGZh Y3Rvcj0oMCAxKQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IFAgYWZ0ZXIgbXVsdGlwbGljYXRpb249 KCg1IDIpICgzIDIpICgyIDIpICgwIDIpKQpkaXYtdGVybXM6IEwxPSgoNSAyKSAoMyAyKSAoMiAy KSAoMCAyKSksIEwyPSgoNCAxKSAoMiAyKSAoMCAxKSkKZGl2LXRlcm1zOiBMMT0oKDMgLTIpICgy IDIpICgxIC0yKSAoMCAyKSksIEwyPSgoNCAxKSAoMiAyKSAoMCAxKSkKZ2NkLXRlcm1zOiBhPSgo NCAxKSAoMiAyKSAoMCAxKSksIGI9KCgzIC0yKSAoMiAyKSAoMSAtMikgKDAgMikpCnBzZXVkb3Jl bWFpbmRlci10ZXJtczogUD0oKDQgMSkgKDIgMikgKDAgMSkpCnBzZXVkb3JlbWFpbmRlci10ZXJt czogUT0oKDMgLTIpICgyIDIpICgxIC0yKSAoMCAyKSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBP MT00CnBzZXVkb3JlbWFpbmRlci10ZXJtczogTzI9Mwpwc2V1ZG9yZW1haW5kZXItdGVybXM6IGM9 LTIKcHNldWRvcmVtYWluZGVyLXRlcm1zOiB0aGUgaW50ZWdlcml6aW5nIGZhY3Rvcj0oMCA0KQpw c2V1ZG9yZW1haW5kZXItdGVybXM6IFAgYWZ0ZXIgbXVsdGlwbGljYXRpb249KCg0IDQpICgyIDgp ICgwIDQpKQpkaXYtdGVybXM6IEwxPSgoNCA0KSAoMiA4KSAoMCA0KSksIEwyPSgoMyAtMikgKDIg MikgKDEgLTIpICgwIDIpKQpkaXYtdGVybXM6IEwxPSgoMyA0KSAoMiA0KSAoMSA0KSAoMCA0KSks IEwyPSgoMyAtMikgKDIgMikgKDEgLTIpICgwIDIpKQpkaXYtdGVybXM6IEwxPSgoMiA4KSAoMCA4 KSksIEwyPSgoMyAtMikgKDIgMikgKDEgLTIpICgwIDIpKQpnY2QtdGVybXM6IGE9KCgzIC0yKSAo MiAyKSAoMSAtMikgKDAgMikpLCBiPSgoMiA4KSAoMCA4KSkKcHNldWRvcmVtYWluZGVyLXRlcm1z OiBQPSgoMyAtMikgKDIgMikgKDEgLTIpICgwIDIpKQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IFE9 KCgyIDgpICgwIDgpKQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IE8xPTMKcHNldWRvcmVtYWluZGVy LXRlcm1zOiBPMj0yCnBzZXVkb3JlbWFpbmRlci10ZXJtczogYz04CnBzZXVkb3JlbWFpbmRlci10 ZXJtczogdGhlIGludGVnZXJpemluZyBmYWN0b3I9KDAgNjQpCnBzZXVkb3JlbWFpbmRlci10ZXJt czogUCBhZnRlciBtdWx0aXBsaWNhdGlvbj0oKDMgLTEyOCkgKDIgMTI4KSAoMSAtMTI4KSAoMCAx MjgpKQpkaXYtdGVybXM6IEwxPSgoMyAtMTI4KSAoMiAxMjgpICgxIC0xMjgpICgwIDEyOCkpLCBM Mj0oKDIgOCkgKDAgOCkpCmRpdi10ZXJtczogTDE9KCgyIDEyOCkgKDAgMTI4KSksIEwyPSgoMiA4 KSAoMCA4KSkKZGl2LXRlcm1zOiBMMT0oKSwgTDI9KCgyIDgpICgwIDgpKQpnY2QtdGVybXM6IGE9 KCgyIDgpICgwIDgpKSwgYj0oKQpkaXYtdGVybXM6IEwxPSgoNSA4MTkyKSAoMyA4MTkyKSAoMiA4 MTkyKSAoMCA4MTkyKSksIEwyPSgoMiA4KSAoMCA4KSkKZGl2LXRlcm1zOiBMMT0oKDIgODE5Mikg KDAgODE5MikpLCBMMj0oKDIgOCkgKDAgOCkpCmRpdi10ZXJtczogTDE9KCksIEwyPSgoMiA4KSAo MCA4KSkKZGl2LXRlcm1zOiBMMT0oKDQgNDA5NikgKDIgODE5MikgKDAgNDA5NikpLCBMMj0oKDIg OCkgKDAgOCkpCmRpdi10ZXJtczogTDE9KCgyIDQwOTYpICgwIDQwOTYpKSwgTDI9KCgyIDgpICgw IDgpKQpkaXYtdGVybXM6IEwxPSgpLCBMMj0oKDIgOCkgKDAgOCkpCm1hcHJlc3Q6IG9wZXJhdGlv bj0jPHByb2NlZHVyZSBmaXJzdC10ZXJtPnRlcm0tbGlzdD0oKDMgMTAyNCkgKDAgMTAyNCkpCm1h cHJlc3Q6IG9wZXJhdGlvbj0jPHByb2NlZHVyZSBmaXJzdC10ZXJtPnRlcm0tbGlzdD0oKDAgMTAy NCkpCm1hcHJlc3Q6IG9wZXJhdGlvbj0jPHByb2NlZHVyZSBmaXJzdC10ZXJtPnRlcm0tbGlzdD0o KQptYXByZXN0OiBvcGVyYXRpb249Izxwcm9jZWR1cmUgZmlyc3QtdGVybT50ZXJtLWxpc3Q9KCgy IDUxMikgKDAgNTEyKSkKbWFwcmVzdDogb3BlcmF0aW9uPSM8cHJvY2VkdXJlIGZpcnN0LXRlcm0+ dGVybS1saXN0PSgoMCA1MTIpKQptYXByZXN0OiBvcGVyYXRpb249Izxwcm9jZWR1cmUgZmlyc3Qt dGVybT50ZXJtLWxpc3Q9KCkKZnVsbC1saXN0PSgxMDI0IDEwMjQgNTEyIDUxMikKcmF0aW9uYWwg bm90IGRyb3BwYWJsZTogI2YKVGVzdCAyNzogKHJhdGlvbmFsIChwb2x5bm9taWFsIHggKDMgMikg KDAgMikpIHBvbHlub21pYWwgeCAoMiAxKSAoMCAxKSkKVGVzdCAyODogcG9seW5vbWlhbC1nY2Q6 IHN0YXJ0CmdjZC1wb2x5OnAxPSh4ICg0IDEpICgzIC0xKSAoMiAtMikgKDEgMikpLCBwMj0oeCAo MyAxKSAoMSAtMSkpCmdjZC10ZXJtczogYT0oKDQgMSkgKDMgLTEpICgyIC0yKSAoMSAyKSksIGI9 KCgzIDEpICgxIC0xKSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBQPSgoNCAxKSAoMyAtMSkgKDIg LTIpICgxIDIpKQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IFE9KCgzIDEpICgxIC0xKSkKcHNldWRv cmVtYWluZGVyLXRlcm1zOiBPMT00CnBzZXVkb3JlbWFpbmRlci10ZXJtczogTzI9Mwpwc2V1ZG9y ZW1haW5kZXItdGVybXM6IGM9MQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IHRoZSBpbnRlZ2VyaXpp bmcgZmFjdG9yPSgwIDEpCnBzZXVkb3JlbWFpbmRlci10ZXJtczogUCBhZnRlciBtdWx0aXBsaWNh dGlvbj0oKDQgMSkgKDMgLTEpICgyIC0yKSAoMSAyKSkKZGl2LXRlcm1zOiBMMT0oKDQgMSkgKDMg LTEpICgyIC0yKSAoMSAyKSksIEwyPSgoMyAxKSAoMSAtMSkpCmRpdi10ZXJtczogTDE9KCgzIC0x KSAoMiAtMSkgKDEgMikpLCBMMj0oKDMgMSkgKDEgLTEpKQpkaXYtdGVybXM6IEwxPSgoMiAtMSkg KDEgMSkpLCBMMj0oKDMgMSkgKDEgLTEpKQpnY2QtdGVybXM6IGE9KCgzIDEpICgxIC0xKSksIGI9 KCgyIC0xKSAoMSAxKSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBQPSgoMyAxKSAoMSAtMSkpCnBz ZXVkb3JlbWFpbmRlci10ZXJtczogUT0oKDIgLTEpICgxIDEpKQpwc2V1ZG9yZW1haW5kZXItdGVy bXM6IE8xPTMKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBPMj0yCnBzZXVkb3JlbWFpbmRlci10ZXJt czogYz0tMQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IHRoZSBpbnRlZ2VyaXppbmcgZmFjdG9yPSgw IDEpCnBzZXVkb3JlbWFpbmRlci10ZXJtczogUCBhZnRlciBtdWx0aXBsaWNhdGlvbj0oKDMgMSkg KDEgLTEpKQpkaXYtdGVybXM6IEwxPSgoMyAxKSAoMSAtMSkpLCBMMj0oKDIgLTEpICgxIDEpKQpk aXYtdGVybXM6IEwxPSgoMiAxKSAoMSAtMSkpLCBMMj0oKDIgLTEpICgxIDEpKQpkaXYtdGVybXM6 IEwxPSgpLCBMMj0oKDIgLTEpICgxIDEpKQpnY2QtdGVybXM6IGE9KCgyIC0xKSAoMSAxKSksIGI9 KCkKbWFwcmVzdDogb3BlcmF0aW9uPSM8cHJvY2VkdXJlIGZpcnN0LXRlcm0+dGVybS1saXN0PSgo MiAtMSkgKDEgMSkpCm1hcHJlc3Q6IG9wZXJhdGlvbj0jPHByb2NlZHVyZSBmaXJzdC10ZXJtPnRl cm0tbGlzdD0oKDEgMSkpCm1hcHJlc3Q6IG9wZXJhdGlvbj0jPHByb2NlZHVyZSBmaXJzdC10ZXJt PnRlcm0tbGlzdD0oKQpnY2QtcG9seTogdW5vcHRpbWl6ZWQtdGVybWxpc3Q9KCgyIC0xKSAoMSAx KSkKZ2NkLXBvbHk6IGZpcnN0LXRlcm1zPSgoMiAtMSkgKDEgMSkpCmdjZC1wb2x5OiBjb2VmZmlj aWVudHM9KC0xIDEpCmdjZC1wb2x5OiBjb2VmZi1nY2Q9MQpUZXN0IDI4OiBwb2x5bm9taWFsLWdj ZDogKHBvbHlub21pYWwgeCAoMiAtMSkgKDEgMSkpClRlc3QgMjk6IGdjZC1pbnRlZ2VyLXByb2Js ZW06IHN0YXJ0ClRlc3QgMjk6IHAxPShwb2x5bm9taWFsIHggKDIgMSkgKDEgLTIpICgwIDEpKQpU ZXN0IDI5OiBwMj0ocG9seW5vbWlhbCB4ICgyIDExKSAoMCA3KSkKVGVzdCAyOTogcDM9KHBvbHlu b21pYWwgeCAoMSAxMykgKDAgNSkpClRlc3QgMjk6IHExPShwb2x5bm9taWFsIHggKDQgMTEpICgz IC0yMikgKDIgMTgpICgxIC0xNCkgKDAgNykpClRlc3QgMjk6IHEyPShwb2x5bm9taWFsIHggKDMg MTMpICgyIC0yMSkgKDEgMykgKDAgNSkpCmdjZC1wb2x5OnAxPSh4ICg0IDExKSAoMyAtMjIpICgy IDE4KSAoMSAtMTQpICgwIDcpKSwgcDI9KHggKDMgMTMpICgyIC0yMSkgKDEgMykgKDAgNSkpCmdj ZC10ZXJtczogYT0oKDQgMTEpICgzIC0yMikgKDIgMTgpICgxIC0xNCkgKDAgNykpLCBiPSgoMyAx MykgKDIgLTIxKSAoMSAzKSAoMCA1KSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBQPSgoNCAxMSkg KDMgLTIyKSAoMiAxOCkgKDEgLTE0KSAoMCA3KSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBRPSgo MyAxMykgKDIgLTIxKSAoMSAzKSAoMCA1KSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBPMT00CnBz ZXVkb3JlbWFpbmRlci10ZXJtczogTzI9Mwpwc2V1ZG9yZW1haW5kZXItdGVybXM6IGM9MTMKcHNl dWRvcmVtYWluZGVyLXRlcm1zOiB0aGUgaW50ZWdlcml6aW5nIGZhY3Rvcj0oMCAxNjkpCnBzZXVk b3JlbWFpbmRlci10ZXJtczogUCBhZnRlciBtdWx0aXBsaWNhdGlvbj0oKDQgMTg1OSkgKDMgLTM3 MTgpICgyIDMwNDIpICgxIC0yMzY2KSAoMCAxMTgzKSkKZGl2LXRlcm1zOiBMMT0oKDQgMTg1OSkg KDMgLTM3MTgpICgyIDMwNDIpICgxIC0yMzY2KSAoMCAxMTgzKSksIEwyPSgoMyAxMykgKDIgLTIx KSAoMSAzKSAoMCA1KSkKZGl2LXRlcm1zOiBMMT0oKDMgLTcxNSkgKDIgMjYxMykgKDEgLTMwODEp ICgwIDExODMpKSwgTDI9KCgzIDEzKSAoMiAtMjEpICgxIDMpICgwIDUpKQpkaXYtdGVybXM6IEwx PSgoMiAxNDU4KSAoMSAtMjkxNikgKDAgMTQ1OCkpLCBMMj0oKDMgMTMpICgyIC0yMSkgKDEgMykg KDAgNSkpCmdjZC10ZXJtczogYT0oKDMgMTMpICgyIC0yMSkgKDEgMykgKDAgNSkpLCBiPSgoMiAx NDU4KSAoMSAtMjkxNikgKDAgMTQ1OCkpCnBzZXVkb3JlbWFpbmRlci10ZXJtczogUD0oKDMgMTMp ICgyIC0yMSkgKDEgMykgKDAgNSkpCnBzZXVkb3JlbWFpbmRlci10ZXJtczogUT0oKDIgMTQ1OCkg KDEgLTI5MTYpICgwIDE0NTgpKQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IE8xPTMKcHNldWRvcmVt YWluZGVyLXRlcm1zOiBPMj0yCnBzZXVkb3JlbWFpbmRlci10ZXJtczogYz0xNDU4CnBzZXVkb3Jl bWFpbmRlci10ZXJtczogdGhlIGludGVnZXJpemluZyBmYWN0b3I9KDAgMjEyNTc2NCkKcHNldWRv cmVtYWluZGVyLXRlcm1zOiBQIGFmdGVyIG11bHRpcGxpY2F0aW9uPSgoMyAyNzYzNDkzMikgKDIg LTQ0NjQxMDQ0KSAoMSA2Mzc3MjkyKSAoMCAxMDYyODgyMCkpCmRpdi10ZXJtczogTDE9KCgzIDI3 NjM0OTMyKSAoMiAtNDQ2NDEwNDQpICgxIDYzNzcyOTIpICgwIDEwNjI4ODIwKSksIEwyPSgoMiAx NDU4KSAoMSAtMjkxNikgKDAgMTQ1OCkpCmRpdi10ZXJtczogTDE9KCgyIDEwNjI4ODIwKSAoMSAt MjEyNTc2NDApICgwIDEwNjI4ODIwKSksIEwyPSgoMiAxNDU4KSAoMSAtMjkxNikgKDAgMTQ1OCkp CmRpdi10ZXJtczogTDE9KCksIEwyPSgoMiAxNDU4KSAoMSAtMjkxNikgKDAgMTQ1OCkpCmdjZC10 ZXJtczogYT0oKDIgMTQ1OCkgKDEgLTI5MTYpICgwIDE0NTgpKSwgYj0oKQptYXByZXN0OiBvcGVy YXRpb249Izxwcm9jZWR1cmUgZmlyc3QtdGVybT50ZXJtLWxpc3Q9KCgyIDE0NTgpICgxIC0yOTE2 KSAoMCAxNDU4KSkKbWFwcmVzdDogb3BlcmF0aW9uPSM8cHJvY2VkdXJlIGZpcnN0LXRlcm0+dGVy bS1saXN0PSgoMSAtMjkxNikgKDAgMTQ1OCkpCm1hcHJlc3Q6IG9wZXJhdGlvbj0jPHByb2NlZHVy ZSBmaXJzdC10ZXJtPnRlcm0tbGlzdD0oKDAgMTQ1OCkpCm1hcHJlc3Q6IG9wZXJhdGlvbj0jPHBy b2NlZHVyZSBmaXJzdC10ZXJtPnRlcm0tbGlzdD0oKQpnY2QtcG9seTogdW5vcHRpbWl6ZWQtdGVy bWxpc3Q9KCgyIDE0NTgpICgxIC0yOTE2KSAoMCAxNDU4KSkKZ2NkLXBvbHk6IGZpcnN0LXRlcm1z PSgoMiAxNDU4KSAoMSAtMjkxNikgKDAgMTQ1OCkpCmdjZC1wb2x5OiBjb2VmZmljaWVudHM9KDE0 NTggLTI5MTYgMTQ1OCkKZ2NkLXBvbHk6IGNvZWZmLWdjZD0xNDU4ClRlc3QgMjk6IGdjZCA6IChw b2x5bm9taWFsIHggKDIgMC45OTk5OTk5OTk5OTk5OTk5KSAoMSAtMS45OTk5OTk5OTk5OTk5OTk4 KSAoMCAwLjk5OTk5OTk5OTk5OTk5OTkpKQpUZXN0IDMwOiBzdGFydAptYWtlLXJhdDogbj0ocG9s eW5vbWlhbCB4ICgxIDEpICgwIDEpKSwgZD0ocG9seW5vbWlhbCB4ICgzIDEpICgwIC0xKSkKcmVk dWNlLXBvbHk6IHAxPSh4ICgxIDEpICgwIDEpKSwgcDI9KHggKDMgMSkgKDAgLTEpKQpyZWR1Y2Ut dGVybXM6IHRlcm1saXN0LTE9KCgxIDEpICgwIDEpKSwgdGVybWxpc3QtMj0oKDMgMSkgKDAgLTEp KQpnY2QtdGVybXM6IGE9KCgxIDEpICgwIDEpKSwgYj0oKDMgMSkgKDAgLTEpKQpwc2V1ZG9yZW1h aW5kZXItdGVybXM6IFA9KCgxIDEpICgwIDEpKQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IFE9KCgz IDEpICgwIC0xKSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBPMT0xCnBzZXVkb3JlbWFpbmRlci10 ZXJtczogTzI9Mwpwc2V1ZG9yZW1haW5kZXItdGVybXM6IGM9MQpwc2V1ZG9yZW1haW5kZXItdGVy bXM6IHRoZSBpbnRlZ2VyaXppbmcgZmFjdG9yPSgwIDEpCnBzZXVkb3JlbWFpbmRlci10ZXJtczog UCBhZnRlciBtdWx0aXBsaWNhdGlvbj0oKDEgMSkgKDAgMSkpCmRpdi10ZXJtczogTDE9KCgxIDEp ICgwIDEpKSwgTDI9KCgzIDEpICgwIC0xKSkKZ2NkLXRlcm1zOiBhPSgoMyAxKSAoMCAtMSkpLCBi PSgoMSAxKSAoMCAxKSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBQPSgoMyAxKSAoMCAtMSkpCnBz ZXVkb3JlbWFpbmRlci10ZXJtczogUT0oKDEgMSkgKDAgMSkpCnBzZXVkb3JlbWFpbmRlci10ZXJt czogTzE9Mwpwc2V1ZG9yZW1haW5kZXItdGVybXM6IE8yPTEKcHNldWRvcmVtYWluZGVyLXRlcm1z OiBjPTEKcHNldWRvcmVtYWluZGVyLXRlcm1zOiB0aGUgaW50ZWdlcml6aW5nIGZhY3Rvcj0oMCAx KQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IFAgYWZ0ZXIgbXVsdGlwbGljYXRpb249KCgzIDEpICgw IC0xKSkKZGl2LXRlcm1zOiBMMT0oKDMgMSkgKDAgLTEpKSwgTDI9KCgxIDEpICgwIDEpKQpkaXYt dGVybXM6IEwxPSgoMiAtMSkgKDAgLTEpKSwgTDI9KCgxIDEpICgwIDEpKQpkaXYtdGVybXM6IEwx PSgoMSAxKSAoMCAtMSkpLCBMMj0oKDEgMSkgKDAgMSkpCmRpdi10ZXJtczogTDE9KCgwIC0yKSks IEwyPSgoMSAxKSAoMCAxKSkKZ2NkLXRlcm1zOiBhPSgoMSAxKSAoMCAxKSksIGI9KCgwIC0yKSkK cHNldWRvcmVtYWluZGVyLXRlcm1zOiBQPSgoMSAxKSAoMCAxKSkKcHNldWRvcmVtYWluZGVyLXRl cm1zOiBRPSgoMCAtMikpCnBzZXVkb3JlbWFpbmRlci10ZXJtczogTzE9MQpwc2V1ZG9yZW1haW5k ZXItdGVybXM6IE8yPTAKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBjPS0yCnBzZXVkb3JlbWFpbmRl ci10ZXJtczogdGhlIGludGVnZXJpemluZyBmYWN0b3I9KDAgNCkKcHNldWRvcmVtYWluZGVyLXRl cm1zOiBQIGFmdGVyIG11bHRpcGxpY2F0aW9uPSgoMSA0KSAoMCA0KSkKZGl2LXRlcm1zOiBMMT0o KDEgNCkgKDAgNCkpLCBMMj0oKDAgLTIpKQpkaXYtdGVybXM6IEwxPSgoMCA0KSksIEwyPSgoMCAt MikpCmRpdi10ZXJtczogTDE9KCksIEwyPSgoMCAtMikpCmdjZC10ZXJtczogYT0oKDAgLTIpKSwg Yj0oKQpkaXYtdGVybXM6IEwxPSgoMSAxNikgKDAgMTYpKSwgTDI9KCgwIC0yKSkKZGl2LXRlcm1z OiBMMT0oKDAgMTYpKSwgTDI9KCgwIC0yKSkKZGl2LXRlcm1zOiBMMT0oKSwgTDI9KCgwIC0yKSkK ZGl2LXRlcm1zOiBMMT0oKDMgMTYpICgwIC0xNikpLCBMMj0oKDAgLTIpKQpkaXYtdGVybXM6IEwx PSgoMCAtMTYpKSwgTDI9KCgwIC0yKSkKZGl2LXRlcm1zOiBMMT0oKSwgTDI9KCgwIC0yKSkKbWFw cmVzdDogb3BlcmF0aW9uPSM8cHJvY2VkdXJlIGZpcnN0LXRlcm0+dGVybS1saXN0PSgoMSAtOCkg KDAgLTgpKQptYXByZXN0OiBvcGVyYXRpb249Izxwcm9jZWR1cmUgZmlyc3QtdGVybT50ZXJtLWxp c3Q9KCgwIC04KSkKbWFwcmVzdDogb3BlcmF0aW9uPSM8cHJvY2VkdXJlIGZpcnN0LXRlcm0+dGVy bS1saXN0PSgpCm1hcHJlc3Q6IG9wZXJhdGlvbj0jPHByb2NlZHVyZSBmaXJzdC10ZXJtPnRlcm0t bGlzdD0oKDMgLTgpICgwIDgpKQptYXByZXN0OiBvcGVyYXRpb249Izxwcm9jZWR1cmUgZmlyc3Qt dGVybT50ZXJtLWxpc3Q9KCgwIDgpKQptYXByZXN0OiBvcGVyYXRpb249Izxwcm9jZWR1cmUgZmly c3QtdGVybT50ZXJtLWxpc3Q9KCkKZnVsbC1saXN0PSgtOCAtOCAtOCA4KQptYWtlLXJhdDogbj0o cG9seW5vbWlhbCB4ICgxIDEpKSwgZD0ocG9seW5vbWlhbCB4ICgyIDEpICgwIC0xKSkKcmVkdWNl LXBvbHk6IHAxPSh4ICgxIDEpKSwgcDI9KHggKDIgMSkgKDAgLTEpKQpyZWR1Y2UtdGVybXM6IHRl cm1saXN0LTE9KCgxIDEpKSwgdGVybWxpc3QtMj0oKDIgMSkgKDAgLTEpKQpnY2QtdGVybXM6IGE9 KCgxIDEpKSwgYj0oKDIgMSkgKDAgLTEpKQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IFA9KCgxIDEp KQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IFE9KCgyIDEpICgwIC0xKSkKcHNldWRvcmVtYWluZGVy LXRlcm1zOiBPMT0xCnBzZXVkb3JlbWFpbmRlci10ZXJtczogTzI9Mgpwc2V1ZG9yZW1haW5kZXIt dGVybXM6IGM9MQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IHRoZSBpbnRlZ2VyaXppbmcgZmFjdG9y PSgwIDEpCnBzZXVkb3JlbWFpbmRlci10ZXJtczogUCBhZnRlciBtdWx0aXBsaWNhdGlvbj0oKDEg MSkpCmRpdi10ZXJtczogTDE9KCgxIDEpKSwgTDI9KCgyIDEpICgwIC0xKSkKZ2NkLXRlcm1zOiBh PSgoMiAxKSAoMCAtMSkpLCBiPSgoMSAxKSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBQPSgoMiAx KSAoMCAtMSkpCnBzZXVkb3JlbWFpbmRlci10ZXJtczogUT0oKDEgMSkpCnBzZXVkb3JlbWFpbmRl ci10ZXJtczogTzE9Mgpwc2V1ZG9yZW1haW5kZXItdGVybXM6IE8yPTEKcHNldWRvcmVtYWluZGVy LXRlcm1zOiBjPTEKcHNldWRvcmVtYWluZGVyLXRlcm1zOiB0aGUgaW50ZWdlcml6aW5nIGZhY3Rv cj0oMCAxKQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IFAgYWZ0ZXIgbXVsdGlwbGljYXRpb249KCgy IDEpICgwIC0xKSkKZGl2LXRlcm1zOiBMMT0oKDIgMSkgKDAgLTEpKSwgTDI9KCgxIDEpKQpkaXYt dGVybXM6IEwxPSgoMCAtMSkpLCBMMj0oKDEgMSkpCmdjZC10ZXJtczogYT0oKDEgMSkpLCBiPSgo MCAtMSkpCnBzZXVkb3JlbWFpbmRlci10ZXJtczogUD0oKDEgMSkpCnBzZXVkb3JlbWFpbmRlci10 ZXJtczogUT0oKDAgLTEpKQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IE8xPTEKcHNldWRvcmVtYWlu ZGVyLXRlcm1zOiBPMj0wCnBzZXVkb3JlbWFpbmRlci10ZXJtczogYz0tMQpwc2V1ZG9yZW1haW5k ZXItdGVybXM6IHRoZSBpbnRlZ2VyaXppbmcgZmFjdG9yPSgwIDEpCnBzZXVkb3JlbWFpbmRlci10 ZXJtczogUCBhZnRlciBtdWx0aXBsaWNhdGlvbj0oKDEgMSkpCmRpdi10ZXJtczogTDE9KCgxIDEp KSwgTDI9KCgwIC0xKSkKZGl2LXRlcm1zOiBMMT0oKSwgTDI9KCgwIC0xKSkKZ2NkLXRlcm1zOiBh PSgoMCAtMSkpLCBiPSgpCmRpdi10ZXJtczogTDE9KCgxIC0xKSksIEwyPSgoMCAtMSkpCmRpdi10 ZXJtczogTDE9KCksIEwyPSgoMCAtMSkpCmRpdi10ZXJtczogTDE9KCgyIC0xKSAoMCAxKSksIEwy PSgoMCAtMSkpCmRpdi10ZXJtczogTDE9KCgwIDEpKSwgTDI9KCgwIC0xKSkKZGl2LXRlcm1zOiBM MT0oKSwgTDI9KCgwIC0xKSkKbWFwcmVzdDogb3BlcmF0aW9uPSM8cHJvY2VkdXJlIGZpcnN0LXRl cm0+dGVybS1saXN0PSgoMSAxKSkKbWFwcmVzdDogb3BlcmF0aW9uPSM8cHJvY2VkdXJlIGZpcnN0 LXRlcm0+dGVybS1saXN0PSgpCm1hcHJlc3Q6IG9wZXJhdGlvbj0jPHByb2NlZHVyZSBmaXJzdC10 ZXJtPnRlcm0tbGlzdD0oKDIgMSkgKDAgLTEpKQptYXByZXN0OiBvcGVyYXRpb249Izxwcm9jZWR1 cmUgZmlyc3QtdGVybT50ZXJtLWxpc3Q9KCgwIC0xKSkKbWFwcmVzdDogb3BlcmF0aW9uPSM8cHJv Y2VkdXJlIGZpcnN0LXRlcm0+dGVybS1saXN0PSgpCmZ1bGwtbGlzdD0oMSAxIC0xKQptYWtlLXJh dDogbj0ocG9seW5vbWlhbCB4ICg0IC0xKSAoMyAtMSkgKDIgLTEpICgxIDIpICgwIDEpKSwgZD0o cG9seW5vbWlhbCB4ICg1IC0xKSAoMyAxKSAoMiAxKSAoMCAtMSkpCnJlZHVjZS1wb2x5OiBwMT0o eCAoNCAtMSkgKDMgLTEpICgyIC0xKSAoMSAyKSAoMCAxKSksIHAyPSh4ICg1IC0xKSAoMyAxKSAo MiAxKSAoMCAtMSkpCnJlZHVjZS10ZXJtczogdGVybWxpc3QtMT0oKDQgLTEpICgzIC0xKSAoMiAt MSkgKDEgMikgKDAgMSkpLCB0ZXJtbGlzdC0yPSgoNSAtMSkgKDMgMSkgKDIgMSkgKDAgLTEpKQpn Y2QtdGVybXM6IGE9KCg0IC0xKSAoMyAtMSkgKDIgLTEpICgxIDIpICgwIDEpKSwgYj0oKDUgLTEp ICgzIDEpICgyIDEpICgwIC0xKSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBQPSgoNCAtMSkgKDMg LTEpICgyIC0xKSAoMSAyKSAoMCAxKSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBRPSgoNSAtMSkg KDMgMSkgKDIgMSkgKDAgLTEpKQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IE8xPTQKcHNldWRvcmVt YWluZGVyLXRlcm1zOiBPMj01CnBzZXVkb3JlbWFpbmRlci10ZXJtczogYz0tMQpwc2V1ZG9yZW1h aW5kZXItdGVybXM6IHRoZSBpbnRlZ2VyaXppbmcgZmFjdG9yPSgwIDEpCnBzZXVkb3JlbWFpbmRl ci10ZXJtczogUCBhZnRlciBtdWx0aXBsaWNhdGlvbj0oKDQgLTEpICgzIC0xKSAoMiAtMSkgKDEg MikgKDAgMSkpCmRpdi10ZXJtczogTDE9KCg0IC0xKSAoMyAtMSkgKDIgLTEpICgxIDIpICgwIDEp KSwgTDI9KCg1IC0xKSAoMyAxKSAoMiAxKSAoMCAtMSkpCmdjZC10ZXJtczogYT0oKDUgLTEpICgz IDEpICgyIDEpICgwIC0xKSksIGI9KCg0IC0xKSAoMyAtMSkgKDIgLTEpICgxIDIpICgwIDEpKQpw c2V1ZG9yZW1haW5kZXItdGVybXM6IFA9KCg1IC0xKSAoMyAxKSAoMiAxKSAoMCAtMSkpCnBzZXVk b3JlbWFpbmRlci10ZXJtczogUT0oKDQgLTEpICgzIC0xKSAoMiAtMSkgKDEgMikgKDAgMSkpCnBz ZXVkb3JlbWFpbmRlci10ZXJtczogTzE9NQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IE8yPTQKcHNl dWRvcmVtYWluZGVyLXRlcm1zOiBjPS0xCnBzZXVkb3JlbWFpbmRlci10ZXJtczogdGhlIGludGVn ZXJpemluZyBmYWN0b3I9KDAgMSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBQIGFmdGVyIG11bHRp cGxpY2F0aW9uPSgoNSAtMSkgKDMgMSkgKDIgMSkgKDAgLTEpKQpkaXYtdGVybXM6IEwxPSgoNSAt MSkgKDMgMSkgKDIgMSkgKDAgLTEpKSwgTDI9KCg0IC0xKSAoMyAtMSkgKDIgLTEpICgxIDIpICgw IDEpKQpkaXYtdGVybXM6IEwxPSgoNCAxKSAoMyAyKSAoMiAtMSkgKDEgLTEpICgwIC0xKSksIEwy PSgoNCAtMSkgKDMgLTEpICgyIC0xKSAoMSAyKSAoMCAxKSkKZGl2LXRlcm1zOiBMMT0oKDMgMSkg KDIgLTIpICgxIDEpKSwgTDI9KCg0IC0xKSAoMyAtMSkgKDIgLTEpICgxIDIpICgwIDEpKQpnY2Qt dGVybXM6IGE9KCg0IC0xKSAoMyAtMSkgKDIgLTEpICgxIDIpICgwIDEpKSwgYj0oKDMgMSkgKDIg LTIpICgxIDEpKQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IFA9KCg0IC0xKSAoMyAtMSkgKDIgLTEp ICgxIDIpICgwIDEpKQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IFE9KCgzIDEpICgyIC0yKSAoMSAx KSkKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBPMT00CnBzZXVkb3JlbWFpbmRlci10ZXJtczogTzI9 Mwpwc2V1ZG9yZW1haW5kZXItdGVybXM6IGM9MQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IHRoZSBp bnRlZ2VyaXppbmcgZmFjdG9yPSgwIDEpCnBzZXVkb3JlbWFpbmRlci10ZXJtczogUCBhZnRlciBt dWx0aXBsaWNhdGlvbj0oKDQgLTEpICgzIC0xKSAoMiAtMSkgKDEgMikgKDAgMSkpCmRpdi10ZXJt czogTDE9KCg0IC0xKSAoMyAtMSkgKDIgLTEpICgxIDIpICgwIDEpKSwgTDI9KCgzIDEpICgyIC0y KSAoMSAxKSkKZGl2LXRlcm1zOiBMMT0oKDMgLTMpICgxIDIpICgwIDEpKSwgTDI9KCgzIDEpICgy IC0yKSAoMSAxKSkKZGl2LXRlcm1zOiBMMT0oKDIgLTYpICgxIDUpICgwIDEpKSwgTDI9KCgzIDEp ICgyIC0yKSAoMSAxKSkKZ2NkLXRlcm1zOiBhPSgoMyAxKSAoMiAtMikgKDEgMSkpLCBiPSgoMiAt NikgKDEgNSkgKDAgMSkpCnBzZXVkb3JlbWFpbmRlci10ZXJtczogUD0oKDMgMSkgKDIgLTIpICgx IDEpKQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IFE9KCgyIC02KSAoMSA1KSAoMCAxKSkKcHNldWRv cmVtYWluZGVyLXRlcm1zOiBPMT0zCnBzZXVkb3JlbWFpbmRlci10ZXJtczogTzI9Mgpwc2V1ZG9y ZW1haW5kZXItdGVybXM6IGM9LTYKcHNldWRvcmVtYWluZGVyLXRlcm1zOiB0aGUgaW50ZWdlcml6 aW5nIGZhY3Rvcj0oMCAzNikKcHNldWRvcmVtYWluZGVyLXRlcm1zOiBQIGFmdGVyIG11bHRpcGxp Y2F0aW9uPSgoMyAzNikgKDIgLTcyKSAoMSAzNikpCmRpdi10ZXJtczogTDE9KCgzIDM2KSAoMiAt NzIpICgxIDM2KSksIEwyPSgoMiAtNikgKDEgNSkgKDAgMSkpCmRpdi10ZXJtczogTDE9KCgyIC00 MikgKDEgNDIpKSwgTDI9KCgyIC02KSAoMSA1KSAoMCAxKSkKZGl2LXRlcm1zOiBMMT0oKDEgNykg KDAgLTcpKSwgTDI9KCgyIC02KSAoMSA1KSAoMCAxKSkKZ2NkLXRlcm1zOiBhPSgoMiAtNikgKDEg NSkgKDAgMSkpLCBiPSgoMSA3KSAoMCAtNykpCnBzZXVkb3JlbWFpbmRlci10ZXJtczogUD0oKDIg LTYpICgxIDUpICgwIDEpKQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IFE9KCgxIDcpICgwIC03KSkK cHNldWRvcmVtYWluZGVyLXRlcm1zOiBPMT0yCnBzZXVkb3JlbWFpbmRlci10ZXJtczogTzI9MQpw c2V1ZG9yZW1haW5kZXItdGVybXM6IGM9Nwpwc2V1ZG9yZW1haW5kZXItdGVybXM6IHRoZSBpbnRl Z2VyaXppbmcgZmFjdG9yPSgwIDQ5KQpwc2V1ZG9yZW1haW5kZXItdGVybXM6IFAgYWZ0ZXIgbXVs dGlwbGljYXRpb249KCgyIC0yOTQpICgxIDI0NSkgKDAgNDkpKQpkaXYtdGVybXM6IEwxPSgoMiAt Mjk0KSAoMSAyNDUpICgwIDQ5KSksIEwyPSgoMSA3KSAoMCAtNykpCmRpdi10ZXJtczogTDE9KCgx IC00OSkgKDAgNDkpKSwgTDI9KCgxIDcpICgwIC03KSkKZGl2LXRlcm1zOiBMMT0oKSwgTDI9KCgx IDcpICgwIC03KSkKZ2NkLXRlcm1zOiBhPSgoMSA3KSAoMCAtNykpLCBiPSgpCmRpdi10ZXJtczog TDE9KCg0IC0xNjgwNykgKDMgLTE2ODA3KSAoMiAtMTY4MDcpICgxIDMzNjE0KSAoMCAxNjgwNykp LCBMMj0oKDEgNykgKDAgLTcpKQpkaXYtdGVybXM6IEwxPSgoMyAtMzM2MTQpICgyIC0xNjgwNykg KDEgMzM2MTQpICgwIDE2ODA3KSksIEwyPSgoMSA3KSAoMCAtNykpCmRpdi10ZXJtczogTDE9KCgy IC01MDQyMSkgKDEgMzM2MTQpICgwIDE2ODA3KSksIEwyPSgoMSA3KSAoMCAtNykpCmRpdi10ZXJt czogTDE9KCgxIC0xNjgwNykgKDAgMTY4MDcpKSwgTDI9KCgxIDcpICgwIC03KSkKZGl2LXRlcm1z OiBMMT0oKSwgTDI9KCgxIDcpICgwIC03KSkKZGl2LXRlcm1zOiBMMT0oKDUgLTE2ODA3KSAoMyAx NjgwNykgKDIgMTY4MDcpICgwIC0xNjgwNykpLCBMMj0oKDEgNykgKDAgLTcpKQpkaXYtdGVybXM6 IEwxPSgoNCAtMTY4MDcpICgzIDE2ODA3KSAoMiAxNjgwNykgKDAgLTE2ODA3KSksIEwyPSgoMSA3 KSAoMCAtNykpCmRpdi10ZXJtczogTDE9KCgyIDE2ODA3KSAoMCAtMTY4MDcpKSwgTDI9KCgxIDcp ICgwIC03KSkKZGl2LXRlcm1zOiBMMT0oKDEgMTY4MDcpICgwIC0xNjgwNykpLCBMMj0oKDEgNykg KDAgLTcpKQpkaXYtdGVybXM6IEwxPSgpLCBMMj0oKDEgNykgKDAgLTcpKQptYXByZXN0OiBvcGVy YXRpb249Izxwcm9jZWR1cmUgZmlyc3QtdGVybT50ZXJtLWxpc3Q9KCgzIC0yNDAxKSAoMiAtNDgw MikgKDEgLTcyMDMpICgwIC0yNDAxKSkKbWFwcmVzdDogb3BlcmF0aW9uPSM8cHJvY2VkdXJlIGZp cnN0LXRlcm0+dGVybS1saXN0PSgoMiAtNDgwMikgKDEgLTcyMDMpICgwIC0yNDAxKSkKbWFwcmVz dDogb3BlcmF0aW9uPSM8cHJvY2VkdXJlIGZpcnN0LXRlcm0+dGVybS1saXN0PSgoMSAtNzIwMykg KDAgLTI0MDEpKQptYXByZXN0OiBvcGVyYXRpb249Izxwcm9jZWR1cmUgZmlyc3QtdGVybT50ZXJt LWxpc3Q9KCgwIC0yNDAxKSkKbWFwcmVzdDogb3BlcmF0aW9uPSM8cHJvY2VkdXJlIGZpcnN0LXRl cm0+dGVybS1saXN0PSgpCm1hcHJlc3Q6IG9wZXJhdGlvbj0jPHByb2NlZHVyZSBmaXJzdC10ZXJt PnRlcm0tbGlzdD0oKDQgLTI0MDEpICgzIC0yNDAxKSAoMSAyNDAxKSAoMCAyNDAxKSkKbWFwcmVz dDogb3BlcmF0aW9uPSM8cHJvY2VkdXJlIGZpcnN0LXRlcm0+dGVybS1saXN0PSgoMyAtMjQwMSkg KDEgMjQwMSkgKDAgMjQwMSkpCm1hcHJlc3Q6IG9wZXJhdGlvbj0jPHByb2NlZHVyZSBmaXJzdC10 ZXJtPnRlcm0tbGlzdD0oKDEgMjQwMSkgKDAgMjQwMSkpCm1hcHJlc3Q6IG9wZXJhdGlvbj0jPHBy b2NlZHVyZSBmaXJzdC10ZXJtPnRlcm0tbGlzdD0oKDAgMjQwMSkpCm1hcHJlc3Q6IG9wZXJhdGlv bj0jPHByb2NlZHVyZSBmaXJzdC10ZXJtPnRlcm0tbGlzdD0oKQpmdWxsLWxpc3Q9KC0yNDAxIC00 ODAyIC03MjAzIC0yNDAxIC0yNDAxIC0yNDAxIDI0MDEgMjQwMSkKcmF0aW9uYWwgbm90IGRyb3Bw YWJsZTogI2YKVGVzdCAzMzogKHJhdGlvbmFsIChwb2x5bm9taWFsIHggKDMgLTEpICgyIC0yKSAo MSAtMykgKDAgLTEpKSBwb2x5bm9taWFsIHggKDQgLTEpICgzIC0xKSAoMSAxKSAoMCAxKSkKIytl bmRfZXhhbXBsZQoKVGhpcyBleGVyY2lzZSBlbmRzIHRoZSBDaGFwdGVyIDIgb2YgdGhlIFN0cnVj dHVyZSBhbmQgSW50ZXJwcmV0YXRpb24gb2YKQ29tcHV0ZXIgcHJvZ3JhbXMuCgpUaGUgbWFpbiBw ZWRhZ29naWNhbCBjb25jbHVzaW9uIG9uZSBtYXkgaW5mZXIgZnJvbSB0aGlzIGV4ZXJjaXNlIGlz IHRoYXQgaXQKaXMgYSBnb29kIGlkZWEgdG8gcmVhZCBhIGJvb2sgb24gYWxnZWJyYSBhbmQgaW50 ZWdlciBhbGdvcml0aG1zLgoqKiBUT0RPIENoYXB0ZXIgMzogTW9kdWxhcml0eSwgT2JqZWN0cyBh bmQgU3RhdGUgWzc1LzkxXQoqKiogRE9ORSBFeGVyY2lzZSAzLjEgYWNjdW11bGF0b3JzCiAgICBD TE9TRUQ6IFsyMDE5LTEwLTI5IFR1ZSAxMDoyNF0KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0 cyBib3RoIDpyZXN1bHRzIG91dHB1dAooZGVmaW5lIChtYWtlLWFjY3VtdWxhdG9yIGluaXRpYWwt YW1vdW50KQogICAobGFtYmRhIChpbmNyZW1lbnQpIChzZXQhIGluaXRpYWwtYW1vdW50ICgrIGlu aXRpYWwtYW1vdW50IGluY3JlbWVudCkpIGluaXRpYWwtYW1vdW50KSkKKGRlZmluZSBBIChtYWtl LWFjY3VtdWxhdG9yIDUpKQooY2hlY2sgKEEgMTApID0+IDE1KQooY2hlY2sgKEEgMjApID0+IDM1 KQooZGVmaW5lIEIgKG1ha2UtYWNjdW11bGF0b3IgMTAwKSkKKGNoZWNrIChCIDIwMCkgPT4gMzAw KQooY2hlY2sgKEIgICAxKSA9PiAzMDEpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IAo6IChBIDEw KSA9PiAxNSA7IGNvcnJlY3QKOiAKOiAoQSAyMCkgPT4gMzUgOyBjb3JyZWN0CjogCjogKEIgMjAw KSA9PiAzMDAgOyBjb3JyZWN0CjogCjogKEIgMSkgPT4gMzAxIDsgY29ycmVjdAoKKioqIERPTkUg RXhlcmNpc2UgMy4yIG1ha2UtbW9uaXRvcmVkCiAgICBDTE9TRUQ6IFsyMDE5LTEwLTI5IFR1ZSAx MTowM10KClRoaXMgcHJvYmxlbSBpcyBpbGwtZGVmaW5lZC4gSW4gcGFydGljdWxhciwgaXQgZG9l c24ndCBzcGVjaWZ5IHdoZXRoZXIgd2UKc2hvdWxkIGJlIGNvdW50aW5nIGNhbGxzIHRvIH5mfiBv bmx5LCBvciB0byB+bWZ+IGluIHRvdGFsLCBpbmNsdWRpbmcgdGhlCmNhbGxzIHRvIH4naG93LW1h bnktY2FsbHM/fi4gCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBv dXRwdXQKICAoZGVmaW5lIChtYWtlLW1vbml0b3JlZCBmKQogICAgKGxldCAoKGNhbGwtY291bnRl ciAwKSkKICAgICAgKGxhbWJkYSAoYXJnKQoJKGNvbmQgKChlcT8gYXJnICdyZXNldC1jb3VudCkg KHNldCEgY2FsbC1jb3VudGVyIDApKQoJICAgICAgKChlcT8gYXJnICdob3ctbWFueS1jYWxscz8p IGNhbGwtY291bnRlcikKCSAgICAgIChlbHNlIChiZWdpbiAoc2V0ISBjYWxsLWNvdW50ZXIgKCsg MSBjYWxsLWNvdW50ZXIpKSAoZiBhcmcpKSkpKSkpCiAgKGRlZmluZSBzIChtYWtlLW1vbml0b3Jl ZCBzcXJ0KSkKCiAgKGNoZWNrIChzIDEwMCkgPT4gMTApCiAgKGNoZWNrIChzICdob3ctbWFueS1j YWxscz8pID0+IDEpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IAo6IChzIDEwMCkgPT4gMTAgOyBj b3JyZWN0CjogCjogKHMgKHF1b3RlIGhvdy1tYW55LWNhbGxzPykpID0+IDEgOyBjb3JyZWN0Cgoq KiogRE9ORSBFeGVyY2lzZSAzLjMgcGFzc3dvcmQgcHJvdGVjdGlvbgogICAgQ0xPU0VEOiBbMjAx OS0xMC0yOSBUdWUgMTE6MTddCgpUaGlzIGV4ZXJjaXNlIGlzIHNsaWdodGx5IHRyaWNreSBpbiB0 aGF0IGl0IHVzZXMgdGhlIGxlc3MgY29tbW9ubHkgdXNlZCBmb3JtCm9mIH5sYW1iZGF+LCB3aGlj aCBjYW4gdGFrZSBhbnkgbnVtYmVyIG9mIGFyZ3VtZW50cy4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6 ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAooZGVmaW5lIChtYWtlLWFjY291bnQgYmFsYW5j ZSBwYXNzd29yZCkKICAgICAgIChkZWZpbmUgKHdpdGhkcmF3IGFtb3VudCkKICAgICAgICAgKGlm ICg+PSBiYWxhbmNlIGFtb3VudCkKICAgICAgICAgICAgIChiZWdpbiAoc2V0ISBiYWxhbmNlICgt IGJhbGFuY2UgYW1vdW50KSkKICAgICAgICAgICAgICAgICAgICBiYWxhbmNlKQogICAgICAgICAg ICAgIkluc3VmZmljaWVudCBmdW5kcyIpKQogICAgICAgKGRlZmluZSAoZGVwb3NpdCBhbW91bnQp CiAgICAgICAgIChzZXQhIGJhbGFuY2UgKCsgYmFsYW5jZSBhbW91bnQpKQogICAgICAgICBiYWxh bmNlKQogICAgICAgKGRlZmluZSAoZGlzcGF0Y2ggcGFzcyBtKQogICAgICAgIChpZiAoZXE/IHBh c3MgcGFzc3dvcmQpCiAgICAgICAgIChjb25kICgoZXE/IG0gJ3dpdGhkcmF3KSB3aXRoZHJhdykK ICAgICAgICAgICAgICAgKChlcT8gbSAnZGVwb3NpdCkgZGVwb3NpdCkKICAgICAgICAgICAgICAg KGVsc2UgKGVycm9yICJVbmtub3duIHJlcXVlc3QgLS0gTUFLRS1BQ0NPVU5UIgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgbSkpKQogICAgICAgICAobGFtYmRhIHJlc3QgIkluY29ycmVjdCBw YXNzd29yZCIpKSkKICAgICAgIGRpc3BhdGNoKQoKKGRlZmluZSBhY2MgKG1ha2UtYWNjb3VudCAx MDAgJ3NlY3JldC1wYXNzd29yZCkpCgooY2hlY2sgKChhY2MgJ3NlY3JldC1wYXNzd29yZCAnd2l0 aGRyYXcpIDQwKSA9PiA2MCkKCihjaGVjayAoKGFjYyAnc29tZS1vdGhlci1wYXNzd29yZCAnZGVw b3NpdCkgNTApID0+ICJJbmNvcnJlY3QgcGFzc3dvcmQiKQoKIytlbmRfc3JjCgojK1JFU1VMVFM6 CjogCjogKChhY2MgKHF1b3RlIHNlY3JldC1wYXNzd29yZCkgKHF1b3RlIHdpdGhkcmF3KSkgNDAp ID0+IDYwIDsgY29ycmVjdAo6IAo6ICgoYWNjIChxdW90ZSBzb21lLW90aGVyLXBhc3N3b3JkKSAo cXVvdGUgZGVwb3NpdCkpIDUwKSA9PiAiSW5jb3JyZWN0IHBhc3N3b3JkIiA7IGNvcnJlY3QKCioq KiBET05FIEV4ZXJjaXNlIDMuNCBjYWxsLXRoZS1jb3BzCiAgICBDTE9TRUQ6IFsyMDE5LTEwLTI5 IFR1ZSAxMTozMl0KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91 dHB1dAooZGVmaW5lIChtYWtlLWFjY291bnQgYmFsYW5jZSBwYXNzd29yZCkKICAgICAgIChkZWZp bmUgKHdpdGhkcmF3IGFtb3VudCkKICAgICAgICAgKGlmICg+PSBiYWxhbmNlIGFtb3VudCkKICAg ICAgICAgICAgIChiZWdpbiAoc2V0ISBiYWxhbmNlICgtIGJhbGFuY2UgYW1vdW50KSkKICAgICAg ICAgICAgICAgICAgICBiYWxhbmNlKQogICAgICAgICAgICAgIkluc3VmZmljaWVudCBmdW5kcyIp KQogICAgICAgKGRlZmluZSAoZGVwb3NpdCBhbW91bnQpCiAgICAgICAgIChzZXQhIGJhbGFuY2Ug KCsgYmFsYW5jZSBhbW91bnQpKQogICAgICAgICBiYWxhbmNlKQogICAgICAgKGxldCAoKGNvcHMt Y291bnRlciA3KSkKICAgICAgICAoZGVmaW5lIChjYWxsLXRoZS1jb3BzKSAiQ2FsbCB0aGUgY29w cyIpCiAgICAgICAgKGRlZmluZSAoZGlzcGF0Y2ggcGFzcyBtKQogICAgICAgIChpZiAoZXE/IHBh c3MgcGFzc3dvcmQpCiAgICAgICAgIChjb25kICgoZXE/IG0gJ3dpdGhkcmF3KSB3aXRoZHJhdykK ICAgICAgICAgICAgICAgKChlcT8gbSAnZGVwb3NpdCkgZGVwb3NpdCkKICAgICAgICAgICAgICAg KGVsc2UgKGVycm9yICJVbmtub3duIHJlcXVlc3QgLS0gTUFLRS1BQ0NPVU5UIgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgbSkpKQogICAgICAgICAobGFtYmRhIHJlc3QgCiAgICAgICAgICAg KGlmICg8IDAgY29wcy1jb3VudGVyKQogICAgICAgICAgICAgKGJlZ2luIChzZXQhIGNvcHMtY291 bnRlciAoLSBjb3BzLWNvdW50ZXIgMSkpICJJbmNvcnJlY3QgcGFzc3dvcmQiKQogICAgICAgICAg ICAgKGNhbGwtdGhlLWNvcHMpKSkpKQogICAgICAgZGlzcGF0Y2gpKQoKKGRlZmluZSBhY2MgKG1h a2UtYWNjb3VudCAxMDAgJ3NlY3JldC1wYXNzd29yZCkpCgooY2hlY2sgKChhY2MgJ3NlY3JldC1w YXNzd29yZCAnd2l0aGRyYXcpIDQwKSA9PiA2MCkKCihjaGVjayAoKGFjYyAnc29tZS1vdGhlci1w YXNzd29yZCAnZGVwb3NpdCkgNTApID0+ICJJbmNvcnJlY3QgcGFzc3dvcmQiKQooY2hlY2sgKChh Y2MgJ3NvbWUtb3RoZXItcGFzc3dvcmQgJ2RlcG9zaXQpIDUwKSA9PiAiSW5jb3JyZWN0IHBhc3N3 b3JkIikKKGNoZWNrICgoYWNjICdzb21lLW90aGVyLXBhc3N3b3JkICdkZXBvc2l0KSA1MCkgPT4g IkluY29ycmVjdCBwYXNzd29yZCIpCihjaGVjayAoKGFjYyAnc29tZS1vdGhlci1wYXNzd29yZCAn ZGVwb3NpdCkgNTApID0+ICJJbmNvcnJlY3QgcGFzc3dvcmQiKQooY2hlY2sgKChhY2MgJ3NvbWUt b3RoZXItcGFzc3dvcmQgJ2RlcG9zaXQpIDUwKSA9PiAiSW5jb3JyZWN0IHBhc3N3b3JkIikKKGNo ZWNrICgoYWNjICdzb21lLW90aGVyLXBhc3N3b3JkICdkZXBvc2l0KSA1MCkgPT4gIkluY29ycmVj dCBwYXNzd29yZCIpCihjaGVjayAoKGFjYyAnc29tZS1vdGhlci1wYXNzd29yZCAnZGVwb3NpdCkg NTApID0+ICJJbmNvcnJlY3QgcGFzc3dvcmQiKQooY2hlY2sgKChhY2MgJ3NvbWUtb3RoZXItcGFz c3dvcmQgJ2RlcG9zaXQpIDUwKSA9PiAiQ2FsbCB0aGUgY29wcyIpCgojK2VuZF9zcmMKCiMrUkVT VUxUUzoKIytiZWdpbl9leGFtcGxlCgooKGFjYyAocXVvdGUgc2VjcmV0LXBhc3N3b3JkKSAocXVv dGUgd2l0aGRyYXcpKSA0MCkgPT4gNjAgOyBjb3JyZWN0CgooKGFjYyAocXVvdGUgc29tZS1vdGhl ci1wYXNzd29yZCkgKHF1b3RlIGRlcG9zaXQpKSA1MCkgPT4gIkluY29ycmVjdCBwYXNzd29yZCIg OyBjb3JyZWN0CgooKGFjYyAocXVvdGUgc29tZS1vdGhlci1wYXNzd29yZCkgKHF1b3RlIGRlcG9z aXQpKSA1MCkgPT4gIkluY29ycmVjdCBwYXNzd29yZCIgOyBjb3JyZWN0CgooKGFjYyAocXVvdGUg c29tZS1vdGhlci1wYXNzd29yZCkgKHF1b3RlIGRlcG9zaXQpKSA1MCkgPT4gIkluY29ycmVjdCBw YXNzd29yZCIgOyBjb3JyZWN0CgooKGFjYyAocXVvdGUgc29tZS1vdGhlci1wYXNzd29yZCkgKHF1 b3RlIGRlcG9zaXQpKSA1MCkgPT4gIkluY29ycmVjdCBwYXNzd29yZCIgOyBjb3JyZWN0CgooKGFj YyAocXVvdGUgc29tZS1vdGhlci1wYXNzd29yZCkgKHF1b3RlIGRlcG9zaXQpKSA1MCkgPT4gIklu Y29ycmVjdCBwYXNzd29yZCIgOyBjb3JyZWN0CgooKGFjYyAocXVvdGUgc29tZS1vdGhlci1wYXNz d29yZCkgKHF1b3RlIGRlcG9zaXQpKSA1MCkgPT4gIkluY29ycmVjdCBwYXNzd29yZCIgOyBjb3Jy ZWN0CgooKGFjYyAocXVvdGUgc29tZS1vdGhlci1wYXNzd29yZCkgKHF1b3RlIGRlcG9zaXQpKSA1 MCkgPT4gIkluY29ycmVjdCBwYXNzd29yZCIgOyBjb3JyZWN0CgooKGFjYyAocXVvdGUgc29tZS1v dGhlci1wYXNzd29yZCkgKHF1b3RlIGRlcG9zaXQpKSA1MCkgPT4gIkNhbGwgdGhlIGNvcHMiIDsg Y29ycmVjdAojK2VuZF9leGFtcGxlCgoqKiogRE9ORSBFeGVyY2lzZSAzLjUgTW9udGUtQ2FybG8K ICAgIENMT1NFRDogWzIwMTktMTAtMzAgV2VkIDAwOjEyXQoKSSBhbSB1c2luZyB0aGUgcmFuZG9t IGZ1bmN0aW9uIGZpcnN0IGRlZmluZWQgaW4gRXhlcmNpc2UgMS4yNCwgbm90IHRoZQpyYW5kLXVw ZGF0ZSwgYmVjYXVzZSBJIGFtIG5vdCB2ZXJ5IHN1cmUgaW4gbXkgcHJuZyBkZXZlbG9wbWVudCBz a2lsbHMuCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQK ICA8PHJhbmRvbT4+CiAgKGRlZmluZSAocmFuZG9tLWluLXJhbmdlIGxvdyBoaWdoKQogICAgICAo bGV0ICgocmFuZ2UgKC0gaGlnaCBsb3cpKSkKICAgICAgKCsgbG93IChyYW5kb20gcmFuZ2UpKSkp CiAgKHNob3cgI3QgIlRlc3QgMDE6ICIgKHJhbmRvbS1pbi1yYW5nZSAxIDIwMDApICJcbiIpCgog IChkZWZpbmUgKG1vbnRlLWNhcmxvIHRyaWFscyBleHBlcmltZW50KQogICAgKGRlZmluZSAoaXRl ciB0cmlhbHMtcmVtYWluaW5nIHRyaWFscy1wYXNzZWQpCiAgICAgIChjb25kICgoPSB0cmlhbHMt cmVtYWluaW5nIDApCgkgICAgICgvIHRyaWFscy1wYXNzZWQgdHJpYWxzKSkKCSAgICAoKGV4cGVy aW1lbnQpCgkgICAgIChpdGVyICgtIHRyaWFscy1yZW1haW5pbmcgMSkgKCsgdHJpYWxzLXBhc3Nl ZCAxKSkpCgkgICAgKGVsc2UKCSAgICAgKGl0ZXIgKC0gdHJpYWxzLXJlbWFpbmluZyAxKSB0cmlh bHMtcGFzc2VkKSkpKQogICAgKGl0ZXIgdHJpYWxzIDApKQoKICAoZGVmaW5lIChpcy1pbnNpZGUt Y2lyY2xlPyB4IHkgcmFkaXVzKQogICAgIzsoc2hvdyAjdCAieD0iIHggIiwgeT0iIHkgIlxuIikK ICAgIChpZiAoPCAoKyAoZXhwdCAoLSB4IDEwMDApIDIpIChleHB0ICgtIHkgMTAwMCkgMikpIChl eHB0IHJhZGl1cyAyKSkKCSN0CgkjZikpCgogIChkZWZpbmUgKGVzdGltYXRlLWludGVncmFsIFAg eDEgeDIgeTEgeTIgdHJpYWxzKQogICAgIzsoc2hvdyAjdCAiZXN0aW1hdGUtaW50ZWdyYWw6IHgx PSIgeDEgIiwgeDI9IiB4MiAiLCB5MT0iIHkxICIsIHkyPSIgeTIgIiwgdHJpYWxzPSIgdHJpYWxz ICJcbiIpCiAgICAobW9udGUtY2FybG8gdHJpYWxzCgkJIChsYW1iZGEgKCkKCQkgICAoUCAocmFu ZG9tLWluLXJhbmdlIHgxIHgyKSAocmFuZG9tLWluLXJhbmdlIHkxIHkyKSkpKSkKCiAgKGRlZmlu ZSAoZXN0aW1hdGUtcGkgdHJpYWxzKQogICAgKGluZXhhY3QgKCogNCAoZXN0aW1hdGUtaW50ZWdy YWwKCSAgKGxhbWJkYSAoeCB5KSAoaXMtaW5zaWRlLWNpcmNsZT8geCB5IDEwMDApKSAxIDIwMDAg MSAyMDAwIHRyaWFscykpKSkKKHNob3cgI3QgIlRlc3QgMDI6IiAoZXN0aW1hdGUtcGkgMTAwMTAw KSAiXG4iKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiBUZXN0IDAxOiA5MDcKOiBUZXN0IDAyOjMu MTQ4MjExNzg4MjExNzg4CgpJdCB0b29rIG1lIG1vcmUgdGltZSB0byB1bmRlcnN0YW5kIHdoYXQg ZXhhY3RseSBpcyB3YW50ZWQgdGhhbiB0byB3cml0ZSB0aGUKYWN0dWFsIGNvZGUuCgoqKiogRE9O RSBFeGVyY2lzZSAzLjYgcmVzZXQgYSBwcm5nCiAgICBDTE9TRUQ6IFsyMDE5LTEwLTMwIFdlZCAx MTo0Ml0KCkFsbCB0aHJlZSBjb21wb25lbnRzIGluIHRoZSByYW5kb20gZm9ybXVsYSBhcmUgcHJp bWVzLiBJcyB0aGlzIGdvb2Q/CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVz dWx0cyBvdXRwdXQKCgogIChkZWZpbmUgcmFuZAoKICAgIChsZXQgKChzZWVkIDEpKQogICAgICAo ZGVmaW5lIChyYW5kLXVwZGF0ZSB4KQoJKHJlbWFpbmRlciAoKyAoKiB4IDExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTM4OSkKCQkgICAgICAyMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTE4MDEpCgkJICAgMjExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTIyNykpCiAgICAgIChsYW1iZGEgKG9wZXJhdGlvbikK CShjYXNlIG9wZXJhdGlvbgoJICAoJ2dlbmVyYXRlIChiZWdpbiAoc2hvdyAjdCAiU2VlZD0iIHNl ZWQgIlxuIikgKHNldCEgc2VlZCAocmFuZC11cGRhdGUgc2VlZCkpIHNlZWQpKQoJICAoJ3Jlc2V0 IChsYW1iZGEgKG51bWJlcikKCQkgICAgKHNldCEgc2VlZCBudW1iZXIpKSkKCSAgKGVsc2UgKGVy cm9yICJyYW5kOiB3cm9uZyBvcGVyYXRpb24iIG9wZXJhdGlvbikpKSkpKQogIChzaG93ICN0ICJU ZXN0IDAxOiBGaXJzdCByYW5kb20gY2FsbDogIiAocmFuZCAnZ2VuZXJhdGUpICJcbiIpCgogICgo cmFuZCAncmVzZXQpIDEwMCkKCiAgKHNob3cgI3QgIlRlc3QgMDI6IFNlY29uZCByYW5kb20gY2Fs bDogIiAocmFuZCAnZ2VuZXJhdGUpICJcbiIpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IFNlZWQ9 MQo6IFRlc3QgMDE6IEZpcnN0IHJhbmRvbSBjYWxsOiA0NzM2ODQyMTA1MjYzMTU3OTA0NDQ2Nzkw MDg5MjU4MjMzMzAyNTY0NTcKOiBTZWVkPTEwMAo6IFRlc3QgMDI6IFNlY29uZCByYW5kb20gY2Fs bDogNzAxNzU0Mzg1OTY0OTEyMzE0ODIwNTAyNjQ2OTY4Mjk3OTM3ODU1NTQxCgoqKiogRE9ORSBF eGVyY2lzZSAzLjcgSm9pbnQgYWNjb3VudHMKICAgIENMT1NFRDogWzIwMTktMTAtMzAgV2VkIDEz OjA3XQoKVGhpcyBleGVyY2lzZSBpbGx1c3RyYXRlcyBhIGZhaXJseSBjb21tb24gdGhpbmcgaW4g cHJvZ3JhbW1pbmcgY2FsbGVkCiJ3cmFwcGluZyIgb3IgImludGVyZmFjaW5nIi4gCgojK2JlZ2lu X3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKKGRlZmluZSAobWFrZS1h Y2NvdW50IGJhbGFuY2UgcGFzc3dvcmQpCiAgICAgICAoZGVmaW5lICh3aXRoZHJhdyBhbW91bnQp CiAgICAgICAgIChpZiAoPj0gYmFsYW5jZSBhbW91bnQpCiAgICAgICAgICAgICAoYmVnaW4gKHNl dCEgYmFsYW5jZSAoLSBiYWxhbmNlIGFtb3VudCkpCiAgICAgICAgICAgICAgICAgICAgYmFsYW5j ZSkKICAgICAgICAgICAgICJJbnN1ZmZpY2llbnQgZnVuZHMiKSkKICAgICAgIChkZWZpbmUgKGRl cG9zaXQgYW1vdW50KQogICAgICAgICAoc2V0ISBiYWxhbmNlICgrIGJhbGFuY2UgYW1vdW50KSkK ICAgICAgICAgYmFsYW5jZSkKICAgICAgIChkZWZpbmUgKGRpc3BhdGNoIHBhc3MgbSkKICAgICAg ICAoaWYgKGVxPyBwYXNzIHBhc3N3b3JkKQogICAgICAgICAoY29uZCAoKGVxPyBtICd3aXRoZHJh dykgd2l0aGRyYXcpCiAgICAgICAgICAgICAgICgoZXE/IG0gJ2RlcG9zaXQpIGRlcG9zaXQpCiAg ICAgICAgICAgICAgIChlbHNlIChlcnJvciAiVW5rbm93biByZXF1ZXN0IC0tIE1BS0UtQUNDT1VO VCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0pKSkKICAgICAgICAgKGxhbWJkYSByZXN0 ICJJbmNvcnJlY3QgcGFzc3dvcmQiKSkpCiAgICAgICBkaXNwYXRjaCkKCihkZWZpbmUgYWNjICht YWtlLWFjY291bnQgMTAwICdzZWNyZXQtcGFzc3dvcmQpKQoKKGNoZWNrICgoYWNjICdzZWNyZXQt cGFzc3dvcmQgJ3dpdGhkcmF3KSA0MCkgPT4gNjApCgooY2hlY2sgKChhY2MgJ3NvbWUtb3RoZXIt cGFzc3dvcmQgJ2RlcG9zaXQpIDUwKSA9PiAiSW5jb3JyZWN0IHBhc3N3b3JkIikKCihkZWZpbmUg KG1ha2Utam9pbnQgYWNjb3VudCBtYWluLXBhc3N3b3JkIHN1Yi1wYXNzd29yZCkKIChkZWZpbmUg KGRpc3BhdGNoIHBhc3MgbSkKICAgICAgICAoaWYgKGVxPyBwYXNzIHN1Yi1wYXNzd29yZCkKICAg ICAgICAgKGFjY291bnQgbWFpbi1wYXNzd29yZCBtKQogICAgICAgICAobGFtYmRhIHJlc3QgIklu Y29ycmVjdCBwYXNzd29yZCIpKSkKIGRpc3BhdGNoKQoKKGRlZmluZSBwZXRlci1hY2MgKG1ha2Ut YWNjb3VudCAxMDAgJ29wZW4tc2VzYW1lKSkKCihkZWZpbmUgcGF1bC1hY2MKIChtYWtlLWpvaW50 IHBldGVyLWFjYyAnb3Blbi1zZXNhbWUgJ3Jvc2VidWQpKQoKKGNoZWNrICgocGV0ZXItYWNjICdv cGVuLXNlc2FtZSAnd2l0aGRyYXcpIDQwKSA9PiA2MCkKKGNoZWNrICgocGF1bC1hY2MgICdyb3Nl YnVkICAgICAnZGVwb3NpdCkgIDUwKSA9PiAxMTApCgoKIytlbmRfc3JjCgojK1JFU1VMVFM6Cjog CjogKChhY2MgKHF1b3RlIHNlY3JldC1wYXNzd29yZCkgKHF1b3RlIHdpdGhkcmF3KSkgNDApID0+ IDYwIDsgY29ycmVjdAo6IAo6ICgoYWNjIChxdW90ZSBzb21lLW90aGVyLXBhc3N3b3JkKSAocXVv dGUgZGVwb3NpdCkpIDUwKSA9PiAiSW5jb3JyZWN0IHBhc3N3b3JkIiA7IGNvcnJlY3QKOiAKOiAo KHBldGVyLWFjYyAocXVvdGUgb3Blbi1zZXNhbWUpIChxdW90ZSB3aXRoZHJhdykpIDQwKSA9PiA2 MCA7IGNvcnJlY3QKOiAKOiAoKHBhdWwtYWNjIChxdW90ZSByb3NlYnVkKSAocXVvdGUgZGVwb3Np dCkpIDUwKSA9PiAxMTAgOyBjb3JyZWN0CgoqKiogRE9ORSBFeGVyY2lzZSAzLjggUmlnaHQtdG8t bGVmdCB2cyBMZWZ0LXRvLXJpZ2h0CiAgICBDTE9TRUQ6IFsyMDE5LTEwLTMwIFdlZCAxMzo0NV0K CiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAoKKGRlZmlu ZSAobWFrZS1sb2NrIGEpCiAgKGxhbWJkYSAoYXJnKQogICAgKGlmICg9IGFyZyAwKQogICAgICAg KHNldCEgYSAwKSkKICAgIGEpKQooZGVmaW5lIGYgKG1ha2UtbG9jayAxMDApKQoKKHNob3cgI3Qg IlRlc3QgMDE6IiAoKyAoZiAwKSAoZiAxKSkgIlxuIikKCihkZWZpbmUtc3ludGF4IHBsdXMtb25l d2F5CiAgKHN5bnRheC1ydWxlcyAoKQogICAgKChwbHVzLW9uZXdheSBhIGIpIChsZXQqICgoZmly c3QgYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlY29uZCBiKSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCsgZmlyc3Qgc2Vjb25kKSkpKSkKKGRlZmluZS1zeW50YXggcGx1 cy1vdGhlcndheQogIChzeW50YXgtcnVsZXMgKCkKICAgICgocGx1cy1vdGhlcndheSBhIGIpIChs ZXQqICgoZmlyc3QgYikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Vjb25kIGEp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAoKyBmaXJzdCBzZWNvbmQpKSkpKQooZGVmaW5l IGcgKG1ha2UtbG9jayAxMDEpKQooZGVmaW5lIGggKG1ha2UtbG9jayAyMDEpKQooc2hvdyAjdCAi VGVzdCAwMjoiIChwbHVzLW9uZXdheSAgIChnIDApIChnIDEpKSAiXG4iKQooc2hvdyAjdCAiVGVz dCAwMzoiIChwbHVzLW90aGVyd2F5IChoIDApIChoIDEpKSAiXG4iKQoKIytlbmRfc3JjCgojK1JF U1VMVFM6CjogVGVzdCAwMToxMDAKOiBUZXN0IDAyOjAKOiBUZXN0IDAzOjIwMQoKVGhpcyBpcyBh IGZ1biBleGVyY2lzZSwgd2hpY2ggaXMgbmljZWx5IGlsbHVzdHJhdGVkIHVzaW5nCm1hY3Jvcy4g VW5saWtlIH4rfiwgfmxldCp+IGlzIGd1YXJhbnRlZWQgdG8gZXZhbHVhdGUgaXRzIHBhcmFtZXRl cnMKdG9wIHRvIGJvdHRvbSwgc28gd2UgY2FuIHNwZWNpZnkgdGhlIG9yZGVyIG9mIGV2YWx1YXRp b24uIFRoZSBvcmRlciBvZgpldmFsdWF0aW9uIGluIHRoZSBuZXh0IH4rfiBkb2VzIG5vdCBtYXR0 ZXIsIGJlY2F1c2UgaXRzIGFyZ3VtZW50cyBhcmUKYWxyZWFkeSB2YWx1ZXMgYW5kIHNvIGV2YWx1 YXRlIHRvIHRoZW1zZWx2ZXMuCgoqKiogVE9ETyBDT01NRU5UIEZpZ3VyZSAzLjUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnRpa3o6CiMrbmFtZTog cmVtYXJrLWVudmlyb25tZW50cy10aWt6CiMraGVhZGVyOiA6aW1hZ2VtYWdpY2sgeWVzIDppbWlu b3B0aW9ucyAtZGVuc2l0eSAzMDAgOmltb3V0b3B0aW9ucyAtZ2VvbWV0cnkgODAwCiMraGVhZGVy OiA6Zml0IHllcyA6aGVhZGVycyAnKCJcXHVzZXBhY2thZ2V7dGlren0iKQojK2hlYWRlcjogOmJ1 ZmZlciBvbgojK2JlZ2luX3NyYyBsYXRleCA6cmVzdWx0cyByYXcgZmlsZSA6ZXhwb3J0cyBjb2Rl IDpmaWxlIGZpZ3VyZS0zLTUucG5nCiAgCiAgXGJlZ2lue3Rpa3pwaWN0dXJlfQogIFtjb2xvcj13 aGl0ZSwKICAgc2NoZW1lLy5zdHlsZT17ZmlsbGRyYXcsCiAgICAgICAgICAgICAgICAgIHJlY3Rh bmdsZSwKICAgICAgICAgICAgICAgICAgZHJhdz13aGl0ZSwKICAgICAgICAgICAgICAgICAgZmls bD1ibGFjayE1MCwKICAgICAgICAgICAgICAgICAgcm91bmRlZCBjb3JuZXJzLAogICAgICAgICAg ICAgICAgICBtaW5pbXVtIHNpemU9MmNtLAogICAgICAgICAgICAgICAgICBhbGlnbj1sZWZ0fQog IF0KCiAgXG5vZGUgKDAsMCkge307CiAgXG5vZGUgKDAsNi41KSB7fTsgIAogIFxub2RlICgxMy4w LDApIHt9OwogIFxub2RlICgxMy4wLDYuNSkge307CiAgICAKICAlXGZpbGxkcmF3W3NjaGVtZSxs YWJlbD1jZW50ZXI6e3g6Mn1dICgyLjAsICA0LjUpIHJlY3RhbmdsZSAoMTMuMCw2LjUpIDsKICBc cGF0aCAoNy41LDUuNSkgbm9kZVtzY2hlbWUsbWluaW11bSB3aWR0aD0xMS41Y20sbWluaW11bSBo ZWlnaHQ9MmNtXSB7IHRlc3QgfQogICVcZmlsbGRyYXdbc2NoZW1lXSAoMi4wLCAgMi4wKSByZWN0 YW5nbGUgKDQuMCAsNC4wKSA7CiAgXHBhdGggICgzLjAsMy4wKSBub2RlW3NjaGVtZV0ge0UyfTsK ICBcZmlsbGRyYXdbc2NoZW1lXSAoNS4wLCAgMi4wKSByZWN0YW5nbGUgKDcuMCAsNC4wKSA7CiAg XGZpbGxkcmF3W3NjaGVtZV0gKDguMCwgIDIuMCkgcmVjdGFuZ2xlICgxMC4wLDQuMCkgOwogIFxm aWxsZHJhd1tzY2hlbWVdICgxMS4wLCAyLjApIHJlY3RhbmdsZSAoMTMuMCw0LjApIDsKCiAgXGRy YXdbZmlsbD15ZWxsb3csZm9udD1cdmVyeWxhcmdlLGFsaWduPWxlZnRdICgxLjAsNS41KSBub2Rl IHtnbG9iYWxcXCBlbnZ9OwoKICBcZW5ke3Rpa3pwaWN0dXJlfQojK2VuZF9zcmMKCiMrUkVTVUxU UzogcmVtYXJrLWVudmlyb25tZW50cy10aWt6CltbZmlsZTpmaWd1cmUtMy05LnBuZ11dCgoqKiog RE9ORSBFeGVyY2lzZSAzLjkgRW52aXJvbm1lbnQgc3RydWN0dXJlcwogICAgQ0xPU0VEOiBbMjAx OS0xMS0yMCBXZWQgMTQ6MjhdCgpPa2F5LCB0aGlzIGlzIG5vdCBhIHZlcnkgZ29vZCBzb2x1dGlv bi4gSSBvbmx5IGRpc3BsYXkgdGhlCmVudmlyb25tZW50cywgYW5kIHRoZSBjb2RlIGlzIG9ubHkg ZGlzcGxheWVkIHRvIGNsYXJpZnkgdGhlCmVudmlyb25tZW50cy4gVGhlIH5pZn4gc3BlY2lhbCBm b3JtcyBhcmUgZXhwYW5kZWQuCgpMZXQgdXMgZHJhdyB0aGUgZW52aXJvbm1lbnQgbnVtYmVyIDEu CgojK25hbWU6IGV4ZXJjaXNlLTMtOS1wYXJ0LTEKIytoZWFkZXI6IDppbWFnZW1hZ2ljayB5ZXMg OmltaW5vcHRpb25zIC1kZW5zaXR5IDMwMCA6aW1vdXRvcHRpb25zIC1nZW9tZXRyeSAxMDAwCiMr aGVhZGVyOiA6Zml0IHllcyA6aGVhZGVycyAnKCJcXHVzZXBhY2thZ2V7dGlren0gXFx1c2V0aWt6 bGlicmFyeXtwb3NpdGlvbmluZyxmaXQscGV0cmksYXJyb3dzfSIpCiMraGVhZGVyOiA6YnVmZmVy IG9uCiMrYmVnaW5fc3JjIGxhdGV4IDpyZXN1bHRzIHJhdyBmaWxlIDpleHBvcnRzIGJvdGggOmZp bGUgZXhlcmNpc2UtMy05LXBhcnQtMS5wbmcKXGJlZ2lue3Rpa3pwaWN0dXJlfVtpbm5lciBzZXA9 MG1tLD49c3RlYWx0aCcsdmVyeSB0aGljayxjb2xvcj1ibGFjayE1MCwKICAgICBmb250PVxzZmZh bWlseSxwaWNzL3R3byBkb3RzLy5zdHlsZT17Y29kZT17CiAgICAgXG5vZGUgW2RyYXcsbWluaW11 bSBzaXplPTVtbSxjaXJjbGUsY29sb3JlZCB0b2tlbnM9e2JsYWNrITUwfV0gCiAgICAgKCMxLWxl ZnQpIHt9OwogICAgXG5vZGUgW2RyYXcsbWluaW11bSBzaXplPTVtbSxjaXJjbGUsY29sb3JlZCB0 b2tlbnM9e2JsYWNrITUwfSwKICAgIHJpZ2h0PTBwdCBvZiAjMS1sZWZ0XQogICAgICAgICgjMS1y aWdodCkge307CiAgICBcbm9kZSBbcmVjdGFuZ2xlLCBmaXQ9KCMxLWxlZnQpICgjMS1yaWdodCld ICgjMSl7fTsKICAgIH19LAogICAgZXZlcnkgcGluIGVkZ2UvLnN0eWxlPXs8LSx2ZXJ5IHRoaWNr fSwKICAgIGJveC8uc3R5bGU9e2RyYXcscmVjdGFuZ2xlLGlubmVyIHNlcD0jMX0sYm94Ly5kZWZh dWx0PTJtbV0KICAlIAogIFxub2RlIChXMSkgIHtmYWN0b3JpYWw6fTsKICBcbm9kZSAoZmFrZTEp IFtyaWdodD0xOTBtbSBvZiBXMV0ge307ICAKICAlCiAgXG5vZGUgKGcgZW52KSBbYm94LCBmaXQ9 KFcxKSAoZmFrZTEpLAogIHBpbj17W3RleHQgd2lkdGg9MWNtLHBpbiBkaXN0YW5jZT0xMG1tXWxl ZnQ6Z2xvYmFsIGVudn1dCiAgeyB9OwogICUKICBccGF0aCAoW3lzaGlmdD0tMjBtbV1XMS5lYXN0 KXBpY3t0d28gZG90cz13MWZ1bn0KICAgICh3MWZ1bikgZWRnZSBbPC0sIHRvIHBhdGg9e3wtIChc dGlrenRvdGFyZ2V0KX1dIChXMS5lYXN0KTsKICAlCiAgXG5vZGUgW2JlbG93PW9mIHcxZnVuLWxl ZnQsIGFsaWduPWxlZnRdIHtwYXJhbWV0ZXJzOiBuIFxcIGJvZHk6IFxkb3RzfQogICAgZWRnZSBb PC1dICh3MWZ1bi1sZWZ0LmNlbnRlcik7IAogIAogIFxwYXRoICh3MWZ1bi1yaWdodC5jZW50ZXIp IGVkZ2VbLT4sdG8gcGF0aD17LXwgKFx0aWt6dG90YXJnZXQpfV0gCiAgICAobm9kZSBjczpuYW1l PWcgZW52LGFuZ2xlPTE4Myk7ClxwYXRoIChnIGVudi5zb3V0aCB3ZXN0KSAtLSAoZyBlbnYuc291 dGggZWFzdCkKXGZvcmVhY2ggXGlkeCBpbiB7MSwuLi4sNX0gIAp7ICAKICBub2RlIFtwb3M9MS83 LjUrXGlkeC83LjVdIChmYWtlMi1caWR4KSAge30KICBub2RlIChFXGlkeC1lbnYpIFtiZWxvdz01 bW0gb2YgZmFrZTItXGlkeCxib3gsCiAgICBwaW49e1twaW4gZGlzdGFuY2U9NW1tXWxlZnQ6RVxp ZHh9XSB7bjpcaWR4fQogICAgZWRnZSBbLT5dIChmYWtlMi1caWR4KQogIAogIG5vZGUgKEVcaWR4 LWNvZGUpIFtiZWxvdz01bW0gb2YgRVxpZHgtZW52LCBhbGlnbj1jZW50ZXJdewogICAgICAgKCog XHRoZVxudW1leHByNy1caWR4IFxoc2tpcDVwdCAoZmFjdG9yaWFsIFx0aGVcbnVtZXhwcjYtXGlk eCkpCiAgICB9Cn0gCm5vZGUgW3Bvcz0xLzcuNSs2LzcuNV0gKGZha2UyLTYpIHt9Cm5vZGUgKEU2 LWVudikgW2JlbG93PTVtbSBvZiBmYWtlMi02LGJveCwKICAgIHBpbj17W3BpbiBkaXN0YW5jZT01 bW1dbGVmdDpFNn1dIHtuOjF9CiAgICBlZGdlIFstPl0gKGZha2UyLTYpCm5vZGUgKEU2LWNvZGUp IFtiZWxvdz01bW0gb2YgRTYtZW52LCBhbGlnbj1jZW50ZXJdewogICAgICAgMQogICAgfTsKJVxk cmF3IChnIGVudi5zb3V0aCBlYXN0KSBub2RlIFtkcmF3PXJlZCxyZWN0YW5nbGVdICB7ZGVidWd9 OwpcZW5ke3Rpa3pwaWN0dXJlfQojK2VuZF9zcmMKCiMrUkVTVUxUUzogZXhlcmNpc2UtMy05LXBh cnQtMQpbW2ZpbGU6ZXhlcmNpc2UtMy05LXBhcnQtMS5wbmddXQoKCkxldCB1cyBkcmF3IHRoZSBl bnZpcm9ubWVudCBudW1iZXIgMi4KCgojK25hbWU6IGV4ZXJjaXNlLTMtOS1wYXJ0LTIKIytoZWFk ZXI6IDppbWFnZW1hZ2ljayB5ZXMgOmltaW5vcHRpb25zIC1kZW5zaXR5IDMwMCA6aW1vdXRvcHRp b25zIC1nZW9tZXRyeSAxMDAwCiMraGVhZGVyOiA6Zml0IHllcyA6aGVhZGVycyAnKCJcXHVzZXBh Y2thZ2V7dGlren0gXFx1c2V0aWt6bGlicmFyeXtwb3NpdGlvbmluZyxmaXQscGV0cmksYXJyb3dz fSIpCiMraGVhZGVyOiA6YnVmZmVyIG9uCiMrYmVnaW5fc3JjIGxhdGV4IDpyZXN1bHRzIHJhdyBm aWxlIDpleHBvcnRzIGJvdGggOmZpbGUgZXhlcmNpc2UtMy05LXBhcnQtMi5wbmcKXGJlZ2lue3Rp a3pwaWN0dXJlfVtpbm5lciBzZXA9MG1tLD49c3RlYWx0aCcsdmVyeSB0aGljayxjb2xvcj1ibGFj ayE1MCwKICAgICBmb250PVxzZmZhbWlseSxwaWNzL3R3byBkb3RzLy5zdHlsZT17Y29kZT17CiAg ICAgXG5vZGUgW2RyYXcsbWluaW11bSBzaXplPTVtbSxjaXJjbGUsY29sb3JlZCB0b2tlbnM9e2Js YWNrITUwfV0gCiAgICAgKCMxLWxlZnQpIHt9OwogICAgXG5vZGUgW2RyYXcsbWluaW11bSBzaXpl PTVtbSxjaXJjbGUsY29sb3JlZCB0b2tlbnM9e2JsYWNrITUwfSwKICAgIHJpZ2h0PTBwdCBvZiAj MS1sZWZ0XQogICAgICAgICgjMS1yaWdodCkge307CiAgICBcbm9kZSBbcmVjdGFuZ2xlLCBmaXQ9 KCMxLWxlZnQpICgjMS1yaWdodCldICgjMSl7fTsKICAgIH19LAogICAgZXZlcnkgcGluIGVkZ2Uv LnN0eWxlPXs8LSx2ZXJ5IHRoaWNrfSwKICAgIGJveC8uc3R5bGU9e2RyYXcscmVjdGFuZ2xlLGlu bmVyIHNlcD0jMX0sYm94Ly5kZWZhdWx0PTJtbV0KCiAgXG5vZGUgKFcxKSAgIHtmYWN0b3JpYWw6 fTsKICBcbm9kZSAoZmFrZTEpIFtyaWdodD0zNDBtbSBvZiBXMV0ge307ICAKICBcbm9kZSAoZmFj dC1pdGVyKSBbYWJvdmU9MW1tIG9mIFcxXSB7ZmFjdC1pdGVyOn07CiUKICBcbm9kZSAoZyBlbnYp IFtib3gsIGZpdD0oVzEpIChmYWtlMSkgKGZhY3QtaXRlciksCiAgcGluPXtbdGV4dCB3aWR0aD0x Y20scGluIGRpc3RhbmNlPTEwbW1dbGVmdDpnbG9iYWwgZW52fV0KICB7IH07CiAgJSBmYWN0b3Jp YWwKICBccGF0aCAoW3lzaGlmdD0tMjBtbV1XMS5lYXN0KXBpY3t0d28gZG90cz13MWZ1bn0KICAg ICh3MWZ1bikgZWRnZSBbPC0sIHRvIHBhdGg9e3wtIChcdGlrenRvdGFyZ2V0KX1dIChXMS5lYXN0 KTsKICBcbm9kZSBbYmVsb3c9b2YgdzFmdW4tbGVmdCwgYWxpZ249bGVmdF0ge1x0dGZhbWlseSBc bm9pbmRlbnQgcGFyYW1ldGVyczpcdnBoYW50b217ZH1uIFxcIGJvZHk6IFxkb3RzfQogICAgZWRn ZSBbPC1dICh3MWZ1bi1sZWZ0LmNlbnRlcik7IAogIFxkcmF3Wy0+XSAodzFmdW4tcmlnaHQuY2Vu dGVyKSAtfCAoW3hzaGlmdD0zbW1dIHcxZnVuLXJpZ2h0LmVhc3QgfC0gZyBlbnYuc291dGgpOwoK ICAlIGZhY3QtaXRlcgpccGF0aCBjb29yZGluYXRlW2Jhc2UgcmlnaHQ9MjJtbSBvZiB3MWZ1bi5l YXN0XSAoYXV4KQogICAgKGF1eCkgcGlje3R3byBkb3RzPWZhY3QtaXRlci1mdW59CiAgICAoZmFj dC1pdGVyLWZ1bikgZWRnZSBbPC0sIHRvIHBhdGg9e3wtIChcdGlrenRvdGFyZ2V0KX1dIChmYWN0 LWl0ZXIuZWFzdCk7CiAgXG5vZGUgW2JlbG93PW9mIGZhY3QtaXRlci1mdW4tbGVmdCwgYWxpZ249 bGVmdCxub2RlIGZvbnQ9XHR0ZmFtaWx5XSB7CiAgICAgcGFyYW1ldGVyczpwcm9kdWN0LFxcCiAg ICAgXHBoYW50b217cGFyYW1ldGVyczp9Y291bnRlcixcXAogICAgIFxwaGFudG9te3BhcmFtZXRl cnM6fW1heC1jb3VudCBcXCBib2R5OiBcZG90c30KICAgIGVkZ2UgWzwtXSAoZmFjdC1pdGVyLWZ1 bi1sZWZ0LmNlbnRlcik7IAogIFxkcmF3Wy0+XSAoZmFjdC1pdGVyLWZ1bi1yaWdodC5jZW50ZXIp IC18IChbeHNoaWZ0PTNtbV0gZmFjdC1pdGVyLWZ1bi1yaWdodC5lYXN0IHwtIGcgZW52LnNvdXRo KTsKClxwYXRoIChnIGVudi5zb3V0aCB3ZXN0KSAtLSAoZyBlbnYuc291dGggZWFzdCkKXGZvcmVh Y2ggXGlkeCBpbiB7MSwuLi4sNn0gIAp7ICAKICAKICBub2RlIFtwb3M9Mi42LzcuNStcaWR4LzEx XSAoZmFrZTItXGlkeCkgIHt9CiAgbm9kZSAoRVxpZHgtZW52KSBbYmVsb3c9NW1tIG9mIGZha2Uy LVxpZHgsYm94LAogICAgcGluPXtbcGluIGRpc3RhbmNlPTVtbV1sZWZ0OkVcaWR4fSwgYWxpZ249 bGVmdF0gewogICAgICAgIGNvdW50ZXI6XGlkeFxcCiAgICAgICAgcHJvZHVjdDpccGdmbWF0aHBh cnNle2ludChmYWN0b3JpYWwoXGlkeC0xKSl9XHBnZm1hdGhyZXN1bHQgXFwKICAgICAgICBtYXgt Y291bnQ6Nn0KICAgIGVkZ2UgWy0+XSAoZmFrZTItXGlkeCkKCiAgbm9kZSAoRVxpZHgtY29kZSkg W2JlbG93PTVtbSBvZiBFXGlkeC1lbnYsIGFsaWduPWxlZnRdewogICAgICAgKGZhY3QtaXRlclxc CiAgICAgICAgKCogY291bnRlciBwcm9kdWN0KSBcXAogICAgICAgKCsgY291bnRlciAxKSAgXFwK ICAgICAgIG1heC1jb3VudCkKICAgIH0KfQpub2RlIFtwb3M9Mi42LzcuNSs3LzExXSAoZmFrZTIt Nykge30Kbm9kZSAoRTctZW52KSBbYmVsb3c9NW1tIG9mIGZha2UyLTcsYm94LAogICAgcGluPXtb cGluIGRpc3RhbmNlPTVtbV1sZWZ0OkU3fSxhbGlnbj1sZWZ0XSAKICAgIHtjb3VudGVyOjdcXAog ICAgIHByb2R1Y3Q6XHBnZm1hdGhwYXJzZXtpbnQoZmFjdG9yaWFsKDctMSkpfVxwZ2ZtYXRocmVz dWx0IFxcCiAgICAgbWF4LWNvdW50OjYKICAgIH0KICAgIGVkZ2UgWy0+XSAoZmFrZTItNykKbm9k ZSAoRTctY29kZSkgW2JlbG93PTVtbSBvZiBFNy1lbnYsIGFsaWduPWNlbnRlcl17CiAgICAgICA3 MjAKICAgIH0Kbm9kZSBbcG9zPTIuMC83LjVdIChmYWtlMi0wKSB7fQpub2RlIChFMC1lbnYpIFti ZWxvdz01bW0gb2YgZmFrZTItMCwgYm94LAogICAgcGluPXtbcGluIGRpc3RhbmNlPTVtbV1sZWZ0 OkUwfSxhbGlnbj1sZWZ0XQogICAge246Nn0KICAgIGVkZ2UgWy0+XSAoZmFrZTItMCkKbm9kZSAo RTAtY29kZSkgW2JlbG93PTVtbSBvZiBFMC1lbnYsIGFsaWduPWxlZnRdewogIChmYWN0LWl0ZXIg MSAxIG4pfQo7CgpcZW5ke3Rpa3pwaWN0dXJlfQojK2VuZF9zcmMKCiMrUkVTVUxUUzogZXhlcmNp c2UtMy05LXBhcnQtMgpbW2ZpbGU6ZXhlcmNpc2UtMy05LXBhcnQtMi5wbmddXQoKVGhlc2UgcGlj dHVyZXMgd291bGQgaGF2ZSBuZXZlciBoYXBwZW5lZCB1bmxlc3MgZ2VuZXJvdXMgcGVvcGxlIGZy b20KVGVYIFN0YWNrRXhjaGFuZ2UgaGFkIGhlbHBlZC4KCiAtIGh0dHBzOi8vdGV4LnN0YWNrZXhj aGFuZ2UuY29tL3F1ZXN0aW9ucy81MTU5MDkvaG93LXRvLW1ha2UtdGhpcy10aWt6LXBpY3R1cmUt bW9yZS1pZGlvbWF0aWMtZW52aXJvbm1lbnQtZGlhZ3JhbS81MTU5MTMKIC0gaHR0cHM6Ly90ZXgu c3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzUxNjU2MC9ob3ctdG8tcGxhY2UtZXZlbmx5LXNw YWNlZC1ub2Rlcy1pbi10aWt6LWZyb20tbm9kZTEtdG8tbm9kZTIKIC0gaHR0cHM6Ly90ZXguc3Rh Y2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzUxNzA2MS9ob3ctdG8tZGVidWctdG9rZW4tcG9zaXRp b25zLWluLXBldHJpLW5ldHMtaW4tdGlregogLSBodHRwczovL3RleC5zdGFja2V4Y2hhbmdlLmNv bS9xdWVzdGlvbnMvNTE3MjE3L2hvdy1pcy10ZXh0LWluZGVudGVkLWFuZC1nbHVlZC13aXRoaW4t dGlrei1ub2RlLWNvbnRlbnRzCgpJIGZlZWwgdGhhdCB0aGVzZSBkaWFncmFtcyBhcmUgYWxyZWFk eSBxdWl0ZSBjbHV0dGVyZWQsIHNvIEkgYW0KaW1wbGljaXRseSBleHBhbmRpbmcgfmlmfiBmb3Jt cyBpbiB0aGUgImNvZGUiIGJsb2Nrcy4gSSBhbSBhbHNvCmlnbm9yaW5nIHRvcCBsZXZlbCBjb21t YW5kcyBhbmQgSSBhbSBub3QgZHJhd2luZyBhcnJvd3Mgd2hlbiBmdW5jdGlvbgpjYWxscyBvY2N1 ci5bZm46Ml0KCioqKiBUT0RPIEZpZ3VyZSAzLjkgRW52aXJvbm1lbnRzIGFmdGVyIHRoZSBjYWxs IHRvIFcxCgojK25hbWU6IHJlbWFyay1lbnZpcm9ubWVudHMtMy05CiMraGVhZGVyOiA6aW1hZ2Vt YWdpY2sgeWVzIDppbWlub3B0aW9ucyAtZGVuc2l0eSAzMDAgOmltb3V0b3B0aW9ucyAtZ2VvbWV0 cnkgODAwCiMraGVhZGVyOiA6Zml0IHllcyA6aGVhZGVycyAnKCJcXHVzZXBhY2thZ2V7dGlren0g XFx1c2V0aWt6bGlicmFyeXtwb3NpdGlvbmluZyxmaXQscGV0cmksYXJyb3dzfSIpCiMraGVhZGVy OiA6YnVmZmVyIG9uCiMrYmVnaW5fc3JjIGxhdGV4IDpyZXN1bHRzIHJhdyBmaWxlIDpleHBvcnRz IGJvdGggOmZpbGUgZmlndXJlLTMtOS5wbmcKXGJlZ2lue3Rpa3pwaWN0dXJlfVtpbm5lciBzZXA9 MG1tLD49c3RlYWx0aCcsdmVyeSB0aGljayxjb2xvcj1ibGFjayE1MF0KXGJlZ2lue3Njb3BlfSBb bm9kZSBkaXN0YW5jZT00bW1dClxub2RlIChtYWtlIHdpdGhkcmF3KSB7bWFrZS13aXRoZHJhdzog Li4ufTsKXG5vZGUgKGZha2UxKSBbcmlnaHQ9b2YgbWFrZSB3aXRoZHJhdyx4c2hpZnQ9NDBtbV0g e307Clxub2RlIChXMSkgW2JlbG93PW9mIG1ha2Ugd2l0aGRyYXcud2VzdCxhbmNob3I9d2VzdF0g e1cxOn07ClxlbmR7c2NvcGV9Cgpcbm9kZSAoZyBlbnYpIFtkcmF3LHJlY3RhbmdsZSxpbm5lciBz ZXA9Mm1tLCBmaXQ9KG1ha2Ugd2l0aGRyYXcpIChXMSkgKGZha2UxKV0KeyB9OwoKXG5vZGUgKGcg ZW52IG5hbWUpIFtsZWZ0PXtvZiBnIGVudn0sdGV4dCB3aWR0aD0xY21dCntnbG9iYWwgZW52fSBl ZGdlWy0+LHZlcnkgdGhpY2tdIChnIGVudik7CgpcYmVnaW57c2NvcGV9W25vZGUgZGlzdGFuY2U9 MG1tXQpcbm9kZSBbZHJhdyxtaW5pbXVtIHNpemU9NW1tLGNpcmNsZSx0b2tlbnM9MSxiZWxvdz1v ZiBXMS5lYXN0LCB5c2hpZnQ9LTIwbW1dICh3MWZ1bi1sZWZ0KSB7fTsKXG5vZGUgW2RyYXcsbWlu aW11bSBzaXplPTVtbSxjaXJjbGUsdG9rZW5zPTEscmlnaHQ9b2YgdzFmdW4tbGVmdCwgeHNoaWZ0 PTBtbV0KKHcxZnVuLXJpZ2h0KSB7fTsKClxub2RlIFtyZWN0YW5nbGUsIGZpdD0odzFmdW4tbGVm dCkgKHcxZnVuLXJpZ2h0KV0gKHcxZnVuKQp7fSBlZGdlIFs8LSwgdG8gcGF0aD17fC0gKFx0aWt6 dG90YXJnZXQpfV0gKFcxLmVhc3QpOwpcZW5ke3Njb3BlfQoKXG5vZGUgW2JlbG93PW9mIHcxZnVu LWxlZnQsIGFsaWduPWxlZnRdIHtwYXJhbWV0ZXJzOiBhbW91bnQgXFwgYm9keTouLi59CmVkZ2Ug WzwtXSAodzFmdW4tbGVmdC5jZW50ZXIpOyAKCgpcbm9kZSAoRTEtZW52KSBbYmVsb3c9b2YgZyBl bnYseXNoaWZ0PTVtbSxkcmF3LGlubmVyIHNlcD0ybW1dIHtiYWxhbmNlOiBhbW91bnR9CmVkZ2Ug Wy0+XSAoZyBlbnYpOwpcbm9kZSBbbGVmdD1vZiBFMS1lbnYseHNoaWZ0PTVtbV0ge0UxfSBlZGdl IFstPl0gKEUxLWVudik7CgpccGF0aCAodzFmdW4tcmlnaHQuY2VudGVyKSBlZGdlWy0+LHRvIHBh dGg9ey18IChcdGlrenRvdGFyZ2V0KX1dIChFMS1lbnYuc291dGgpOwoKXGVuZHt0aWt6cGljdHVy ZX0KCgojK2VuZF9zcmMKCiMrUkVTVUxUUzogcmVtYXJrLWVudmlyb25tZW50cy0zLTkKW1tmaWxl OmZpZ3VyZS0zLTkucG5nXV0KCioqKiBET05FIEV4ZXJjaXNlIDMuMTAgVXNpbmcgfmxldH4gdG8g Y3JlYXRlIHN0YXRlIHZhcmlhYmxlcwogICAgQ0xPU0VEOiBbMjAxOS0xMS0yNSBNb24gMTI6NTJd CgpXZSBuZWVkIHRvIGNvbXBhcmUgdHdvIHZlcnNpb25zIG9mIH5tYWtlLXdpdGhkcmF3fiwgdGhl IG9uZSB1c2luZyBhCnBhcmFtZXRlciB2YXJpYWJsZSBhcyBhIHN0YXRlIHZhcmlhYmxlLCB0aGUg b25lIGNyZWF0ZWQgYXV0b21hdGljYWxseSwKYW5kIHRoZSBvbmUgd2hpY2ggY3JlYXRlcyBhIHN0 YXRlIHZhcmlhYmxlIGV4cGxpY2l0bHkgdXNpbmcgfmxldH4uCgpUaGUgZmlyc3Qgb25lOgojK2Jl Z2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKKGRlZmluZSAobWFr ZS13aXRoZHJhdyBiYWxhbmNlKQogIChsYW1iZGEgKGFtb3VudCkKICAgIChpZiAoPj0gYmFsYW5j ZSBhbW91bnQpCiAgICAgIChiZWdpbiAoc2V0ISBiYWxhbmNlICgtIGJhbGFuY2UgYW1vdW50KSkK ICAgICAgICAgICAgIGJhbGFuY2UpCiJJbnN1ZmZpY2llbnQgZnVuZHMiKSkpCiMrZW5kX3NyYwoK IytuYW1lOiBleGVyY2lzZS0zLTEwLXBhcnQtMQojK2hlYWRlcjogOmltYWdlbWFnaWNrIHllcyA6 aW1pbm9wdGlvbnMgLWRlbnNpdHkgMzAwIDppbW91dG9wdGlvbnMgLWdlb21ldHJ5IDEwMDAKIyto ZWFkZXI6IDpmaXQgeWVzIDpoZWFkZXJzICcoIlxcdXNlcGFja2FnZXt0aWt6fSBcXHVzZXRpa3ps aWJyYXJ5e3Bvc2l0aW9uaW5nLGZpdCxwZXRyaSxhcnJvd3N9IikKIytoZWFkZXI6IDpidWZmZXIg b24KIytiZWdpbl9zcmMgbGF0ZXggOnJlc3VsdHMgcmF3IGZpbGUgOmV4cG9ydHMgYm90aCA6Zmls ZSBleGVyY2lzZS0zLTEwLXBhcnQtMS5wbmcKXGJlZ2lue3Rpa3pwaWN0dXJlfVtpbm5lciBzZXA9 MG1tLD49c3RlYWx0aCcsdmVyeSB0aGljayxjb2xvcj1ibGFjayE1MCwKICAgICBmb250PVxzZmZh bWlseSxwaWNzL3R3byBkb3RzLy5zdHlsZT17Y29kZT17CiAgICAgXG5vZGUgW2RyYXcsbWluaW11 bSBzaXplPTVtbSxjaXJjbGUsY29sb3JlZCB0b2tlbnM9e2JsYWNrITUwfV0gCiAgICAgKCMxLWxl ZnQpIHt9OwogICAgXG5vZGUgW2RyYXcsbWluaW11bSBzaXplPTVtbSxjaXJjbGUsY29sb3JlZCB0 b2tlbnM9e2JsYWNrITUwfSwKICAgIHJpZ2h0PTBwdCBvZiAjMS1sZWZ0XQogICAgICAgICgjMS1y aWdodCkge307CiAgICBcbm9kZSBbcmVjdGFuZ2xlLCBmaXQ9KCMxLWxlZnQpICgjMS1yaWdodCld ICgjMSl7fTsKICAgIH19LAogICAgZXZlcnkgcGluIGVkZ2UvLnN0eWxlPXs8LSx2ZXJ5IHRoaWNr fSwKICAgIGJveC8uc3R5bGU9e2RyYXcscmVjdGFuZ2xlLGlubmVyIHNlcD0jMX0sYm94Ly5kZWZh dWx0PTJtbV0KCiAgXG5vZGUgKFcxKSAgIHttYWtlLXdpdGhkcmF3On07CiAgXG5vZGUgKGZha2Ux KSBbcmlnaHQ9MTAwbW0gb2YgVzFdIHt9OyAgCiAgXG5vZGUgKGZhY3QtaXRlcikgW2Fib3ZlPTNt bSBvZiBXMS53ZXN0LGFuY2hvcj13ZXN0XSB7VzE6fTsKJQogIFxub2RlIChnIGVudikgW2JveCwg Zml0PShXMSkgKGZha2UxKSAoZmFjdC1pdGVyKSwKICBwaW49e1t0ZXh0IHdpZHRoPTFjbSxwaW4g ZGlzdGFuY2U9MTBtbV1sZWZ0Omdsb2JhbCBlbnZ9XQogIHsgfTsKCiAgXHBhdGggKFt5c2hpZnQ9 LTIwbW1dVzEuZWFzdClwaWN7dHdvIGRvdHM9dzFmdW59CiAgICAodzFmdW4pIGVkZ2UgWzwtLCB0 byBwYXRoPXt8LSAoXHRpa3p0b3RhcmdldCl9XSAoVzEuZWFzdCk7CiAgXG5vZGUgW2JlbG93PW9m IHcxZnVuLWxlZnQsIGFsaWduPWxlZnQsZm9udD1cdHRmYW1pbHldIAp7XG5vaW5kZW50IHBhcmFt ZXRlcnM6XHZwaGFudG9te2R9YmFsYW5jZSBcXCAKYm9keTpcXCAKICAobGFtYmRhIChhbW91bnQp XFwKICAgIChpZiAoPj0gYmFsYW5jZSBhbW91bnQpXFwKICAgICAgKGJlZ2luIChzZXQhIGJhbGFu Y2VcXCAoLSBiYWxhbmNlIGFtb3VudCkpXFwKICAgICAgICAgICAgIGJhbGFuY2UpXFwKIkluc3Vm ZmljaWVudCBmdW5kcyIpKQp9CiAgICBlZGdlIFs8LV0gKHcxZnVuLWxlZnQuY2VudGVyKTsgCiAg XGRyYXdbLT5dICh3MWZ1bi1yaWdodC5jZW50ZXIpIC18IChbeHNoaWZ0PTNtbV0gdzFmdW4tcmln aHQuZWFzdCB8LSBnIGVudi5zb3V0aCk7CgpccGF0aCAoZyBlbnYuc291dGggd2VzdCkgLS0gKGcg ZW52LnNvdXRoIGVhc3QpCm5vZGUgW3Bvcz03LzhdIChmYWtlMi03KSB7fQpub2RlIChFNy1lbnYp IFtiZWxvdz01bW0gb2YgZmFrZTItNyxib3gsCiAgICBwaW49e1twaW4gZGlzdGFuY2U9NW1tXWxl ZnQ6RTF9LGFsaWduPWxlZnRdIAogICAge2JhbGFuY2U6MTAwfQogICAgZWRnZSBbLT5dIChmYWtl Mi03KSA7CgpccGF0aCBjb29yZGluYXRlW2JlbG93IHJpZ2h0PTVtbSBhbmQgNDBtbSBvZiB3MWZ1 bl0gKGF1eCkKICAgIChhdXgpIHBpY3t0d28gZG90cz1mYWN0LWl0ZXItZnVufQogICAgKGZhY3Qt aXRlci1mdW4pIGVkZ2UgWzwtLCB0byBwYXRoPXt8LSAoXHRpa3p0b3RhcmdldCl9XSAoZmFjdC1p dGVyLmVhc3QpOwogIFxub2RlIFtiZWxvdz1vZiBmYWN0LWl0ZXItZnVuLWxlZnQsIGFsaWduPWxl ZnQsbm9kZSBmb250PVx0dGZhbWlseV0gewogICAgIHBhcmFtZXRlcnM6YW1vdW50IFxcIAogICAg IGJvZHk6IChpZiAoPj0gYmFsYW5jZSBhbW91bnQpXFwKICAgICAgKGJlZ2luIChzZXQhIGJhbGFu Y2VcXCAoLSBiYWxhbmNlIGFtb3VudCkpXFwKICAgICAgICAgICAgIGJhbGFuY2UpfQogICAgZWRn ZSBbPC1dIChmYWN0LWl0ZXItZnVuLWxlZnQuY2VudGVyKTsgCiAgXGRyYXdbLT5dIChmYWN0LWl0 ZXItZnVuLXJpZ2h0LmNlbnRlcikgLXwgIChFNy1lbnYuc291dGgpOwoKClxlbmR7dGlrenBpY3R1 cmV9CiMrZW5kX3NyYwoKIytSRVNVTFRTOiBleGVyY2lzZS0zLTEwLXBhcnQtMQpbW2ZpbGU6ZXhl cmNpc2UtMy0xMC1wYXJ0LTEucG5nXV0KCgpUaGUgc2Vjb25kIG9uZToKIytiZWdpbl9zcmMgc2No ZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CiAgKGRlZmluZSAobWFrZS13aXRoZHJh dyBpbml0aWFsLWFtb3VudCkKICAobGV0ICgoYmFsYW5jZSBpbml0aWFsLWFtb3VudCkpCiAgKGxh bWJkYSAoYW1vdW50KQogIChpZiAoPj0gYmFsYW5jZSBhbW91bnQpCiAgKGJlZ2luIChzZXQhIGJh bGFuY2UgKC0gYmFsYW5jZSBhbW91bnQpKQogIGJhbGFuY2UpCiAgIkluc3VmZmljaWVudCBmdW5k cyIpKSkpCiMrZW5kX3NyYwoKIytuYW1lOiBleGVyY2lzZS0zLTEwLXBhcnQtMgojK2hlYWRlcjog OmltYWdlbWFnaWNrIHllcyA6aW1pbm9wdGlvbnMgLWRlbnNpdHkgMzAwIDppbW91dG9wdGlvbnMg LWdlb21ldHJ5IDEwMDAKIytoZWFkZXI6IDpmaXQgeWVzIDpoZWFkZXJzICcoIlxcdXNlcGFja2Fn ZXt0aWt6fSBcXHVzZXRpa3psaWJyYXJ5e3Bvc2l0aW9uaW5nLGZpdCxwZXRyaSxhcnJvd3N9IikK IytoZWFkZXI6IDpidWZmZXIgb24KIytiZWdpbl9zcmMgbGF0ZXggOnJlc3VsdHMgcmF3IGZpbGUg OmV4cG9ydHMgYm90aCA6ZmlsZSBleGVyY2lzZS0zLTEwLXBhcnQtMi5wbmcKXGJlZ2lue3Rpa3pw aWN0dXJlfVtpbm5lciBzZXA9MG1tLD49c3RlYWx0aCcsdmVyeSB0aGljayxjb2xvcj1ibGFjayE1 MCwKICAgICBmb250PVxzZmZhbWlseSxwaWNzL3R3byBkb3RzLy5zdHlsZT17Y29kZT17CiAgICAg XG5vZGUgW2RyYXcsbWluaW11bSBzaXplPTVtbSxjaXJjbGUsY29sb3JlZCB0b2tlbnM9e2JsYWNr ITUwfV0gCiAgICAgKCMxLWxlZnQpIHt9OwogICAgXG5vZGUgW2RyYXcsbWluaW11bSBzaXplPTVt bSxjaXJjbGUsY29sb3JlZCB0b2tlbnM9e2JsYWNrITUwfSwKICAgIHJpZ2h0PTBwdCBvZiAjMS1s ZWZ0XQogICAgICAgICgjMS1yaWdodCkge307CiAgICBcbm9kZSBbcmVjdGFuZ2xlLCBmaXQ9KCMx LWxlZnQpICgjMS1yaWdodCldICgjMSl7fTsKICAgIH19LAogICAgZXZlcnkgcGluIGVkZ2UvLnN0 eWxlPXs8LSx2ZXJ5IHRoaWNrfSwKICAgIGJveC8uc3R5bGU9e2RyYXcscmVjdGFuZ2xlLGlubmVy IHNlcD0jMX0sYm94Ly5kZWZhdWx0PTJtbV0KCiAgXG5vZGUgKFcxKSAgIHttYWtlLXdpdGhkcmF3 On07CiAgXG5vZGUgKGZha2UxKSBbcmlnaHQ9MTAwbW0gb2YgVzFdIHt9OyAgCiAgXG5vZGUgKGZh Y3QtaXRlcikgW2Fib3ZlPTNtbSBvZiBXMS53ZXN0LGFuY2hvcj13ZXN0XSB7VzE6fTsKJQogIFxu b2RlIChnIGVudikgW2JveCwgZml0PShXMSkgKGZha2UxKSAoZmFjdC1pdGVyKSwKICBwaW49e1t0 ZXh0IHdpZHRoPTFjbSxwaW4gZGlzdGFuY2U9MTBtbV1sZWZ0Omdsb2JhbCBlbnZ9XQogIHsgfTsK CiAgXHBhdGggKFt5c2hpZnQ9LTIwbW1dVzEuZWFzdClwaWN7dHdvIGRvdHM9dzFmdW59CiAgICAo dzFmdW4pIGVkZ2UgWzwtLCB0byBwYXRoPXt8LSAoXHRpa3p0b3RhcmdldCl9XSAoVzEuZWFzdCk7 CiAgXG5vZGUgW2JlbG93PW9mIHcxZnVuLWxlZnQsIGFsaWduPWxlZnQsZm9udD1cdHRmYW1pbHld IAp7XG5vaW5kZW50IHBhcmFtZXRlcnM6aW5pdGlhbC1hbW91bnQgXFwgCmJvZHk6XFwgCihsZXQg KChiYWxhbmNlIGluaXRpYWwtYW1vdW50KSlcXAogIChsYW1iZGEgKGFtb3VudClcXAogIChpZiAo Pj0gYmFsYW5jZSBhbW91bnQpXFwKICAoYmVnaW4gKHNldCEgYmFsYW5jZVxcICgtIGJhbGFuY2Ug YW1vdW50KSlcXAogIGJhbGFuY2UpXFwKICAiSW5zdWZmaWNpZW50IGZ1bmRzIikpCn0KICAgIGVk Z2UgWzwtXSAodzFmdW4tbGVmdC5jZW50ZXIpOyAKICBcZHJhd1stPl0gKHcxZnVuLXJpZ2h0LmNl bnRlcikgLXwgKFt4c2hpZnQ9M21tXSB3MWZ1bi1yaWdodC5lYXN0IHwtIGcgZW52LnNvdXRoKTsK ClxwYXRoIChnIGVudi5zb3V0aCB3ZXN0KSAtLSAoZyBlbnYuc291dGggZWFzdCkKbm9kZSBbcG9z PTcvOF0gKGZha2UyLTcpIHt9Cm5vZGUgKEU3LWVudikgW2JlbG93PTVtbSBvZiBmYWtlMi03LGJv eCwKICAgIHBpbj17W3BpbiBkaXN0YW5jZT01bW1dbGVmdDpFMX0sYWxpZ249bGVmdF0gCiAgICB7 aW5pdGlhbC1hbW91bnQ6MTAwfQogICAgZWRnZSBbLT5dIChmYWtlMi03KSAKbm9kZSAoRTIpIFti ZWxvdz01bW0gb2YgRTctZW52LGJveCwKICAgIHBpbj17W3BpbiBkaXN0YW5jZT01bW1dbGVmdDpF Mn0sYWxpZ249bGVmdF0gCiAgICB7YmFsYW5jZToxMDB9CiAgICBlZGdlIFstPl0gKEU3LWVudikg Cgo7CgpccGF0aCBjb29yZGluYXRlW2JlbG93IHJpZ2h0PTE1bW0gYW5kIDQwbW0gb2YgdzFmdW5d IChhdXgpCiAgICAoYXV4KSBwaWN7dHdvIGRvdHM9ZmFjdC1pdGVyLWZ1bn0KICAgIChmYWN0LWl0 ZXItZnVuKSBlZGdlIFs8LSwgdG8gcGF0aD17fC0gKFx0aWt6dG90YXJnZXQpfV0gKGZhY3QtaXRl ci5lYXN0KTsKICBcbm9kZSBbYmVsb3c9b2YgZmFjdC1pdGVyLWZ1bi1sZWZ0LCBhbGlnbj1sZWZ0 LG5vZGUgZm9udD1cdHRmYW1pbHldIHsKICAgICBwYXJhbWV0ZXJzOmFtb3VudCBcXCAKICAgICBi b2R5OiAoaWYgKD49IGJhbGFuY2UgYW1vdW50KVxcCiAgICAgIChiZWdpbiAoc2V0ISBiYWxhbmNl XFwgKC0gYmFsYW5jZSBhbW91bnQpKVxcCiAgICAgICAgICAgICBiYWxhbmNlKX0KICAgIGVkZ2Ug WzwtXSAoZmFjdC1pdGVyLWZ1bi1sZWZ0LmNlbnRlcik7IAogIFxkcmF3Wy0+XSAoZmFjdC1pdGVy LWZ1bi1yaWdodC5jZW50ZXIpIC18ICAoRTIpOwoKClxlbmR7dGlrenBpY3R1cmV9CiMrZW5kX3Ny YwoKIytSRVNVTFRTOiBleGVyY2lzZS0zLTEwLXBhcnQtMgpbW2ZpbGU6ZXhlcmNpc2UtMy0xMC1w YXJ0LTIucG5nXV0KCkkgdGhpbmsgdGhlc2UgdHdvIGRpYWdyYW1zIGV4cGxhaW4gdGhpbmdzIHF1 aXRlIHdlbGwuIEFuIGFkZGl0aW9uYWwKfmxldH4gY3JlYXRlcyBhbiBhZGRpdGlvbmFsIGZyYW1l LCB3aGljaCBpcyB2aXNpYmxlIG9uIHRoZSBmaWd1cmUKW1tleGVyY2lzZS0zLTEwLXBhcnQtMl1d LiAKCioqKiBET05FIEV4ZXJjaXNlIDMuMTEgSW50ZXJuYWwgZGVmaW5pdGlvbnMKICAgIENMT1NF RDogWzIwMTktMTEtMjYgVHVlIDEyOjQ0XQoKVGhpcyBpcyBhIGh1Z2UgdGFzay4gTGV0IHVzIGZp cnN0IGRyYXcgfm1ha2UtYWNjb3VudH4sIGFuZCB0aGVuCmltcHJvdmUgb24gaXQuCgojK25hbWU6 IGV4ZXJjaXNlLTMtMTEtcGFydC0xCiMraGVhZGVyOiA6aW1hZ2VtYWdpY2sgeWVzIDppbWlub3B0 aW9ucyAtZGVuc2l0eSAzMDAgOmltb3V0b3B0aW9ucyAtZ2VvbWV0cnkgMTAwMAojK2hlYWRlcjog OmZpdCB5ZXMgOmhlYWRlcnMgJygiXFx1c2VwYWNrYWdle3Rpa3p9IFxcdXNldGlremxpYnJhcnl7 cG9zaXRpb25pbmcsZml0LHBldHJpLGFycm93cyxjYWxjfSIpCiMraGVhZGVyOiA6YnVmZmVyIG9u CiMrYmVnaW5fc3JjIGxhdGV4IDpyZXN1bHRzIHJhdyBmaWxlIDpleHBvcnRzIGJvdGggOmZpbGUg ZXhlcmNpc2UtMy0xMS1wYXJ0LTEucG5nCiAgXGJlZ2lue3Rpa3pwaWN0dXJlfVtpbm5lciBzZXA9 MG1tLD49c3RlYWx0aCcsdmVyeSB0aGljayxjb2xvcj1ibGFjayE1MCwKICAgICAgIGZvbnQ9XHNm ZmFtaWx5LHBpY3MvdHdvIGRvdHMvLnN0eWxlPXtjb2RlPXsKICAgICAgIFxub2RlIFtkcmF3LG1p bmltdW0gc2l6ZT01bW0sY2lyY2xlLGNvbG9yZWQgdG9rZW5zPXtibGFjayE1MH1dIAogICAgICAg KCMxLWxlZnQpIHt9OwogICAgICBcbm9kZSBbZHJhdyxtaW5pbXVtIHNpemU9NW1tLGNpcmNsZSxj b2xvcmVkIHRva2Vucz17YmxhY2shNTB9LAogICAgICByaWdodD0wcHQgb2YgIzEtbGVmdF0KCSAg KCMxLXJpZ2h0KSB7fTsKICAgICAgXG5vZGUgW3JlY3RhbmdsZSwgZml0PSgjMS1sZWZ0KSAoIzEt cmlnaHQpXSAoIzEpe307CiAgICAgIH19LAogICAgICBldmVyeSBwaW4gZWRnZS8uc3R5bGU9ezwt LHZlcnkgdGhpY2t9LAogICAgICBib3gvLnN0eWxlPXtkcmF3LHJlY3RhbmdsZSxpbm5lciBzZXA9 IzF9LGJveC8uZGVmYXVsdD0ybW0sCiAgICAgIG5vZGUgZGlzdGFuY2U9NG1tXQoKICAgIFxub2Rl IChXMSkgICB7bWFrZS1hY2NvdW50On07CiAgICBcbm9kZSAoZmFrZTEpIFtyaWdodD0xMDBtbSBv ZiBXMV0ge307ICAKICAgIFxub2RlIChmYWN0LWl0ZXIpIFthYm92ZT0zbW0gb2YgVzEud2VzdCxh bmNob3I9d2VzdF0ge2FjYzp9OwogICUKICAgIFxub2RlIChnIGVudikgW2JveCwgZml0PShXMSkg KGZha2UxKSAoZmFjdC1pdGVyKSwKICAgIHBpbj17W3RleHQgd2lkdGg9MWNtLHBpbiBkaXN0YW5j ZT0xMG1tXWxlZnQ6Z2xvYmFsIGVudn1dCiAgICB7IH07CgogICAgXHBhdGggKFt5c2hpZnQ9LTIw bW1dVzEuZWFzdClwaWN7dHdvIGRvdHM9dzFmdW59CiAgICAgICh3MWZ1bikgZWRnZSBbPC0sIHRv IHBhdGg9e3wtIChcdGlrenRvdGFyZ2V0KX1dIChXMS5lYXN0KTsKICAgIFxub2RlIFtiZWxvdz01 bW0gb2YgdzFmdW4tbGVmdCwgYWxpZ249bGVmdCxmb250PVx0dGZhbWlseV0gCiAge1xub2luZGVu dCBwYXJhbWV0ZXJzOlx2cGhhbnRvbXtkfWJhbGFuY2UgXFwgCiAgYm9keTpcXCAgIAogIChkZWZp bmUgKHdpdGhkcmF3IGFtb3VudClcXAogIChpZiAoPj0gYmFsYW5jZSBhbW91bnQpXFwKICAoYmVn aW4gKHNldCEgYmFsYW5jZVxcICgtIGJhbGFuY2UgYW1vdW50KSlcXAogIGJhbGFuY2UpXFwKICAi SW5zdWZmaWNpZW50IGZ1bmRzIikpXFwKICAoZGVmaW5lIChkZXBvc2l0IGFtb3VudClcXAogIChz ZXQhIGJhbGFuY2UgKCsgYmFsYW5jZSBhbW91bnQpKVxcCiAgYmFsYW5jZSlcXAogIChkZWZpbmUg KGRpc3BhdGNoIG0pXFwKICAoY29uZCAoKGVxPyBtICd3aXRoZHJhdykgd2l0aGRyYXcpXFwKICAo KGVxPyBtICdkZXBvc2l0KSBkZXBvc2l0KVxcCiAgKGVsc2VcXAogIChlcnJvciAiVW5rbm93biBy ZXF1ZXN0OiBNQUtFLUFDQ09VTlQiXFwKICBtKSkpKVxcCiAgZGlzcGF0Y2gKICB9CiAgICAgIGVk Z2UgWzwtXSAodzFmdW4tbGVmdC5jZW50ZXIpOyAKICAgIFxkcmF3Wy0+XSAodzFmdW4tcmlnaHQu Y2VudGVyKSAtfCAoW3hzaGlmdD0zbW1dIHcxZnVuLXJpZ2h0LmVhc3QgfC0gZyBlbnYuc291dGgp OwoKICBccGF0aCAoZyBlbnYuc291dGggd2VzdCkgLS0gKGcgZW52LnNvdXRoIGVhc3QpCiAgbm9k ZSBbcG9zPTcvOF0gKGZha2UyLTcpIHt9CiAgbm9kZSAoYmFsYW5jZS12YXIpICBbYmVsb3c9Nm1t IG9mIGZha2UyLTddIHtcdnBoYW50b217bH1iYWxhbmNlOjMwfQogIG5vZGUgKHdpdGhkcmF3LXZh cikgW2JlbG93PW9mIGJhbGFuY2UtdmFyLndlc3QsYW5jaG9yPXdlc3RdIHtcdnBoYW50b217bH13 aXRoZHJhdzp9CiAgbm9kZSAoZGVwb3NpdC12YXIpICBbYmVsb3c9b2Ygd2l0aGRyYXctdmFyLndl c3QsYW5jaG9yPXdlc3RdIHtcdnBoYW50b217bH1kZXBvc2l0On0KICBub2RlIChFNy1lbnYpIFti b3gsCiAgICAgIHBpbj17W3BpbiBkaXN0YW5jZT01bW1dbGVmdDpFMX0sYWxpZ249bGVmdCwKICAg ICAgZml0PShiYWxhbmNlLXZhcikgKGRlcG9zaXQtdmFyKSAod2l0aGRyYXctdmFyKV0gCiAgICAg IHt9CiAgZWRnZSBbLT5dIChmYWtlMi03KSA7CgogIFxwYXRoIGNvb3JkaW5hdGVbYmVsb3cgcmln aHQ9NW1tIGFuZCA0MG1tIG9mIHcxZnVuXSAoYXV4KQogICAgICAoYXV4KSBwaWN7dHdvIGRvdHM9 ZmFjdC1pdGVyLWZ1bn0KICAgICAgKGZhY3QtaXRlci1mdW4pIGVkZ2UgWzwtLCB0byBwYXRoPXt8 LSAoXHRpa3p0b3RhcmdldCl9XSAoZmFjdC1pdGVyLmVhc3QpOwogIFxub2RlIFtiZWxvdz01bW0g b2YgZmFjdC1pdGVyLWZ1bi1sZWZ0LCBhbGlnbj1sZWZ0LG5vZGUgZm9udD1cdHRmYW1pbHldIHsK ICAgICAgIHBhcmFtZXRlcnM6bSBcXCAKICAgICAgIGJvZHk6IChjb25kICgoZXE/IG0gJ3dpdGhk cmF3KSB3aXRoZHJhdylcXAoJICAgICAoKGVxPyBtICdkZXBvc2l0KSBkZXBvc2l0KVxcCgkgICAg IChlbHNlXFwKCSAgICAgKGVycm9yICJVbmtub3duIHJlcXVlc3Q6IE1BS0UtQUNDT1VOVCJcXAoJ ICAgICBtKSkpCiAgICAgIH0KICAgZWRnZSBbPC1dIChmYWN0LWl0ZXItZnVuLWxlZnQuY2VudGVy KTsgCiAgXGRyYXdbLT5dIChmYWN0LWl0ZXItZnVuLXJpZ2h0LmNlbnRlcikgLXwgICgkIChFNy1l bnYuc291dGgpIC0gKDVtbSwwbW0pICQpOwogIAogIFxwYXRoIGNvb3JkaW5hdGVbYmVsb3cgcmln aHQ9MTBtbSBhbmQgMTNtbSBvZiBFNy1lbnYuc291dGhdIChhdXgpCiAgICAgIChhdXgpIHBpY3t0 d28gZG90cz1kZXBvc2l0fQogICAgICAoZGVwb3NpdCkgZWRnZSBbPC0sIHRvIHBhdGg9e3wtIChc dGlrenRvdGFyZ2V0KX1dIChkZXBvc2l0LXZhci5lYXN0KTsKICBcbm9kZSBbYmVsb3c9NW1tIG9m IGRlcG9zaXQtbGVmdCwgYWxpZ249bGVmdCxub2RlIGZvbnQ9XHR0ZmFtaWx5XSB7CiAgICAgICBw YXJhbWV0ZXJzOmFtb3VudCBcXCAKICAgICAgIGJvZHk6ICAoc2V0ISBiYWxhbmNlXFwgKCsgYmFs YW5jZSBhbW91bnQpKVxcCiAgICAgICAgICAgICAgYmFsYW5jZQogICAgICB9CiAgIGVkZ2UgWzwt XSAoZGVwb3NpdC1sZWZ0LmNlbnRlcik7IAogIFxkcmF3Wy0+XSAoZGVwb3NpdC1yaWdodC5jZW50 ZXIpIHwtIChmYWN0LWl0ZXItZnVuIC18IEU3LWVudi5zb3V0aCkgLXwgICgkIChFNy1lbnYuc291 dGgpIC0gKDBtbSwwbW0pICQpOwoKICBccGF0aCBjb29yZGluYXRlW2JlbG93IHJpZ2h0PTEwbW0g YW5kIDUwbW0gb2YgRTctZW52LnNvdXRoXSAoYXV4KQogICAgICAoYXV4KSBwaWN7dHdvIGRvdHM9 d2l0aGRyYXd9CiAgICAgICh3aXRoZHJhdykgZWRnZSBbPC0sIHRvIHBhdGg9e3wtIChcdGlrenRv dGFyZ2V0KX1dICh3aXRoZHJhdy12YXIuZWFzdCk7CiAgXG5vZGUgW2JlbG93PTVtbSBvZiB3aXRo ZHJhdy1sZWZ0LCBhbGlnbj1sZWZ0LG5vZGUgZm9udD1cdHRmYW1pbHldIHsKICAgICAgIHBhcmFt ZXRlcnM6YW1vdW50IFxcIAogICAgICAgYm9keTogIChzZXQhIGJhbGFuY2VcXCAoLSBiYWxhbmNl IGFtb3VudCkpXFwKICAgICAgICAgICAgICBiYWxhbmNlCiAgICAgIH0KICAgZWRnZSBbPC1dICh3 aXRoZHJhdy1sZWZ0LmNlbnRlcik7IAogIFxkcmF3Wy0+XSAod2l0aGRyYXctcmlnaHQuY2VudGVy KSB8LSAgKCQgKEU3LWVudi5lYXN0KSArICgwbW0sNW1tKSAkKTsKCiAgXGVuZHt0aWt6cGljdHVy ZX0KIytlbmRfc3JjCgojK1JFU1VMVFM6IGV4ZXJjaXNlLTMtMTEtcGFydC0xCltbZmlsZTpleGVy Y2lzZS0zLTExLXBhcnQtMS5wbmddXQoKSSBhbSBub3QgcGxvdHRpbmcgdGhlIGludGVybWVkaWF0 ZSBlbnZpcm9ubWVudHMsIHRoYXQgaXMgdG9vIG11Y2gKd29yaywgYnV0IHRoZSBpbXBvcnRhbnQg dGhpbmcgaXMgdGhhdCB3aGVuIH5hY2N+IGlzIGV2YWx1YXRlZCwgdGhlCmV2YWx1YXRpb24gZnJh bWUgaXMgYXBwZW5kZWQgdG8gdGhlIGVudmlyb25tZW50IEUxLCBhbmQgdGhlIGxvb2t1cCBpcwpw ZXJmb3JtZWQgaW4gdGhlIGVuY2xvc2luZyBlbnZpcm9ubWVudCwgaW5jbHVkaW5nIHRoZSBiaW5k aW5ncyBmb3IKfmRpc3BhdGNofiBhbmQgfndpdGhkcmF3fi4gCgpUaGUgc3RhdGUgZm9yIH5hY2N+ IGlzIGtlcHQgaW4gdGhlIGVudmlyb25tZW50IEUxLiAKCklmIHdlIHRvIGRlZmluZSB+YWNjMn4s IHRoZSBmcmFtZSBpbiB3aGljaCB3ZSBkZWZpbmUgaXQgd291bGQgbWVhbiBhCmxvdC4gTGV0IHVz IGFzc3VtZSB0aGF0IHdlIGRlZmluZSB+YWNjMn4gYXQgdGhlIHRvcCBsZXZlbC4gVGhpcyB3b3Vs ZAptZWFuIHRoYXQgbm93IHdlIHdvdWxkIGhhdmUgdHdvIGVudmlyb25tZW50cywgRTEgYW5kIEUy IHBvaW50aW5nLCBib3RoCnRoZSBjaGlsZHJlbiBvZiB0aGUgZ2xvYmFsIGVudmlyb25tZW50LiBP bmx5IHRoZSBnbG9iYWwgZGVmaW5pdGlvbnMKKHRoYXQgaXMgfm1ha2UtYWNjb3VudH4sIH5hY2Mx fiBhbmQgfmFjYzJ+KSB3b3VsZCBiZSBzaGFyZWQuIAoKKioqIERPTkUgRXhlcmNpc2UgMy4xMiBE cmF3aW5nIH5hcHBlbmQhfgogICAgQ0xPU0VEOiBbMjAxOS0xMS0yOSBGcmkgMTE6NTVdCgpOb3cg d2UgbmVlZCB0byBkcmF3IGJveC1hbmQtcG9pbnRlciBkaWFncmFtcyBmb3IgdGhlIHR3byB2YXJp YW50cyBvZiB+YXBwZW5kfi4KClRoZSBmaXJzdCB+YXBwZW5kfiBjYW4gYmUgZHJhd24gbGlrZSB0 aGlzOgoKIytuYW1lOiBleGVyY2lzZS0zLTEyLXBhcnQxCiMraGVhZGVyOiA6aW1hZ2VtYWdpY2sg eWVzIDppbWlub3B0aW9ucyAtZGVuc2l0eSAzMDAgOmltb3V0b3B0aW9ucyAtZ2VvbWV0cnkgMTAw MAojK2hlYWRlcjogOmZpdCB5ZXMgOmhlYWRlcnMgJygiXFx1c2VwYWNrYWdle3Rpa3p9IFxcdXNl dGlremxpYnJhcnl7cG9zaXRpb25pbmcsZml0LHBldHJpLGFycm93cyxjYWxjfSIpCiMraGVhZGVy OiA6YnVmZmVyIG9uCiMrYmVnaW5fc3JjIGxhdGV4IDpyZXN1bHRzIHJhdyBmaWxlIDpleHBvcnRz IGJvdGggOmZpbGUgZXhlcmNpc2UtMy0xMi1wYXJ0MS5wbmcKClxiZWdpbnt0aWt6cGljdHVyZX1b aW5uZXIgc2VwPTBtbSw+PXN0ZWFsdGgnLHZlcnkgdGhpY2ssY29sb3I9YmxhY2shNTAsCiAgICAg IGZvbnQ9XHNmZmFtaWx5LAogICAgICBub2RlIGRpc3RhbmNlPTIwbW0sCiAgICAgIHBpY3MvY29u cyBjZWxsLy5zdHlsZSBuIGFyZ3M9ezN9e2NvZGU9ewogICAgICBcY29vcmRpbmF0ZSAob3JpZ2lu KTsKICAgICAgXG5vZGVbYW5jaG9yPWVhc3QsbWluaW11bSBzaXplPTEwbW0saW5uZXIgc2VwPTBd ICgjMS1jYXIpIGF0KDAsMCkge307CiAgICAgIFxub2RlW2FuY2hvcj13ZXN0LG1pbmltdW0gc2l6 ZT0xMG1tLGlubmVyIHNlcD0wXSAoIzEtY2RyKSBhdCgwLDApIHt9OwogICAgICBcbm9kZVtuYW1l PSMxLWJveCxmaXQ9KCMxLWNhcikgKCMxLWNkciksZHJhdyxzaGFwZT1yZWN0YW5nbGUscm91bmRl ZAogY29ybmVycz0wLjVtbV0gIHt9OwogICAgICBcZHJhd1tzaG9ydGVuIDw9MXB0LCBzaG9ydGVu ID49MXB0XSAoIzEtYm94LnNvdXRoIC18IG9yaWdpbikgLS0gKCMxLWJveC5ub3J0aCAtfCBvcmln aW4pOwogICAgICBcaWYjMnQKICAgICAgJSBccGF0aCBub2RlW3NoYXBlPWNpcmNsZSxmaWxsLGRy YXcscmFkaXVzPTJtbV0gYXQgKCMxLWNhci5jZW50ZXIpIHt9OwogICAgICBcZmlsbGRyYXcgKCMx LWNhci5jZW50ZXIpIGNpcmNsZVtyYWRpdXM9MC42Nm1tXSA7CiAgICAgIFxlbHNlCiAgICAgIFxk cmF3W3Nob3J0ZW4gPD0xcHRdICgjMS1jYXIuc291dGggd2VzdCkgdG8gKCMxLWNhci5ub3J0aCBl YXN0KTsKICAgICAgXGZpCiAgICAgIFxpZiMzdAogICAgICBcZmlsbGRyYXcgKCMxLWNkci5jZW50 ZXIpIGNpcmNsZVtyYWRpdXM9MC42Nm1tXSA7CiAgICAgIFxlbHNlCiAgICAgIFxkcmF3W3Nob3J0 ZW4gPj0xcHRdICgjMS1jZHIuc291dGggd2VzdCkgdG8gKCMxLWNkci5ub3J0aCBlYXN0KTsKICAg ICAgXGZpCiAgICAgIH19LAogICAgICBwaWNzL2NvbnMgZWxlbWVudC8uc3R5bGUgbiBhcmdzPXsy fXtjb2RlPXsKICAgICAgXG5vZGUgW21pbmltdW0gc2l6ZT0xMG1tLGlubmVyIHNlcD0wLHJvdW5k ZWQgY29ybmVycz0xbW0sIGRyYXcsIHNoYXBlPXJlY3RhbmdsZV0gKCMxKSB7IzJ9OwogICAgICB9 fSwKICAgICAgYm94Ly5zdHlsZT17ZHJhdyxyZWN0YW5nbGUsaW5uZXIgc2VwPSMxfSxib3gvLmRl ZmF1bHQ9Mm1tLAogICAgICBdClxub2RlICh4KSB7eH07Clxub2RlW3JpZ2h0PTIwMG1tIG9mIHhd IHt9OwpccGljW3JpZ2h0PW9mIHhdIHtjb25zIGNlbGw9e2NlbGwtYX17dH17dH19OwpcZHJhd1st Pl0gKHgpIHRvIChjZWxsLWEtYm94KTsKXHBpY1tiZWxvdz1vZiBjZWxsLWEtY2FyXSB7Y29ucyBl bGVtZW50PXthfXthfX07ClxwaWNbcmlnaHQ9b2YgY2VsbC1hLWNkcl0ge2NvbnMgY2VsbD17Y2Vs bC1ifXt0fXtmfX07ClxwaWNbYmVsb3c9b2YgY2VsbC1iLWNhcl0ge2NvbnMgZWxlbWVudD17Yn17 Yn19OwpcZHJhd1stPl0gKGNlbGwtYS1jZHIuY2VudGVyKSB0byAoY2VsbC1iLWJveCk7ClxkcmF3 Wy0+XSAoY2VsbC1hLWNhci5jZW50ZXIpIHRvIChhKTsKXGRyYXdbLT5dIChjZWxsLWItY2FyLmNl bnRlcikgdG8gKGIpOwoKXG5vZGVbcmlnaHQ9b2YgY2VsbC1iLWJveF0gKHkpIHt5fTsKXHBpY1ty aWdodD1vZiB5XSB7Y29ucyBjZWxsPXtjZWxsLWN9e3R9e3R9fTsKXGRyYXdbLT5dICh5KSB0byAo Y2VsbC1jLWJveCk7ClxwaWNbYmVsb3c9b2YgY2VsbC1jLWNhcl0ge2NvbnMgZWxlbWVudD17Y317 Y319OwpccGljW3JpZ2h0PW9mIGNlbGwtYy1jZHJdIHtjb25zIGNlbGw9e2NlbGwtZH17dH17Zn19 OwpccGljW2JlbG93PW9mIGNlbGwtZC1jYXJdIHtjb25zIGVsZW1lbnQ9e2R9e2R9fTsKXGRyYXdb LT5dIChjZWxsLWMtY2RyLmNlbnRlcikgdG8gKGNlbGwtZC1ib3gpOwpcZHJhd1stPl0gKGNlbGwt Yy1jYXIuY2VudGVyKSB0byAoYyk7ClxkcmF3Wy0+XSAoY2VsbC1kLWNhci5jZW50ZXIpIHRvIChk KTsKClxub2RlW2JlbG93PTUwbW0gb2YgeF0gKHopIHt6fTsKXHBpY1tyaWdodD1vZiB6XSB7Y29u cyBjZWxsPXtjZWxsLWEtMn17dH17dH19OwpcZHJhd1stPl0gKHopIHRvIChjZWxsLWEtMi1ib3gp OwpccGljW2JlbG93PW9mIGNlbGwtYS0yLWNhcl0ge2NvbnMgZWxlbWVudD17YTJ9e2F9fTsKXHBp Y1tyaWdodD1vZiBjZWxsLWEtMi1jZHJdIHtjb25zIGNlbGw9e2NlbGwtYi0yfXt0fXt0fX07Clxw aWNbYmVsb3c9b2YgY2VsbC1iLTItY2FyXSB7Y29ucyBlbGVtZW50PXtiMn17Yn19OwpccGljW3Jp Z2h0PW9mIGNlbGwtYi0yLWNkcl0ge2NvbnMgY2VsbD17Y2VsbC1jLTJ9e3R9e3R9fTsKXHBpY1ti ZWxvdz1vZiBjZWxsLWMtMi1jYXJdIHtjb25zIGVsZW1lbnQ9e2MyfXtjfX07ClxwaWNbcmlnaHQ9 b2YgY2VsbC1jLTItY2RyXSB7Y29ucyBjZWxsPXtjZWxsLWQtMn17dH17Zn19OwpccGljW2JlbG93 PW9mIGNlbGwtZC0yLWNhcl0ge2NvbnMgZWxlbWVudD17ZDJ9e2R9fTsKCgpcZHJhd1stPl0gKGNl bGwtYS0yLWNkci5jZW50ZXIpIHRvIChjZWxsLWItMi1ib3gpOwpcZHJhd1stPl0gKGNlbGwtYS0y LWNhci5jZW50ZXIpIHRvIChhMik7ClxkcmF3Wy0+XSAoY2VsbC1iLTItY2FyLmNlbnRlcikgdG8g KGIyKTsKXGRyYXdbLT5dIChjZWxsLWItMi1jZHIuY2VudGVyKSB0byAoY2VsbC1jLTItYm94KTsK XGRyYXdbLT5dIChjZWxsLWMtMi1jYXIuY2VudGVyKSB0byAoYzIpOwpcZHJhd1stPl0gKGNlbGwt Yy0yLWNkci5jZW50ZXIpIHRvIChjZWxsLWQtMi1ib3gpOwpcZHJhd1stPl0gKGNlbGwtZC0yLWNh ci5jZW50ZXIpIHRvIChkMik7CgoKXGVuZHt0aWt6cGljdHVyZX0KIytlbmRfc3JjCgojK1JFU1VM VFM6IGV4ZXJjaXNlLTMtMTItcGFydDEKW1tmaWxlOmV4ZXJjaXNlLTMtMTItcGFydDEucG5nXV0K CgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUKPwooZGVm aW5lIHggKGxpc3QgJ2EgJ2IpKQooZGVmaW5lIHkgKGxpc3QgJ2MgJ2QpKQooZGVmaW5lIHogKGFw cGVuZCB4IHkpKQp6CihjZHIgeCkKCiMrZW5kX3NyYwoKIytSRVNVTFRTOgp8IGIgfAoKClRoZSBz ZWNvbmQgYXBwZW5kLCBkb25lIHdpdGggfmFwcGVuZCF+ICwgbW9kaWZpZXMgfnh+LgoKIytuYW1l OiBleGVyY2lzZS0zLTEyLXBhcnQyCiMraGVhZGVyOiA6aW1hZ2VtYWdpY2sgeWVzIDppbWlub3B0 aW9ucyAtZGVuc2l0eSAzMDAgOmltb3V0b3B0aW9ucyAtZ2VvbWV0cnkgMTAwMAojK2hlYWRlcjog OmZpdCB5ZXMgOmhlYWRlcnMgJygiXFx1c2VwYWNrYWdle3Rpa3p9IFxcdXNldGlremxpYnJhcnl7 cG9zaXRpb25pbmcsZml0LHBldHJpLGFycm93cyxjYWxjfSIpCiMraGVhZGVyOiA6YnVmZmVyIG9u CiMrYmVnaW5fc3JjIGxhdGV4IDpyZXN1bHRzIHJhdyBmaWxlIDpleHBvcnRzIGJvdGggOmZpbGUg ZXhlcmNpc2UtMy0xMi1wYXJ0Mi5wbmcKClxiZWdpbnt0aWt6cGljdHVyZX1baW5uZXIgc2VwPTBt bSw+PXN0ZWFsdGgnLHZlcnkgdGhpY2ssY29sb3I9YmxhY2shNTAsCiAgICAgIGZvbnQ9XHNmZmFt aWx5LAogICAgICBub2RlIGRpc3RhbmNlPTIwbW0sCiAgICAgIHBpY3MvY29ucyBjZWxsLy5zdHls ZSBuIGFyZ3M9ezN9e2NvZGU9ewogICAgICBcY29vcmRpbmF0ZSAob3JpZ2luKTsKICAgICAgXG5v ZGVbYW5jaG9yPWVhc3QsbWluaW11bSBzaXplPTEwbW0saW5uZXIgc2VwPTBdICgjMS1jYXIpIGF0 KDAsMCkge307CiAgICAgIFxub2RlW2FuY2hvcj13ZXN0LG1pbmltdW0gc2l6ZT0xMG1tLGlubmVy IHNlcD0wXSAoIzEtY2RyKSBhdCgwLDApIHt9OwogICAgICBcbm9kZVtuYW1lPSMxLWJveCxmaXQ9 KCMxLWNhcikgKCMxLWNkciksZHJhdyxzaGFwZT1yZWN0YW5nbGUscm91bmRlZAogY29ybmVycz0w LjVtbV0gIHt9OwogICAgICBcZHJhd1tzaG9ydGVuIDw9MXB0LCBzaG9ydGVuID49MXB0XSAoIzEt Ym94LnNvdXRoIC18IG9yaWdpbikgLS0gKCMxLWJveC5ub3J0aCAtfCBvcmlnaW4pOwogICAgICBc aWYjMnQKICAgICAgJSBccGF0aCBub2RlW3NoYXBlPWNpcmNsZSxmaWxsLGRyYXcscmFkaXVzPTJt bV0gYXQgKCMxLWNhci5jZW50ZXIpIHt9OwogICAgICBcZmlsbGRyYXcgKCMxLWNhci5jZW50ZXIp IGNpcmNsZVtyYWRpdXM9MC42Nm1tXSA7CiAgICAgIFxlbHNlCiAgICAgIFxkcmF3W3Nob3J0ZW4g PD0xcHRdICgjMS1jYXIuc291dGggd2VzdCkgdG8gKCMxLWNhci5ub3J0aCBlYXN0KTsKICAgICAg XGZpCiAgICAgIFxpZiMzdAogICAgICBcZmlsbGRyYXcgKCMxLWNkci5jZW50ZXIpIGNpcmNsZVty YWRpdXM9MC42Nm1tXSA7CiAgICAgIFxlbHNlCiAgICAgIFxkcmF3W3Nob3J0ZW4gPj0xcHRdICgj MS1jZHIuc291dGggd2VzdCkgdG8gKCMxLWNkci5ub3J0aCBlYXN0KTsKICAgICAgXGZpCiAgICAg IH19LAogICAgICBwaWNzL2NvbnMgZWxlbWVudC8uc3R5bGUgbiBhcmdzPXsyfXtjb2RlPXsKICAg ICAgXG5vZGUgW21pbmltdW0gc2l6ZT0xMG1tLGlubmVyIHNlcD0wLHJvdW5kZWQgY29ybmVycz0x bW0sIGRyYXcsIHNoYXBlPXJlY3RhbmdsZV0gKCMxKSB7IzJ9OwogICAgICB9fSwKICAgICAgYm94 Ly5zdHlsZT17ZHJhdyxyZWN0YW5nbGUsaW5uZXIgc2VwPSMxfSxib3gvLmRlZmF1bHQ9Mm1tLAog ICAgICBdClxub2RlICh4KSB7eH07Clxub2RlW3JpZ2h0PTIwMG1tIG9mIHhdIHt9OwpccGljW3Jp Z2h0PW9mIHhdIHtjb25zIGNlbGw9e2NlbGwtYX17dH17dH19OwpcZHJhd1stPl0gKHgpIHRvIChj ZWxsLWEtYm94KTsKXHBpY1tiZWxvdz1vZiBjZWxsLWEtY2FyXSB7Y29ucyBlbGVtZW50PXthfXth fX07ClxwaWNbcmlnaHQ9b2YgY2VsbC1hLWNkcl0ge2NvbnMgY2VsbD17Y2VsbC1ifXt0fXt0fX07 ClxwaWNbYmVsb3c9b2YgY2VsbC1iLWNhcl0ge2NvbnMgZWxlbWVudD17Yn17Yn19OwpcZHJhd1st Pl0gKGNlbGwtYS1jZHIuY2VudGVyKSB0byAoY2VsbC1iLWJveCk7ClxkcmF3Wy0+XSAoY2VsbC1h LWNhci5jZW50ZXIpIHRvIChhKTsKXGRyYXdbLT5dIChjZWxsLWItY2FyLmNlbnRlcikgdG8gKGIp OwoKXG5vZGVbcmlnaHQ9b2YgY2VsbC1iLWJveF0gKHkpIHt5fTsKXHBpY1tyaWdodD1vZiB5XSB7 Y29ucyBjZWxsPXtjZWxsLWN9e3R9e3R9fTsKXGRyYXdbLT5dICh5KSB0byAoY2VsbC1jLWJveCk7 ClxwaWNbYmVsb3c9b2YgY2VsbC1jLWNhcl0ge2NvbnMgZWxlbWVudD17Y317Y319OwpccGljW3Jp Z2h0PW9mIGNlbGwtYy1jZHJdIHtjb25zIGNlbGw9e2NlbGwtZH17dH17Zn19OwpccGljW2JlbG93 PW9mIGNlbGwtZC1jYXJdIHtjb25zIGVsZW1lbnQ9e2R9e2R9fTsKXGRyYXdbLT5dIChjZWxsLWMt Y2RyLmNlbnRlcikgdG8gKGNlbGwtZC1ib3gpOwpcZHJhd1stPl0gKGNlbGwtYy1jYXIuY2VudGVy KSB0byAoYyk7ClxkcmF3Wy0+XSAoY2VsbC1kLWNhci5jZW50ZXIpIHRvIChkKTsKJVxkcmF3IChj ZWxsLWItY2RyLmNlbnRlcikgLS0gY29udHJvbHMgKDVjbSwxY20pIGFuZCAoNmNtLDFjbSkgLS0g KGNlbGwtYy1ib3guY2VudGVyKTsKXGRyYXdbLT5dIChjZWxsLWItY2RyLmNlbnRlcikgLi4gY29u dHJvbHMgKCQgKHkubm9ydGgpICsgKDAsNW1tKSAkKSAuLiAoY2VsbC1jLWJveCk7Cgpcbm9kZVth Ym92ZT1vZiBjZWxsLWEtY2FyXSAodykge3d9OwpcZHJhd1stPl0gKHcpIHRvIChjZWxsLWEtY2Fy KTsKClxlbmR7dGlrenBpY3R1cmV9CiMrZW5kX3NyYwoKIytSRVNVTFRTOiBleGVyY2lzZS0zLTEy LXBhcnQyCltbZmlsZTpleGVyY2lzZS0zLTEyLXBhcnQyLnBuZ11dCgoKVGhlcmVmb3JlLCB0aGUg YW5zd2VyIGlzIHRoZSBmb2xsb3dpbmc6CiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3Ro IDpyZXN1bHRzIHZhbHVlCjw8bGFzdC1wYWlyPj4KKGRlZmluZSAoYXBwZW5kISB4IHkpCihzZXQt Y2RyISAobGFzdC1wYWlyIHgpIHkpCngpCgooZGVmaW5lIHggKGxpc3QgJ2EgJ2IpKQooZGVmaW5l IHkgKGxpc3QgJ2MgJ2QpKQooZGVmaW5lIHcgKGFwcGVuZCEgeCB5KSkKdwooY2RyIHgpCiMrZW5k X3NyYwoKIytSRVNVTFRTOgp8IGIgfCBjIHwgZCB8CgoqKiogRE9ORSBFeGVyY2lzZSAzLjEzIH5t YWtlLWN5Y2xlfgogICAgQ0xPU0VEOiBbMjAxOS0xMS0yOSBGcmkgMTI6MDldCgpUaGlzIHRoaW5n IGlzIGNhbGxlZCBhICJjaXJjdWxhciBsaXN0Ii4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0 cyBib3RoIDpyZXN1bHRzIHZhbHVlCjw8bGFzdC1wYWlyPj4KKGRlZmluZSAobWFrZS1jeWNsZSB4 KQooc2V0LWNkciEgKGxhc3QtcGFpciB4KSB4KQp4KQooZGVmaW5lIHogKG1ha2UtY3ljbGUgKGxp c3QgJ2EgJ2IgJ2MpKSkKegoKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogKGEgYiBjLi4uCgojK25h bWU6IGV4ZXJjaXNlLTMtMTMKIytoZWFkZXI6IDppbWFnZW1hZ2ljayB5ZXMgOmltaW5vcHRpb25z IC1kZW5zaXR5IDMwMCA6aW1vdXRvcHRpb25zIC1nZW9tZXRyeSAxMDAwCiMraGVhZGVyOiA6Zml0 IHllcyA6aGVhZGVycyAnKCJcXHVzZXBhY2thZ2V7dGlren0gXFx1c2V0aWt6bGlicmFyeXtwb3Np dGlvbmluZyxmaXQscGV0cmksYXJyb3dzLGNhbGN9IikKIytoZWFkZXI6IDpidWZmZXIgb24KIyti ZWdpbl9zcmMgbGF0ZXggOnJlc3VsdHMgcmF3IGZpbGUgOmV4cG9ydHMgYm90aCA6ZmlsZSBleGVy Y2lzZS0zLTEyLnBuZwoKXGJlZ2lue3Rpa3pwaWN0dXJlfVtpbm5lciBzZXA9MG1tLD49c3RlYWx0 aCcsdmVyeSB0aGljayxjb2xvcj1ibGFjayE1MCwKICAgICAgZm9udD1cc2ZmYW1pbHksCiAgICAg IG5vZGUgZGlzdGFuY2U9MjBtbSwKICAgICAgcGljcy9jb25zIGNlbGwvLnN0eWxlIG4gYXJncz17 M317Y29kZT17CiAgICAgIFxjb29yZGluYXRlIChvcmlnaW4pOwogICAgICBcbm9kZVthbmNob3I9 ZWFzdCxtaW5pbXVtIHNpemU9MTBtbSxpbm5lciBzZXA9MF0gKCMxLWNhcikgYXQoMCwwKSB7fTsK ICAgICAgXG5vZGVbYW5jaG9yPXdlc3QsbWluaW11bSBzaXplPTEwbW0saW5uZXIgc2VwPTBdICgj MS1jZHIpIGF0KDAsMCkge307CiAgICAgIFxub2RlW25hbWU9IzEtYm94LGZpdD0oIzEtY2FyKSAo IzEtY2RyKSxkcmF3LHNoYXBlPXJlY3RhbmdsZSxyb3VuZGVkCiBjb3JuZXJzPTAuNW1tXSAge307 CiAgICAgIFxkcmF3W3Nob3J0ZW4gPD0xcHQsIHNob3J0ZW4gPj0xcHRdICgjMS1ib3guc291dGgg LXwgb3JpZ2luKSAtLSAoIzEtYm94Lm5vcnRoIC18IG9yaWdpbik7CiAgICAgIFxpZiMydAogICAg ICAlIFxwYXRoIG5vZGVbc2hhcGU9Y2lyY2xlLGZpbGwsZHJhdyxyYWRpdXM9Mm1tXSBhdCAoIzEt Y2FyLmNlbnRlcikge307CiAgICAgIFxmaWxsZHJhdyAoIzEtY2FyLmNlbnRlcikgY2lyY2xlW3Jh ZGl1cz0wLjY2bW1dIDsKICAgICAgXGVsc2UKICAgICAgXGRyYXdbc2hvcnRlbiA8PTFwdF0gKCMx LWNhci5zb3V0aCB3ZXN0KSB0byAoIzEtY2FyLm5vcnRoIGVhc3QpOwogICAgICBcZmkKICAgICAg XGlmIzN0CiAgICAgIFxmaWxsZHJhdyAoIzEtY2RyLmNlbnRlcikgY2lyY2xlW3JhZGl1cz0wLjY2 bW1dIDsKICAgICAgXGVsc2UKICAgICAgXGRyYXdbc2hvcnRlbiA+PTFwdF0gKCMxLWNkci5zb3V0 aCB3ZXN0KSB0byAoIzEtY2RyLm5vcnRoIGVhc3QpOwogICAgICBcZmkKICAgICAgfX0sCiAgICAg IHBpY3MvY29ucyBlbGVtZW50Ly5zdHlsZSBuIGFyZ3M9ezJ9e2NvZGU9ewogICAgICBcbm9kZSBb bWluaW11bSBzaXplPTEwbW0saW5uZXIgc2VwPTAscm91bmRlZCBjb3JuZXJzPTFtbSwgZHJhdywg c2hhcGU9cmVjdGFuZ2xlXSAoIzEpIHsjMn07CiAgICAgIH19LAogICAgICBib3gvLnN0eWxlPXtk cmF3LHJlY3RhbmdsZSxpbm5lciBzZXA9IzF9LGJveC8uZGVmYXVsdD0ybW0sCiAgICAgIF0KXG5v ZGUgKHopIHt6fTsKXG5vZGVbcmlnaHQ9MjAwbW0gb2Ygel0ge307ClxwaWNbcmlnaHQ9b2Ygel0g e2NvbnMgY2VsbD17Y2VsbC1hfXt0fXt0fX07ClxkcmF3Wy0+XSAoeikgdG8gKGNlbGwtYS1ib3gp OwpccGljW2JlbG93PW9mIGNlbGwtYS1jYXJdIHtjb25zIGVsZW1lbnQ9e2F9e2F9fTsKXHBpY1ty aWdodD1vZiBjZWxsLWEtY2RyXSB7Y29ucyBjZWxsPXtjZWxsLWJ9e3R9e3R9fTsKXHBpY1tiZWxv dz1vZiBjZWxsLWItY2FyXSB7Y29ucyBlbGVtZW50PXtifXtifX07ClxkcmF3Wy0+XSAoY2VsbC1h LWNkci5jZW50ZXIpIHRvIChjZWxsLWItYm94KTsKXGRyYXdbLT5dIChjZWxsLWEtY2FyLmNlbnRl cikgdG8gKGEpOwpcZHJhd1stPl0gKGNlbGwtYi1jYXIuY2VudGVyKSB0byAoYik7ClxwaWNbcmln aHQ9b2YgY2VsbC1iLWJveF0ge2NvbnMgY2VsbD17Y2VsbC1jfXt0fXt0fX07ClxwaWNbYmVsb3c9 b2YgY2VsbC1jLWNhcl0ge2NvbnMgZWxlbWVudD17Y317Y319OwpcZHJhd1stPl0gKGNlbGwtYy1j YXIuY2VudGVyKSB0byAoYyk7ClxkcmF3Wy0+XSAoY2VsbC1iLWNkci5jZW50ZXIpIHRvIChjZWxs LWMtYm94KTsKXGRyYXdbLT5dIChjZWxsLWMtY2RyLmNlbnRlcikgLi4gY29udHJvbHMgKCQgKGNl bGwtYy1jZHIuY2VudGVyKSArICgwLDMwbW0pICQpCmFuZCAoJCAoY2VsbC1hLWNhci5jZW50ZXIp ICsgKDAsMzBtbSkgJCkgLi4gKGNlbGwtYS1jYXIpOwoKXGVuZHt0aWt6cGljdHVyZX0KIytlbmRf c3JjCgojK1JFU1VMVFM6IGV4ZXJjaXNlLTMtMTMKW1tmaWxlOmV4ZXJjaXNlLTMtMTIucG5nXV0K CioqKiBET05FIEV4ZXJjaXNlIDMuMTQgfm15c3Rlcnl+CiAgICBDTE9TRUQ6IFsyMDE5LTExLTI5 IEZyaSAyMToyM10KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91 dHB1dAogIChkZWZpbmUgKG15c3RlcnkgeCkKICAgIChkZWZpbmUgKGxvb3AgeCB5KQogICAgICAo aWYgKG51bGw/IHgpCgkgIHkKCSAgKGxldCAoKHRlbXAgKGNkciB4KSkpCgkgICAgKHNldC1jZHIh IHggeSkKCSAgICAobG9vcCB0ZW1wIHgpKSkpCiAgICAobG9vcCB4ICcoKSkpCihkZWZpbmUgdiAo bGlzdCAnYSAnYiAnYyAnZCkpCihzaG93ICN0ICJpbml0aWFsIHY6ICIgdiAiXG4iKQooZGVmaW5l IHcgKG15c3RlcnkgdikpCihzaG93ICN0ICJ3OiAiIHcgIlxuIikKKHNob3cgI3QgIndoYXQgcmVt YWlucyBvZiB2OiAiIHYgIlxuIikKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogSW5pdGlhbCB2OiAo YSBiIGMgZCkKOiB3OiAoZCBjIGIgYSkKOiB3aGF0IHJlbWFpbnMgb2YgdjogKGEpCgpUaGUgfm15 c3Rlcnl+IHByb2NlZHVyZSBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gfihyZXZlcnNlIHgpfiwg ZXhjZXB0CnRoYXQgaXQgd29ya3MgaW4gY29uc3RhbnQgc3BhY2UsIHdoZXJlYXMgYW4gb3JkaW5h cnkgfnJldmVyc2V+CmFkZGl0aW9uYWxseSB1c2VzIGFzIG11Y2ggc3BhY2UgYXMgfnh+IG9jY3Vw aWVzLgoKTGV0IHVzIHBsb3QgfnZ+IGJlZm9yZSB0aGUgb3BlcmF0aW9uLgoKIytuYW1lOiBleGVy Y2lzZS0zLTE0LXBhcnQxCiMraGVhZGVyOiA6aW1hZ2VtYWdpY2sgeWVzIDppbWlub3B0aW9ucyAt ZGVuc2l0eSAzMDAgOmltb3V0b3B0aW9ucyAtZ2VvbWV0cnkgMTAwMAojK2hlYWRlcjogOmZpdCB5 ZXMgOmhlYWRlcnMgJygiXFx1c2VwYWNrYWdle3Rpa3p9IFxcdXNldGlremxpYnJhcnl7cG9zaXRp b25pbmcsZml0LHBldHJpLGFycm93cyxjYWxjfSIpCiMraGVhZGVyOiA6YnVmZmVyIG9uCiMrYmVn aW5fc3JjIGxhdGV4IDpyZXN1bHRzIHJhdyBmaWxlIDpleHBvcnRzIGJvdGggOmZpbGUgZXhlcmNp c2UtMy0xNC1wYXJ0MS5wbmcKClxiZWdpbnt0aWt6cGljdHVyZX1baW5uZXIgc2VwPTBtbSw+PXN0 ZWFsdGgnLHZlcnkgdGhpY2ssY29sb3I9YmxhY2shNTAsCiAgICAgIGZvbnQ9XHNmZmFtaWx5LAog ICAgICBub2RlIGRpc3RhbmNlPTIwbW0sCiAgICAgIHBpY3MvY29ucyBjZWxsLy5zdHlsZSBuIGFy Z3M9ezN9e2NvZGU9ewogICAgICBcY29vcmRpbmF0ZSAob3JpZ2luKTsKICAgICAgXG5vZGVbYW5j aG9yPWVhc3QsbWluaW11bSBzaXplPTEwbW0saW5uZXIgc2VwPTBdICgjMS1jYXIpIGF0KDAsMCkg e307CiAgICAgIFxub2RlW2FuY2hvcj13ZXN0LG1pbmltdW0gc2l6ZT0xMG1tLGlubmVyIHNlcD0w XSAoIzEtY2RyKSBhdCgwLDApIHt9OwogICAgICBcbm9kZVtuYW1lPSMxLWJveCxmaXQ9KCMxLWNh cikgKCMxLWNkciksZHJhdyxzaGFwZT1yZWN0YW5nbGUscm91bmRlZAogY29ybmVycz0wLjVtbV0g IHt9OwogICAgICBcZHJhd1tzaG9ydGVuIDw9MXB0LCBzaG9ydGVuID49MXB0XSAoIzEtYm94LnNv dXRoIC18IG9yaWdpbikgLS0gKCMxLWJveC5ub3J0aCAtfCBvcmlnaW4pOwogICAgICBcaWYjMnQK ICAgICAgXGZpbGxkcmF3ICgjMS1jYXIuY2VudGVyKSBjaXJjbGVbcmFkaXVzPTAuNjZtbV0gOwog ICAgICBcZWxzZQogICAgICBcZHJhd1tzaG9ydGVuIDw9MXB0XSAoIzEtY2FyLnNvdXRoIHdlc3Qp IHRvICgjMS1jYXIubm9ydGggZWFzdCk7CiAgICAgIFxmaQogICAgICBcaWYjM3QKICAgICAgXGZp bGxkcmF3ICgjMS1jZHIuY2VudGVyKSBjaXJjbGVbcmFkaXVzPTAuNjZtbV0gOwogICAgICBcZWxz ZQogICAgICBcZHJhd1tzaG9ydGVuID49MXB0XSAoIzEtY2RyLnNvdXRoIHdlc3QpIHRvICgjMS1j ZHIubm9ydGggZWFzdCk7CiAgICAgIFxmaQogICAgICB9fSwKICAgICAgcGljcy9jb25zIGVsZW1l bnQvLnN0eWxlIG4gYXJncz17Mn17Y29kZT17CiAgICAgIFxub2RlIFttaW5pbXVtIHNpemU9MTBt bSxpbm5lciBzZXA9MCxyb3VuZGVkIGNvcm5lcnM9MW1tLCBkcmF3LCBzaGFwZT1yZWN0YW5nbGVd ICgjMSkgeyMyfTsKICAgICAgfX0sCiAgICAgIGJveC8uc3R5bGU9e2RyYXcscmVjdGFuZ2xlLGlu bmVyIHNlcD0jMX0sYm94Ly5kZWZhdWx0PTJtbSwKICAgICAgXQoKXG5vZGUgKHYpIHt2fTsKXHBp Y1tyaWdodD1vZiB2XSB7Y29ucyBjZWxsPXtjZWxsLWEtMn17dH17dH19OwpcZHJhd1stPl0gKHYp IHRvIChjZWxsLWEtMi1ib3gpOwpccGljW2JlbG93PW9mIGNlbGwtYS0yLWNhcl0ge2NvbnMgZWxl bWVudD17YTJ9e2F9fTsKXHBpY1tyaWdodD1vZiBjZWxsLWEtMi1jZHJdIHtjb25zIGNlbGw9e2Nl bGwtYi0yfXt0fXt0fX07ClxwaWNbYmVsb3c9b2YgY2VsbC1iLTItY2FyXSB7Y29ucyBlbGVtZW50 PXtiMn17Yn19OwpccGljW3JpZ2h0PW9mIGNlbGwtYi0yLWNkcl0ge2NvbnMgY2VsbD17Y2VsbC1j LTJ9e3R9e3R9fTsKXHBpY1tiZWxvdz1vZiBjZWxsLWMtMi1jYXJdIHtjb25zIGVsZW1lbnQ9e2My fXtjfX07ClxwaWNbcmlnaHQ9b2YgY2VsbC1jLTItY2RyXSB7Y29ucyBjZWxsPXtjZWxsLWQtMn17 dH17Zn19OwpccGljW2JlbG93PW9mIGNlbGwtZC0yLWNhcl0ge2NvbnMgZWxlbWVudD17ZDJ9e2R9 fTsKCgpcZHJhd1stPl0gKGNlbGwtYS0yLWNkci5jZW50ZXIpIHRvIChjZWxsLWItMi1ib3gpOwpc ZHJhd1stPl0gKGNlbGwtYS0yLWNhci5jZW50ZXIpIHRvIChhMik7ClxkcmF3Wy0+XSAoY2VsbC1i LTItY2FyLmNlbnRlcikgdG8gKGIyKTsKXGRyYXdbLT5dIChjZWxsLWItMi1jZHIuY2VudGVyKSB0 byAoY2VsbC1jLTItYm94KTsKXGRyYXdbLT5dIChjZWxsLWMtMi1jYXIuY2VudGVyKSB0byAoYzIp OwpcZHJhd1stPl0gKGNlbGwtYy0yLWNkci5jZW50ZXIpIHRvIChjZWxsLWQtMi1ib3gpOwpcZHJh d1stPl0gKGNlbGwtZC0yLWNhci5jZW50ZXIpIHRvIChkMik7CgoKXGVuZHt0aWt6cGljdHVyZX0K IytlbmRfc3JjCgojK1JFU1VMVFM6IGV4ZXJjaXNlLTMtMTQtcGFydDEKW1tmaWxlOmV4ZXJjaXNl LTMtMTQucG5nXV0KCgp+bXlzdGVyeX4gcmV2ZXJzZXMgdGhlIGxpc3QsIHNvIHRoZSBkaWFncmFt IHdvdWxkIGJlOgoKIytuYW1lOiBleGVyY2lzZS0zLTE0LXBhcnQyCiMraGVhZGVyOiA6aW1hZ2Vt YWdpY2sgeWVzIDppbWlub3B0aW9ucyAtZGVuc2l0eSAzMDAgOmltb3V0b3B0aW9ucyAtZ2VvbWV0 cnkgMTAwMAojK2hlYWRlcjogOmZpdCB5ZXMgOmhlYWRlcnMgJygiXFx1c2VwYWNrYWdle3Rpa3p9 IFxcdXNldGlremxpYnJhcnl7cG9zaXRpb25pbmcsZml0LHBldHJpLGFycm93cyxjYWxjfSIpCiMr aGVhZGVyOiA6YnVmZmVyIG9uCiMrYmVnaW5fc3JjIGxhdGV4IDpyZXN1bHRzIHJhdyBmaWxlIDpl eHBvcnRzIGJvdGggOmZpbGUgZXhlcmNpc2UtMy0xNC1wYXJ0Mi5wbmcKClxiZWdpbnt0aWt6cGlj dHVyZX1baW5uZXIgc2VwPTBtbSw+PXN0ZWFsdGgnLHZlcnkgdGhpY2ssY29sb3I9YmxhY2shNTAs CiAgICAgIGZvbnQ9XHNmZmFtaWx5LAogICAgICBub2RlIGRpc3RhbmNlPTIwbW0sCiAgICAgIHBp Y3MvY29ucyBjZWxsLy5zdHlsZSBuIGFyZ3M9ezN9e2NvZGU9ewogICAgICBcY29vcmRpbmF0ZSAo b3JpZ2luKTsKICAgICAgXG5vZGVbYW5jaG9yPWVhc3QsbWluaW11bSBzaXplPTEwbW0saW5uZXIg c2VwPTBdICgjMS1jYXIpIGF0KDAsMCkge307CiAgICAgIFxub2RlW2FuY2hvcj13ZXN0LG1pbmlt dW0gc2l6ZT0xMG1tLGlubmVyIHNlcD0wXSAoIzEtY2RyKSBhdCgwLDApIHt9OwogICAgICBcbm9k ZVtuYW1lPSMxLWJveCxmaXQ9KCMxLWNhcikgKCMxLWNkciksZHJhdyxzaGFwZT1yZWN0YW5nbGUs cm91bmRlZAogY29ybmVycz0wLjVtbV0gIHt9OwogICAgICBcZHJhd1tzaG9ydGVuIDw9MXB0LCBz aG9ydGVuID49MXB0XSAoIzEtYm94LnNvdXRoIC18IG9yaWdpbikgLS0gKCMxLWJveC5ub3J0aCAt fCBvcmlnaW4pOwogICAgICBcaWYjMnQKICAgICAgXGZpbGxkcmF3ICgjMS1jYXIuY2VudGVyKSBj aXJjbGVbcmFkaXVzPTAuNjZtbV0gOwogICAgICBcZWxzZQogICAgICBcZHJhd1tzaG9ydGVuIDw9 MXB0XSAoIzEtY2FyLnNvdXRoIHdlc3QpIHRvICgjMS1jYXIubm9ydGggZWFzdCk7CiAgICAgIFxm aQogICAgICBcaWYjM3QKICAgICAgXGZpbGxkcmF3ICgjMS1jZHIuY2VudGVyKSBjaXJjbGVbcmFk aXVzPTAuNjZtbV0gOwogICAgICBcZWxzZQogICAgICBcZHJhd1tzaG9ydGVuID49MXB0XSAoIzEt Y2RyLnNvdXRoIHdlc3QpIHRvICgjMS1jZHIubm9ydGggZWFzdCk7CiAgICAgIFxmaQogICAgICB9 fSwKICAgICAgcGljcy9jb25zIGVsZW1lbnQvLnN0eWxlIG4gYXJncz17Mn17Y29kZT17CiAgICAg IFxub2RlIFttaW5pbXVtIHNpemU9MTBtbSxpbm5lciBzZXA9MCxyb3VuZGVkIGNvcm5lcnM9MW1t LCBkcmF3LCBzaGFwZT1yZWN0YW5nbGVdICgjMSkgeyMyfTsKICAgICAgfX0sCiAgICAgIGJveC8u c3R5bGU9e2RyYXcscmVjdGFuZ2xlLGlubmVyIHNlcD0jMX0sYm94Ly5kZWZhdWx0PTJtbSwKICAg ICAgXQoKXG5vZGUgKHcpIHt3fTsKXHBpY1tyaWdodD1vZiB3XSB7Y29ucyBjZWxsPXtjZWxsLWEt Mn17dH17dH19OwpcZHJhd1stPl0gKHcpIHRvIChjZWxsLWEtMi1ib3gpOwpccGljW2JlbG93PW9m IGNlbGwtYS0yLWNhcl0ge2NvbnMgZWxlbWVudD17YTJ9e2R9fTsKXHBpY1tyaWdodD1vZiBjZWxs LWEtMi1jZHJdIHtjb25zIGNlbGw9e2NlbGwtYi0yfXt0fXt0fX07ClxwaWNbYmVsb3c9b2YgY2Vs bC1iLTItY2FyXSB7Y29ucyBlbGVtZW50PXtiMn17Y319OwpccGljW3JpZ2h0PW9mIGNlbGwtYi0y LWNkcl0ge2NvbnMgY2VsbD17Y2VsbC1jLTJ9e3R9e3R9fTsKXHBpY1tiZWxvdz1vZiBjZWxsLWMt Mi1jYXJdIHtjb25zIGVsZW1lbnQ9e2MyfXtifX07ClxwaWNbcmlnaHQ9b2YgY2VsbC1jLTItY2Ry XSB7Y29ucyBjZWxsPXtjZWxsLWQtMn17dH17Zn19OwpccGljW2JlbG93PW9mIGNlbGwtZC0yLWNh cl0ge2NvbnMgZWxlbWVudD17ZDJ9e2F9fTsKCgpcZHJhd1stPl0gKGNlbGwtYS0yLWNkci5jZW50 ZXIpIHRvIChjZWxsLWItMi1ib3gpOwpcZHJhd1stPl0gKGNlbGwtYS0yLWNhci5jZW50ZXIpIHRv IChhMik7ClxkcmF3Wy0+XSAoY2VsbC1iLTItY2FyLmNlbnRlcikgdG8gKGIyKTsKXGRyYXdbLT5d IChjZWxsLWItMi1jZHIuY2VudGVyKSB0byAoY2VsbC1jLTItYm94KTsKXGRyYXdbLT5dIChjZWxs LWMtMi1jYXIuY2VudGVyKSB0byAoYzIpOwpcZHJhd1stPl0gKGNlbGwtYy0yLWNkci5jZW50ZXIp IHRvIChjZWxsLWQtMi1ib3gpOwpcZHJhd1stPl0gKGNlbGwtZC0yLWNhci5jZW50ZXIpIHRvIChk Mik7Cgpcbm9kZVthYm92ZT1vZiBjZWxsLWQtMi1jYXJdICh2KSB7dn07ClxkcmF3Wy0+XSAodikg dG8gKGNlbGwtZC0yLWNhcik7CgpcZW5ke3Rpa3pwaWN0dXJlfQojK2VuZF9zcmMKCiMrUkVTVUxU UzogZXhlcmNpc2UtMy0xNC1wYXJ0MgpbW2ZpbGU6ZXhlcmNpc2UtMy0xNC1wYXJ0Mi5wbmddXQoK fnZ+IHN0aWxsIHBvaW50cyB0byB0aGUgY2VsbCBjb250YWluaW5nIH4neH4sIGJ1dCBub3cgdGhl IH5jYXJ+IG9mCnRoaXMgY2VsbCBpcyBhbiBlbXB0eSBsaXN0LgoKKioqIERPTkUgRXhlcmNpc2Ug My4xNSB+c2V0LXRvLXdvdyF+CiAgICBDTE9TRUQ6IFsyMDE5LTEyLTAxIFN1biAxOTo1OV0KCiMr YmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAooZGVmaW5lIChz ZXQtdG8td293ISB4KSAKICAgKHNldC1jYXIhIChjYXIgeCkgJ3dvdykKICAgIHgpCihkZWZpbmUg eCAobGlzdCAnYSAnYikpCihkZWZpbmUgejEgKGNvbnMgeCB4KSkKKGRlZmluZSB6MiAoY29ucyAo bGlzdCAnYSAnYikgKGxpc3QgJ2EgJ2IpKSkKKHNob3cgI3QgIlRoZSBzdHJ1Y3R1cmVzIGFyZTog XG4iIHoxICJcbiIgejIgIlxuIikKKHNldC10by13b3chIHoxKQooc2hvdyAjdCAiTW9kaWZpZWQg ejE6ICIgejEgIlxuIikKKHNldC10by13b3chIHoyKQooc2hvdyAjdCAiTW9kaWZpZXIgejI6ICIg ejIgIlxuIikKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogVGhlIHN0cnVjdHVyZXMgYXJlOiAKOiAo KGEgYikgYSBiKQo6ICgoYSBiKSBhIGIpCjogTW9kaWZpZWQgejE6ICgod293IGIpIHdvdyBiKQo6 IE1vZGlmaWVyIHoyOiAoKHdvdyBiKSBhIGIpCgpGaXJzdCBsZXQgdXMgZHJhdyB+ejF+IGFmdGVy IH5zZXQtdG8td293IX4uCgojK25hbWU6IGV4ZXJjaXNlLTMtMTUtcGFydDEKIytoZWFkZXI6IDpp bWFnZW1hZ2ljayB5ZXMgOmltaW5vcHRpb25zIC1kZW5zaXR5IDMwMCA6aW1vdXRvcHRpb25zIC1n ZW9tZXRyeSAxMDAwCiMraGVhZGVyOiA6Zml0IHllcyA6aGVhZGVycyAnKCJcXHVzZXBhY2thZ2V7 dGlren0gXFx1c2V0aWt6bGlicmFyeXtwb3NpdGlvbmluZyxmaXQscGV0cmksYXJyb3dzLGNhbGMs Z3JhcGhzfSIpCiMraGVhZGVyOiA6YnVmZmVyIG9uCiMrYmVnaW5fc3JjIGxhdGV4IDpyZXN1bHRz IHJhdyBmaWxlIDpleHBvcnRzIGJvdGggOmZpbGUgZXhlcmNpc2UtMy0xNS1wYXJ0MS5wbmcKClxi ZWdpbnt0aWt6cGljdHVyZX1baW5uZXIgc2VwPTBtbSw+PXN0ZWFsdGgnLHZlcnkgdGhpY2ssY29s b3I9YmxhY2shNTAsCiAgICAgIGZvbnQ9XHNmZmFtaWx5LAogICAgICBub2RlIGRpc3RhbmNlPTIw bW0sCiAgICAgIHBpY3MvY29ucyBjZWxsLy5zdHlsZSBuIGFyZ3M9ezN9e2NvZGU9ewogICAgICBc Y29vcmRpbmF0ZSAob3JpZ2luKTsKICAgICAgXG5vZGVbYW5jaG9yPWVhc3QsbWluaW11bSBzaXpl PTEwbW0saW5uZXIgc2VwPTBdICgjMSFjYXIpIGF0KDAsMCkge307CiAgICAgIFxub2RlW2FuY2hv cj13ZXN0LG1pbmltdW0gc2l6ZT0xMG1tLGlubmVyIHNlcD0wXSAoIzEhY2RyKSBhdCgwLDApIHt9 OwogICAgICBcbm9kZVtuYW1lPSMxIWJveCxmaXQ9KCMxIWNhcikgKCMxIWNkciksZHJhdyxzaGFw ZT1yZWN0YW5nbGUscm91bmRlZAogY29ybmVycz0wLjVtbV0gIHt9OwogICAgICBcZHJhd1tzaG9y dGVuIDw9MXB0LCBzaG9ydGVuID49MXB0XSAoIzEhYm94LnNvdXRoIC18IG9yaWdpbikgLS0gKCMx IWJveC5ub3J0aCAtfCBvcmlnaW4pOwogICAgICBcaWYjMnQKICAgICAgXGZpbGxkcmF3ICgjMSFj YXIuY2VudGVyKSBjaXJjbGVbcmFkaXVzPTAuNjZtbV0gOwogICAgICBcZWxzZQogICAgICBcZHJh d1tzaG9ydGVuIDw9MXB0XSAoIzEhY2FyLnNvdXRoIHdlc3QpIHRvICgjMSFjYXIubm9ydGggZWFz dCk7CiAgICAgIFxmaQogICAgICBcaWYjM3QKICAgICAgXGZpbGxkcmF3ICgjMSFjZHIuY2VudGVy KSBjaXJjbGVbcmFkaXVzPTAuNjZtbV0gOwogICAgICBcZWxzZQogICAgICBcZHJhd1tzaG9ydGVu ID49MXB0XSAoIzEhY2RyLnNvdXRoIHdlc3QpIHRvICgjMSFjZHIubm9ydGggZWFzdCk7CiAgICAg IFxmaQogICAgICB9fSwKICAgICAgcGljcy9jb25zIGVsZW1lbnQvLnN0eWxlIG4gYXJncz17Mn17 Y29kZT17CiAgICAgIFxub2RlIFttaW5pbXVtIHNpemU9MTBtbSxpbm5lciBzZXA9MCxyb3VuZGVk IGNvcm5lcnM9MW1tLCBkcmF3LCBzaGFwZT1yZWN0YW5nbGVdICgjMSkgeyMyfTsKICAgICAgfX0s CiAgICAgIGJveC8uc3R5bGU9e2RyYXcscmVjdGFuZ2xlLGlubmVyIHNlcD0jMX0sYm94Ly5kZWZh dWx0PTJtbSwKICAgICAgXQoKXG1hdHJpeFtyb3cgc2VwPTEwbW0sY29sdW1uIHNlcD0yMG1tXSB7 Cgpcbm9kZSAoejEhdmFyKSB7ejF9OyAmIFxwaWN7Y29ucyBjZWxsPXt6MX17dH17dH19OyAmICBc XApcbm9kZSAoeCkge3h9OyAgICYgXHBpY3tjb25zIGNlbGw9e2xpc3QxfXt0fXt0fX07ICYgXHBp Y3tjb25zIGNlbGw9e2xpc3QyfXt0fXtmfX07IFxcCiAgICAgICAgICAgICAgICAgJiBccGljW2Jl bG93PTVtbSBvZiBsaXN0MSFjYXJde2NvbnMgZWxlbWVudD17YX17d293fX07ICYgXHBpY1tiZWxv dz01bW0gb2YgbGlzdDIhY2FyXXtjb25zIGVsZW1lbnQ9e2J9e2J9fTtcXAp9OwoKXG5vZGVbcmln aHQ9MjAwbW0gb2YgejEhdmFyXSB7fTsKClxncmFwaFt1c2UgZXhpc3Rpbmcgbm9kZXNdCnsKejEh dmFyIC0+IHoxIWJveCA7CnoxIWNhci5jZW50ZXIgLT4gbGlzdDEhY2FyOwp6MSFjZHIuY2VudGVy IC0+IGxpc3QxIWNkcjsKbGlzdDEhY2RyLmNlbnRlciAtPiBsaXN0MiFib3g7Cmxpc3QxIWNhci5j ZW50ZXIgLT4gYTsKbGlzdDIhY2FyLmNlbnRlciAtPiBiOwp4IC0+IGxpc3QxIWJveDsKfTsKJVxk cmF3Wy0+XSAoejEtdmFyKSAtLSAoeCk7ClxlbmR7dGlrenBpY3R1cmV9CgoKIytlbmRfc3JjCgoj K1JFU1VMVFM6IGV4ZXJjaXNlLTMtMTUtcGFydDEKW1tmaWxlOmV4ZXJjaXNlLTMtMTUtcGFydDEu cG5nXV0KCk5leHQgd2Ugc2hhbGwgcGxvdCB+ejJ+IGFmdGVyIH5zZXQtdG8td293IX4uCgojK25h bWU6IGV4ZXJjaXNlLTMtMTUtcGFydDIKIytoZWFkZXI6IDppbWFnZW1hZ2ljayB5ZXMgOmltaW5v cHRpb25zIC1kZW5zaXR5IDMwMCA6aW1vdXRvcHRpb25zIC1nZW9tZXRyeSAxMDAwCiMraGVhZGVy OiA6Zml0IHllcyA6aGVhZGVycyAnKCJcXHVzZXBhY2thZ2V7dGlren0gXFx1c2V0aWt6bGlicmFy eXtwb3NpdGlvbmluZyxmaXQscGV0cmksYXJyb3dzLGNhbGMsZ3JhcGhzfSIpCiMraGVhZGVyOiA6 YnVmZmVyIG9uCiMrYmVnaW5fc3JjIGxhdGV4IDpyZXN1bHRzIHJhdyBmaWxlIDpleHBvcnRzIGJv dGggOmZpbGUgZXhlcmNpc2UtMy0xNS1wYXJ0Mi5wbmcKClxiZWdpbnt0aWt6cGljdHVyZX1baW5u ZXIgc2VwPTBtbSw+PXN0ZWFsdGgnLHZlcnkgdGhpY2ssY29sb3I9YmxhY2shNTAsCiAgICAgIGZv bnQ9XHNmZmFtaWx5LAogICAgICBub2RlIGRpc3RhbmNlPTIwbW0sCiAgICAgIHBpY3MvY29ucyBj ZWxsLy5zdHlsZSBuIGFyZ3M9ezN9e2NvZGU9ewogICAgICBcY29vcmRpbmF0ZSAob3JpZ2luKTsK ICAgICAgXG5vZGVbYW5jaG9yPWVhc3QsbWluaW11bSBzaXplPTEwbW0saW5uZXIgc2VwPTBdICgj MSFjYXIpIGF0KDAsMCkge307CiAgICAgIFxub2RlW2FuY2hvcj13ZXN0LG1pbmltdW0gc2l6ZT0x MG1tLGlubmVyIHNlcD0wXSAoIzEhY2RyKSBhdCgwLDApIHt9OwogICAgICBcbm9kZVtuYW1lPSMx IWJveCxmaXQ9KCMxIWNhcikgKCMxIWNkciksZHJhdyxzaGFwZT1yZWN0YW5nbGUscm91bmRlZAog Y29ybmVycz0wLjVtbV0gIHt9OwogICAgICBcZHJhd1tzaG9ydGVuIDw9MXB0LCBzaG9ydGVuID49 MXB0XSAoIzEhYm94LnNvdXRoIC18IG9yaWdpbikgLS0gKCMxIWJveC5ub3J0aCAtfCBvcmlnaW4p OwogICAgICBcaWYjMnQKICAgICAgXGZpbGxkcmF3ICgjMSFjYXIuY2VudGVyKSBjaXJjbGVbcmFk aXVzPTAuNjZtbV0gOwogICAgICBcZWxzZQogICAgICBcZHJhd1tzaG9ydGVuIDw9MXB0XSAoIzEh Y2FyLnNvdXRoIHdlc3QpIHRvICgjMSFjYXIubm9ydGggZWFzdCk7CiAgICAgIFxmaQogICAgICBc aWYjM3QKICAgICAgXGZpbGxkcmF3ICgjMSFjZHIuY2VudGVyKSBjaXJjbGVbcmFkaXVzPTAuNjZt bV0gOwogICAgICBcZWxzZQogICAgICBcZHJhd1tzaG9ydGVuID49MXB0XSAoIzEhY2RyLnNvdXRo IHdlc3QpIHRvICgjMSFjZHIubm9ydGggZWFzdCk7CiAgICAgIFxmaQogICAgICB9fSwKICAgICAg cGljcy9jb25zIGVsZW1lbnQvLnN0eWxlIG4gYXJncz17Mn17Y29kZT17CiAgICAgIFxub2RlIFtt aW5pbXVtIHNpemU9MTBtbSxpbm5lciBzZXA9MCxyb3VuZGVkIGNvcm5lcnM9MW1tLCBkcmF3LCBz aGFwZT1yZWN0YW5nbGVdICgjMSkgeyMyfTsKICAgICAgfX0sCiAgICAgIGJveC8uc3R5bGU9e2Ry YXcscmVjdGFuZ2xlLGlubmVyIHNlcD0jMX0sYm94Ly5kZWZhdWx0PTJtbSwKICAgICAgXQoKXG1h dHJpeFtyb3cgc2VwPTIwbW0sY29sdW1uIHNlcD0yMG1tXSB7CiAgICAgICAgICAgICAgICAgICAg ICYgXHBpY1t4c2hpZnQ9LTVtbV17Y29ucyBlbGVtZW50PXt3b3d9e3dvd319OyAgICYgXFwKXG5v ZGUgKHoyIXZhcikge3oyfTsgJiBccGlje2NvbnMgY2VsbD17ejIxfXt0fXt0fX07ICYgXHBpY3tj b25zIGNlbGw9e3oyMn17dH17Zn19OyBcXAogICAgICAgICAgICAgICAgICAgICAmIFxwaWNbeHNo aWZ0PS01bW1de2NvbnMgZWxlbWVudD17YX17YX19OyAgICYgXHBpY1t4c2hpZnQ9LTVtbV17Y29u cyBlbGVtZW50PXtifXtifX07IFxcCiAgICAgICAgICAgICAgICAgICAgICYgXHBpY3tjb25zIGNl bGw9e3oyM317dH17dH19OyAmIFxwaWN7Y29ucyBjZWxsPXt6MjR9e3R9e2Z9fTtcXAp9OwoKXG5v ZGVbcmlnaHQ9MjAwbW0gb2YgejIhdmFyXSB7fTsKClxncmFwaFt1c2UgZXhpc3Rpbmcgbm9kZXNd CnsKejIhdmFyIC0+IHoyMSFib3ggOwp6MjEhY2FyLmNlbnRlciAtPiB3b3c7CnoyMSFjZHIuY2Vu dGVyIC0+IHoyMiFib3g7CnoyMiFjYXIuY2VudGVyIC0+IGI7CnoyMyFjYXIuY2VudGVyIC0+IGE7 CnoyMyFjZHIuY2VudGVyIC0+IHoyNCFib3g7CnoyNCFjYXIuY2VudGVyIC0+IGI7Cn07CiVcZHJh d1stPl0gKHoxLXZhcikgLS0gKHgpOwpcZW5ke3Rpa3pwaWN0dXJlfQoKCiMrZW5kX3NyYwoKIytS RVNVTFRTOiBleGVyY2lzZS0zLTE1LXBhcnQyCltbZmlsZTpleGVyY2lzZS0zLTE1LXBhcnQyLnBu Z11dCgoKVGhlIHBpY3R1cmUgc2hvdWxkIGV4cGxhaW4gdGhlIHJlc3VsdCBvZiB+c2V0LXRvLXdv dyF+IGZhaXJseSB3ZWxsLgoKKioqIERPTkUgRXhlcmNpc2UgMy4xNiB+Y291bnQtcGFpcnN+CiAg ICBDTE9TRUQ6IFsyMDE5LTEyLTAyIE1vbiAwMDowNV0KIytiZWdpbl9zcmMgc2NoZW1lIDpleHBv cnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CihkZWZpbmUgKGNvdW50LXBhaXJzIHgpCihpZiAobm90 IChwYWlyPyB4KSkKMAooKyAoY291bnQtcGFpcnMgKGNhciB4KSkKKGNvdW50LXBhaXJzIChjZHIg eCkpCjEpKSkKKHNob3cgI3QgIlJldHVybiB0aHJlZTogIiAoY291bnQtcGFpcnMgKGxpc3QgJ2Eg J2IgJ2MpKSAiXG4iKQooc2hvdyAjdCAiUmV0dXJuIGZvdXI6ICIgKGNvdW50LXBhaXJzIChsZXQg KCh4IChsaXN0ICdhICdiICdjKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1jYXIh IChjZHIgeCkgKGNkZHIgeCkpIHgpKSAiXG4iKQooc2hvdyAjdCAiUmV0dXJuIHNldmVuOiAiIChj b3VudC1wYWlycyAobGV0ICgoeCAobGlzdCAnYSAnYiAnYykpKQogICAgICAgICAgICAgICAgICAg ICAgICAgIChzZXQtY2FyISAgeCAoY2RyIHgpKQogICAgICAgICAgICAgICAgICAgICAgICAgIChz ZXQtY2FyISAgKGNkciB4KSAoY2RkciB4KSkgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg eCkpICJcbiIpCiAoc2hvdyAjdCAiTmV2ZXIgcmV0dXJuOiAiIAogICAgICAgICAgKGxldCAoKHgg KGxpc3QgJ2EgJ2IgJ2MpKSkKICAgICAgICAgICAgIChzZXQtY2RyISAoY2RkciB4KSB4KQogICAg ICAgICAgICB4KSAiXG4iKQoKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogUmV0dXJuIHRocmVlOiAz CjogUmV0dXJuIGZvdXI6IDQKOiBSZXR1cm4gc2V2ZW46IDcKOiBOZXZlciByZXR1cm46ICMwPShh IGIgYyAuICMwIykKCiMrbmFtZTogZXhlcmNpc2UtMy0xNgojK2hlYWRlcjogOmltYWdlbWFnaWNr IHllcyA6aW1pbm9wdGlvbnMgLWRlbnNpdHkgMzAwIDppbW91dG9wdGlvbnMgLWdlb21ldHJ5IDEw MDAKIytoZWFkZXI6IDpmaXQgeWVzIDpoZWFkZXJzICcoIlxcdXNlcGFja2FnZXt0aWt6fSBcXHVz ZXRpa3psaWJyYXJ5e3Bvc2l0aW9uaW5nLGZpdCxwZXRyaSxhcnJvd3MsY2FsYyxncmFwaHN9IikK IytoZWFkZXI6IDpidWZmZXIgb24KIytiZWdpbl9zcmMgbGF0ZXggOnJlc3VsdHMgcmF3IGZpbGUg OmV4cG9ydHMgYm90aCA6ZmlsZSBleGVyY2lzZS0zLTE2LnBuZwoKXGJlZ2lue3Rpa3pwaWN0dXJl fVtpbm5lciBzZXA9MG1tLD49c3RlYWx0aCcsdmVyeSB0aGljayxjb2xvcj1ibGFjayE1MCwKICAg ICAgZm9udD1cc2ZmYW1pbHksCiAgICAgIG5vZGUgZGlzdGFuY2U9MjBtbSwKICAgICAgcGljcy9j b25zIGNlbGwvLnN0eWxlIG4gYXJncz17M317Y29kZT17CiAgICAgIFxjb29yZGluYXRlIChvcmln aW4pOwogICAgICBcbm9kZVthbmNob3I9ZWFzdCxtaW5pbXVtIHNpemU9MTBtbSxpbm5lciBzZXA9 MF0gKCMxIWNhcikgYXQoMCwwKSB7fTsKICAgICAgXG5vZGVbYW5jaG9yPXdlc3QsbWluaW11bSBz aXplPTEwbW0saW5uZXIgc2VwPTBdICgjMSFjZHIpIGF0KDAsMCkge307CiAgICAgIFxub2RlW25h bWU9IzEhYm94LGZpdD0oIzEhY2FyKSAoIzEhY2RyKSxkcmF3LHNoYXBlPXJlY3RhbmdsZSxyb3Vu ZGVkCiBjb3JuZXJzPTAuNW1tXSAge307CiAgICAgIFxkcmF3W3Nob3J0ZW4gPD0xcHQsIHNob3J0 ZW4gPj0xcHRdICgjMSFib3guc291dGggLXwgb3JpZ2luKSAtLSAoIzEhYm94Lm5vcnRoIC18IG9y aWdpbik7CiAgICAgIFxpZiMydAogICAgICAlIFxwYXRoIG5vZGVbc2hhcGU9Y2lyY2xlLGZpbGws ZHJhdyxyYWRpdXM9Mm1tXSBhdCAoIzEtY2FyLmNlbnRlcikge307CiAgICAgIFxmaWxsZHJhdyAo IzEhY2FyLmNlbnRlcikgY2lyY2xlW3JhZGl1cz0wLjY2bW1dIDsKICAgICAgXGVsc2UKICAgICAg XGRyYXdbc2hvcnRlbiA8PTFwdF0gKCMxIWNhci5zb3V0aCB3ZXN0KSB0byAoIzEhY2FyLm5vcnRo IGVhc3QpOwogICAgICBcZmkKICAgICAgXGlmIzN0CiAgICAgIFxmaWxsZHJhdyAoIzEhY2RyLmNl bnRlcikgY2lyY2xlW3JhZGl1cz0wLjY2bW1dIDsKICAgICAgXGVsc2UKICAgICAgXGRyYXdbc2hv cnRlbiA+PTFwdF0gKCMxIWNkci5zb3V0aCB3ZXN0KSB0byAoIzEhY2RyLm5vcnRoIGVhc3QpOwog ICAgICBcZmkKICAgICAgfX0sCiAgICAgIHBpY3MvY29ucyBlbGVtZW50Ly5zdHlsZSBuIGFyZ3M9 ezJ9e2NvZGU9ewogICAgICBcbm9kZSBbeHNoaWZ0PS01bW0sbWluaW11bSBzaXplPTEwbW0saW5u ZXIgc2VwPTAscm91bmRlZCBjb3JuZXJzPTFtbSwgZHJhdywgc2hhcGU9cmVjdGFuZ2xlXSAoIzEp IHsjMn07CiAgICAgIH19LAogICAgICBib3gvLnN0eWxlPXtkcmF3LHJlY3RhbmdsZSxpbm5lciBz ZXA9IzF9LGJveC8uZGVmYXVsdD0ybW0sCiAgICAgIF0KXG1hdHJpeFtyb3cgc2VwPTEwbW0sY29s dW1uIHNlcD0yMG1tXSB7ClxwaWN7Y29ucyBjZWxsPXtjZWxsMX17dH17dH19OyAmIFxwaWN7Y29u cyBjZWxsPXtjZWxsMn17dH17dH19OyAmIFxwaWN7Y29ucyBjZWxsPXtjZWxsM317dH17Zn19OyBc XApccGlje2NvbnMgZWxlbWVudD17YX17YX19OyAgICAgJiBccGlje2NvbnMgZWxlbWVudD17Yn17 Yn19OyAgICAgJiBccGlje2NvbnMgZWxlbWVudD17Y317ZH19OyBcXApccGlje2NvbnMgY2VsbD17 Y2VsbDR9e3R9e3R9fTsgJiBccGlje2NvbnMgY2VsbD17Y2VsbDV9e3R9e3R9fTsgJiBccGlje2Nv bnMgY2VsbD17Y2VsbDZ9e3R9e2Z9fTsgXFwKXHBpY3tjb25zIGVsZW1lbnQ9e2EyfXthfX07ICAg ICYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgXHBpY3tjb25zIGVsZW1lbnQ9e2My fXtjfX07IFxcClxwaWN7Y29ucyBjZWxsPXtjZWxsN317dH17dH19OyAmIFxwaWN7Y29ucyBjZWxs PXtjZWxsOH17dH17dH19OyAmIFxwaWN7Y29ucyBjZWxsPXtjZWxsOX17dH17Zn19OyBcXAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJiBccGlje2NvbnMgZWxlbWVudD17YzN9e2N9fTsgXFwKXHBpY3tjb25zIGNlbGw9e2NlbGwx MH17dH17dH19OyAmIFxwaWN7Y29ucyBjZWxsPXtjZWxsMTF9e3R9e3R9fTsgJiBccGlje2NvbnMg Y2VsbD17Y2VsbDEyfXt0fXt0fX07IFxcClxwaWN7Y29ucyBlbGVtZW50PXthNH17YX19OyAgICAg JiBccGlje2NvbnMgZWxlbWVudD17YjR9e2J9fTsgICAgICYgXHBpY3tjb25zIGVsZW1lbnQ9e2M0 fXtkfX07IFxcCn07Clxub2RlW3JpZ2h0PTIwMG1tIG9mIGNlbGwxIWJveF0ge307CgpcZ3JhcGhb dXNlIGV4aXN0aW5nIG5vZGVzLApza2lwIGxvb3AvLnN0eWxlPXt0byBwYXRoPXstLSArKygwLCMx KSAtfCAoXHRpa3p0b3RhcmdldCl9fV0KewpjZWxsMSFjZHIuY2VudGVyIC0+IGNlbGwyIWJveDsK Y2VsbDEhY2FyLmNlbnRlciAtPiBhOwpjZWxsMiFjYXIuY2VudGVyIC0+IGI7CmNlbGwyIWNkci5j ZW50ZXIgLT4gY2VsbDMhYm94OwpjZWxsMyFjYXIuY2VudGVyIC0+IGM7CmNlbGw0IWNkci5jZW50 ZXIgLT4gY2VsbDUhYm94OwpjZWxsNCFjYXIuY2VudGVyIC0+IGEyOwpjZWxsNSFjYXIuY2VudGVy IC0+W3NraXAgbG9vcD0xMG1tXSBjZWxsNiFjYXI7CmNlbGw1IWNkci5jZW50ZXIgLT4gY2VsbDYh Ym94OwpjZWxsNiFjYXIuY2VudGVyIC0+IGMyOwpjZWxsNyFjZHIuY2VudGVyIC0+IGNlbGw4IWJv eDsKY2VsbDchY2FyLmNlbnRlciAtPltza2lwIGxvb3A9LTEwbW1dIGNlbGw4IWNhcjsKY2VsbDgh Y2RyLmNlbnRlciAtPiBjZWxsOSFib3g7CmNlbGw4IWNhci5jZW50ZXIgLT5bc2tpcCBsb29wPTEw bW1dIGNlbGw5IWNhcjsKY2VsbDkhY2FyLmNlbnRlciAtPiBjMzsKY2VsbDEwIWNhci5jZW50ZXIg LT4gYTQ7CmNlbGwxMCFjZHIuY2VudGVyIC0+IGNlbGwxMSFib3g7CmNlbGwxMSFjYXIuY2VudGVy IC0+IGI0OwpjZWxsMTEhY2RyLmNlbnRlciAtPiBjZWxsMTIhYm94OwpjZWxsMTIhY2FyLmNlbnRl ciAtPiBjNDsKY2VsbDEyIWNkci5jZW50ZXIgLT5bc2tpcCBsb29wPTEwbW1dIGNlbGwxMCFjYXI7 Cn07CgpcZW5ke3Rpa3pwaWN0dXJlfQojK2VuZF9zcmMKCiMrUkVTVUxUUzogZXhlcmNpc2UtMy0x NgpbW2ZpbGU6ZXhlcmNpc2UtMy0xNi5wbmddXQoqKiogRE9ORSBFeGVyY2lzZSAzLjE3IFJlYWwg fmNvdW50LXBhaXJzfgogICAgQ0xPU0VEOiBbMjAxOS0xMi0wMiBNb24gMDA6NDddCgpUaGlzIGlz IGFuIGluZWZmaWNpZW50IHNvbHV0aW9uLCBiZWNhdXNlIGl0IHVzZXMgYW4gTyhuKSBsb29rdXAu IAoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CiAgICAg IChkZWZpbmUgKGNvdW50LXBhaXJzIHMpCgkoZGVmaW5lIG15LXNldCAobGlzdCkpCgkoZGVmaW5l IChjb3VudC1wYWlycy1sb29wIHgpCgkgICAoY29uZCAoKG5vdCAocGFpcj8geCkpIDApCgkJICgo bWVtcSB4IG15LXNldCkgMCkKCQkgKGVsc2UgKGJlZ2luCgkJCSAoc2V0ISBteS1zZXQgKGFwcGVu ZCBteS1zZXQgKGxpc3QgeCkpKQoJCQkgKCsgKGNvdW50LXBhaXJzLWxvb3AgKGNhciB4KSkKCQkJ ICAgIChjb3VudC1wYWlycy1sb29wIChjZHIgeCkpCgkJCSAgICAxKSkpKSkKCShzZXQhIG15LXNl dCAobGlzdCkpCgkoY291bnQtcGFpcnMtbG9vcCBzKSkKICAgIChzaG93ICN0ICJSZXR1cm5lZCB0 aHJlZTogIiAoY291bnQtcGFpcnMgKGxpc3QgJ2EgJ2IgJ2MpKSAiXG4iKQogICAgKHNob3cgI3Qg IlJldHVybmVkIGZvdXI6ICIgKGNvdW50LXBhaXJzIChsZXQgKCh4IChsaXN0ICdhICdiICdjKSkp CgkJCSAgICAgIChzZXQtY2FyISAoY2RyIHgpIChjZGRyIHgpKSB4KSkgIlxuIikKICAgIChzaG93 ICN0ICJSZXR1cm5lZCBzZXZlbjogIiAoY291bnQtcGFpcnMgKGxldCAoKHggKGxpc3QgJ2EgJ2Ig J2MpKSkKCQkJICAgICAgKHNldC1jYXIhICB4IChjZHIgeCkpCgkJCSAgICAgIChzZXQtY2FyISAg KGNkciB4KSAoY2RkciB4KSkgICAgCgkJCSAgICAgIHgpKSAiXG4iKQogICAgKHNob3cgI3QgIk5l dmVyIHJldHVybmVkOiAiIAoJICAgICAgKGNvdW50LXBhaXJzIChsZXQgKCh4IChsaXN0ICdhICdi ICdjKSkpCgkJIChzZXQtY2RyISAoY2RkciB4KSB4KQoJCXgpKSAiXG4iKQoKIytlbmRfc3JjCgoj K1JFU1VMVFM6CjogUmV0dXJuZWQgdGhyZWU6IDMKOiBSZXR1cm5lZCBmb3VyOiAzCjogUmV0dXJu ZWQgc2V2ZW46IDMKOiBOZXZlciByZXR1cm5lZDogMwoKKioqIERPTkUgRXhlcmNpc2UgMy4xOCBG aW5kaW5nIGN5Y2xlcwogICAgQ0xPU0VEOiBbMjAxOS0xMi0wMiBNb24gMDE6MDRdCgpTdGlsbCBu b3QgYSB2ZXJ5IGVmZmljaWVudCBzb2x1dGlvbiwgYnV0IGl0IHdvcmtzLgoKIytiZWdpbl9zcmMg c2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CiAgKGRlZmluZSAoaXMtY3ljbGlj PyB5KQogICAgKGRlZmluZSBzZWVuLWVsZW1lbnRzIChsaXN0KSkKICAgIChkZWZpbmUgKGlzLXMt bCB4KQogICAgICAoY29uZCAoKG5vdCAocGFpcj8geCkpICNmKQoJICAgICgobnVsbD8geCkgI2Yp CgkgICAgKChtZW1xIHggc2Vlbi1lbGVtZW50cykgI3QpCgkgICAgKGVsc2UgKGJlZ2luCgkJICAg IChzZXQhIHNlZW4tZWxlbWVudHMgKGFwcGVuZCBzZWVuLWVsZW1lbnRzIChsaXN0IHgpKSkKCQkg ICAgKGlzLXMtbCAoY2RyIHgpKSkpKSkKICAgIChzZXQhIHNlZW4tZWxlbWVudHMgKGxpc3QpKQog ICAgKGlzLXMtbCB5KSkKICAoc2hvdyAjdCAiUmV0dXJuZWQgdGhyZWU6ICIgKGlzLWN5Y2xpYz8g KGxpc3QgJ2EgJ2IgJ2MpKSAiXG4iKQogIChzaG93ICN0ICJSZXR1cm5lZCBmb3VyOiAiIChpcy1j eWNsaWM/IChsZXQgKCh4IChsaXN0ICdhICdiICdjKSkpCgkJCQkJICAgKHNldC1jYXIhIChjZHIg eCkgKGNkZHIgeCkpIHgpKSAiXG4iKQogIChzaG93ICN0ICJSZXR1cm5lZCBzZXZlbjogIiAoaXMt Y3ljbGljPyAobGV0ICgoeCAobGlzdCAnYSAnYiAnYykpKQoJCQkJCSAgICAoc2V0LWNhciEgIHgg KGNkciB4KSkKCQkJCQkgICAgKHNldC1jYXIhICAoY2RyIHgpIChjZGRyIHgpKSAgICAKCQkJCQkg ICAgeCkpICJcbiIpCiAgKHNob3cgI3QgIk5ldmVyIHJldHVybmVkOiAiIAoJKGlzLWN5Y2xpYz8g KGxldCAoKHggKGxpc3QgJ2EgJ2IgJ2MpKSkKCQkgICAgICAoc2V0LWNkciEgKGNkZHIgeCkgeCkK CQkgICAgICB4KSkgIlxuIikKCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IFJldHVybmVkIHRocmVl OiAjZgo6IFJldHVybmVkIGZvdXI6ICNmCjogUmV0dXJuZWQgc2V2ZW46ICNmCjogTmV2ZXIgcmV0 dXJuZWQ6ICN0CgoqKiogRE9ORSBFeGVyY2lzZSAzLjE5IEVmZmljaWVudCBmaW5kaW5nIGN5Y2xl cwogICAgQ0xPU0VEOiBbMjAxOS0xMi0wMiBNb24gMjM6MjldCgpUaGUgaWRlYSB0aGF0IHdlIGFy ZSBnb2luZyB0byBleHBsb3JlIGluIHRoaXMgZXhlcmNpc2UgaXMgc2xpZ2h0bHkKc2ltaWxhciB0 byB0aGUgZHluYW1pYyBwcm9ncmFtbWluZy4gVGhpcyB3aWxsIG5vdCBiZSBlZmZpY2llbnQgYXQg YWxsLApidXQgd2lsbCBldmVudHVhbGx5IGZpbmQgbm90IGp1c3Qgd2hldGhlciB0aGUgbGlzdCBo YXMgYSBjeWNsZSwgYnV0CmFsc28gdGhlIGxlbmd0aCBvZiB0aGUgY3ljbGUuCgojK2JlZ2luX3Ny YyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKICAgIChkZWZpbmUgKGlzLWN5 Y2xpYz8gbCkKICAgICAgKGxldCBsb29wICgoc3RhcnRpbmctZWxlbSAwKQoJCSAoY3ljbGUtbGVu IDEpKQoJKGNvbmQgKChvciAobm90IChwYWlyPyAoZHJvcCBsIHN0YXJ0aW5nLWVsZW0pKSkKCQkg IChub3QgKHBhaXI/IChkcm9wIGwgKCsgc3RhcnRpbmctZWxlbSBjeWNsZS1sZW4pKSkpKSAKCSAg ICAgICAjZikKCSAgICAgICgoZXE/ICAoZHJvcCBsIHN0YXJ0aW5nLWVsZW0pIAoJCSAgICAgKGRy b3AgbCAoKyBzdGFydGluZy1lbGVtIGN5Y2xlLWxlbikpKSAjdCkKCSAgICAgICgoPiBzdGFydGlu Zy1lbGVtIDApIChsb29wICgtIHN0YXJ0aW5nLWVsZW0gMSkgKCsgY3ljbGUtbGVuIDEpKSkKCSAg ICAgIChlbHNlIChsb29wIGN5Y2xlLWxlbiAxKSkpKSkKCiAgICAoc2hvdyAjdCAiUmV0dXJuZWQg dGhyZWU6ICIgKGlzLWN5Y2xpYz8gKGxpc3QgJ2EgJ2IgJ2MpKSAiXG4iKQogICAgKHNob3cgI3Qg IlJldHVybmVkIGZvdXI6ICIgKGlzLWN5Y2xpYz8gKGxldCAoKHggKGxpc3QgJ2EgJ2IgJ2MpKSkK CQkJCQkgICAgIChzZXQtY2FyISAoY2RyIHgpIChjZGRyIHgpKSB4KSkgIlxuIikKICAgIChzaG93 ICN0ICJSZXR1cm5lZCBzZXZlbjogIiAoaXMtY3ljbGljPyAobGV0ICgoeCAobGlzdCAnYSAnYiAn YykpKQoJCQkJCSAgICAgIChzZXQtY2FyISAgeCAoY2RyIHgpKQoJCQkJCSAgICAgIChzZXQtY2Fy ISAgKGNkciB4KSAoY2RkciB4KSkgICAgCgkJCQkJICAgICAgeCkpICJcbiIpCiAgICAoc2hvdyAj dCAiTmV2ZXIgcmV0dXJuZWQ6ICIgCgkgIChpcy1jeWNsaWM/IChsZXQgKCh4IChsaXN0ICdhICdi ICdjKSkpCgkJCShzZXQtY2RyISAoY2RkciB4KSB4KQoJCQl4KSkgIlxuIikKCiMrZW5kX3NyYwoK IytSRVNVTFRTOgo6IFJldHVybmVkIHRocmVlOiAjZgo6IFJldHVybmVkIGZvdXI6ICNmCjogUmV0 dXJuZWQgc2V2ZW46ICNmCjogTmV2ZXIgcmV0dXJuZWQ6ICN0CgpUaGUgbm90IHZlcnkgY2xldmVy IGlkZWEgdXNlZCBoZXJlIGlzIHRoYXQgd2UgY2FuIGNoZWNrIGlmIGFuIGVsZW1lbnQKfnh+IGlz IGEgc3RhcnQgb2YgYSBsb29wIG9mIGxlbmd0aCB+bn4uIFRoZXJlZm9yZSB3ZSBjYW4gaXRlcmF0 ZSBvdmVyCmFsbCBwb3NzaWJsZSB2YWx1ZXMgb2Ygfnh+IGFuZCB+bn4uIFRoaXMgZXhlcmNpc2Ug dXNlcyB0aGUgfihzY2hlbWUKbGlzdCl+IHN0YW5kYXJkIGxpYnJhcnkgZnJvbSBSN1JTLgoKVGhp cyBhbGdvcml0aG0gY2xlYXJseSBvbmx5IHVzZXMgTygxKSBtZW1vcnksIHNpbmNlIHdlIG9ubHkg cmVtZW1iZXIKdGhlIG51bWJlciBvZiB0aGUgc3RhcnRpbmcgZWxlbWVudCBhbmQgdGhlIGN5Y2xl IGxlbmd0aC4KCioqKiBET05FIEV4ZXJjaXNlIDMuMjAgUHJvY2VkdXJhbCB+c2V0LWNhciF+CiAg ICBDTE9TRUQ6IFsyMDE5LTEyLTAzIFR1ZSAxNDo0MF0KCkkgYW0gZXhjbHVkaW5nIHRoZSBkZWZp bml0aW9ucyBmcm9tIHRoZSBkaWFncmFtLCB0aGV5IGFyZSBjdW1iZXJzb21lLgoKIytuYW1lOiBl eGVyY2lzZS0zLTIwCiMraGVhZGVyOiA6aW1hZ2VtYWdpY2sgeWVzIDppbWlub3B0aW9ucyAtZGVu c2l0eSAzMDAgOmltb3V0b3B0aW9ucyAtZ2VvbWV0cnkgMTAwMAojK2hlYWRlcjogOmZpdCB5ZXMg OmhlYWRlcnMgJygiXFx1c2VwYWNrYWdle3Rpa3p9IFxcdXNldGlremxpYnJhcnl7cG9zaXRpb25p bmcsZml0LHBldHJpLGFycm93cyxjYWxjfSIpCiMraGVhZGVyOiA6YnVmZmVyIG9uCiMrYmVnaW5f c3JjIGxhdGV4IDpyZXN1bHRzIHJhdyBmaWxlIDpleHBvcnRzIGJvdGggOmZpbGUgZXhlcmNpc2Ut My0yMC5wbmcKICBcYmVnaW57dGlrenBpY3R1cmV9W2lubmVyIHNlcD0wbW0sPj1zdGVhbHRoJyx2 ZXJ5IHRoaWNrLGNvbG9yPWJsYWNrITUwLAogICAgICAgZm9udD1cc2ZmYW1pbHkscGljcy90d28g ZG90cy8uc3R5bGU9e2NvZGU9ewogICAgICAgXG5vZGUgW2RyYXcsbWluaW11bSBzaXplPTVtbSxj aXJjbGUsY29sb3JlZCB0b2tlbnM9e2JsYWNrITUwfV0gCiAgICAgICAoIzEtbGVmdCkge307CiAg ICAgIFxub2RlIFtkcmF3LG1pbmltdW0gc2l6ZT01bW0sY2lyY2xlLGNvbG9yZWQgdG9rZW5zPXti bGFjayE1MH0sCiAgICAgIHJpZ2h0PTBwdCBvZiAjMS1sZWZ0XQoJICAoIzEtcmlnaHQpIHt9Owog ICAgICBcbm9kZSBbcmVjdGFuZ2xlLCBmaXQ9KCMxLWxlZnQpICgjMS1yaWdodCldICgjMSl7fTsK ICAgICAgfX0sCiAgICAgIGV2ZXJ5IHBpbiBlZGdlLy5zdHlsZT17PC0sdmVyeSB0aGlja30sCiAg ICAgIGJveC8uc3R5bGU9e2RyYXcscmVjdGFuZ2xlLGlubmVyIHNlcD0jMX0sYm94Ly5kZWZhdWx0 PTJtbSwKICAgICAgbm9kZSBkaXN0YW5jZT00bW1dCgoKCiAgICBcbm9kZSAoeC1nbG9iYWwpICB7 eDp9OwogICAgXG5vZGUgKGZha2UxKSBbcmlnaHQ9MTAwbW0gb2YgeC1nbG9iYWxdIHt9OyAgCiAg ICBcbm9kZSAoei1nbG9iYWwpIFthYm92ZT0zbW0gb2YgeC1nbG9iYWwud2VzdCxhbmNob3I9d2Vz dF0ge3o6fTsKICAlCiAgICBcbm9kZSAoZyBlbnYpIFtib3gsIGZpdD0oei1nbG9iYWwpIChmYWtl MSkgKHgtZ2xvYmFsKSwKICAgIHBpbj17W3RleHQgd2lkdGg9MWNtLHBpbiBkaXN0YW5jZT0xMG1t XWxlZnQ6Z2xvYmFsIGVudn1dCiAgICB7IH07CgogIFxwYXRoIChnIGVudi5zb3V0aCB3ZXN0KSAt LSAoZyBlbnYuc291dGggZWFzdCkKICBub2RlIFtwb3M9Mi84XSAoZmFrZTItNykge30KICBub2Rl ICh4LXZhcikgIFtiZWxvdz02bW0gb2YgZmFrZTItN10ge1x2cGhhbnRvbXtsfXg6MTd9CiAgbm9k ZSAoeS12YXIpIFtiZWxvdz1vZiB4LXZhci53ZXN0LGFuY2hvcj13ZXN0XSB7XHZwaGFudG9te2x9 eToyfQogIG5vZGUgKHNldHgxKSBbYmVsb3c9b2YgeS12YXIud2VzdCxhbmNob3I9d2VzdF0ge1x2 cGhhbnRvbXtsfXNldC14ITogLi4ufQogIG5vZGUgKHNldHkxKSBbYmVsb3c9b2Ygc2V0eDEud2Vz dCxhbmNob3I9d2VzdF0ge1x2cGhhbnRvbXtsfXNldC15ITogLi4ufQogIG5vZGUgKEUxLWVudikg W2JveCwKICAgICAgcGluPXtbcGluIGRpc3RhbmNlPTVtbV1sZWZ0OkUxfSxhbGlnbj1sZWZ0LAog ICAgICBmaXQ9KHgtdmFyKSAoeS12YXIpIChzZXR4MSkgKHNldHkxKV0gCiAgICAgIHt9CiAgZWRn ZSBbLT5dIChnIGVudi5zb3V0aCAtfCBFMS1lbnYubm9ydGgpIDsKCiAgXHBhdGggKGcgZW52LnNv dXRoIHdlc3QpIC0tIChnIGVudi5zb3V0aCBlYXN0KQogIG5vZGVbcG9zPTEvMTZdIChhbmNob3Ix KQogIGNvb3JkaW5hdGVbYmVsb3c9NTAgbW0gb2YgYW5jaG9yMV0gKGF1eCkKICAgICAgKGF1eCkg cGlje3R3byBkb3RzPXgtZGlzcGF0Y2h9CiAgICAgICh4LWRpc3BhdGNoKSBlZGdlIFs8LSwgdG8g cGF0aD17fC0gKFx0aWt6dG90YXJnZXQpfV0gKHgtZ2xvYmFsLmVhc3QpOwogIFxkcmF3Wy0+XSAo eC1kaXNwYXRjaC1yaWdodC5jZW50ZXIpIC18ICAoRTEtZW52LnNvdXRoKTsKICBcbm9kZSBbYmVs b3c9NW1tIG9mIHgtZGlzcGF0Y2gtbGVmdCwgYWxpZ249bGVmdCxmb250PVx0dGZhbWlseV0gCiAg e1xub2luZGVudCBwYXJhbWV0ZXJzOlx2cGhhbnRvbXtsfW0gXFwgCiAgYm9keTpcXCAgIAooY29u ZCBcXCAoKGVxPyBtICdjYXIpIHgpIFxcCigoZXE/IG0gJ2NkcikgeSkgXFwKKChlcT8gbSAnc2V0 LWNhciEpIHNldC14ISkgXFwKKChlcT8gbSAnc2V0LWNkciEpIHNldC15ISkgXFwKKGVsc2UgXFwK KGVycm9yICJVbmRlZmluZWQgb3BlcmF0aW9uOiBDT05TIiBtKSkpIFxcCiAgfQogICAgICBlZGdl IFs8LV0gKHgtZGlzcGF0Y2gtbGVmdC5jZW50ZXIpOwoKICBccGF0aCAoZyBlbnYuc291dGggd2Vz dCkgLS0gKGcgZW52LnNvdXRoIGVhc3QpCiAgbm9kZSBbcG9zPTkvMTZdIChmYWtlLTgpIHt9CiAg bm9kZSAoeC12YXIpICBbYmVsb3c9Nm1tIG9mIGZha2UtOF0ge1x2cGhhbnRvbXtsfXg6fQogIG5v ZGUgKHktdmFyKSBbYmVsb3c9b2YgeC12YXIud2VzdCxhbmNob3I9d2VzdF0ge1x2cGhhbnRvbXts fXk6fQogIG5vZGUgKHNldHgxKSBbYmVsb3c9b2YgeS12YXIud2VzdCxhbmNob3I9d2VzdF0ge1x2 cGhhbnRvbXtsfXNldC14ITogLi4ufQogIG5vZGUgKHNldHkxKSBbYmVsb3c9b2Ygc2V0eDEud2Vz dCxhbmNob3I9d2VzdF0ge1x2cGhhbnRvbXtsfXNldC15ITogLi4ufQogIG5vZGUgKEUyLWVudikg W2JveCwKICAgICAgcGluPXtbcGluIGRpc3RhbmNlPTVtbV1sZWZ0OkUyfSxhbGlnbj1sZWZ0LAog ICAgICBmaXQ9KHgtdmFyKSAoeS12YXIpIChzZXR4MSkgKHNldHkxKV0gCiAgICAgIHt9CiAgZWRn ZSBbLT5dIChnIGVudi5zb3V0aCAtfCBFMi1lbnYubm9ydGgpIDsKICBcZHJhd1stPl0gKHgtdmFy LmVhc3QpICArKygxbW0sMCkgLS0gKysoMCw1bW0pIC18ICgkICh4LWRpc3BhdGNoLm5vcnRoKSAr ICgxbW0sMCkgJCk7CiAgXGRyYXdbLT5dICh5LXZhci5lYXN0KSAtLSArKygwLDZtbSkgLXwgKCQg KHgtZGlzcGF0Y2gubm9ydGgpICsgKDJtbSwwKSAkKTsKCiAgXHBhdGggKGcgZW52LnNvdXRoIHdl c3QpIC0tIChnIGVudi5zb3V0aCBlYXN0KQogIG5vZGVbcG9zPTEyLzE2XSAoYW5jaG9yKQogIGNv b3JkaW5hdGVbYmVsb3c9NTAgbW0gb2YgYW5jaG9yXSAoYXV4KQogICAgICAoYXV4KSBwaWN7dHdv IGRvdHM9ei1kaXNwYXRjaH0KICAgICAgKHotZGlzcGF0Y2gpIGVkZ2UgWzwtLCB0byBwYXRoPXt8 LSAoXHRpa3p0b3RhcmdldCl9XSAoei1nbG9iYWwuZWFzdCk7CiAgXGRyYXdbLT5dICh6LWRpc3Bh dGNoLXJpZ2h0LmNlbnRlcikgLS0gKysoMCw3bW0pIC18ICAoRTItZW52LnNvdXRoKTsKICBcbm9k ZSBbYmVsb3c9NW1tIG9mIHotZGlzcGF0Y2gtbGVmdCwgYWxpZ249bGVmdCxmb250PVx0dGZhbWls eV0gCiAge1xub2luZGVudCBwYXJhbWV0ZXJzOlx2cGhhbnRvbXtsfW0gXFwgCiAgYm9keTpcXCAg IAooY29uZCBcXCAoKGVxPyBtICdjYXIpIHgpIFxcCigoZXE/IG0gJ2NkcikgeSkgXFwKKChlcT8g bSAnc2V0LWNhciEpIHNldC14ISkgXFwKKChlcT8gbSAnc2V0LWNkciEpIHNldC15ISkgXFwKKGVs c2UgXFwKKGVycm9yICJVbmRlZmluZWQgb3BlcmF0aW9uOiBDT05TIiBtKSkpIFxcCiAgfQogICAg ICBlZGdlIFs8LV0gKHotZGlzcGF0Y2gtbGVmdC5jZW50ZXIpOwoKCiAgXGVuZHt0aWt6cGljdHVy ZX0KIytlbmRfc3JjCgojK1JFU1VMVFM6IGV4ZXJjaXNlLTMtMjAKW1tmaWxlOmV4ZXJjaXNlLTMt MjAucG5nXV0KCkkgYW0gb25seSBkcmF3aW5nIHRoZSBmaW5hbCBlbnZpcm9ubWVudCwgYnV0IHRo ZSBpZGVhIHNob3VsZCBiZSBxdWl0ZSBvYnZpb3VzLgoKKioqIERPTkUgRXhlcmNpc2UgMy4yMSBx dWV1ZXMKICAgIENMT1NFRDogWzIwMTktMTItMDMgVHVlIDE1OjEwXQoKIytiZWdpbl9zcmMgc2No ZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpub3dlYi1yZWYgcXVldWUKICAoZGVm aW5lIChmcm9udC1wdHIgcXVldWUpIChjYXIgcXVldWUpKQogIChkZWZpbmUgKHJlYXItcHRyIHF1 ZXVlKQogICAgKGNkciBxdWV1ZSkpCiAgKGRlZmluZSAoc2V0LWZyb250LXB0ciEgcXVldWUgaXRl bSkKICAgIChzZXQtY2FyISBxdWV1ZSBpdGVtKSkKICAoZGVmaW5lIChzZXQtcmVhci1wdHIhIHF1 ZXVlIGl0ZW0pCiAgICAoc2V0LWNkciEgcXVldWUgaXRlbSkpCiAgKGRlZmluZSAoZW1wdHktcXVl dWU/IHF1ZXVlKQogICAgKG51bGw/IChmcm9udC1wdHIgcXVldWUpKSkKICAoZGVmaW5lIChtYWtl LXF1ZXVlKSAoY29ucyAnKCkgJygpKSkKICAoZGVmaW5lIChmcm9udC1xdWV1ZSBxdWV1ZSkKICAg IChpZiAoZW1wdHktcXVldWU/IHF1ZXVlKQoJKGVycm9yICJGUk9OVCBjYWxsZWQgd2l0aCBhbiBl bXB0eSBxdWV1ZSIgcXVldWUpCgkoY2FyIChmcm9udC1wdHIgcXVldWUpKSkpCiAgKGRlZmluZSAo aW5zZXJ0LXF1ZXVlISBxdWV1ZSBpdGVtKQogICAgKGxldCAoKG5ldy1wYWlyIChjb25zIGl0ZW0g JygpKSkpCiAgICAgIChjb25kICgoZW1wdHktcXVldWU/IHF1ZXVlKQoJICAgICAoc2V0LWZyb250 LXB0ciEgcXVldWUgbmV3LXBhaXIpCgkgICAgIChzZXQtcmVhci1wdHIhIHF1ZXVlIG5ldy1wYWly KQoJICAgICBxdWV1ZSkKCSAgICAoZWxzZQoJICAgICAoc2V0LWNkciEgKHJlYXItcHRyIHF1ZXVl KSBuZXctcGFpcikKCSAgICAgKHNldC1yZWFyLXB0ciEgcXVldWUgbmV3LXBhaXIpCgkgICAgIHF1 ZXVlKSkpKQogIChkZWZpbmUgKGRlbGV0ZS1xdWV1ZSEgcXVldWUpCiAgICAoY29uZCAoKGVtcHR5 LXF1ZXVlPyBxdWV1ZSkKCSAgIChlcnJvciAiREVMRVRFISBjYWxsZWQgd2l0aCBhbiBlbXB0eSBx dWV1ZSIgcXVldWUpKQoJICAoZWxzZSAoc2V0LWZyb250LXB0ciEgcXVldWUgKGNkciAoZnJvbnQt cHRyIHF1ZXVlKSkpCgkJcXVldWUpKSkKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4 cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKPDxxdWV1ZT4+CihkZWZpbmUgcTEgKG1ha2UtcXVl dWUpKQooc2hvdyAjdCAiKGluc2VydC1xdWV1ZSEgcTEgJ2EpID0gIiAoaW5zZXJ0LXF1ZXVlISBx MSAnYSkgIlxuIikKKHNob3cgI3QgIihpbnNlcnQtcXVldWUhIHExICdiKSA9ICIgKGluc2VydC1x dWV1ZSEgcTEgJ2IpICJcbiIpCihzaG93ICN0ICIoZGVsZXRlLXF1ZXVlISBxMSkgICAgPSAiIChk ZWxldGUtcXVldWUhIHExKSAgICAiXG4iKQooc2hvdyAjdCAiaW5zZXJ0ICIgKGluc2VydC1xdWV1 ZSEgcTEgJ2MpICJcbiIpCihzaG93ICN0ICIoZGVsZXRlLXF1ZXVlISBxMSkgICAgPSAiIChkZWxl dGUtcXVldWUhIHExKSAgICAiXG4iKQoKCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAoaW5zZXJ0 LXF1ZXVlISBxMSAnYSkgPSAoKGEpIGEpCjogKGluc2VydC1xdWV1ZSEgcTEgJ2IpID0gKChhIGIp IGIpCjogKGRlbGV0ZS1xdWV1ZSEgcTEpICAgID0gKChiKSBiKQo6IGluc2VydCAoKGIgYykgYykK OiAoZGVsZXRlLXF1ZXVlISBxMSkgICAgPSAoKGMpIGMpCgpJIGRhcmUgdG8gc2F5IHRoYXQgdGhp cyBwcmludGVkIHJlcHJlc2VudGF0aW9uIGlzIGNvcnJlY3QsIGJlY2F1c2UgaXQKbm90IGp1c3Qg ZGlzcGxheXMgdGhlIHF1ZXVlLCBidXQgYWxzbyBzaG93cyB3aGF0IHRoZSBlbmQgcG9pbnRlciBt YXJrcy4KCkluZGVlZCwgdGhlIHF1ZXVlIGlzIGp1c3QgYSBwYWlyIG9mIGEgbGlzdCBhbmQgdGhl IGZpbmFsCnBhaXIuIE1vcmVvdmVyLCBldmVuIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eSwgdGhlIGxh c3QgcGFpciBpcyBub3QKZGVzdHJveWVkLCBhbmQgdGhlcmVmb3JlIGlzIGRpc3BsYXllZC4KCiMr YmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dCA6bm93ZWItcmVm IHByaW50LXF1ZXVlCjw8cXVldWU+PgooZGVmaW5lIChwcmludC1xdWV1ZSBxdWV1ZSkKICAoZGlz cGxheSAoY2FyIHF1ZXVlKSkpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRz IGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8cXVldWU+Pgo8PHByaW50LXF1ZXVlPj4KKGRlZmluZSBx MSAobWFrZS1xdWV1ZSkpCihwcmludC1xdWV1ZSAoaW5zZXJ0LXF1ZXVlISBxMSAnYSkpCihuZXds aW5lKQoocHJpbnQtcXVldWUgKGluc2VydC1xdWV1ZSEgcTEgJ2IpKQoobmV3bGluZSkKKHByaW50 LXF1ZXVlIChkZWxldGUtcXVldWUhIHExKSkKKG5ld2xpbmUpCihwcmludC1xdWV1ZSAoZGVsZXRl LXF1ZXVlISBxMSkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IChhKQo6IChhIGIpCjogKGIpCjog KCkKCkV2ZXJ5dGhpbmcgaXMgZmluZS4KCioqKiBET05FIEV4ZXJjaXNlIDMuMjIgcHJvY2VkdXJh bCBxdWV1ZQogICAgQ0xPU0VEOiBbMjAxOS0xMi0wMyBUdWUgMjI6MTNdCiMrYmVnaW5fc3JjIHNj aGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dCA6bm93ZWItcmVmIHByb2NlZHVyYWwt cXVldWUKICAgIChkZWZpbmUgKG1ha2UtcXVldWUpCiAgICAgIChsZXQgKChmcm9udC1wdHIgKGxp c3QpKQoJICAgIChyZWFyLXB0ciAjZikpCgkoZGVmaW5lIChmcm9udCkKCSAgKGlmIChudWxsPyBm cm9udC1wdHIpCgkgICAgICAoZXJyb3IgIkZST05UIGNhbGxlZCB3aXRoIGFuIGVtcHR5IHF1ZXVl IiBxdWV1ZSkKCSAgICAgIChjYXIgZnJvbnQtcHRyKSkpCgkoZGVmaW5lIChpbnNlcnQhIHgpCgkg IChsZXQgKChuZXctcGFpciAoY29ucyB4IChsaXN0KSkpKSAKCSAgICAoY29uZCAoKG51bGw/IGZy b250LXB0cikgCgkJICAgKHNldCEgZnJvbnQtcHRyIG5ldy1wYWlyKQoJCSAgIChzZXQhIHJlYXIt cHRyICBuZXctcGFpcikpCgkJICAoZWxzZQoJCSAgIChzZXQtY2RyISByZWFyLXB0ciBuZXctcGFp cikKCQkgICAoc2V0ISByZWFyLXB0ciBuZXctcGFpcikpKSkpCgkoZGVmaW5lIChkZWxldGUhKQoJ ICAoaWYgKG5vdCAobnVsbD8gZnJvbnQtcHRyKSkKCSAgICAgIChzZXQhIGZyb250LXB0ciAoY2Ry IGZyb250LXB0cikpCgkgICAgICAoZXJyb3IgIlF1ZXVlIGFscmVhZHkgZW1wdHkiIGZyb250LXB0 cikpKQoJKGRlZmluZSAoZGlzcGF0Y2ggbSkKCSAgKGNvbmQgKChlcT8gbSAnZW1wdHktcXVldWUp IChudWxsPyBmcm9udC1wdHIpKQoJCSgoZXE/IG0gJ2Zyb250KSAoZnJvbnQpKQoJCSgoZXE/IG0g J2luc2VydCEpIGluc2VydCEpCgkJKChlcT8gbSAnZGVsZXRlISkgZGVsZXRlISkKICAgICAgICAg ICAgICAgICgoZXE/IG0gJ3ByaW50KSAoZGlzcGxheSBmcm9udC1wdHIpKQoJCShlbHNlCgkJIChl cnJvciAiVW5kZWZpbmVkIG9wZXJhdGlvbjogcXVldWUiIG0pKSkgICkKCWRpc3BhdGNoKSkKICAo ZGVmaW5lIChmcm9udC1xdWV1ZSB6KSAKICAgICh6ICdmcm9udCkpCiAgKGRlZmluZSAoZW1wdHkt cXVldWU/IHopCiAgICAoeiAnZW1wdHktcXVldWUpKQogIChkZWZpbmUgKGluc2VydC1xdWV1ZSEg cSB6KQogICAgKChxICdpbnNlcnQhKSB6KQogICAgcSkKICAoZGVmaW5lIChkZWxldGUtcXVldWUh IHEpCiAgICAoKHEgJ2RlbGV0ZSEpKQogICAgcSkKICAoZGVmaW5lIChwcmludC1xdWV1ZSBxKQog ICAgKHEgJ3ByaW50KQogICAgKG5ld2xpbmUpKQoKICAoZGVmaW5lIHExIChtYWtlLXF1ZXVlKSkK ICAoZW1wdHktcXVldWU/IHExKQogIChpbnNlcnQtcXVldWUhIHExICdhKQogIChwcmludC1xdWV1 ZSBxMSkKICAoaW5zZXJ0LXF1ZXVlISBxMSAnYikKICAocHJpbnQtcXVldWUgcTEpCiAgKGRlbGV0 ZS1xdWV1ZSEgcTEpCiAgKHByaW50LXF1ZXVlIHExKQogIChkZWxldGUtcXVldWUhIHExKQogIChw cmludC1xdWV1ZSBxMSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogKGEpCjogKGEgYikKOiAoYikK OiAoKQoKV2VsbCwgbWFrZXMgc2Vuc2UuIE5vdCBhIHZlcnkgaGFyZCBleGVyY2lzZS4KCioqKiBE T05FIEV4ZXJjaXNlIDMuMjMgZGVxdWV1ZQogICAgQ0xPU0VEOiBbMjAxOS0xMi0wMyBUdWUgMjM6 MjRdCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyByZXN1bHQgOm5v d2ViLXJlZiBkZXF1ZXVlCiAgKGRlZmluZSAoZnJvbnQtcHRyIGRlcXVlKSAoY2FyIGRlcXVlKSkK ICAoZGVmaW5lIChyZWFyLXB0ciBkZXF1ZSkKICAgIChjZHIgZGVxdWUpKQogIChkZWZpbmUgKHNl dC1mcm9udC1wdHIhIGRlcXVlIGl0ZW0pCiAgICAoc2V0LWNhciEgZGVxdWUgaXRlbSkpCiAgKGRl ZmluZSAoc2V0LXJlYXItcHRyISBkZXF1ZSBpdGVtKQogICAgKHNldC1jZHIhIGRlcXVlIGl0ZW0p KQogIChkZWZpbmUgKGVtcHR5LWRlcXVlPyBkZXF1ZSkKICAgIChudWxsPyAoZnJvbnQtcHRyIGRl cXVlKSkpCiAgKGRlZmluZSAobWFrZS1kZXF1ZSkgKGNvbnMgJygpICcoKSkpCiAgKGRlZmluZSAo Z2V0LWl0ZW0gbGlzdC1lbGVtKQogICAgKGNkciBsaXN0LWVsZW0pKQogIChkZWZpbmUgKGdldC1i YWNrbGluayBsaXN0LWVsZW0pCiAgICAoY2FyIGxpc3QtZWxlbSkpCiAgKGRlZmluZSAoZnJvbnQt ZGVxdWUgZGVxdWUpCiAgICAoaWYgKGVtcHR5LWRlcXVlPyBkZXF1ZSkKCShlcnJvciAiRlJPTlQg Y2FsbGVkIHdpdGggYW4gZW1wdHkgZGVxdWUiIGRlcXVlKQoJKGdldC1pdGVtIChjYXIgKGZyb250 LXB0ciBkZXF1ZSkpKSkpCiAgKGRlZmluZSAocmVhci1kZXF1ZSBkZXF1ZSkKICAgIChpZiAoZW1w dHktZGVxdWU/IGRlcXVlKQoJKGVycm9yICJSRUFSIGNhbGxlZCB3aXRoIGFuIGVtcHR5IGRlcXVl IiBkZXF1ZSkKCShnZXQtaXRlbSAoY2FyIChyZWFyLXB0ciBkZXF1ZSkpKSkpCiAgKGRlZmluZSAo cmVhci1pbnNlcnQtZGVxdWUhIGRlcXVlIGl0ZW0pCiAgICAobGV0ICgobmV3LXBhaXIgKGNvbnMg KGNvbnMgI2YgaXRlbSkgJygpKSkpCiAgICAgIChjb25kICgoZW1wdHktZGVxdWU/IGRlcXVlKQoJ ICAgICAoc2V0LWZyb250LXB0ciEgZGVxdWUgbmV3LXBhaXIpCgkgICAgIChzZXQtcmVhci1wdHIh IGRlcXVlIG5ldy1wYWlyKQoJICAgICBkZXF1ZSkKCSAgICAoZWxzZQoJICAgICAoc2V0LWNkciEg KHJlYXItcHRyIGRlcXVlKSBuZXctcGFpcikKICAgICAgICAgICAgIChzZXQtY2FyISBuZXctcGFp ciAocmVhci1wdHIgZGVxdWUpKQoJICAgICAoc2V0LXJlYXItcHRyISBkZXF1ZSBuZXctcGFpcikK CSAgICAgZGVxdWUpKSkpCiAgKGRlZmluZSAoZnJvbnQtZGVsZXRlLWRlcXVlISBkZXF1ZSkKICAg IChjb25kICgoZW1wdHktZGVxdWU/IGRlcXVlKQoJICAgKGVycm9yICJGUk9OVC1ERUxFVEUhIGNh bGxlZCB3aXRoIGFuIGVtcHR5IGRlcXVlIiBkZXF1ZSkpCgkgIChlbHNlIChzZXQtZnJvbnQtcHRy ISBkZXF1ZSAoY2RyIChmcm9udC1wdHIgZGVxdWUpKSkKICAgICAgICAgICAgICAgIChzZXQtY2Fy ISAoY2FyIChmcm9udC1wdHIgZGVxdWUpKSAnKCkpCgkJZGVxdWUpKSkKICAoZGVmaW5lIChmcm9u dC1pbnNlcnQtZGVxdWUhIGRlcXVlIGl0ZW0pCiAgICAobGV0ICgobmV3LXBhaXIgKGNvbnMgKGNv bnMgJygpIGl0ZW0pICcoKSkpKQogICAgICAoY29uZCAoKGVtcHR5LWRlcXVlPyBkZXF1ZSkKCSAg ICAgKHNldC1mcm9udC1wdHIhIGRlcXVlIG5ldy1wYWlyKQoJICAgICAoc2V0LXJlYXItcHRyISBk ZXF1ZSBuZXctcGFpcikKCSAgICAgZGVxdWUpCgkgICAgKGVsc2UKCSAgICAgKHNldC1jZHIhIG5l dy1wYWlyIChmcm9udC1wdHIgZGVxdWUpKQogICAgICAgICAgICAgKHNldC1jYXIhIChjYXIgKGZy b250LXB0ciBkZXF1ZSkpIG5ldy1wYWlyKQogICAgICAgICAgICAgKHNldC1mcm9udC1wdHIhIGRl cXVlIG5ldy1wYWlyKQogICAgICAgICAgICBkZXF1ZSkpKSkKICAoZGVmaW5lIChyZWFyLWRlbGV0 ZS1kZXF1ZSEgZGVxdWUpCiAgICAoY29uZCAoKGVtcHR5LWRlcXVlPyBkZXF1ZSkKCSAgIChlcnJv ciAiUkVBUi1ERUxFVEUhIGNhbGxlZCB3aXRoIGFuIGVtcHR5IGRlcXVlIiBkZXF1ZSkpCgkgIChl bHNlIChzZXQtcmVhci1wdHIhIGRlcXVlIChjYWFyIChyZWFyLXB0ciBkZXF1ZSkpKQogICAgICAg ICAgICAgICAgKGlmIChub3QgKG51bGw/IChyZWFyLXB0ciBkZXF1ZSkpKQogICAgICAgICAgICAg ICAgICAgIChzZXQtY2RyISAocmVhci1wdHIgZGVxdWUpIChsaXN0KSkKICAgICAgICAgICAgICAg ICAgICAoc2V0LWZyb250LXB0ciEgZGVxdWUgJygpKSkKCQlkZXF1ZSkpKQooZGVmaW5lIChwcmlu dC1kZXF1ZSBxKQogIChkaXNwbGF5IHEpKQoKCihkZWZpbmUgZHExIChtYWtlLWRlcXVlKSkKKGZy b250LWluc2VydC1kZXF1ZSEgZHExICdhKQoocmVhci1pbnNlcnQtZGVxdWUhICBkcTEgJ2IpCihm cm9udC1kZWxldGUtZGVxdWUhIGRxMSkKKHJlYXItZGVsZXRlLWRlcXVlISAgZHExKQooZW1wdHkt ZGVxdWU/IGRxMSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogI3QKCioqKiBSZW1hcmsgVGFibGUg b3BlcmF0aW9ucwpBY3R1YWxseSwgdGhlc2UgdGFibGUgb3BlcmF0aW9ucyBhcmUgZmlyc3QgcmVx dWlyZWQgaW4gdGhlIGNoYXB0ZXIgMiwKRXhlcmNpc2UtMi43My4gSW4gb3JkZXIgdG8gYXZvaWQg bG9vay1haGVhZHMsIEkgYW0gaW50cm9kdWNpbmcgdGhpcwpwc2V1ZG8tY2hhcHRlciBzbyB0aGF0 IHRoZSBhcHByb3ByaWF0ZSBjb2RlIGNvdWxkIGJlIHRhbmdsZWQgaW4uCgojK2JlZ2luX3NyYyBz Y2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIHB1dC1hbmQtZ2V0 CiAgICAgKGRlZmluZSAobWFrZS10YWJsZSkKICAgICAgIChsZXQgKChsb2NhbC10YWJsZSAobGlz dCAnKnRhYmxlKikpKQogICAgICAgICAoZGVmaW5lIChsb29rdXAga2V5LTEga2V5LTIpCiAgICAg ICAgICAgKGxldCAoKHN1YnRhYmxlIChhc3NvYyBrZXktMSAoY2RyIGxvY2FsLXRhYmxlKSkpKQog ICAgICAgICAgICAgKGlmIHN1YnRhYmxlCiAgICAgICAgICAgICAgICAgKGxldCAoKHJlY29yZCAo YXNzb2Mga2V5LTIgKGNkciBzdWJ0YWJsZSkpKSkKICAgICAgICAgICAgICAgICAgIChpZiByZWNv cmQKICAgICAgICAgICAgICAgICAgICAgICAoY2RyIHJlY29yZCkKICAgICAgICAgICAgICAgICAg ICAgICBmYWxzZSkpCiAgICAgICAgICAgICAgICAgZmFsc2UpKSkKICAgICAgICAgKGRlZmluZSAo aW5zZXJ0ISBrZXktMSBrZXktMiB2YWx1ZSkKICAgICAgICAgICAobGV0ICgoc3VidGFibGUgKGFz c29jIGtleS0xIChjZHIgbG9jYWwtdGFibGUpKSkpCiAgICAgICAgICAgICAoaWYgc3VidGFibGUK ICAgICAgICAgICAgICAgICAobGV0ICgocmVjb3JkIChhc3NvYyBrZXktMiAoY2RyIHN1YnRhYmxl KSkpKQogICAgICAgICAgICAgICAgICAgKGlmIHJlY29yZAogICAgICAgICAgICAgICAgICAgICAg IChzZXQtY2RyISByZWNvcmQgdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIh IHN1YnRhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zIChjb25zIGtl eS0yIHZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIHN1 YnRhYmxlKSkpKSkKICAgICAgICAgICAgICAgICAoc2V0LWNkciEgbG9jYWwtdGFibGUKICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNvbnMgKGxpc3Qga2V5LTEKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNvbnMga2V5LTIgdmFsdWUpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoY2RyIGxvY2FsLXRhYmxlKSkpKSkKICAgICAgICAgICAnb2spCiAg ICAgICAgIChkZWZpbmUgKGRpc3BhdGNoIG0pCiAgICAgICAgICAgKGNvbmQgKChlcT8gbSAnbG9v a3VwLXByb2MpIGxvb2t1cCkKICAgICAgICAgICAgICAgICAoKGVxPyBtICdpbnNlcnQtcHJvYyEp IGluc2VydCEpCiAgICAgICAgICAgICAgICAgKGVsc2UgKGVycm9yICJVbmtub3duIG9wZXJhdGlv biAtLSBUQUJMRSIgbSkpKSkKICAgICAgICAgZGlzcGF0Y2gpKQoKICAgICAoZGVmaW5lIG9wZXJh dGlvbi10YWJsZSAobWFrZS10YWJsZSkpCiAgICAgKGRlZmluZSBnZXQgKG9wZXJhdGlvbi10YWJs ZSAnbG9va3VwLXByb2MpKQogICAgIChkZWZpbmUgcHV0IChvcGVyYXRpb24tdGFibGUgJ2luc2Vy dC1wcm9jISkpCiAgICAgKGRlZmluZSBjb2VyY2lvbi10YWJsZSAobWFrZS10YWJsZSkpCiAgICAg KGRlZmluZSBnZXQtY29lcmNpb24gKGNvZXJjaW9uLXRhYmxlICdsb29rdXAtcHJvYykpCiAgICAg KGRlZmluZSBwdXQtY29lcmNpb24gKGNvZXJjaW9uLXRhYmxlICdpbnNlcnQtcHJvYyEpKQogICAg IAojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiBvawoKKioqIERPTkUgRXhlcmNpc2UgMy4yNCB0b2xl cmFudCB0YWJsZXMKICAgIENMT1NFRDogWzIwMTktMTItMDQgV2VkIDE4OjA3XQoKIytiZWdpbl9z cmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CiAgKGRlZmluZSBmYWxzZSAj ZikKICAoZGVmaW5lIChtYWtlLXRhYmxlIC4gbykKICAgIChsZXQgKChzYW1lLWtleT8gKGlmIChu dWxsPyBvKSBlcXVhbD8gKGNhciBvKSkpKQogICAgICAobGV0ICgobG9jYWwtdGFibGUgKGxpc3Qg Jyp0YWJsZSopKSkKCShkZWZpbmUgKGxvb2t1cCBrZXktMSBrZXktMikKCSAgKGxldCAoKHN1YnRh YmxlCgkJIChhc3NvYyBrZXktMSAoY2RyIGxvY2FsLXRhYmxlKSBzYW1lLWtleT8pKSkKCSAgICAo aWYgc3VidGFibGUKCQkobGV0ICgocmVjb3JkCgkJICAgICAgIChhc3NvYyBrZXktMiAoY2RyIHN1 YnRhYmxlKSBzYW1lLWtleT8pKSkKCQkgIChpZiByZWNvcmQgKGNkciByZWNvcmQpIGZhbHNlKSkK CQlmYWxzZSkpKQoJKGRlZmluZSAoaW5zZXJ0ISBrZXktMSBrZXktMiB2YWx1ZSkKCSAgKGxldCAo KHN1YnRhYmxlCgkJIChhc3NvYyBrZXktMSAoY2RyIGxvY2FsLXRhYmxlKSBzYW1lLWtleT8pKSkK CSAgICAoaWYgc3VidGFibGUKCQkobGV0ICgocmVjb3JkCgkJICAgICAgIChhc3NvYyBrZXktMiAo Y2RyIHN1YnRhYmxlKSBzYW1lLWtleT8pKSkKCQkgIChpZiByZWNvcmQKCQkgICAgICAoc2V0LWNk ciEgcmVjb3JkIHZhbHVlKQoJCSAgICAgIChzZXQtY2RyISBzdWJ0YWJsZQoJCQkJKGNvbnMgKGNv bnMga2V5LTIgdmFsdWUpCgkJCQkgICAgICAoY2RyIHN1YnRhYmxlKSkpKSkKCQkoc2V0LWNkciEg bG9jYWwtdGFibGUKCQkJICAoY29ucyAobGlzdCBrZXktMSAoY29ucyBrZXktMiB2YWx1ZSkpCgkJ CQkoY2RyIGxvY2FsLXRhYmxlKSkpKSkKCSAgJ29rKQoJKGRlZmluZSAoZGlzcGF0Y2ggbSkKCSAg KGNvbmQgKChlcT8gbSAnbG9va3VwLXByb2MpIGxvb2t1cCkKCQkoKGVxPyBtICdpbnNlcnQtcHJv YyEpIGluc2VydCEpCgkJKGVsc2UgKGVycm9yICJVbmtub3duIG9wZXJhdGlvbjogVEFCTEUiIG0p KSkpCglkaXNwYXRjaCkpKQogIChkZWZpbmUgKHBhcml0eS1jaGVja2VyIGEgYikKICAgIChpZiAo PSAocmVtYWluZGVyIGEgMikgKHJlbWFpbmRlciBiIDIpKQogICAgICAgICN0CiAgICAgICAgI2Yp KSAjOygibm90IGEgdmVyeSB1c2VmdWwgdGFibGUiKQogIChkZWZpbmUgb3BlcmF0aW9uLXRhYmxl IChtYWtlLXRhYmxlIHBhcml0eS1jaGVja2VyKSkKICAoZGVmaW5lIGdldCAob3BlcmF0aW9uLXRh YmxlICdsb29rdXAtcHJvYykpCiAgKGRlZmluZSBwdXQgKG9wZXJhdGlvbi10YWJsZSAnaW5zZXJ0 LXByb2MhKSkKICAocHV0IDEgMiAobGFtYmRhICgpIChkaXNwbGF5ICJ0ZXN0MSIpIChuZXdsaW5l KSkpCiAgKChnZXQgMyA0KSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogdGVzdDEKClRoaXMgZXhl cmNpc2Ugd291bGQgaGF2ZSBiZWVuIG11Y2gtbXVjaCBoYXJkZXIgd2l0aCBzY2hlbWVzIGxvd2Vy IHRoYW4KdmVyc2lvbiA3LCBhcyB0aGUgfmFzc29jfiBwcm9jZWR1cmUgZG9lc24ndCB0YWtlIGEg Y29tcGFyYXRvciBwcm9jZWR1cmUuCgoqKiogRE9ORSBFeGVyY2lzZSAzLjI1IG11bHRpbGV2ZWwg dGFibGVzCiAgICBDTE9TRUQ6IFsyMDE5LTEyLTA2IEZyaSAyMDozNV0KClRoaXMgZXhlcmNpc2Ug aWxsdXN0cmF0ZXMgdGhhdCBpdCBpcyBuZXZlciBwYXlzIG9mZiB0byBzYXZlIG9uIGRhdGEKc3Ry dWN0dXJlcy4gVGhlIHR3by1sZXZlbCBzdHJ1Y3R1cmUgaXMgbm90IGZsZXhpYmxlLCBzbyB3ZSBh cmUganVzdCB1c2luZwpuZXN0ZWQgdGFibGVzLgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRz IGJvdGggOnJlc3VsdHMgb3V0cHV0CihkaXNwbGF5ICJTdGFydGluZ1xuIikKCSAoZGVmaW5lICht YWtlLXRhYmxlKQogICAgICAgICAgIChsZXQgKChsb2NhbC10YWJsZSAobGlzdCkpKQoJICAgICAo ZGVmaW5lIChsb29rdXAga2V5LWxpc3QpCgkgICAgICAgKGxldCAoKHN1YnRhYmxlIChhc3NvYyAo Y2FyIGtleS1saXN0KSBsb2NhbC10YWJsZSkpKQoJCSAoaWYgc3VidGFibGUKCQkgICAgIChpZiAo bnVsbD8gKGNkciBrZXktbGlzdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIHN1YnRh YmxlKQogICAgICAgICAgICAgICAgICAgICAgICAgKCgoY2RyIHN1YnRhYmxlKSAnbG9va3VwLXBy b2MpIChjZHIga2V5LWxpc3QpKSkKCQkgICAgICNmKSkpCgkgICAgIChkZWZpbmUgKGluc2VydCEg a2V5LWxpc3QgdmFsdWUpCgkgICAgICAgKGxldCogKChrZXkgKGNhciBrZXktbGlzdCkpCiAgICAg ICAgICAgICAgICAgICAgICAoc3VidGFibGUgKGFzc29jIGtleSBsb2NhbC10YWJsZSkpKQogICAg ICAgICAgICAgICAgICAoaWYgc3VidGFibGUKICAgICAgICAgICAgICAgICAgICAgKGlmIChudWxs PyAoY2RyIGtleS1saXN0KSkKICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQtY2RyISBzdWJ0 YWJsZSB2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAocHJvY2VkdXJlPyAoY2Ry IHN1YnRhYmxlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChjZHIgc3VidGFibGUp ICdpbnNlcnQtcHJvYyEpIChjZHIga2V5LWxpc3QpIHZhbHVlKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChsZXQgKChzdWJzdWJ0YWJsZSAobWFrZS10YWJsZSkpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKChzdWJzdWJ0YWJsZSAnaW5zZXJ0LXByb2MhKSAoY2RyIGtl eS1saXN0KSB2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQtY2Ry ISBzdWJ0YWJsZSBzdWJzdWJ0YWJsZSkpKSkKICAgICAgICAgICAgICAgICAgICAgKHNldCEgbG9j YWwtdGFibGUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoY29ucyBrZXkgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpZiAobnVsbD8gKGNkciBrZXktbGlzdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQg KChzdWJzdWJ0YWJsZSAobWFrZS10YWJsZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoKHN1YnN1YnRhYmxlICdpbnNlcnQtcHJvYyEpIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNkciBrZXktbGlzdCkgdmFsdWUpIHN1YnN1YnRhYmxl KSkpIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbC10YWJsZSkpKSkpCgkgICAg IChkZWZpbmUgKGRpc3BhdGNoIG0pCgkgICAgICAgKGNvbmQgKChlcT8gbSAnbG9va3VwLXByb2Mp IGxvb2t1cCkKCQkgICAgICgoZXE/IG0gJ2luc2VydC1wcm9jISkgaW5zZXJ0ISkKICAgICAgICAg ICAgICAgICAgICAgKGVsc2UgKGVycm9yICJVbmtub3duIG9wZXJhdGlvbiAtLSBUQUJMRSIgbSkp KSkKCSAgICAgZGlzcGF0Y2gpKQoKCSAoZGVmaW5lIG9wZXJhdGlvbi10YWJsZSAobWFrZS10YWJs ZSkpCgkgKGRlZmluZSBnZXQgKG9wZXJhdGlvbi10YWJsZSAnbG9va3VwLXByb2MpKQoJIChkZWZp bmUgcHV0IChvcGVyYXRpb24tdGFibGUgJ2luc2VydC1wcm9jISkpCgogIChkaXNwbGF5IChwdXQg KGxpc3QgJ2tleTEgJ2tleTIgJ2tleTMpICd0ZXN0LXZhbHVlKSkKICAobmV3bGluZSkKICAoZGlz cGxheSAoZ2V0IChsaXN0ICdrZXkxICdrZXkyICdrZXkzKSkpCiMrZW5kX3NyYwoKIytSRVNVTFRT Ogo6IFN0YXJ0aW5nCjogIzx1bmRlZj4KOiB0ZXN0LXZhbHVlCgoqKiogRE9ORSBFeGVyY2lzZSAz LjI2IGJpbmFyeSB0cmVlIHRhYmxlCiAgICBDTE9TRUQ6IFsyMDE5LTEyLTA2IEZyaSAyMDo1M10K Ckl0IGlzIGVhc3kgdG8gaW1wbGVtZW50IGEgdGFibGUgbG9va3VwIHN5c3RlbSBiYXNlZCBvbiBh biBvcmRlcmVkIHNldCBvZgprZXlzLiBBIGJpbmFyeSBzZWFyY2ggdHJlZSBpcyBhbiBlYXN5IGV4 YW1wbGUuIEluIHN1Y2ggYSB0cmVlLCBldmVyeSBub2RlCnJlcHJlc2VudHMgYSBrZXkgKHdpdGgg c29tZSBwYXlsb2FkIHZhbHVlKS4gVGhlIGxlZnQgY2hpbGQgYWx3YXlzIGhhcyBpdHMga2V5Cm9y ZGVyZWQgbGVzcyB0aGFuIHRoZSByaWdodCBvbmUsIGluIGV2ZXJ5IG5vZGUuIFNlYXJjaGluZyBp cyB0aHVzIGVhc3ksIHlvdQpzdGFydCBmcm9tIHRoZSB0b3Agb2YgdGhlIHRyZWUsIGFuZCBmb2xs b3cgcmlnaHQgb3IgbGVmdCwgZGVwZW5kaW5nIHdoZXRoZXIKdGhlIGtleSB5b3UgYXJlIHNlYXJj aGluZyBmb3IgaXMgZ3JlYXRlciBvciBsZXNzIHRoYW4gdGhlIG9uZSB5b3UgYXJlIGxvb2tpbmcK Zm9yLiAKClRoaXMgc2hvdWxkIGNsZWFybHkgcmVxdWlyZSBcKE8oXGxvZyBuKVwpIHN0ZXBzIGlm IHRoZSB0cmVlIGlzIHdlbGwKYmFsYW5jZWQuIEluc2VydGlvbiwgaWYgaW1wbGVtZW50ZWQgbmFp dmVseSwgbWF5IHdvcmsgYWNjb3JkaW5nIHRvIHRoZSBzYW1lCnNjaGVtZS4gSG93ZXZlciwgaWYg d2UgdHJ5IHRvIGluc2VydCBhIGxvbmcgbGlzdCBvZiBzdWNjZXNzaXZlIG51bWJlcnMsIHdlCndp bGwgZ2V0IGEgdmVyeSBkZWVwIGFuZCB2ZXJ5IHRoaW4gdHJlZSwgd2hpY2ggd2lsbCByZWR1Y2Ug dGhlIHByb2JsZW0gdG8gdGhlCmltcGxlbWVudGF0aW9uIGJhc2VkIG9uIGxpc3RzLgoKClRoZSBw cm9ibGVtIGhhcHBlbnMgaWYgdGhlIHRyZWUgaXMgX25vdF8gd2VsbCBiYWxhbmNlZC4gU2V2ZXJh bCByZS1iYWxhbmNpbmcKYWxnb3JpdGhtcyBleGlzdCwgdGhhdCBmb3IgZXhhbXBsZSBBVkwtdHJl ZXMgYW5kIFJCLXRyZWVzLiBUaG9zZSBhcmUgdXN1YWxseQphcHBsaWVkIG9uIH5pbnNlcnQhfiwg d2hlbiB0aGUgdHJlZSdzICJiYWRuZXNzIiBtZXRyaWMgZXhjZWVkcyBzb21lIHZhbHVlLgoKKioq IERPTkUgRXhlcmNpc2UgMy4yNyBtZW1vaXphdGlvbgogICAgQ0xPU0VEOiBbMjAxOS0xMi0wNyBT YXQgMTY6MDhdCgpJdCBpcyB2ZXJ5IHN0cmFpZ2h0Zm9yd2FyZCB3aHkgcGxhaW4gfihtZW1vaXpl IGZpYil+IHdvdWxkIG5vdCB3b3JrLiBCZWNhdXNlCmV2ZXJ5IGNhbGwgdG8gdGhlIHNhbWUgZnVu Y3Rpb24gc2hvdWxkIGJlIHNuYXBwZWQgd2l0aCBhIGNhbGwgdG8gdGhlCm1lbW9pemVyLiBUaGF0 IGlzIHRoZSBtZW1vaXphdGlvbiBvbmx5IHJlbWVtZWJlcnMgYSBjYWxsIHdpdGggd2hpY2ggaXQg aXMKYXNzb2NpYXRlZC4gU2luY2UgfmZpYn4gY2FsbHMgfmZpYn4gYWdhaW4sIG5vdCB+bWVtby1m aWJ+LCBvbmx5IHRoZSBmaW5hbApyZXN1bHQgd291bGQgYmUgcmVtZW1iZXJlZC4KCldlIHdhbnQg dG8gbWFrZSBhIGRpYWdyYW0gZm9yIH4obWVtby1maWIgMyl+LgoKIytuYW1lOiBleGVyY2lzZS0z LTI3CiMraGVhZGVyOiA6aW1hZ2VtYWdpY2sgeWVzIDppbWlub3B0aW9ucyAtZGVuc2l0eSAzMDAg Omltb3V0b3B0aW9ucyAtZ2VvbWV0cnkgMTAwMAojK2hlYWRlcjogOmZpdCB5ZXMgOmhlYWRlcnMg JygiXFx1c2VwYWNrYWdle3Rpa3p9IFxcdXNldGlremxpYnJhcnl7cG9zaXRpb25pbmcsZml0LHBl dHJpLGFycm93cyxjYWxjfSIpCiMraGVhZGVyOiA6YnVmZmVyIG9uCiMrYmVnaW5fc3JjIGxhdGV4 IDpyZXN1bHRzIHJhdyBmaWxlIDpleHBvcnRzIGJvdGggOmZpbGUgZXhlcmNpc2UtMy0yNy5wbmcK XGJlZ2lue3Rpa3pwaWN0dXJlfVtpbm5lciBzZXA9MG1tLD49c3RlYWx0aCcsdmVyeSB0aGljayxj b2xvcj1ibGFjayE1MCwKICAgICAgIGZvbnQ9XHNmZmFtaWx5LHBpY3MvdHdvIGRvdHMvLnN0eWxl PXtjb2RlPXsKICAgICAgIFxub2RlIFtkcmF3LG1pbmltdW0gc2l6ZT01bW0sY2lyY2xlLGNvbG9y ZWQgdG9rZW5zPXtibGFjayE1MH1dIAogICAgICAgKCMxLWxlZnQpIHt9OwogICAgICBcbm9kZSBb ZHJhdyxtaW5pbXVtIHNpemU9NW1tLGNpcmNsZSxjb2xvcmVkIHRva2Vucz17YmxhY2shNTB9LAog ICAgICByaWdodD0wcHQgb2YgIzEtbGVmdF0KCSAgKCMxLXJpZ2h0KSB7fTsKICAgICAgXG5vZGUg W3JlY3RhbmdsZSwgZml0PSgjMS1sZWZ0KSAoIzEtcmlnaHQpXSAoIzEpe307CiAgICAgIH19LAog ICAgICBldmVyeSBwaW4gZWRnZS8uc3R5bGU9ezwtLHZlcnkgdGhpY2t9LAogICAgICBib3gvLnN0 eWxlPXtkcmF3LHJlY3RhbmdsZSxpbm5lciBzZXA9IzF9LGJveC8uZGVmYXVsdD0ybW0sCiAgICAg IG5vZGUgZGlzdGFuY2U9NG1tXQoKICAgIFxub2RlIChtZW1vaXplLWdsb2JhbCkgIHttZW1vaXpl OiA8Li4uPn07CiAgICBcbm9kZSAoZmFrZTEpIFtyaWdodD0xMDBtbSBvZiBmaWItZ2xvYmFsXSB7 fTsgIAogICAgXG5vZGUgKG1lbW8tZmliLWdsb2JhbCkgW2JlbG93PTRtbSBvZiBtZW1vaXplLWds b2JhbC53ZXN0LGFuY2hvcj13ZXN0XSB7bWVtby1maWI6fTsKCiAgICBcbm9kZSAoZyBlbnYpIFti b3gsIGZpdD0obWVtb2l6ZS1nbG9iYWwpIChmYWtlMSkgKG1lbW8tZmliLWdsb2JhbCksCiAgICBw aW49e1t0ZXh0IHdpZHRoPTFjbSxwaW4gZGlzdGFuY2U9MTBtbV1sZWZ0Omdsb2JhbCBlbnZ9XQog ICAgeyB9OwogICAgXHBhdGgKICAgICBub2RlW2JlbG93PTJjbSBvZiBtZW1vLWZpYi1nbG9iYWwu d2VzdCwgYW5jaG9yPXdlc3QsYWxpZ249bGVmdF0gKHZhci1mKSB7ZjogbGFtYmRhIChuKSA8Li4u PlxcIAogICAgICAoZmliIGltcGxlbWVudGF0aW9uLFxcIHVzZXMgbWVtby1maWIpfSAKICAgICBu b2RlW2JveCxkcmF3LCBtaW5pbXVtIHNpemU9MWNtLCBmaXQ9KHZhci1mKSxwaW49bGVmdDpFMV0g KEUxLWVudikge30KICAgICAoJCAoRTEtZW52Lm5vcnRoIHdlc3QpITAuOSEoRTEtZW52Lm5vcnRo IGVhc3QpICQpIGNvb3JkaW5hdGUgKGF1eDMpOwogICAgIFxkcmF3Wy0+XSAoYXV4MykgLS0gKGF1 eDMgfC0gZyBlbnYuc291dGgpOwoKICAgICBcbm9kZVtiZWxvdz0yY20gb2YgdmFyLWYud2VzdCwg YW5jaG9yPXdlc3RdICh0YWJsZS12YXIpIHt0YWJsZTogXCM8cHJvY2VkdXJlIGRpc3BhdGNoPn0K ICAgICBub2RlW3JpZ2h0PTdjbSBvZiB0YWJsZS12YXJdIChmYWtlMikge307CiAgICAgXG5vZGVb Ym94LGRyYXcsIGZpdD0odGFibGUtdmFyKSAoZmFrZTIpLHBpbj1sZWZ0OkUyXSAoRTItZW52KSB7 fTsKICAgICBccGF0aCAoJCAoRTItZW52Lm5vcnRoIHdlc3QpITAuMSEoRTItZW52Lm5vcnRoIGVh c3QpICQpIGNvb3JkaW5hdGUgKGF1eDIpOwogICAgIFxkcmF3Wy0+XSAoYXV4MikgLS0gKGF1eDIg fC0gRTEtZW52LnNvdXRoKTsKICAgICBccGF0aCBjb29yZGluYXRlW2JlbG93PTEuNWNtIG9mIHRh YmxlLXZhci53ZXN0XSAoYXV4KQogICAgIChhdXgpICBwaWN7dHdvIGRvdHM9bWVtby1maWJ9OyAK ICAgICBcZHJhd1stPl0gKG1lbW8tZmliLXJpZ2h0LmNlbnRlcikgdG8gKEUyLWVudi5zb3V0aCAt fCBtZW1vLWZpYi1yaWdodC5jZW50ZXIpOwogICAgIFxub2RlW2JlbG93PTEwbW0gb2YgbWVtby1m aWItbGVmdCxhbGlnbj1sZWZ0LGFuY2hvcj1ub3J0aF0gCiAgICAge3BhcmFtZXRlcnM6IHhcXAog ICAgIGJvZHk6IDx0YWJsZSBsb29rdXAsXFwgb3IgdXNlcyBmPn0gCiAgICAgZWRnZVs8LV0gKG1l bW8tZmliLWxlZnQuY2VudGVyKTsKICAgICBcZHJhd1s8LSx0byBwYXRoPXstLSArKygtMmNtLDAp IHwtICgkIChcdGlrenRvdGFyZ2V0KSAtICgwLDFjbSkgJCl9IAogICAgICAgICAgICAgICAgICAg ICAgIC0tIChcdGlrenRvdGFyZ2V0KV0gCiAgICAgKG1lbW8tZmliLndlc3QpIHRvIChtZW1vLWZp Yi1nbG9iYWwuZWFzdCk7CiAgICAgXHBhdGggKCQgKEUyLWVudi5zb3V0aCB3ZXN0KSEwLjIhKEUy LWVudi5zb3V0aCBlYXN0KSAkKSBub2RlKGZha2UpIHt9CiAgICAgIG5vZGUgW2JveCxiZWxvdz0x Y20gb2YgZmFrZV0gKGZha2UyKSB7bjogM30gZWRnZVstPl0gKGZha2UpCiAgICAgIG5vZGUgW2Jl bG93PTVtbSBvZiBmYWtlMl0gezxtZW1vLWZpYi4uLj59OwogICAgIFxwYXRoICgkIChFMi1lbnYu c291dGggd2VzdCkhMC40IShFMi1lbnYuc291dGggZWFzdCkgJCkgbm9kZShmYWtlKSB7fQogICAg ICBub2RlIFtib3gsYmVsb3c9MWNtIG9mIGZha2VdIChmYWtlMikge246IDJ9IGVkZ2VbLT5dIChm YWtlKQogICAgICBub2RlIFtiZWxvdz01bW0gb2YgZmFrZTJdIHs8bWVtby1maWIuLi4+fTsKICAg ICBccGF0aCAoJCAoRTItZW52LnNvdXRoIHdlc3QpITAuNiEoRTItZW52LnNvdXRoIGVhc3QpICQp IG5vZGUoZmFrZSkge30KICAgICAgbm9kZSBbYm94LGJlbG93PTFjbSBvZiBmYWtlXSAoZmFrZTIp IHtuOiAxfSBlZGdlWy0+XSAoZmFrZSkKICAgICAgbm9kZSBbYmVsb3c9NW1tIG9mIGZha2UyXSB7 PG1lbW8tZmliLi4uPn07CgpcZW5ke3Rpa3pwaWN0dXJlfQojK2VuZF9zcmMKCiMrUkVTVUxUUzog ZXhlcmNpc2UtMy0yNwpbW2ZpbGU6ZXhlcmNpc2UtMy0yNy5wbmddXQoKSSBhbSBub3Qgc3VyZSB0 aGlzIGlzIHZlcnkgZXhwbGFuYXRvcnksIGJ1dCBzZWVtcyB0byBkbyB0aGUgam9iLi4uCgoKKioq IENpcmN1aXQgc2ltdWxhdGlvbiBjb2RlCgpJIGFtIHNlcGFyYXRpbmcgdGhlIGNpcmN1aXQgc2lt dWxhdGlvbiBjb2RlIGludG8gYSBzZXBhcmF0ZSBzZWN0aW9uLCBiZWNhdXNlCml0IGlzIGFsbCB2 ZXJ5IG1lc3N5IGFuZCBzY2F0dGVyZWQsIGFuZCB3b3VsZCBiZSBpbnRlcmZlcmluZyB3aXRoIGp1 c3QKc29sdmluZyBleGVyY2lzZXMuCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6 cmVzdWx0cyB2YWx1ZSA6bm93ZWItcmVmIGNpcmN1aXQtc2ltdWxhdG9yLTEKKGRlZmluZSBkZWxh eSAjZikKICAoZGVmaW5lIChnZXQtc2lnbmFsIHdpcmUpICh3aXJlICdnZXQtc2lnbmFsKSkKICAo ZGVmaW5lIChzZXQtc2lnbmFsISB3aXJlIG5ldy12YWx1ZSkKICAgICgod2lyZSAnc2V0LXNpZ25h bCEpIG5ldy12YWx1ZSkpCiAgKGRlZmluZSAoYWRkLWFjdGlvbiEgd2lyZSBhY3Rpb24tcHJvY2Vk dXJlKQogICAgKCh3aXJlICdhZGQtYWN0aW9uISkgYWN0aW9uLXByb2NlZHVyZSkpCgogIChkZWZp bmUgKGNhbGwtZWFjaCBwcm9jZWR1cmVzKQogICAgKGlmIChudWxsPyBwcm9jZWR1cmVzKQoJJ2Rv bmUKCShiZWdpbiAoKGNhciBwcm9jZWR1cmVzKSkKCSAgICAgICAoY2FsbC1lYWNoIChjZHIgcHJv Y2VkdXJlcykpKSkpCgogIChkZWZpbmUgKG1ha2Utd2lyZSkKICAgIChsZXQgKChzaWduYWwtdmFs dWUgMCkgKGFjdGlvbi1wcm9jZWR1cmVzICcoKSkpCiAgICAgIChkZWZpbmUgKHNldC1teS1zaWdu YWwhIG5ldy12YWx1ZSkKCShpZiAobm90ICg9IHNpZ25hbC12YWx1ZSBuZXctdmFsdWUpKQoJICAg IChiZWdpbiAoc2V0ISBzaWduYWwtdmFsdWUgbmV3LXZhbHVlKQoJCSAgIChjYWxsLWVhY2ggYWN0 aW9uLXByb2NlZHVyZXMpKQoJICAgICdkb25lKSkKICAgICAgKGRlZmluZSAoYWNjZXB0LWFjdGlv bi1wcm9jZWR1cmUhIHByb2MpCgkoc2V0ISBhY3Rpb24tcHJvY2VkdXJlcwoJICAoY29ucyBwcm9j IGFjdGlvbi1wcm9jZWR1cmVzKSkKCShwcm9jKSkKICAgICAgKGRlZmluZSAoZGlzcGF0Y2ggbSkK CShjb25kICgoZXE/IG0gJ2dldC1zaWduYWwpIHNpZ25hbC12YWx1ZSkKCSAgICAgICgoZXE/IG0g J3NldC1zaWduYWwhKSBzZXQtbXktc2lnbmFsISkKCSAgICAgICgoZXE/IG0gJ2FkZC1hY3Rpb24h KSBhY2NlcHQtYWN0aW9uLXByb2NlZHVyZSEpCgkgICAgICAoZWxzZSAoZXJyb3IgIlVua25vd24g b3BlcmF0aW9uOiBXSVJFIiBtKSkpKQogICAgICBkaXNwYXRjaCkpCgogIChkZWZpbmUgYSAobWFr ZS13aXJlKSkKICAoZGVmaW5lIGIgKG1ha2Utd2lyZSkpCiAgKGRlZmluZSBjIChtYWtlLXdpcmUp KQogIChkZWZpbmUgZCAobWFrZS13aXJlKSkKICAoZGVmaW5lIGUgKG1ha2Utd2lyZSkpCiAgKGRl ZmluZSBzIChtYWtlLXdpcmUpKQoKICAoZGVmaW5lIChoYWxmLWFkZGVyIGEgYiBzIGMpCiAgICAo bGV0ICgoZCAobWFrZS13aXJlKSkgKGUgKG1ha2Utd2lyZSkpKQogICAgICAob3ItZ2F0ZSBhIGIg ZCkKICAgICAgKGFuZC1nYXRlIGEgYiBjKQogICAgICAoaW52ZXJ0ZXIgYyBlKQogICAgICAoYW5k LWdhdGUgZCBlIHMpCiAgICAgICdvaykpCgogIChkZWZpbmUgKGZ1bGwtYWRkZXIgYSBiIGMtaW4g c3VtIGMtb3V0KQogICAgKGxldCAoKHMgKG1ha2Utd2lyZSkpIChjMSAobWFrZS13aXJlKSkgKGMy IChtYWtlLXdpcmUpKSkKICAgICAgKGhhbGYtYWRkZXIgYiBjLWluIHMgYzEpCiAgICAgIChoYWxm LWFkZGVyIGEgcyBzdW0gYzIpCiAgICAgIChvci1nYXRlIGMxIGMyIGMtb3V0KQogICAgICAnb2sp KQoKICAoZGVmaW5lIChpbnZlcnRlciBpbnB1dCBvdXRwdXQpCiAgICAoZGVmaW5lIChpbnZlcnQt aW5wdXQpCiAgICAgIChsZXQgKChuZXctdmFsdWUgKGxvZ2ljYWwtbm90IChnZXQtc2lnbmFsIGlu cHV0KSkpKQogICAgICAgICM7KHNob3cgI3QgIkludmVydGVyLWRlbGF5PSIgaW52ZXJ0ZXItZGVs YXkgIlxuIikgICAgICAgIAoJKGFmdGVyLWRlbGF5IGludmVydGVyLWRlbGF5CgkJICAgICAobGFt YmRhICgpIChzZXQtc2lnbmFsISBvdXRwdXQgbmV3LXZhbHVlKSkpKSkKICAgIChhZGQtYWN0aW9u ISBpbnB1dCBpbnZlcnQtaW5wdXQpICdvaykKICAoZGVmaW5lIChsb2dpY2FsLW5vdCBzKQogICAg KGNvbmQgKCg9IHMgMCkgMSkKCSAgKCg9IHMgMSkgMCkKCSAgKGVsc2UgKGVycm9yICJJbnZhbGlk IHNpZ25hbCIgcykpKSkgIAoKICAoZGVmaW5lIChhZnRlci1kZWxheSBkZWxheWQgYWN0aW9uKQog ICAgKGFkZC10by1hZ2VuZGEhICgrIGRlbGF5ZCAoY3VycmVudC10aW1lIHRoZS1hZ2VuZGEpKQoJ CSAgICBhY3Rpb24KCQkgICAgdGhlLWFnZW5kYSkpCgogIChkZWZpbmUgKHByb3BhZ2F0ZSkKICAg ICM7KHNob3cgI3QgInByb3BhZ2F0ZTogYWdlbmRhPSIgKGRpc3BsYXllZCB0aGUtYWdlbmRhKSAi XG4iKQogICAgKGlmIChlbXB0eS1hZ2VuZGE/IHRoZS1hZ2VuZGEpCgknZG9uZQoJKGxldCAoKGZp cnN0LWl0ZW0gKGZpcnN0LWFnZW5kYS1pdGVtIHRoZS1hZ2VuZGEpKSkKCSAgKGZpcnN0LWl0ZW0p CgkgIChyZW1vdmUtZmlyc3QtYWdlbmRhLWl0ZW0hIHRoZS1hZ2VuZGEpCgkgIChwcm9wYWdhdGUp KSkpCgogIChkZWZpbmUgKHByb2JlIG5hbWUgd2lyZSkKICAgIChhZGQtYWN0aW9uISB3aXJlCgkJ IChsYW1iZGEgKCkKCQkgICAobmV3bGluZSkKCQkgICAoZGlzcGxheSBuYW1lKSAoZGlzcGxheSAi ICIpCiAgICAgICAgICAgICAgICAgICAoZGlzcGxheSAidGltZT0gIikKCQkgICAoZGlzcGxheSAo Y3VycmVudC10aW1lIHRoZS1hZ2VuZGEpKQoJCSAgIChkaXNwbGF5ICIgIE5ldy12YWx1ZSA9ICIp CgkJICAgKGRpc3BsYXkgKGdldC1zaWduYWwgd2lyZSkpKSkpCgogIDw8cXVldWU+PgoKICAoZGVm aW5lIChtYWtlLXRpbWUtc2VnbWVudCB0aW1lIHF1ZXVlKQogICAgKGNvbnMgdGltZSBxdWV1ZSkp CiAgKGRlZmluZSAoc2VnbWVudC10aW1lIHMpIChjYXIgcykpCiAgKGRlZmluZSAoc2VnbWVudC1x dWV1ZSBzKSAoY2RyIHMpKQoKICAoZGVmaW5lIChtYWtlLWFnZW5kYSkgKGxpc3QgMCkpCiAgKGRl ZmluZSAoY3VycmVudC10aW1lIGFnZW5kYSkgKGNhciBhZ2VuZGEpKQogIChkZWZpbmUgKHNldC1j dXJyZW50LXRpbWUhIGFnZW5kYSB0aW1lKQogICAgKHNldC1jYXIhIGFnZW5kYSB0aW1lKSkKICAo ZGVmaW5lIChzZWdtZW50cyBhZ2VuZGEpIChjZHIgYWdlbmRhKSkKICAoZGVmaW5lIChzZXQtc2Vn bWVudHMhIGFnZW5kYSBzZWdtZW50cykKICAgIChzZXQtY2RyISBhZ2VuZGEgc2VnbWVudHMpKQog IChkZWZpbmUgKGZpcnN0LXNlZ21lbnQgYWdlbmRhKSAoY2FyIChzZWdtZW50cyBhZ2VuZGEpKSkK ICAoZGVmaW5lIChyZXN0LXNlZ21lbnRzIGFnZW5kYSkgKGNkciAoc2VnbWVudHMgYWdlbmRhKSkp CgogIChkZWZpbmUgKGVtcHR5LWFnZW5kYT8gYWdlbmRhKQogICAgKG51bGw/IChzZWdtZW50cyBh Z2VuZGEpKSkKCiAgKGRlZmluZSAoYWRkLXRvLWFnZW5kYSEgdGltZSBhY3Rpb24gYWdlbmRhKQog ICAgKGRlZmluZSAoYmVsb25ncy1iZWZvcmU/IHNlZ21lbnRzKQogICAgICAob3IgKG51bGw/IHNl Z21lbnRzKQoJICg8IHRpbWUgKHNlZ21lbnQtdGltZSAoY2FyIHNlZ21lbnRzKSkpKSkKICAgIChk ZWZpbmUgKG1ha2UtbmV3LXRpbWUtc2VnbWVudCB0aW1lIGFjdGlvbikKICAgICAgKGxldCAoKHEg KG1ha2UtcXVldWUpKSkKCShpbnNlcnQtcXVldWUhIHEgYWN0aW9uKQoJKG1ha2UtdGltZS1zZWdt ZW50IHRpbWUgcSkpKQogICAgKGRlZmluZSAoYWRkLXRvLXNlZ21lbnRzISBzZWdtZW50cykKICAg ICAgKGlmICg9IChzZWdtZW50LXRpbWUgKGNhciBzZWdtZW50cykpIHRpbWUpCgkgIChpbnNlcnQt cXVldWUhIChzZWdtZW50LXF1ZXVlIChjYXIgc2VnbWVudHMpKQoJCQkgYWN0aW9uKQoJICAobGV0 ICgocmVzdCAoY2RyIHNlZ21lbnRzKSkpCgkgICAgKGlmIChiZWxvbmdzLWJlZm9yZT8gcmVzdCkK CQkoc2V0LWNkciEKCQkgc2VnbWVudHMKCQkgKGNvbnMgKG1ha2UtbmV3LXRpbWUtc2VnbWVudCB0 aW1lIGFjdGlvbikKCQkgICAgICAgKGNkciBzZWdtZW50cykpKQoJCShhZGQtdG8tc2VnbWVudHMh IHJlc3QpKSkpKQogICAgKGxldCAoKHNlZ21lbnRzIChzZWdtZW50cyBhZ2VuZGEpKSkKICAgICAg KGlmIChiZWxvbmdzLWJlZm9yZT8gc2VnbWVudHMpCgkgIChzZXQtc2VnbWVudHMhCgkgICBhZ2Vu ZGEKCSAgIChjb25zIChtYWtlLW5ldy10aW1lLXNlZ21lbnQgdGltZSBhY3Rpb24pCgkJIHNlZ21l bnRzKSkKCSAgKGFkZC10by1zZWdtZW50cyEgc2VnbWVudHMpKSkpCgogIChkZWZpbmUgKHJlbW92 ZS1maXJzdC1hZ2VuZGEtaXRlbSEgYWdlbmRhKQogICAgKGxldCAoKHEgKHNlZ21lbnQtcXVldWUg KGZpcnN0LXNlZ21lbnQgYWdlbmRhKSkpKQogICAgICAoZGVsZXRlLXF1ZXVlISBxKQogICAgICAo aWYgKGVtcHR5LXF1ZXVlPyBxKQoJICAoc2V0LXNlZ21lbnRzISBhZ2VuZGEgKHJlc3Qtc2VnbWVu dHMgYWdlbmRhKSkpKSkKCiAgKGRlZmluZSAoZmlyc3QtYWdlbmRhLWl0ZW0gYWdlbmRhKQogICAg KGlmIChlbXB0eS1hZ2VuZGE/IGFnZW5kYSkKCShlcnJvciAiQWdlbmRhIGlzIGVtcHR5OiBGSVJT VC1BR0VOREEtSVRFTSIpCgkobGV0ICgoZmlyc3Qtc2VnIChmaXJzdC1zZWdtZW50IGFnZW5kYSkp KQogICAgICAgICAgIzsoc2hvdyAjdCAiZi1hLWk6Y3VycmVudC10aW1lPSIgKGNhciBhZ2VuZGEp ICJcbiIpCgkgIChzZXQtY3VycmVudC10aW1lISBhZ2VuZGEKCQkJICAgICAoc2VnbWVudC10aW1l IGZpcnN0LXNlZykpCgkgIChmcm9udC1xdWV1ZSAoc2VnbWVudC1xdWV1ZSBmaXJzdC1zZWcpKSkp KQoKICAoZGVmaW5lIChsb2dpY2FsLWFuZCBzMSBzMikKICAgIChjb25kICgoYW5kICg9IDEgczEp ICg9IHMyIDEpKSAxKQoJICAoZWxzZSAwKSkpCiAgKGRlZmluZSAoYW5kLWdhdGUgYTEgYTIgb3V0 cHV0KQogICAgKGRlZmluZSAoYW5kLWFjdGlvbi1wcm9jZWR1cmUpCiAgICAgIChsZXQgKChuZXct dmFsdWUKCSAgICAgKGxvZ2ljYWwtYW5kIChnZXQtc2lnbmFsIGExKSAoZ2V0LXNpZ25hbCBhMikp KSkKICAgICAgICAjOyhzaG93ICN0ICJBbmQtZ2F0ZS1kZWxheT0iIGFuZC1nYXRlLWRlbGF5ICJc biIpCgkoYWZ0ZXItZGVsYXkKCSBhbmQtZ2F0ZS1kZWxheQoJIChsYW1iZGEgKCkgKHNldC1zaWdu YWwhIG91dHB1dCBuZXctdmFsdWUpKSkpKQogICAgKGFkZC1hY3Rpb24hIGExIGFuZC1hY3Rpb24t cHJvY2VkdXJlKQogICAgKGFkZC1hY3Rpb24hIGEyIGFuZC1hY3Rpb24tcHJvY2VkdXJlKQogICAg J29rKQoKICA8PG9yLWdhdGUtcHJpbWl0aXZlPj4KCiAgIzsoZGlzcGxheSAiRG9uZSBkZWZpbmlu ZyB0aGUgY2lyY3VpdCBzaW11bGF0b3IuXG4iKQogICdkb25lLWRlZmluaW5nLWNpcmN1aXQtc2lt dWxhdG9yCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IGRvbmUtZGVmaW5pbmctY2lyY3VpdC1zaW11 bGF0b3IKCkZvciBleGFtcGxlLCB0aGUgcHJvY2VkdXJlIH5sb2dpY2FsLWFuZH4gaXMgbm90IGlt cGxlbWVudGVkCmFueXdoZXJlLCBzbyB3ZSB3aWxsIG5lZWQgdG8gd3JpdGUgaXQgb3Vyc2VsdmVz LgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IAogICAg PDxjaXJjdWl0LXNpbXVsYXRvci0xPj4KICAgIChkZWZpbmUgdGhlLWFnZW5kYSAobWFrZS1hZ2Vu ZGEpKQogICAgKGRlZmluZSBpbnZlcnRlci1kZWxheSAyKQogICAgKGRlZmluZSBhbmQtZ2F0ZS1k ZWxheSAzKQogICAgKGRlZmluZSBvci1nYXRlLWRlbGF5IDUpCgogICAgKGRlZmluZSBpbnB1dC0x IChtYWtlLXdpcmUpKQogICAgKGRlZmluZSBpbnB1dC0yIChtYWtlLXdpcmUpKQogICAgKGRlZmlu ZSBzdW0gKG1ha2Utd2lyZSkpCiAgICAoZGVmaW5lIGNhcnJ5IChtYWtlLXdpcmUpKQogICAgKHNo b3cgI3QgIihwcm9iZSAnc3VtIHN1bSk6XG4iKQogICAgKHByb2JlICdzdW0gc3VtKQogICAgKHNo b3cgI3QgIlxuKHByb2JlICdjYXJyeSBjYXJyeSk6XG4iKQogICAgKHByb2JlICdjYXJyeSBjYXJy eSkKICAgIChzaG93ICN0ICJcbihoYWxmLWFkZGVyIGlucHV0LTEgaW5wdXQtMiBzdW0gY2Fycnkp OlxuIikKICAgIChoYWxmLWFkZGVyIGlucHV0LTEgaW5wdXQtMiBzdW0gY2FycnkpCiAgICAoc2hv dyAjdCAiXG4oc2V0LXNpZ25hbCEgaW5wdXQtMSAxKTpcbiIpCiAgICAoc2V0LXNpZ25hbCEgaW5w dXQtMSAxKQogICAgKHNob3cgI3QgIlxuKHByb3BhZ2F0ZSk6XG4iKQogICAgKHByb3BhZ2F0ZSkK ICAgIChzaG93ICN0ICJcbihzZXQtc2lnbmFsISBpbnB1dC0yIDEpOlxuIikKICAgIChzZXQtc2ln bmFsISBpbnB1dC0yIDEpICAgIAogICAgKHNob3cgI3QgIlxuKHByb3BhZ2F0ZSk6XG4iKQogICAg KHByb3BhZ2F0ZSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CiMrYmVnaW5fZXhhbXBsZQoocHJvYmUg J3N1bSBzdW0pOgoKKHByb2JlICdjYXJyeSBjYXJyeSk6CgooaGFsZi1hZGRlciBpbnB1dC0xIGlu cHV0LTIgc3VtIGNhcnJ5KToKCihzZXQtc2lnbmFsISBpbnB1dC0xIDEpOgoKKHByb3BhZ2F0ZSk6 Cgooc2V0LXNpZ25hbCEgaW5wdXQtMiAxKToKCihwcm9wYWdhdGUpOgoKY2FycnkgdGltZT0gMTEg IE5ldy12YWx1ZSA9IDEKIytlbmRfZXhhbXBsZQoKCgoqKiogRE9ORSBFeGVyY2lzZSAzLjI4IHBy aW1pdGl2ZSBvci1nYXRlCiAgICBDTE9TRUQ6IFsyMDE5LTEyLTA4IFN1biAyMzo0M10KCkluIHRo aXMgZXhlcmNpc2UsIHRoZXJlIGlzIG9uZSBjYXZlYXQgdGhhdCBtYWtlcyBsaWZlIG9mIHByb2dy YW1tZXJzCm1pc2VyYWJsZS4gVGhhdCBpcywgMCBkb2VzIG5vdCByZXByZXNlbnQgYSBmYWxzZSB2 YWx1ZSBpbiBzY2hlbWUuIFNvCndyaXRpbmcgYSByZWFkYWJsZSBjb2RlIHdhcyBhIGJpdCBkaWZm aWN1bHQsIGFuZCB0aGUgY29kZSBiZWxvdyBpcwpwcm9iYWJseSBub3QgY29ycmVjdC4KCiMrYmVn aW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dCA6bm93ZWItcmVmIG9y LWdhdGUtcHJpbWl0aXZlCihkZWZpbmUgKGxvZ2ljYWwtb3IgczEgczIpCiAgICAoY29uZCAoKG9y ICg9IHMxIDEpICg9IHMyIDEpKSAxKQoJICAoZWxzZSAwKSkpCihkZWZpbmUgKG9yLWdhdGUgYTEg YTIgb3V0cHV0KQogICAgKGRlZmluZSAob3ItYWN0aW9uLXByb2NlZHVyZSkKICAgICAgKGxldCAo KG5ldy12YWx1ZQoJICAgICAobG9naWNhbC1vciAoZ2V0LXNpZ25hbCBhMSkgKGdldC1zaWduYWwg YTIpKSkpCiAgICAgICAgIzsoc2hvdyAjdCAib3ItZ2F0ZS1kZWxheT0iIG9yLWdhdGUtZGVsYXkg IlxuIikKCShhZnRlci1kZWxheQoJIG9yLWdhdGUtZGVsYXkKCSAobGFtYmRhICgpIChzZXQtc2ln bmFsISBvdXRwdXQgbmV3LXZhbHVlKSkpKSkKICAgIChhZGQtYWN0aW9uISBhMSBvci1hY3Rpb24t cHJvY2VkdXJlKQogICAgKGFkZC1hY3Rpb24hIGEyIG9yLWFjdGlvbi1wcm9jZWR1cmUpCiAgICAn b2spCiMrZW5kX3NyYwoKVGhpcyBjb2RlIGlzIHVzZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24u IFtbQ2lyY3VpdCBzaW11bGF0aW9uIGNvZGUKXV0KCioqKiBET05FIEV4ZXJjaXNlIDMuMjkgQ29t cG91bmQgb3ItZ2F0ZQogICAgQ0xPU0VEOiBbMjAxOS0xMi0wOCBTdW4gMjM6NDVdCgpcKCBcdmVl IChhLGIpID0gXHdlZGdlKFxuZWcgYSwgXG5lZyBiKVwpCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4 cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQgOm5vd2ViLXJlZiBvci1nYXRlLXByb2NlZHVyYWwK KGRlZmluZSAob3ItZ2F0ZSBhIGIgYykKICAgIChsZXQgKChkIChtYWtlLXdpcmUpKSAoZSAobWFr ZS13aXJlKSkpCiAgICAgIChpbnZlcnRlciBhIGQpCiAgICAgIChpbnZlcnRlciBiIGUpCiAgICAg IChhbmQtZ2F0ZSBkIGUgYykKICAgICAgJ29rKSkKIytlbmRfc3JjCgpJIGhhdmUgbm8gaWRlYSBo b3cgc2xvdyB0aGlzIHdvcmtzLCBhbmQgd2UgZG9uJ3QgaGF2ZSBhIHNpbXVsYXRpb24gcm91dGlu ZQp0byBjaGVjay4gQnV0IHRoZSBkZWxheSBzaG91bGQgYmUgdGhlIHN1bSBvZiB0aGUgYW5kLWdh dGUgZGVsYXkgYW5kIGp1c3Qgb25lCm9mIHRoZSBpbnZlcnRlciBkZWxheXMgKGJlY2F1c2UgdGhl IHR3byBpbnZlcnRlcnMgd29yayBpbiBwYXJhbGxlbCkuCgoqKiogRE9ORSBFeGVyY2lzZSAzLjMw IHJpcHBsZS1jYXJyeSBhZGRlcgogICAgQ0xPU0VEOiBbMjAxOS0xMi0wOCBTdW4gMjM6NThdCgoj K2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKPDxjaXJjdWl0 LXNpbXVsYXRvci0xPj4KPDxvci1nYXRlLXByaW1pdGl2ZT4+CgogICAgKGRlZmluZSB0aGUtYWdl bmRhIChtYWtlLWFnZW5kYSkpCiAgICAoZGVmaW5lIGludmVydGVyLWRlbGF5IDIpCiAgICAoZGVm aW5lIGFuZC1nYXRlLWRlbGF5IDMpCiAgICAoZGVmaW5lIG9yLWdhdGUtZGVsYXkgNSkKCiAgKGRl ZmluZSAobWFrZS13aXJlLWxpc3QgbiBteS1saXN0KQogICAgKGlmICg9IG4gMCkKCW15LWxpc3QK CShtYWtlLXdpcmUtbGlzdCAoLSBuIDEpIChjb25zIChtYWtlLXdpcmUpIG15LWxpc3QpKSkpCiAg KGRlZmluZSB0ZXN0LWxlbmd0aCAyKQogIChkZWZpbmUgQSAobWFrZS13aXJlLWxpc3QgdGVzdC1s ZW5ndGggJygpKSkKICAoZGVmaW5lIEIgKG1ha2Utd2lyZS1saXN0IHRlc3QtbGVuZ3RoICcoKSkp CiAgKGRlZmluZSBTIChtYWtlLXdpcmUtbGlzdCB0ZXN0LWxlbmd0aCAnKCkpKQogIChkZWZpbmUg QyAobWFrZS13aXJlKSkKCiAgKGRlZmluZSAocmlwcGxlLWNhcnJ5LWFkZGVyIGEgYiBzIGMpCiAg ICAobGV0ICgoQV9uIChjYXIgYSkpCgkgIChCX24gKGNhciBiKSkKCSAgKFNfbiAoY2FyIHMpKQoJ ICAoQ19uLTEgKG1ha2Utd2lyZSkpKQogICAgICAoZnVsbC1hZGRlciBBX24gQl9uIGMgU19uIENf bi0xKQogICAgICAoaWYgKG51bGw/IChjZHIgYSkpCgkgIENfbi0xCgkgIChyaXBwbGUtY2Fycnkt YWRkZXIgKGNkciBhKSAoY2RyIGIpIChjZHIgcykgQ19uLTEpKSkpCiAgKGRlZmluZSBDX291dCAo cmlwcGxlLWNhcnJ5LWFkZGVyIEEgQiBTIEMpKQoKICAocHJvYmUgJ0Nfb3V0IENfb3V0KQogIChz ZXQtc2lnbmFsISAobGlzdC1yZWYgQSAxKSAxKQogIChzZXQtc2lnbmFsISAobGlzdC1yZWYgQSAw KSAxKQogIChzZXQtc2lnbmFsISAobGlzdC1yZWYgQiAxKSAxKQogIChwcm9wYWdhdGUpCiMrZW5k X3NyYwoKIytSRVNVTFRTOgo6IAo6IENfb3V0IHRpbWU9IDAgIE5ldy12YWx1ZSA9IDAKOiBDX291 dCB0aW1lPSAxNiAgTmV3LXZhbHVlID0gMQoKVGhpcyByaXBwbGUtY2FycnktYWRkZXIgaXMgbm90 IHZlcnkgZWZmaWNpZW50LiBBbHNvLCBiaXRzIGFyZSByZXByZXNlbnRlZCBpbgp0aGUgbGl0dGxl LWVuZGluZyBmb3JtYXQuIEFsc28sIHdlIGNhbiBzdGlsbCBub3QgdGVzdCBpdCwgc2luY2UgdGhl CnNpbXVsYXRpb24gZnVuY3Rpb24gaXMgbm90IGdpdmVuLgoKKioqIERPTkUgRXhlcmNpc2UgMy4z MSBJbml0aWFsIHByb3BhZ2F0aW9uIAogICAgQ0xPU0VEOiBbMjAxOS0xMi0wOSBNb24gMDA6MTZd CgpJbml0aWFsIHByb3BhZ2F0aW9uIGlzIG5lZWRlZCBmb3IgaW4gaW5pdGlhbCBpbnRlcm1lZGlh dGUgdmFsdWVzIG9mCnRoZSB3aXJlcyB0byBiZSBjb25zaXN0ZW50LgoKSW4gcGFydGljdWxhciwg bG9vayBhdCB0aGUgaW52ZXJ0ZXIgZ2F0ZS4gSWYgd2UgZG9uJ3QgcnVuCmluaXRpYWxpc2F0aW9u LCB0aGVuIGF0IHRpbWUgMCwgdGhlIGdhdGUgd291bGQgaGF2ZSBpdCdzIGlucHV0IGFzIDAKKHdo aWNoIGlzIGEgbm9ybWFsIHN0YXRlIGZvciBhIG5ld2x5LWNyZWF0ZWQgd2lyZSksIGFuZCBpdCdz IG91dHB1dCBhcwowIHRvby4gQnV0IHRoaXMgY29uZGl0aW9uIGZvciBhbiBpbnZlcnRlciBpcyB3 cm9uZy4KCioqKiBET05FIEV4ZXJjaXNlIDMuMzIgT3JkZXIgbWF0dGVycwogICAgQ0xPU0VEOiBb MjAxOS0xMi0wOSBNb24gMDA6MjZdCgpUaGUgcHJvYmxlbSB3aXRoIGFkZGluZyBvcGVyYXRpb25z IGluIGEgc3RhbmRhcmQgbGlzdCBpcyB0aGF0IHRoZQppbnRlcm1lZGlhdGUgcmVzdWx0cyBhcmUg Z2V0dGluZyBpbiB0aGUgZXhlY3V0aW9uIGFmdGVyIHRoZSBmaW5hbApvbmVzLgoKSW4gdGhpcyBw YXJ0aWN1bGFyIGV4YW1wbGUsIGNoYW5naW5nICgwLDEpIHRvICgxLDApLCB3ZSBoYXZlIHRvIGdv CnRocm91Z2ggKDEsMSkuIEFuZCBpdCBkb2Vzbid0IG1hdHRlciB0aGFuIHdlIGFyZSBnb2luZyB0 byAoMSwwKSBhZnRlciwKYmVjYXVzZSB0aGUgc2ltdWxhdGlvbiBmb3IgKDEsMSkgd2lsbCBiZSBp biB0aGUgcXVldWUgbGF0ZXIuIAoKKioqIENvbnN0cmFpbnQgcHJvcGFnYXRpb24gc3lzdGVtCgpJ biB0aGlzIHNlY3Rpb24gSSB3aWxsIHBsYWNlIGNvbW1vbiBjb2RlIGZvciB0aGUgY29uc3RyYWlu dApwcm9wYWdhdGlvbiBzeXN0ZW0sIGJlY2F1c2UgaXQgaXMgcXVpdGUgYmlnLgoKIytiZWdpbl9z cmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgdmFsdWUgOm5vd2ViLXJlZiBjb25zdHJh aW50cy1zeXN0ZW0KICAoZGVmaW5lIGZhbHNlICNmKQogIChkZWZpbmUgdHJ1ZSAjdCkKICAoZGVm aW5lIChhZGRlciBhMSBhMiBzdW0pCiAgICAoZGVmaW5lIChwcm9jZXNzLW5ldy12YWx1ZSkKICAg ICAgKGNvbmQgKChhbmQgKGhhcy12YWx1ZT8gYTEpIChoYXMtdmFsdWU/IGEyKSkKCSAgICAgKHNl dC12YWx1ZSEgc3VtCgkJCSAoKyAoZ2V0LXZhbHVlIGExKSAoZ2V0LXZhbHVlIGEyKSkKCQkJIG1l KSkKCSAgICAoKGFuZCAoaGFzLXZhbHVlPyBhMSkgKGhhcy12YWx1ZT8gc3VtKSkKCSAgICAgKHNl dC12YWx1ZSEgYTIKCQkJICgtIChnZXQtdmFsdWUgc3VtKSAoZ2V0LXZhbHVlIGExKSkKCQkJIG1l KSkKCSAgICAoKGFuZCAoaGFzLXZhbHVlPyBhMikgKGhhcy12YWx1ZT8gc3VtKSkKCSAgICAgKHNl dC12YWx1ZSEgYTEKCQkJICgtIChnZXQtdmFsdWUgc3VtKSAoZ2V0LXZhbHVlIGEyKSkKCQkJIG1l KSkpKQogICAgKGRlZmluZSAocHJvY2Vzcy1mb3JnZXQtdmFsdWUpCiAgICAgIChmb3JnZXQtdmFs dWUhIHN1bSBtZSkKICAgICAgKGZvcmdldC12YWx1ZSEgYTEgbWUpCiAgICAgIChmb3JnZXQtdmFs dWUhIGEyIG1lKQogICAgICAocHJvY2Vzcy1uZXctdmFsdWUpKQogICAgKGRlZmluZSAobWUgcmVx dWVzdCkKICAgICAgKGNvbmQgKChlcT8gcmVxdWVzdCAnSS1oYXZlLWEtdmFsdWUpCgkgICAgIChw cm9jZXNzLW5ldy12YWx1ZSkpCgkgICAgKChlcT8gcmVxdWVzdCAnSS1sb3N0LW15LXZhbHVlKSAo cHJvY2Vzcy1mb3JnZXQtdmFsdWUpKQoJICAgIChlbHNlIChlcnJvciAiVW5rbm93biByZXF1ZXN0 OiBBRERFUiIgcmVxdWVzdCkpKSkKICAgIChjb25uZWN0IGExIG1lKQogICAgKGNvbm5lY3QgYTIg bWUpCiAgICAoY29ubmVjdCBzdW0gbWUpCiAgICBtZSkKCiAgKGRlZmluZSAoaW5mb3JtLWFib3V0 LXZhbHVlIGNvbnN0cmFpbnQpCiAgICAoY29uc3RyYWludCAnSS1oYXZlLWEtdmFsdWUpKQogIChk ZWZpbmUgKGluZm9ybS1hYm91dC1uby12YWx1ZSBjb25zdHJhaW50KQogICAgKGNvbnN0cmFpbnQg J0ktbG9zdC1teS12YWx1ZSkpCgogIChkZWZpbmUgKG11bHRpcGxpZXIgbTEgbTIgcHJvZHVjdCkK ICAgIChkZWZpbmUgKHByb2Nlc3MtbmV3LXZhbHVlKQogICAgICAoY29uZCAoKG9yIChhbmQgKGhh cy12YWx1ZT8gbTEpICg9IChnZXQtdmFsdWUgbTEpIDApKQoJCSAoYW5kIChoYXMtdmFsdWU/IG0y KSAoPSAoZ2V0LXZhbHVlIG0yKSAwKSkpCgkgICAgIChzZXQtdmFsdWUhIHByb2R1Y3QgMCBtZSkp CgkgICAgKChhbmQgKGhhcy12YWx1ZT8gbTEpIChoYXMtdmFsdWU/IG0yKSkKCSAgICAgKHNldC12 YWx1ZSEgcHJvZHVjdAoJCQkgKCogKGdldC12YWx1ZSBtMSkgKGdldC12YWx1ZSBtMikpCgkJCSBt ZSkpCgkgICAgKChhbmQgKGhhcy12YWx1ZT8gcHJvZHVjdCkgKGhhcy12YWx1ZT8gbTEpKQoJICAg ICAoc2V0LXZhbHVlISBtMgoJCQkgKC8gKGdldC12YWx1ZSBwcm9kdWN0KQoJCQkgICAgKGdldC12 YWx1ZSBtMSkpCgkJCSBtZSkpCgkgICAgKChhbmQgKGhhcy12YWx1ZT8gcHJvZHVjdCkgKGhhcy12 YWx1ZT8gbTIpKQoJICAgICAoc2V0LXZhbHVlISBtMQoJCQkgKC8gKGdldC12YWx1ZSBwcm9kdWN0 KQoJCQkgICAgKGdldC12YWx1ZSBtMikpCgkJCSBtZSkpKSkKICAgIChkZWZpbmUgKHByb2Nlc3Mt Zm9yZ2V0LXZhbHVlKQogICAgICAoZm9yZ2V0LXZhbHVlISBwcm9kdWN0IG1lKQogICAgICAoZm9y Z2V0LXZhbHVlISBtMSBtZSkKICAgICAgKGZvcmdldC12YWx1ZSEgbTIgbWUpCiAgICAgIChwcm9j ZXNzLW5ldy12YWx1ZSkpCiAgICAoZGVmaW5lIChtZSByZXF1ZXN0KQogICAgICAoY29uZCAoKGVx PyByZXF1ZXN0ICdJLWhhdmUtYS12YWx1ZSkKCSAgICAgKHByb2Nlc3MtbmV3LXZhbHVlKSkKCSAg ICAoKGVxPyByZXF1ZXN0ICdJLWxvc3QtbXktdmFsdWUpIChwcm9jZXNzLWZvcmdldC12YWx1ZSkp CgkgICAgKGVsc2UgKGVycm9yICJVbmtub3duIHJlcXVlc3Q6IE1VTFRJUExJRVIiCgkJCSByZXF1 ZXN0KSkpKQogICAgKGNvbm5lY3QgbTEgbWUpCiAgICAoY29ubmVjdCBtMiBtZSkKICAgIChjb25u ZWN0IHByb2R1Y3QgbWUpCiAgICBtZSkKCiAgKGRlZmluZSAoY29uc3RhbnQgdmFsdWUgY29ubmVj dG9yKQogICAgKGRlZmluZSAobWUgcmVxdWVzdCkKICAgICAgKGVycm9yICJVbmtub3duIHJlcXVl c3Q6IENPTlNUQU5UIiByZXF1ZXN0KSkKICAgIChjb25uZWN0IGNvbm5lY3RvciBtZSkKICAgIChz ZXQtdmFsdWUhIGNvbm5lY3RvciB2YWx1ZSBtZSkKICAgIG1lKQoKICAoZGVmaW5lIChwcm9iZSBu YW1lIGNvbm5lY3RvcikKICAgIChkZWZpbmUgKHByaW50LXByb2JlIHZhbHVlKQogICAgICAobmV3 bGluZSkgKGRpc3BsYXkgIlByb2JlOiAiKSAoZGlzcGxheSBuYW1lKQogICAgICAoZGlzcGxheSAi ID0gIikgKGRpc3BsYXkgdmFsdWUpKQogICAgKGRlZmluZSAocHJvY2Vzcy1uZXctdmFsdWUpCiAg ICAgIChwcmludC1wcm9iZSAoZ2V0LXZhbHVlIGNvbm5lY3RvcikpKQogICAgKGRlZmluZSAocHJv Y2Vzcy1mb3JnZXQtdmFsdWUpIChwcmludC1wcm9iZSAiPyIpKQogICAgKGRlZmluZSAobWUgcmVx dWVzdCkKICAgICAgKGNvbmQgKChlcT8gcmVxdWVzdCAnSS1oYXZlLWEtdmFsdWUpCgkgICAgIChw cm9jZXNzLW5ldy12YWx1ZSkpCgkgICAgKChlcT8gcmVxdWVzdCAnSS1sb3N0LW15LXZhbHVlKSAo cHJvY2Vzcy1mb3JnZXQtdmFsdWUpKQoJICAgIChlbHNlIChlcnJvciAiVW5rbm93biByZXF1ZXN0 OiBQUk9CRSIgcmVxdWVzdCkpKSkKICAgIChjb25uZWN0IGNvbm5lY3RvciBtZSkKICAgIG1lKQoK ICAoZGVmaW5lIChtYWtlLWNvbm5lY3RvcikKICAgIChsZXQgKCh2YWx1ZSBmYWxzZSkgKGluZm9y bWFudCBmYWxzZSkgKGNvbnN0cmFpbnRzICcoKSkpCiAgICAgIChkZWZpbmUgKHNldC1teS12YWx1 ZSBuZXd2YWwgc2V0dGVyKQoJKGNvbmQgKChub3QgKGhhcy12YWx1ZT8gbWUpKQoJICAgICAgIChz ZXQhIHZhbHVlIG5ld3ZhbCkKCSAgICAgICAoc2V0ISBpbmZvcm1hbnQgc2V0dGVyKQoJICAgICAg IChmb3ItZWFjaC1leGNlcHQgc2V0dGVyCgkJCQlpbmZvcm0tYWJvdXQtdmFsdWUKCQkJCWNvbnN0 cmFpbnRzKSkKCSAgICAgICgobm90ICg9IHZhbHVlIG5ld3ZhbCkpCgkgICAgICAgKGVycm9yICJD b250cmFkaWN0aW9uIiAobGlzdCB2YWx1ZSBuZXd2YWwpKSkKCSAgICAgIChlbHNlICdpZ25vcmVk KSkpCiAgICAgIChkZWZpbmUgKGZvcmdldC1teS12YWx1ZSByZXRyYWN0b3IpCgkoaWYgKGVxPyBy ZXRyYWN0b3IgaW5mb3JtYW50KQoJICAgIChiZWdpbiAoc2V0ISBpbmZvcm1hbnQgZmFsc2UpCgkJ ICAgKGZvci1lYWNoLWV4Y2VwdCByZXRyYWN0b3IKCQkJCSAgICBpbmZvcm0tYWJvdXQtbm8tdmFs dWUKCQkJCSAgICBjb25zdHJhaW50cykpCgkgICAgJ2lnbm9yZWQpKQogICAgICAoZGVmaW5lIChj b25uZWN0IG5ldy1jb25zdHJhaW50KQoJKGlmIChub3QgKG1lbXEgbmV3LWNvbnN0cmFpbnQgY29u c3RyYWludHMpKQoJICAgIChzZXQhIGNvbnN0cmFpbnRzCgkgICAgICAoY29ucyBuZXctY29uc3Ry YWludCBjb25zdHJhaW50cykpKQoJKGlmIChoYXMtdmFsdWU/IG1lKQoJICAgIChpbmZvcm0tYWJv dXQtdmFsdWUgbmV3LWNvbnN0cmFpbnQpKQoJJ2RvbmUpCiAgICAgIChkZWZpbmUgKG1lIHJlcXVl c3QpCgkoY29uZCAoKGVxPyByZXF1ZXN0ICdoYXMtdmFsdWU/KQoJICAgICAgIChpZiBpbmZvcm1h bnQgdHJ1ZSBmYWxzZSkpCgkgICAgICAoKGVxPyByZXF1ZXN0ICd2YWx1ZSkgdmFsdWUpCgkgICAg ICAoKGVxPyByZXF1ZXN0ICdzZXQtdmFsdWUhKSBzZXQtbXktdmFsdWUpCgkgICAgICAoKGVxPyBy ZXF1ZXN0ICdmb3JnZXQpIGZvcmdldC1teS12YWx1ZSkKCSAgICAgICgoZXE/IHJlcXVlc3QgJ2Nv bm5lY3QpIGNvbm5lY3QpCgkgICAgICAoZWxzZSAoZXJyb3IgIlVua25vd24gb3BlcmF0aW9uOiBD T05ORUNUT1IiCgkJCSAgIHJlcXVlc3QpKSkpCiAgICAgIG1lKSkKCiAgKGRlZmluZSAoZm9yLWVh Y2gtZXhjZXB0IGV4Y2VwdGlvbiBwcm9jZWR1cmUgbGlzdCkKICAgIChkZWZpbmUgKGxvb3AgaXRl bXMpCiAgICAgIChjb25kICgobnVsbD8gaXRlbXMpICdkb25lKQoJICAgICgoZXE/IChjYXIgaXRl bXMpIGV4Y2VwdGlvbikgKGxvb3AgKGNkciBpdGVtcykpKQoJICAgIChlbHNlIChwcm9jZWR1cmUg KGNhciBpdGVtcykpCgkJCSAobG9vcCAoY2RyIGl0ZW1zKSkpKSkKICAgIChsb29wIGxpc3QpKQoK ICAoZGVmaW5lIChoYXMtdmFsdWU/IGNvbm5lY3RvcikKICAgIChjb25uZWN0b3IgJ2hhcy12YWx1 ZT8pKQogIChkZWZpbmUgKGdldC12YWx1ZSBjb25uZWN0b3IpCiAgICAoY29ubmVjdG9yICd2YWx1 ZSkpCiAgKGRlZmluZSAoc2V0LXZhbHVlISBjb25uZWN0b3IgbmV3LXZhbHVlIGluZm9ybWFudCkK ICAgICgoY29ubmVjdG9yICdzZXQtdmFsdWUhKSBuZXctdmFsdWUgaW5mb3JtYW50KSkKICAoZGVm aW5lIChmb3JnZXQtdmFsdWUhIGNvbm5lY3RvciByZXRyYWN0b3IpCiAgICAoKGNvbm5lY3RvciAn Zm9yZ2V0KSByZXRyYWN0b3IpKQogIChkZWZpbmUgKGNvbm5lY3QgY29ubmVjdG9yIG5ldy1jb25z dHJhaW50KQogICAgKChjb25uZWN0b3IgJ2Nvbm5lY3QpIG5ldy1jb25zdHJhaW50KSkKCiMrZW5k X3NyYwoKIytSRVNVTFRTOgo6ICM8dW5kZWY+CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMg Ym90aCA6cmVzdWx0cyBvdXRwdXQKICA8PGNvbnN0cmFpbnRzLXN5c3RlbT4+CiAgKGRlZmluZSAo Y2Vsc2l1cy1mYWhyZW5oZWl0LWNvbnZlcnRlciBjIGYpCiAgICAobGV0ICgodSAobWFrZS1jb25u ZWN0b3IpKQoJICAodiAobWFrZS1jb25uZWN0b3IpKQoJICAodyAobWFrZS1jb25uZWN0b3IpKQoJ ICAoeCAobWFrZS1jb25uZWN0b3IpKQoJICAoeSAobWFrZS1jb25uZWN0b3IpKSkKICAgICAgKG11 bHRpcGxpZXIgYyB3IHUpCiAgICAgIChtdWx0aXBsaWVyIHYgeCB1KQogICAgICAoYWRkZXIgdiB5 IGYpCiAgICAgIChjb25zdGFudCA5IHcpCiAgICAgIChjb25zdGFudCA1IHgpCiAgICAgIChjb25z dGFudCAzMiB5KQogICAgICAnb2spKQoKICAoZGVmaW5lIEMgKG1ha2UtY29ubmVjdG9yKSkKICAo ZGVmaW5lIEYgKG1ha2UtY29ubmVjdG9yKSkKCiAgKGNlbHNpdXMtZmFocmVuaGVpdC1jb252ZXJ0 ZXIgQyBGKQogIChwcm9iZSAiQ2Vsc2l1cyB0ZW1wIiBDKQogIChwcm9iZSAiRmFocmVuaGVpdCB0 ZW1wIiBGKQoKICAoc2V0LXZhbHVlISBDIDI1ICd1c2VyKQogICM7KHNldC12YWx1ZSEgRiAyMTIg J3VzZXIpICM7KCJlcnJvcnMiKQogIChmb3JnZXQtdmFsdWUhIEMgJ3VzZXIpCiAgKHNldC12YWx1 ZSEgRiAyMTIgJ3VzZXIpCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAKOiBQcm9iZTogQ2Vsc2l1 cyB0ZW1wID0gMjUKOiBQcm9iZTogRmFocmVuaGVpdCB0ZW1wID0gNzcKOiBQcm9iZTogQ2Vsc2l1 cyB0ZW1wID0gPwo6IFByb2JlOiBGYWhyZW5oZWl0IHRlbXAgPSA/CjogUHJvYmU6IEZhaHJlbmhl aXQgdGVtcCA9IDIxMgo6IFByb2JlOiBDZWxzaXVzIHRlbXAgPSAxMDAKCioqKiBET05FIEV4ZXJj aXNlIDMuMzMgYXZlcmFnZXIgY29uc3RyYWludAogICAgQ0xPU0VEOiBbMjAxOS0xMi0xOCBXZWQg MTE6MjldCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQg Om5vd2ViLXJlZiBjb25zdHJhaW50cy1hdmVyYWdlcgooZGVmaW5lIChhdmVyYWdlciBhIGIgYykK ICAgIChkZWZpbmUgKHByb2Nlc3MtbmV3LXZhbHVlKQogICAgICAoY29uZCAKCSAgICAoKGFuZCAo aGFzLXZhbHVlPyBhKSAoaGFzLXZhbHVlPyBiKSkKCSAgICAgKHNldC12YWx1ZSEgYwoJCQkgKC8g KCsgKGdldC12YWx1ZSBhKSAoZ2V0LXZhbHVlIGIpKSAyKQoJCQkgbWUpKQoJICAgICgoYW5kICho YXMtdmFsdWU/IGMpIChoYXMtdmFsdWU/IGEpKQoJICAgICAoc2V0LXZhbHVlISBiCgkJCSAoLSAo KiAyIChnZXQtdmFsdWUgcHJvZHVjdCkpCgkJCSAgICAoZ2V0LXZhbHVlIGEpKQoJCQkgbWUpKQoJ ICAgICgoYW5kIChoYXMtdmFsdWU/IGMpIChoYXMtdmFsdWU/IGIpKQoJICAgICAoc2V0LXZhbHVl ISBhCgkJCSAoLSAoKiAyIChnZXQtdmFsdWUgYykpCgkJCSAgICAoZ2V0LXZhbHVlIGIpKQoJCQkg bWUpKSkpCiAgICAoZGVmaW5lIChwcm9jZXNzLWZvcmdldC12YWx1ZSkKICAgICAgKGZvcmdldC12 YWx1ZSEgYyBtZSkKICAgICAgKGZvcmdldC12YWx1ZSEgYSBtZSkKICAgICAgKGZvcmdldC12YWx1 ZSEgYiBtZSkKICAgICAgKHByb2Nlc3MtbmV3LXZhbHVlKSkKICAgIChkZWZpbmUgKG1lIHJlcXVl c3QpCiAgICAgIChjb25kICgoZXE/IHJlcXVlc3QgJ0ktaGF2ZS1hLXZhbHVlKQoJICAgICAocHJv Y2Vzcy1uZXctdmFsdWUpKQoJICAgICgoZXE/IHJlcXVlc3QgJ0ktbG9zdC1teS12YWx1ZSkgKHBy b2Nlc3MtZm9yZ2V0LXZhbHVlKSkKCSAgICAoZWxzZSAoZXJyb3IgIlVua25vd24gcmVxdWVzdDog QVZFUkFHRVIiCgkJCSByZXF1ZXN0KSkpKQogICAgKGNvbm5lY3QgYSBtZSkKICAgIChjb25uZWN0 IGIgbWUpCiAgICAoY29ubmVjdCBjIG1lKQogICAgbWUpCgojK2VuZF9zcmMKCiMrYmVnaW5fc3Jj IHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PGNvbnN0cmFpbnRzLXN5c3Rl bT4+Cjw8Y29uc3RyYWludHMtYXZlcmFnZXI+PgoKKGRlZmluZSBsb2NhbEEgKG1ha2UtY29ubmVj dG9yKSkKKGRlZmluZSBsb2NhbEIgKG1ha2UtY29ubmVjdG9yKSkKKGRlZmluZSBsb2NhbEMgKG1h a2UtY29ubmVjdG9yKSkKKGF2ZXJhZ2VyIGxvY2FsQSBsb2NhbEIgbG9jYWxDKQoKKHByb2JlICJs b2NhbEE6ICIgbG9jYWxBKQoocHJvYmUgImxvY2FsQjogIiBsb2NhbEIpCihwcm9iZSAibG9jYWxD OiAiIGxvY2FsQykKKHNldC12YWx1ZSEgbG9jYWxBIDI1ICd1c2VyKQooc2V0LXZhbHVlISBsb2Nh bEIgMjcgJ3VzZXIpCihndWFyZCAoZXJyIAogICAgICAgICAoZWxzZSAoc2hvdyAjdCAiXG5FeHBl Y3RlZCBmYWlsdXJlOiAiIChkaXNwbGF5ZWQgZXJyKSAiXG4iKSkpCiAgKHNldC12YWx1ZSEgbG9j YWxDIDIyICd1c2VyKSkKKGZvcmdldC12YWx1ZSEgbG9jYWxBICd1c2VyKQooc2V0LXZhbHVlISBs b2NhbEMgMjIgJ3VzZXIpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgojK2JlZ2luX2V4YW1wbGUKClBy b2JlOiBsb2NhbEE6ICA9IDI1ClByb2JlOiBsb2NhbEI6ICA9IDI3ClByb2JlOiBsb2NhbEM6ICA9 IDI2CkV4cGVjdGVkIGZhaWx1cmU6IHtFeGNlcHRpb24gIzE5IHVzZXIgIkNvbnRyYWRpY3Rpb24i ICgoMjYgMjIpKSAjZiAjZn0KClByb2JlOiBsb2NhbEE6ICA9ID8KUHJvYmU6IGxvY2FsQzogID0g PwpQcm9iZTogbG9jYWxDOiAgPSAyMgpQcm9iZTogbG9jYWxBOiAgPSAxNwojK2VuZF9leGFtcGxl CgoqKiogRE9ORSBFeGVyY2lzZSAzLjM0IFdyb25nIHNxdWFyZXIKICAgIENMT1NFRDogWzIwMTkt MTItMTggV2VkIDEyOjMwXQoKVGhlIHByb2JsZW0gd2l0aCB0aGlzIHN5c3RlbSBpcyB0aGF0IHRo ZSBpbnZlcnNpb24gcHJvY2VkdXJlIHdvdWxkbid0CndvcmsuIFRoYXQgaXMsIHRoZSBtdWx0aXBs aWVyIGhhcyB0aHJlZSBjb25uZWN0aW9ucywgYW5kIGV2ZXJ5IHR3bwpkZWZpbmUgdGhlIHRoaXJk IG9uZS4gVGhpcyBpcyBub3QgdGhlIGNhc2Ugd2l0aCB0aGUgc3F1YXJlciwgYXMgaW4gdGhlCmZv cm11bGEgXCggYSBcY2RvdCBhID0gYiBcKSwgaWYgd2UgYXJlIGdpdmVuIFwoYlwpLCB3ZSBpbW1l ZGlhdGVseSBnZXQKdGhlIHZhbHVlIG9uIGJvdGggb2YgdGhlIGNvbm5lY3RvcnMgbGVhZGluZyB0 byBcKGFcKS4KCioqKiBET05FIEV4ZXJjaXNlIDMuMzUgQ29ycmVjdCBzcXVhcmVyCiAgICBDTE9T RUQ6IFsyMDE5LTEyLTE4IFdlZCAxMjo0N10KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBi b3RoIDpyZXN1bHRzIG91dHB1dCA6bm93ZWItcmVmIGNvbnN0cmFpbnRzLXNxdWFyZXIKICAgICAg ICAgIChkZWZpbmUgKHNxdWFyZXIgYSBiKQogICAgICAgICAgICAoZGVmaW5lIChwcm9jZXNzLW5l dy12YWx1ZSkKICAgICAgICAgICAgICAoaWYgKGhhcy12YWx1ZT8gYikKICAgICAgICAgICAgICAg ICAgKGlmICg8IChnZXQtdmFsdWUgYikgMCkKICAgICAgICAgICAgICAgICAgICAgIChlcnJvciAi c3F1YXJlIGxlc3MgdGhhbiAwIC0tIFNRVUFSRVIiIChnZXQtdmFsdWUgYikpCiAgICAgICAgICAg ICAgICAgICAgICAoc2V0LXZhbHVlISBhIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHNxcnQgKGdldC12YWx1ZSBiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1lKSkKICAgICAgICAgICAgICAgICAgKGlmIChoYXMtdmFsdWU/IGEpCiAgICAgICAgICAgICAg ICAgICAgICAoc2V0LXZhbHVlISBiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo KiAoZ2V0LXZhbHVlIGEpIChnZXQtdmFsdWUgYSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtZSkpKSkKICAgICAgICAgICAgKGRlZmluZSAocHJvY2Vzcy1mb3JnZXQtdmFsdWUp IAogICAgICAgICAgICAgICAoZm9yZ2V0LXZhbHVlISBiIG1lKQogICAgICAgICAgICAgICAoZm9y Z2V0LXZhbHVlISBhIG1lKSkKICAgICAgICAgICAgKGRlZmluZSAobWUgcmVxdWVzdCkgCiAgICAg ICAgICAgICAgICAoY29uZCAoKGVxPyByZXF1ZXN0ICdJLWhhdmUtYS12YWx1ZSkKCSAgICAgICAg ICAgICAgICAgKHByb2Nlc3MtbmV3LXZhbHVlKSkKCSAgICAgICAgICAgICAgKChlcT8gcmVxdWVz dCAnSS1sb3N0LW15LXZhbHVlKSAKICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9jZXNzLWZv cmdldC12YWx1ZSkpCgkgICAgKGVsc2UgKGVycm9yICJVbmtub3duIHJlcXVlc3Q6IFNRVUFSRVIi IHJlcXVlc3QpKSkpCiAgICAgICAgICAgIChjb25uZWN0IGEgbWUpCiAgICAgICAgICAgIChjb25u ZWN0IGIgbWUpCiAgICAgICAgICAgIG1lKQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKCiMrYmVnaW5f c3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PGNvbnN0cmFpbnRzLXNx dWFyZXI+Pgo8PGNvbnN0cmFpbnRzLXN5c3RlbT4+CgooZGVmaW5lIGxvY2FsQSAobWFrZS1jb25u ZWN0b3IpKQooZGVmaW5lIGxvY2FsQiAobWFrZS1jb25uZWN0b3IpKQooc3F1YXJlciBsb2NhbEEg bG9jYWxCKQoocHJvYmUgImxvY2FsQTogIiBsb2NhbEEpCihwcm9iZSAibG9jYWxCOiAiIGxvY2Fs QikKKHNldC12YWx1ZSEgbG9jYWxBIDI1ICd1c2VyKQooZ3VhcmQgKGVyciAKICAgICAgICAgKGVs c2UgKHNob3cgI3QgIlxuRXhwZWN0ZWQgZmFpbHVyZTogIiAoZGlzcGxheWVkIGVycikpKSkKICAo c2V0LXZhbHVlISBsb2NhbEIgMjIgJ3VzZXIpKQooZm9yZ2V0LXZhbHVlISBsb2NhbEEgJ3VzZXIp CihzZXQtdmFsdWUhIGxvY2FsQiAyMiAndXNlcikKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogCjog UHJvYmU6IGxvY2FsQTogID0gMjUKOiBQcm9iZTogbG9jYWxCOiAgPSA2MjUKOiBFeHBlY3RlZCBm YWlsdXJlOiB7RXhjZXB0aW9uICMxOSB1c2VyICJDb250cmFkaWN0aW9uIiAoKDYyNSAyMikpICNm ICNmfQo6IFByb2JlOiBsb2NhbEE6ICA9ID8KOiBQcm9iZTogbG9jYWxCOiAgPSA/CjogUHJvYmU6 IGxvY2FsQjogID0gMjIKOiBQcm9iZTogbG9jYWxBOiAgPSA0LjY5MDQxNTc1OTgyMzQzCgoqKiog RE9ORSBFeGVyY2lzZSAzLjM2IENvbm5lY3RvciBlbnZpcm9ubWVudCBkaWFncmFtICAgICAgICAg ICAgICAgICAgIDp0aWt6OgogICAgQ0xPU0VEOiBbMjAxOS0xMi0yMSBTYXQgMjA6MjddCgpXZSBh cmUgc3R1ZHlpbmcgdGhlIGZvbGxvd2luZyBjb2RlOgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9y dHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKKGRlZmluZSBhIChtYWtlLWNvbm5lY3RvcikpCihkZWZp bmUgYiAobWFrZS1jb25uZWN0b3IpKQooc2V0LXZhbHVlISBhIDEwICd1c2VyKQojK2VuZF9zcmMK CiMrbmFtZTogZXhlcmNpc2UtMy0zNgojK2hlYWRlcjogOmltYWdlbWFnaWNrIHllcyA6aW1pbm9w dGlvbnMgLWRlbnNpdHkgMzAwIDppbW91dG9wdGlvbnMgLWdlb21ldHJ5IDEwMDAKIytoZWFkZXI6 IDpmaXQgeWVzIDpoZWFkZXJzICcoIlxcdXNlcGFja2FnZXt0aWt6fSBcXHVzZXRpa3psaWJyYXJ5 e3Bvc2l0aW9uaW5nLGZpdCxwZXRyaSxhcnJvd3MsY2FsYyxtYXRyaXgscXVvdGVzfSIpCiMraGVh ZGVyOiA6YnVmZmVyIG9uCiMrYmVnaW5fc3JjIGxhdGV4IDpyZXN1bHRzIHJhdyBmaWxlIDpleHBv cnRzIGJvdGggOmZpbGUgZXhlcmNpc2UtMy0zNi5wbmcKXGJlZ2lue3Rpa3pwaWN0dXJlfVtpbm5l ciBzZXA9MG1tLD49c3RlYWx0aCcsdmVyeSB0aGljayxjb2xvcj1ibGFjayE1MCwKICAgICAgIGV2 ZXJ5IG5vZGUvLnN0eWxlPXtmb250PVxzZmZhbWlseSxhbGlnbj1sZWZ0fSwKICAgICAgIGZvbnQ9 XHNmZmFtaWx5LHBpY3MvdHdvIGRvdHMvLnN0eWxlPXtjb2RlPXsKICAgICAgIFxub2RlIFtkcmF3 LG1pbmltdW0gc2l6ZT01bW0sY2lyY2xlLGNvbG9yZWQgdG9rZW5zPXtibGFjayE1MH1dIAogICAg ICAgKCMxLWxlZnQpIHt9OwogICAgICBcbm9kZSBbZHJhdyxtaW5pbXVtIHNpemU9NW1tLGNpcmNs ZSxjb2xvcmVkIHRva2Vucz17YmxhY2shNTB9LAogICAgICByaWdodD0wcHQgb2YgIzEtbGVmdF0K CSAgKCMxLXJpZ2h0KSB7fTsKICAgICAgXG5vZGUgW3JlY3RhbmdsZSwgZml0PSgjMS1sZWZ0KSAo IzEtcmlnaHQpXSAoIzEpe307CiAgICAgIH19LAogICAgICBldmVyeSBwaW4gZWRnZS8uc3R5bGU9 ezwtLHZlcnkgdGhpY2t9LAogICAgICBib3gvLnN0eWxlPXtkcmF3LHJlY3RhbmdsZSxpbm5lciBz ZXA9IzF9LGJveC8uZGVmYXVsdD0ybW0sCiAgICAgIGVudmkvLnN0eWxlPXttYXRyaXggb2Ygbm9k ZXMsIGFsaWduPWxlZnQsCiAgICAgICAgICAgICAgICAgIGV2ZXJ5IG5vZGUvLnN0eWxlPXthbmNo b3I9d2VzdH0sIAogICAgICAgICAgICAgICAgICBpbm5lciBzZXA9ezAuN21tfSwKICAgICAgICAg ICAgICAgICAgZXhlY3V0ZSBhdCBlbmQgY2VsbD17XHZwaGFudG9teygpfX0sCiAgICAgICAgICAg ICAgICAgIGRyYXd9LAogICAgICBub2RlIGRpc3RhbmNlPTRtbV0KCiAgICBcbm9kZSAoYS1nbG9i YWwpICB7YTp9OwogICAgXG5vZGUgKGZha2UxKSBbcmlnaHQ9MTUwbW0gb2YgYV0ge307ICAKICAg IFxub2RlIChiLWdsb2JhbCkgW2JlbG93PTRtbSBvZiBhLWdsb2JhbC53ZXN0LGFuY2hvcj13ZXN0 XSB7Yjp9OwogICAgXG5vZGUgKGlvdi1nbG9iYWwpIFtiZWxvdz00bW0gb2YgYi1nbG9iYWwud2Vz dCxhbmNob3I9d2VzdF0ge2luZm9ybS1hYm91dC12YWx1ZTp9OwogICAgXG5vZGUgKHN2LWdsb2Jh bCkgW2JlbG93PTRtbSBvZiBpb3YtZ2xvYmFsLndlc3QsYW5jaG9yPXdlc3RdIHtzZXQtdmFsdWUh On07CgogICAgXG5vZGUgKGctZW52KSBbYm94LCBmaXQ9KGEtZ2xvYmFsKSAoZmFrZTEpIChiLWds b2JhbCkgKGlvdi1nbG9iYWwpIChzdi1nbG9iYWwpLAogICAgcGluPXtbdGV4dCB3aWR0aD0xY20s cGluIGRpc3RhbmNlPTEwbW1dbGVmdDpnbG9iYWwgZW52fV0KICAgIHsgfTsKICAgICBccGF0aCAo JCAoZy1lbnYuc291dGggd2VzdCkhMC4zIShnLWVudi5zb3V0aCBlYXN0KSAkKSBjb29yZGluYXRl IChmYWtlMSkKICAgICAgY29vcmRpbmF0ZVtiZWxvdz0xY20gb2YgZmFrZTFdIChmYWtlKSAoZmFr ZSkgcGlje3R3byBkb3RzPXNldC10by12YWx1ZX0KICAgICAgKHNldC10by12YWx1ZSkgZWRnZVs8 LSx0byBwYXRoPXt8LSAoXHRpa3p0b3RhcmdldCl9XSAoc3YtZ2xvYmFsLmVhc3QpCiAgICAgIChz ZXQtdG8tdmFsdWUtcmlnaHQuY2VudGVyKSBlZGdlWy0+XSAoZmFrZTEgLXwgc2V0LXRvLXZhbHVl LXJpZ2h0LmNlbnRlcik7CgogICAgIFxwYXRoICgkIChnLWVudi5zb3V0aCB3ZXN0KSEwLjUhKGct ZW52LnNvdXRoIGVhc3QpICQpIGNvb3JkaW5hdGUgKGZha2UxKQogICAgICBjb29yZGluYXRlW2Jl bG93PTFjbSBvZiBmYWtlMV0gKGZha2UpIChmYWtlKSBwaWN7dHdvIGRvdHM9aS1hLXZ9CiAgICAg IChpLWEtdikgZWRnZVs8LSx0byBwYXRoPXt8LSAoXHRpa3p0b3RhcmdldCl9XSAoaW92LWdsb2Jh bC5lYXN0KQogICAgICAoaS1hLXYtcmlnaHQuY2VudGVyKSBlZGdlWy0+XSAoZmFrZTEgLXwgaS1h LXYtcmlnaHQuY2VudGVyKTsKCgogICAgIFxwYXRoICgkIChnLWVudi5zb3V0aCB3ZXN0KSEwLjEh KGctZW52LnNvdXRoIGVhc3QpICQpIG5vZGUoZmFrZSkge307CiAgICAgXG1hdHJpeCAoYSkgW2Vu dmksCiAgICAgICAgICAgICAgICAgIGJlbG93PW9mIGZha2VdCiAgICAgewogICAgICAgdmFsdWU6 IDEwXFwKICAgICAgIGluZm9ybWFudDogJ3VzZXJcXAogICAgICAgY29uc3RyYWludHM6ICcoKSBc XAogICAgICAgfChhLXNldC1teS12YWx1ZSl8IHNldC1teS12YWx1ZTogXFwKICAgICAgIHwoYS1m b3JnZXQtbXktdmFsdWUpfCBmb3JnZXQtbXktdmFsdWU6IFxcCiAgICAgICB8KGEtY29ubmVjdCl8 IGNvbm5lY3Q6IFxcCiAgICAgICB8KGEtbWUpfCBtZTpcXAogICAgIH0gZWRnZVstPl0gKGZha2Up OwoKICAgICBccGF0aCBjb29yZGluYXRlW3JpZ2h0PTIuNWNtIG9mIGEtbWVdIChhdXgpCiAgICAg IChhdXgpIHBpY3t0d28gZG90cz1hbWV2fQogICAgICAoYW1ldikgZWRnZSBbPC1dIChhLW1lKSAo YW1ldi1yaWdodC5jZW50ZXIpIAogICAgICAgICAgICAgZWRnZSBbLT4sdG8gcGF0aD17fC0gKFx0 aWt6dG90YXJnZXQpfV0gKCQgKGEuZWFzdCkkKQogICAgICAgICAgICAgbm9kZVtiZWxvdz0wLjVj bSBvZiBhbWV2LWxlZnRdIHtwYXJhbWV0ZXJzOiBuZXd2YWx1ZVxcCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxwaGFudG9te3BhcmFtZXRlcnM6IH1zZXR0ZXJc XCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogLi4u IH0KICAgICAgICAgICAgIGVkZ2VbPC1dIChhbWV2LWxlZnQuY2VudGVyKTsKICAgICBcZHJhd1st Pl0gKGEtZ2xvYmFsLmVhc3QpIHRvW3RvIHBhdGg9eyAgLXwgKFx0aWt6dG90YXJnZXQpfV0gKGFt ZXYpOwoKICAgICBccGF0aCAoJCAoZy1lbnYuc291dGggd2VzdCkhMC45IShnLWVudi5zb3V0aCBl YXN0KSAkKSBub2RlKGZha2UpIHt9OwogICAgIFxtYXRyaXggKGIpIFsgYmVsb3c9b2YgZmFrZSxl bnZpXQogICAgIHsKICAgICAgIHZhbHVlOiBcI2ZcXAogICAgICAgaW5mb3JtYW50OiBcI2ZcXAog ICAgICAgY29uc3RyYWludHM6ICcoKSBcXAogICAgICAgfChiLXNldC1teS12YWx1ZSl8IHNldC1t eS12YWx1ZTogPC4uLj5cXAogICAgICAgfChiLWZvcmdldC1teS12YWx1ZSl8IGZvcmdldC1teS12 YWx1ZTogPC4uLj4gXFwKICAgICAgIHwoYi1jb25uZWN0KXwgY29ubmVjdDogPC4uLj4gXFwKICAg ICAgIHwoYi1tZSl8IG1lOlxcCiAgICAgfSBlZGdlWy0+XSAoZmFrZSk7CgogICAgIFxwYXRoIGNv b3JkaW5hdGVbcmlnaHQ9NDBtbSBvZiBiLW1lXSAoYXV4KQogICAgICAoYXV4KSBwaWN7dHdvIGRv dHM9Ym1ldn0KICAgICAgKGJtZXYpIGVkZ2UgWzwtXSAoYi1tZSkgCiAgICAgICAgICAgICAoYm1l di1yaWdodC5jZW50ZXIpICAKICAgICAgICAgICAgICAgIGVkZ2UgWy0+LHRvIHBhdGg9e3wtIChc dGlrenRvdGFyZ2V0KX1dCiAgICAgICAgICAgICAgICAgICgkIChiLmVhc3QpICsgKDAsMG1tKSQp CiAgICAgICAgICAgICBub2RlW2JlbG93PTAuNWNtIG9mIGJtZXYtbGVmdF0ge3BhcmFtZXRlcnM6 IG5ld3ZhbHVlXFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XHBoYW50b217cGFyYW1ldGVyczogfXNldHRlclxcIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBib2R5OiAuLi4gfQogICAgICAgICAgICAgZWRnZVs8LV0gKGJt ZXYtbGVmdC5jZW50ZXIpOwoKICAgICBcZHJhd1stPl0gKGItZ2xvYmFsLmVhc3QpIHRvW3RvIHBh dGg9ey18IChcdGlrenRvdGFyZ2V0KX1dIChibWV2KTsKCiAgICAgXG1hdHJpeCAoc212KSBbYmVs b3c9MmNtIG9mIGEsIGVudmldCiAgICAgewogICAgICAgbmV3dmFsOiAxMFxcCiAgICAgICBzZXR0 ZXI6ICd1c2VyXFwKICAgICB9IGVkZ2VbLT5dIChhKQogICAgICgkIChhLnNvdXRoKSEwLjUhKHNt di5ub3J0aCkgJCkgbm9kZVthbmNob3I9ZWFzdF0KICAgICAgeyhzZXQtbXktdmFsdWUgMTAgJ3Vz ZXIpfTsKCiAgICAgXG1hdHJpeCAoZmVlKSBbYmVsb3c9MmNtIG9mIHNtdixlbnZpXQogICAgIHsK ICAgICAgZXhjZXB0aW9uOiAndXNlclxcCiAgICAgIHwocHApfCBwcm9jZWR1cmU6XFwKICAgICAg Y29uc3RyYWludHM6ICcoKVxcCiAgICAgIGxvb3A6IDwuLi4+IFxcCiAgICAgfSBlZGdlWy0+XSAo c212KQogICAgICAocHAuZWFzdCkgZWRnZVstPiwgdG8gcGF0aD17LXwgKFx0aWt6dG90YXJnZXQp fV0gKGktYS12KQogICAgICgkIChzbXYuc291dGgpITAuNSEoZmVlLm5vcnRoKSQpIG5vZGVbYW5j aG9yPWVhc3RdCiAgICAgeyhmb3ItZWFjaC1leGNlcHRcXAogICAgICAgJ3VzZXIgXFwKICAgICAg IGluZm9ybS1hYm91dC12YWx1ZSBcXAogICAgICAgJygpKX07CiAgICAgXG1hdHJpeCAobG9vcCkg W2JlbG93PTFjbSBvZiBmZWUsIGVudmldCiAgICAgewogICAgICAgaXRlbXM6ICcoKVxcCiAgICAg fSBlZGdlWy0+XSAoZmVlKQogICAgICgkIChmZWUuc291dGgpITAuNSEobG9vcC5ub3J0aCkgJCkg bm9kZVthbmNob3I9ZWFzdF0KICAgICB7KGxvb3AgJygpKX0KICAgICBub2RlW2JlbG93PW9mIGxv b3AsYW5jaG9yPW5vcnRoXQogICAgIHsoY29uZFxcCiAgICAgICAgKChudWxsPyBpdGVtcylcXAog ICAgICAgICAgJ2RvbmUpXFwKICAgICAgICAoKGVxPyAoY2FyIGl0ZW1zKSBleGNlcHRpb24pXFwK ICAgICAgICAobG9vcCAoY2RyIGl0ZW1zKSkpXFwKICAgICAgICAoZWxzZVxcCiAgICAgICAgKHBy b2NlZHVyZSAoY2FyIGl0ZW1zKSlcXAogICAgICAgIChsb29wIChjZHIgaXRlbXMpKSkpfTsKICAg ICAKXGVuZHt0aWt6cGljdHVyZX0KIytlbmRfc3JjCgojK1JFU1VMVFM6IGV4ZXJjaXNlLTMtMzYK W1tmaWxlOmV4ZXJjaXNlLTMtMzYucG5nXV0KCk5vdCBhcyBtdWNoIG9mIGEgZGlmZmljdWx0IGRy YXdpbmcgZXhlcmNpc2UsIHN0aWxsIHRvb2sgbWUgYWJvdXQgNQpob3Vycy4gRHJhd2luZyBpcyBo YXJkLgoKKioqIERPTkUgRXhlcmNpc2UgMy4zNyBFeHByZXNzaW9uLWJhc2VkIGNvbnN0cmFpbnRz CiAgICBDTE9TRUQ6IFsyMDE5LTEyLTIxIFNhdCAyMToyMF0KIytiZWdpbl9zcmMgc2NoZW1lIDpl eHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpub3dlYi1yZWYgY29uc3RyYWludHMtZXhwcmVz c2lvbnMKICAoZGVmaW5lIChjKyB4IHkpCiAgICAobGV0ICgoeiAobWFrZS1jb25uZWN0b3IpKSkK ICAgICAgKGFkZGVyIHggeSB6KQogICAgICB6KSkKICAoZGVmaW5lIChjKiB4IHkpCiAgICAobGV0 ICgoeiAobWFrZS1jb25uZWN0b3IpKSkKICAgICAgKG11bHRpcGxpZXIgeCB5IHopCiAgICAgIHop KQogIChkZWZpbmUgKGN2IHZhbHVlKQogICAgKGxldCAoKHogKG1ha2UtY29ubmVjdG9yKSkpCiAg ICAgIChjb25zdGFudCB2YWx1ZSB6KQogICAgICB6KSkKICAoZGVmaW5lIChjLyB4IHkpCiAgICAo bGV0ICgoeiAobWFrZS1jb25uZWN0b3IpKSkKICAgICAgKG11bHRpcGxpZXIgeSB6IHgpCiAgICAg IHopKSAgCiMrZW5kX3NyYwoKIytSRVNVTFRTOgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRz IGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8Y29uc3RyYWludHMtc3lzdGVtPj4KPDxjb25zdHJhaW50 cy1leHByZXNzaW9ucz4+CiAgKGRlZmluZSAoY2Vsc2l1cy1mYWhyZW5oZWl0LWNvbnZlcnRlciB4 KQogICAgKGMrIAogICAgIChjKiAKICAgICAgKGMvIChjdiA5KSAoY3YgNSkpCiAgICAgIHgpCiAg ICAgKGN2IDMyKSkpCiAgKGRlZmluZSBDIChtYWtlLWNvbm5lY3RvcikpCiAgKGRlZmluZSBGIChj ZWxzaXVzLWZhaHJlbmhlaXQtY29udmVydGVyIEMpKQoocHJvYmUgIkNlbHNpdXMgdGVtcCIgQykK KHByb2JlICJGYWhyZW5oZWl0IHRlbXAiIEYpCihzZXQtdmFsdWUhIEYgMjEyICd1c2VyKQoKIytl bmRfc3JjCgojK1JFU1VMVFM6CjogCjogUHJvYmU6IEZhaHJlbmhlaXQgdGVtcCA9IDIxMgo6IFBy b2JlOiBDZWxzaXVzIHRlbXAgPSAxMDAKClRoaXMgdHVybmVkIG91dCB0byBiZSBhIHZlcnkgZWFz eSB0YXNrLiBUaGUgb25seSB0cmljayBoZXJlIHJlYWxseSBpcwp0byB1c2UgdGhlIG11bHRpcGxp ZXMgYXMgYSBkaXZpZGVyLgoKKioqIFRPRE8gQ2hlY2sgdGhhdCBldmVyeSBleGVyY2lzZSB3aXRo IHBpY3R1cmVzIGhhcyB0YWdzCgoKCioqKiBUT0RPIEZpZ3VyZSAzLjI5IFNlcXVlbmNlIGRpYWdy YW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cGxhbnR1bWw6CioqKiBUT0RPIEZpZ3Vy ZSAzLjMwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OnRpa3o6CioqKiBET05FIEV4ZXJjaXNlIDMuMzggVGltaW5nCiAgICBDTE9TRUQ6IFsyMDE5LTEy LTIxIFNhdCAyMjo0OF0KClRoZSB0aHJlZSB1c2VycyB0byB0aGUgZm9sbG93aW5nOgoKUGV0ZXI6 IChzZXQhIGJhbGFuY2UgKCsgYmFsYW5jZSAxMCkpClBhdWw6IChzZXQhIGJhbGFuY2UgKC0gYmFs YW5jZSAyMCkpCk1hcnk6IChzZXQhIGJhbGFuY2UgKC0gYmFsYW5jZSAoLyBiYWxhbmNlIDIpKSkK CioqKiogYQpUaGUgdGhyZWUgcG9zc2libGUgY29kZSBvcmRlcmluZ3MgYXJlIHRoZSBmb2xsb3dp bmc6CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZQooZGVm aW5lIGJhbGFuY2UgMTAwKQooc2V0ISBiYWxhbmNlICgrIGJhbGFuY2UgMTApKQooc2V0ISBiYWxh bmNlICgtIGJhbGFuY2UgMjApKQooc2V0ISBiYWxhbmNlICgtIGJhbGFuY2UgKC8gYmFsYW5jZSAy KSkpCmJhbGFuY2UKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogNDUKCiMrYmVnaW5fc3JjIHNjaGVt ZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCihkZWZpbmUgYmFsYW5jZSAxMDApCihzZXQh IGJhbGFuY2UgKC0gYmFsYW5jZSAyMCkpCihzZXQhIGJhbGFuY2UgKC0gYmFsYW5jZSAoLyBiYWxh bmNlIDIpKSkKKHNldCEgYmFsYW5jZSAoKyBiYWxhbmNlIDEwKSkKYmFsYW5jZQojK2VuZF9zcmMK CiMrUkVTVUxUUzoKOiA1MAoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3Vs dHMgdmFsdWUKKGRlZmluZSBiYWxhbmNlIDEwMCkKKHNldCEgYmFsYW5jZSAoLSBiYWxhbmNlICgv IGJhbGFuY2UgMikpKQooc2V0ISBiYWxhbmNlICgtIGJhbGFuY2UgMjApKQooc2V0ISBiYWxhbmNl ICgrIGJhbGFuY2UgMTApKQpiYWxhbmNlCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IDQwCgoqKioq IGIKCiMrYmVnaW5fc3JjIHBsYW50dW1sIDpleHBvcnRzIGJvdGggOmZpbGUgZXhlcmNpc2UtMy0z OC5wbmcKQHN0YXJ0dW1sCnNraW5wYXJhbSBtb25vY2hyb21lIHRydWUKYWN0b3IgIiAgIFBldGVy ICAgIiBhcyBQZXRlcgphY3RvciAiICAgUGF1bCAgICIgIGFzIFBhdWwKYWN0b3IgIiAgIE1hcnkg ICAiICBhcyBNYXJ5IAplbnRpdHkgIiAgIEJhbmsgICAiIGFzIEJhbmsKcm5vdGUgb3ZlciBCYW5r OiAkMTAwCk1hcnkgLT4gQmFuazogQWNjZXNzXG4gYmFsYW5jZQpCYW5rIC0+IE1hcnk6ICQxMDAK bm90ZSBvdmVyIE1hcnk6ICQxMDAKUGF1bCAtPiBCYW5rOiBBY2Nlc3NcbiBiYWxhbmNlCkJhbmsg LT4gUGF1bDogJDEwMApub3RlIG92ZXIgUGF1bDogJDEwMApQZXRlciAtPiBCYW5rOiBBY2Nlc3Nc biBiYWxhbmNlCkJhbmsgLT4gUGF1bDogJDEwMApub3RlIG92ZXIgTWFyeTogJDEwMC8yPSQ1MApN YXJ5IC0+IEJhbms6IHNldC1iYWxhbmNlISAkNTAKcm5vdGUgb3ZlciBCYW5rOiAkNTAKbm90ZSBv dmVyIFBhdWw6ICQxMDAtJDIwPSQ4MApQYXVsIC0+IEJhbms6IHNldC1iYWxhbmNlISAkODAKcm5v dGUgb3ZlciBCYW5rOiAkODAKbm90ZSBvdmVyIFBldGVyOiAkMTAwKyQxMD0kMTEwClBldGVyIC0+ IEJhbms6IHNldC1iYWxhbmNlISAkMTEwCnJub3RlIG92ZXIgQmFuazogJDExMApAZW5kdW1sCiMr ZW5kX3NyYwoKIytSRVNVTFRTOgpbW2ZpbGU6ZXhlcmNpc2UtMy0zOC5wbmddXQoKT2J2aW91c2x5 LCB0aGUgdmFsdWVzIG9mIDUwLCA4MCBhbmQgMTEwIGFyZSB3cm9uZy4gQW55IG9mIHRob3NlIGNh bgplbmQgdXAgYXMgdGhlIGZpbmFsIHZhbHVlLCBkZXBlbmRpbmcgb24gdGhlIHRpbWluZyBvZiB+ c2V0LWJhbGFuY2Uhfi4KKioqIEltcGxlbWVudGluZyB+KHBhcmFsbGVsLWV4ZWN1dGUpfiBhbmQg c2VyaWFsaXplcnMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91 dHB1dCA6bm93ZWItcmVmIHBhcmFsbGVsLWV4ZWN1dGUKKGRlZmluZSAocGFyYWxsZWwtZXhlY3V0 ZSAuIGZvcm1zKQogIChsZXQgKChteW8gKG9wZW4tb3V0cHV0LXN0cmluZykpKQogICAgKGRlZmlu ZSAoY3JlYXRlLXRocmVhZHMgLiBmb3JtcykKICAgIChpZiAobnVsbD8gZm9ybXMpCgkobGlzdCkK CShsZXQgKChjdHhpICh0aHJlYWQtc3RhcnQhCgkJICAgICAobWFrZS10aHJlYWQKCQkgICAgICAo bGFtYmRhICgpIChwYXJhbWV0ZXJpemUgKChjdXJyZW50LW91dHB1dC1wb3J0IG15bykpCgkJCQko KGNhciBmb3JtcykpKSkpKSkpCgkgIChjb25zIGN0eGkgKGFwcGx5IGNyZWF0ZS10aHJlYWRzIChj ZHIgZm9ybXMpKSkpKSkKICAoZGVmaW5lICh3YWl0LXRocmVhZHMgdGhyZWFkLWxpc3QpCiAgICAo aWYgKG51bGw/IHRocmVhZC1saXN0KQoJI3QKCShiZWdpbiAodGhyZWFkLWpvaW4hIChjYXIgdGhy ZWFkLWxpc3QpKQoJICAgICAgICh3YWl0LXRocmVhZHMgKGNkciB0aHJlYWQtbGlzdCkpKSkpCiAg KHdhaXQtdGhyZWFkcyAoYXBwbHkgY3JlYXRlLXRocmVhZHMgZm9ybXMpKQogIChkaXNwbGF5IChn ZXQtb3V0cHV0LXN0cmluZyBteW8pKSkpCgojK2VuZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6 ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PHBhcmFsbGVsLWV4ZWN1dGU+PgoocGFyYWxs ZWwtZXhlY3V0ZSAKICAobGFtYmRhICgpICh0aHJlYWQtc2xlZXAhIDMpIChkaXNwbGF5ICJoZWxs bzEiKSAobmV3bGluZSkpCiAgKGxhbWJkYSAoKSAoZGlzcGxheSAiaGVsbG8yIikgKG5ld2xpbmUp KSkKKGRpc3BsYXkgImhlbGxvM1xuIikKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogaGVsbG8yCjog aGVsbG8xCjogaGVsbG8zCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0 cyB2YWx1ZQo8PHBhcmFsbGVsLWV4ZWN1dGU+PgooZGVmaW5lIHggMTApCihwYXJhbGxlbC1leGVj dXRlCihsYW1iZGEgKCkgKHRocmVhZC1zbGVlcCEgMSkgKHNldCEgeCAoKiB4IHgpKSkKKGxhbWJk YSAoKSAoc2V0ISB4ICgrIHggMSkpKSkKeAojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAxMjEKCiMr YmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dCA6bm93ZWItcmVm IG1ha2Utc2VyaWFsaXplcgogIChkZWZpbmUgZmFsc2UgI2YpCiAgKGRlZmluZSB0cnVlICN0KQog IChkZWZpbmUgY2VudHJhbC1vbGQtbXV0ZXggKG1ha2UtbXV0ZXggJ2dsb2JhbC1zcmZpLTE4LW11 dGV4KSkKICAoc2V0ISBtYWtlLW11dGV4ICNmKQogIChkZWZpbmUgKHRlc3QtYW5kLXNldCEgY2Vs bCkKICAgIChtdXRleC1sb2NrISBjZW50cmFsLW9sZC1tdXRleCkKICAgIChsZXQgKChvdXRwdXQg KGlmIChjYXIgY2VsbCkgdHJ1ZSAoYmVnaW4gKHNldC1jYXIhIGNlbGwgdHJ1ZSkgZmFsc2UpKSkp CiAgICAgIChtdXRleC11bmxvY2shIGNlbnRyYWwtb2xkLW11dGV4KQogICAgICBvdXRwdXQpKQoK ICAoZGVmaW5lIChtYWtlLW11dGV4KQogICAgKGxldCAoKGNlbGwgKGxpc3QgZmFsc2UpKSkKICAg ICAgKGRlZmluZSAodGhlLW11dGV4IG0pCgkoY29uZCAoKGVxPyBtICdhY3F1aXJlKQoJICAgICAg IChpZiAodGVzdC1hbmQtc2V0ISBjZWxsKQoJCSAgICh0aGUtbXV0ZXggJ2FjcXVpcmUpKSkKCSAg ICAgICgoZXE/IG0gJ3JlbGVhc2UpIChjbGVhciEgY2VsbCkpKSkKICAgICAgdGhlLW11dGV4KSkK ICAoZGVmaW5lIChjbGVhciEgY2VsbCkgKHNldC1jYXIhIGNlbGwgZmFsc2UpKQoKICAoZGVmaW5l IChtYWtlLXNlcmlhbGl6ZXIpCiAgICAobGV0ICgobXV0ZXggKG1ha2UtbXV0ZXgpKSkKICAgICAg KGxhbWJkYSAocCkKCShkZWZpbmUgKHNlcmlhbGl6ZWQtcCAuIGFyZ3MpCgkgIChtdXRleCAnYWNx dWlyZSkKCSAgKGxldCAoKHZhbCAoYXBwbHkgcCBhcmdzKSkpCgkgICAgKG11dGV4ICdyZWxlYXNl KQoJICAgIHZhbCkpCglzZXJpYWxpemVkLXApKSkKCiMrZW5kX3NyYwoKIytSRVNVTFRTOgoKIyti ZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpub3dlYi1yZWYg bWFrZS1wYXJhbGxlbC1hY2NvdW50CiAgKGRlZmluZSAobWFrZS1hY2NvdW50IGJhbGFuY2UpCiAg ICAoZGVmaW5lICh3aXRoZHJhdyBhbW91bnQpCiAgICAgIChpZiAoPj0gYmFsYW5jZSBhbW91bnQp CgkgIChiZWdpbiAoc2V0ISBiYWxhbmNlICgtIGJhbGFuY2UgYW1vdW50KSkKCQkgYmFsYW5jZSkK CSAgIkluc3VmZmljaWVudCBmdW5kcyIpKQogICAgKGRlZmluZSAoZGVwb3NpdCBhbW91bnQpCiAg ICAgIChzZXQhIGJhbGFuY2UgKCsgYmFsYW5jZSBhbW91bnQpKQogICAgICBiYWxhbmNlKQogICAg KGxldCAoKHByb3RlY3RlZCAobWFrZS1zZXJpYWxpemVyKSkpCiAgICAgIChkZWZpbmUgKGRpc3Bh dGNoIG0pCgkoY29uZCAoKGVxPyBtICd3aXRoZHJhdykgKHByb3RlY3RlZCB3aXRoZHJhdykpCgkg ICAgICAoKGVxPyBtICdkZXBvc2l0KSAocHJvdGVjdGVkIGRlcG9zaXQpKQoJICAgICAgKChlcT8g bSAnYmFsYW5jZSkgYmFsYW5jZSkKCSAgICAgIChlbHNlIChlcnJvciAiVW5rbm93biByZXF1ZXN0 OiBNQUtFLUFDQ09VTlQiCgkJCSAgIG0pKSkpCiAgICAgIGRpc3BhdGNoKSkKIytlbmRfc3JjCgoq KiogRE9ORSBFeGVyY2lzZSAzLjM5IFNlcmlhbGl6ZXIKICAgIENMT1NFRDogWzIwMTktMTItMjMg TW9uIDA1OjExXQoKVGhlIG9yaWdpbmFsIGNvZGUgaXMgdGhlIGZvbGxvd2luZzoKCiMrYmVnaW5f c3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAooZGVmaW5lIHggMTApCihw YXJhbGxlbC1leGVjdXRlCihsYW1iZGEgKCkgKHNldCEgeCAoKiB4IHgpKSkKKGxhbWJkYSAoKSAo c2V0ISB4ICgrIHggMSkpKSkKIytlbmRfc3JjCgpUaGUgb3JpZ2luYWwgZml2ZSBvdXRjb21lcyB3 ZXJlIHRoZSBmb2xsb3dpbmc6CgogLSAxMDE6IFAxIHNldHMgeCB0byAxMDAgYW5kIHRoZW4gUDIg aW5jcmVtZW50cyB4IHRvIDEwMS4KIC0gMTIxOiBQMiBpbmNyZW1lbnRzIHggdG8gMTEgYW5kIHRo ZW4gUDEgc2V0cyB4IHRvIHggKiB4IC4KIC0gMTEwOiBQMiBjaGFuZ2VzIHggZnJvbSAxMCB0byAx MSBiZXR3ZWVuIHRoZSB0d28gdGltZXMgdGhhdAogICBQMSBhY2Nlc3NlcyB0aGUgdmFsdWUgb2Yg eCBkdXJpbmcgdGhlIGV2YWx1YXRpb24gb2YgKCogeCB4KSAuCiAtIDExOiAgUDIgYWNjZXNzZXMg eCAsIHRoZW4gUDEgc2V0cyB4IHRvIDEwMCwgdGhlbiBQMiBzZXRzIHggLgogLSAxMDA6IFAxIGFj Y2Vzc2VzIHggKHR3aWNlKSwgdGhlbiBQMiBzZXRzIHggdG8gMTEsIHRoZW4gUDEgc2V0cyB4IC4K CldlIGFyZSBzZXJpYWxpemluZyBvbmUgb2YgdGhlIGJyYW5jaGVzOgoKIytiZWdpbl9zcmMgc2No ZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CiAgKGRlZmluZSB4IDEwKQogIChkZWZp bmUgcyAobWFrZS1zZXJpYWxpemVyKSkKICAocGFyYWxsZWwtZXhlY3V0ZQogICAobGFtYmRhICgp IChzZXQhIHggKChzIChsYW1iZGEgKCkgKCogeCB4KSkpKSkpCiAgIChzIChsYW1iZGEgKCkgKHNl dCEgeCAoKyB4IDEpKSkpKQojK2VuZF9zcmMKCkluIHRoaXMgY2FzZSwgdGhlIGFkZGl0aXZlIGJy YW5jaCBpcyBmdWxseSBzZXJpYWxpemVkLCBhbmQgdGhlCm11bHRpcGxpY2F0aXZlIGhhZCBhc3Np Z25tZW50IGFuZCBtdWx0aXBsaWNhdGlvbiBkZXRhY2hlZC4gVGhlIG9wdGlvbnMKMTIxIGFuZCAx MDEgc3RpbGwgcmVtYWluLCBhcyB0aGV5IGRvbid0IGRlcGVuZCBvbiB0aGUgaW50ZXJuYWwKc2Vy aWFsaXphdGlvbi4gVGhlIGJyYW5jaCByZXN1bHRpbmcgaW4gMTEwIGlzIGRpc2FibGVkLCBiZWNh dXNlIHRoZQpyZWFkIGFjY2VzcyB0byB+eH4gaXMgZ3VhcmFudGVlZCB0byBiZSBzZXF1ZW50aWFs LiBUaGUgYnJhbmNoCnJlc3VsdGluZyBpbiAxMSBpcyBhbHNvIGRpc2FibGVkLCBzaW5jZSBhY2Nl c3NpbmcgYW5kIHNldHRpbmcgaXMKZ3VhcmFudGVlZCB0b28gaGFwcGVuIHRvZ2V0aGVyIGluIHRo ZSBzZWNvbmQgYnJhbmNoLiBUaGUgYnJhbmNoCnJlc3VsdGluZyBpbiAxMDAgcmVtYWlucyBhIHBv c3NpYmxlIG9wdGlvbiwgc2luY2UgdGhlIGNvbXB1dGF0aW9uIG9mCn4oKiB4IHgpfiBhbmQgdGhl IGFzc2lnbm1lbnQgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGhhcHBlbiBpbiBvcmRlci4KClNvIGlu IHRoZSBlbmQsIHRoZSB0aHJlZSByZW1haW5pbmcgb3B0aW9ucyBhcmU6CgogLSAxMDE6IFAxIHNl dHMgeCB0byAxMDAgYW5kIHRoZW4gUDIgaW5jcmVtZW50cyB4IHRvIDEwMS4KIC0gMTIxOiBQMiBp bmNyZW1lbnRzIHggdG8gMTEgYW5kIHRoZW4gUDEgc2V0cyB4IHRvIHggKiB4IC4KIC0gMTAwOiBQ MSBhY2Nlc3NlcyB4ICh0d2ljZSksIHRoZW4gUDIgc2V0cyB4IHRvIDExLCB0aGVuIFAxIHNldHMg eCAuCgoqKiogRE9ORSBFeGVyY2lzZSAzLjQwIFRocmVlIHBhcmFsbGVsIG11bHRpcGxpY2F0aW9u cwogICAgQ0xPU0VEOiBbMjAxOS0xMi0yOSBTdW4gMDQ6MzJdCioqKiogUGFydCAxCiMrYmVnaW5f c3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAooZGVmaW5lIHggMTApCihw YXJhbGxlbC1leGVjdXRlIChsYW1iZGEgKCkgKHNldCEgeCAoKiB4IHgpKSkKICAgICAgICAgICAg ICAgICAgKGxhbWJkYSAoKSAoc2V0ISB4ICgqIHggeCB4KSkpKQojK2VuZF9zcmMKCkhlcmUgdGhl cmUgYXJlIHR3byByZWFkIG9wZXJhdGlvbnMgYW5kIG9uZSB3cml0ZSBvcGVyYXRpb24gaW4gdGhl CmZpcnN0IHRocmVhZCwgYW5kIHRocmVlIHJlYWQgb3BlcmF0aW9ucyBhbmQgb25lIHdyaXRlIG9w ZXJhdGlvbiBpbiB0aGUKc2Vjb25kIGJyYW5jaC4gCgpTbyB3ZSBuZWVkIHRvIGZpbmQgdGhlIG51 bWJlciBvZiB1bmlxdWUgaW50ZXJsZWF2aW5ncyBvZiB0d28Kc2VxdWVuY2VzOiAoMSAyIDMgNCkg YW5kIChhIGIgYykuIFRoZSB0b3RhbCBudW1iZXIgb2YgaW50ZXJsZWF2aW5ncyBpcwpcKENfe3gr eX1ee3h9XCksIHdoaWNoIGlzIDM1LCBhbHRob3VnaCBpdCBkb2Vzbid0IG1lYW4gdGhhdCBhbGwK aW50ZXJsZWF2aW5ncyBwcm9kdWNlIGRpZmZlcmVudCBvdXRjb21lcy4KClRob3NlIHNlcXVlbmNl cyBjYW4gYmUgZ2VuZXJhdGVkIGFsZ29yaXRobWljYWxseToKaHR0cHM6Ly9tYXRoLnN0YWNrZXhj aGFuZ2UuY29tL3F1ZXN0aW9ucy82MjgxMjAvbnVtYmVyLW9mLXBvc3NpYmxlLWludGVybGVhdmlu Z3Mtb2YtdHdvLXN0cmluZ3Mtb2YtbGVuZ3Rocy1tLWFuZC1uCmh0dHBzOi8vc3RhY2tvdmVyZmxv dy5jb20vcXVlc3Rpb25zLzM2MjYwOTU2L2FsbC1wb3NzaWJsZS13YXlzLXRvLWludGVybGVhdmUt dHdvLXN0cmluZ3MKCkl0IHNob3VsZCBiZSBhbHNvIHBvc3NpYmxlIHRvIHdyaXRlIGEgc2NoZW1l IG1hY3JvIHRvIHNlcmlhbGl6ZQp+cGFyYWxsZWwtZXhlY3V0ZX4uIEFuZCBpdCBzaG91bGQgYWxz byBiZSBwb3NzaWJsZSB0byBkbyBpdAplZmZpY2llbnRseS4KCkhvd2V2ZXIsIGF0IHRoZSBtb21l bnQgaXQgc2VlbXMgcmF0aGVyIGZlYXNpYmxlIHRvIHdyaXRlIG91dAphbGwgcG9zc2libGUgc2Vy aWFsaXphdGlvbnMgKGludGVybGVhdmluZ3MpIGJ5IGhhbmQuCgpJbiB0b3RhbCB0aGlzIG1ha2Vz IHRoZSBmb2xsb3dpbmcgc2VxdWVuY2VzOgoKfCAjb3AgfCAxICAgICAgfCAyICAgICAgfCAzICAg ICAgIHwgNCAgICAgICB8IDUgICAgICAgfCA2ICAgICAgIHwgNyAgICAgICB8IFJlc3VsdCAgICAg fAp8LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS18CnwgICAxIHwgMSByZWFkIHwgMSByZWFk IHwgMSB3cml0ZSB8IDIgcmVhZCAgfCAyIHJlYWQgIHwgMiByZWFkICB8IDIgd3JpdGUgfCAxIDAw IDAwIDAwIHwKfCAgIDIgfCAxIHJlYWQgfCAxIHJlYWQgfCAyIHJlYWQgIHwgMSB3cml0ZSB8IDIg cmVhZCAgfCAyIHJlYWQgIHwgMiB3cml0ZSB8IDEgMDAgMDAgMCAgfAp8ICAgMyB8IDEgcmVhZCB8 IDEgcmVhZCB8IDIgcmVhZCAgfCAyIHJlYWQgIHwgMSB3cml0ZSB8IDIgcmVhZCAgfCAyIHdyaXRl IHwgMSAwMCAwMCAgICB8CnwgICA0IHwgMSByZWFkIHwgMSByZWFkIHwgMiByZWFkICB8IDIgcmVh ZCAgfCAyIHJlYWQgIHwgMSB3cml0ZSB8IDIgd3JpdGUgfCAxIDAwIDAgICAgIHwKfCAgIDUgfCAx IHJlYWQgfCAxIHJlYWQgfCAyIHJlYWQgIHwgMiByZWFkICB8IDIgcmVhZCAgfCAyIHdyaXRlIHwg MSB3cml0ZSB8IDEgMDAgICAgICAgfAp8ICAgNiB8IDEgcmVhZCB8IDIgcmVhZCB8IDEgcmVhZCAg fCAxIHdyaXRlIHwgMiByZWFkICB8IDIgcmVhZCAgfCAyIHdyaXRlIHwgMSAwMCAwMCAwICB8Cnwg ICA3IHwgMSByZWFkIHwgMiByZWFkIHwgMSByZWFkICB8IDIgcmVhZCAgfCAxIHdyaXRlIHwgMiBy ZWFkICB8IDIgd3JpdGUgfCAxIDAwIDAwICAgIHwKfCAgIDggfCAxIHJlYWQgfCAyIHJlYWQgfCAx IHJlYWQgIHwgMiByZWFkICB8IDIgcmVhZCAgfCAxIHdyaXRlIHwgMiB3cml0ZSB8IDEgMDAgMCAg ICAgfAp8ICAgOSB8IDEgcmVhZCB8IDIgcmVhZCB8IDEgcmVhZCAgfCAyIHJlYWQgIHwgMiByZWFk ICB8IDIgd3JpdGUgfCAxIHdyaXRlIHwgMSAwMCAgICAgICB8CnwgIDEwIHwgMSByZWFkIHwgMiBy ZWFkIHwgMiByZWFkICB8IDEgcmVhZCAgfCAxIHdyaXRlIHwgMiByZWFkICB8IDIgd3JpdGUgfCAx IDAwIDAwICAgIHwKfCAgMTEgfCAxIHJlYWQgfCAyIHJlYWQgfCAyIHJlYWQgIHwgMSByZWFkICB8 IDIgcmVhZCAgfCAxIHdyaXRlIHwgMiB3cml0ZSB8IDEgMDAgMCAgICAgfAp8ICAxMiB8IDEgcmVh ZCB8IDIgcmVhZCB8IDIgcmVhZCAgfCAxIHJlYWQgIHwgMiByZWFkICB8IDIgd3JpdGUgfCAxIHdy aXRlIHwgMSAwMCAgICAgICB8CnwgIDEzIHwgMSByZWFkIHwgMiByZWFkIHwgMiByZWFkICB8IDIg cmVhZCAgfCAxIHJlYWQgIHwgMSB3cml0ZSB8IDIgd3JpdGUgfCAxIDAwIDAgICAgIHwKfCAgMTQg fCAxIHJlYWQgfCAyIHJlYWQgfCAyIHJlYWQgIHwgMiByZWFkICB8IDEgcmVhZCAgfCAyIHdyaXRl IHwgMSB3cml0ZSB8IDEgMDAgICAgICAgfAp8ICAxNSB8IDEgcmVhZCB8IDIgcmVhZCB8IDIgcmVh ZCAgfCAyIHJlYWQgIHwgMiB3cml0ZSB8IDEgcmVhZCAgfCAxIHdyaXRlIHwgMSAwMCAwMCAgICB8 CnwgIDE2IHwgMiByZWFkIHwgMSByZWFkIHwgMSByZWFkICB8IDEgd3JpdGUgfCAyIHJlYWQgIHwg MiByZWFkICB8IDIgd3JpdGUgfCAxIDAwIDAwIDAgIHwKfCAgMTcgfCAyIHJlYWQgfCAxIHJlYWQg fCAxIHJlYWQgIHwgMiByZWFkICB8IDEgd3JpdGUgfCAyIHJlYWQgIHwgMiB3cml0ZSB8IDEgMDAg MDAgICAgfAp8ICAxOCB8IDIgcmVhZCB8IDEgcmVhZCB8IDEgcmVhZCAgfCAyIHJlYWQgIHwgMiBy ZWFkICB8IDEgd3JpdGUgfCAyIHdyaXRlIHwgMSAwMCAwICAgICB8CnwgIDE5IHwgMiByZWFkIHwg MSByZWFkIHwgMSByZWFkICB8IDIgcmVhZCAgfCAyIHJlYWQgIHwgMiB3cml0ZSB8IDEgd3JpdGUg fCAxIDAwICAgICAgIHwKfCAgMjAgfCAyIHJlYWQgfCAxIHJlYWQgfCAyIHJlYWQgIHwgMSByZWFk ICB8IDEgd3JpdGUgfCAyIHJlYWQgIHwgMiB3cml0ZSB8IDEgMDAgMDAgICAgfAp8ICAyMSB8IDIg cmVhZCB8IDEgcmVhZCB8IDIgcmVhZCAgfCAxIHJlYWQgIHwgMiByZWFkICB8IDEgd3JpdGUgfCAy IHdyaXRlIHwgMSAwMCAwICAgICB8CnwgIDIyIHwgMiByZWFkIHwgMSByZWFkIHwgMiByZWFkICB8 IDEgcmVhZCAgfCAyIHJlYWQgIHwgMiB3cml0ZSB8IDEgd3JpdGUgfCAxIDAwICAgICAgIHwKfCAg MjMgfCAyIHJlYWQgfCAxIHJlYWQgfCAyIHJlYWQgIHwgMiByZWFkICB8IDEgcmVhZCAgfCAxIHdy aXRlIHwgMiB3cml0ZSB8IDEgMDAgMCAgICAgfAp8ICAyNCB8IDIgcmVhZCB8IDEgcmVhZCB8IDIg cmVhZCAgfCAyIHJlYWQgIHwgMSByZWFkICB8IDIgd3JpdGUgfCAxIHdyaXRlIHwgMSAwMCAgICAg ICB8CnwgIDI1IHwgMiByZWFkIHwgMSByZWFkIHwgMiByZWFkICB8IDIgcmVhZCAgfCAyIHdyaXRl IHwgMSByZWFkICB8IDEgd3JpdGUgfCAxIDAwIDAwICAgIHwKfCAgMjYgfCAyIHJlYWQgfCAyIHJl YWQgfCAxIHJlYWQgIHwgMSByZWFkICB8IDEgd3JpdGUgfCAyIHJlYWQgIHwgMiB3cml0ZSB8IDEg MDAgMDAgICAgfAp8ICAyNyB8IDIgcmVhZCB8IDIgcmVhZCB8IDEgcmVhZCAgfCAxIHJlYWQgIHwg MiByZWFkICB8IDEgd3JpdGUgfCAyIHdyaXRlIHwgMSAwMCAwICAgICB8CnwgIDI4IHwgMiByZWFk IHwgMiByZWFkIHwgMSByZWFkICB8IDEgcmVhZCAgfCAyIHJlYWQgIHwgMiB3cml0ZSB8IDEgd3Jp dGUgfCAxIDAwICAgICAgIHwKfCAgMjkgfCAyIHJlYWQgfCAyIHJlYWQgfCAxIHJlYWQgIHwgMiBy ZWFkICB8IDEgcmVhZCAgfCAxIHdyaXRlIHwgMiB3cml0ZSB8IDEgMDAgMCAgICAgfAp8ICAzMCB8 IDIgcmVhZCB8IDIgcmVhZCB8IDEgcmVhZCAgfCAyIHJlYWQgIHwgMSByZWFkICB8IDIgd3JpdGUg fCAxIHdyaXRlIHwgMSAwMCAgICAgICB8CnwgIDMxIHwgMiByZWFkIHwgMiByZWFkIHwgMSByZWFk ICB8IDIgcmVhZCAgfCAyIHdyaXRlIHwgMSByZWFkICB8IDEgd3JpdGUgfCAxIDAwIDAwICAgIHwK fCAgMzIgfCAyIHJlYWQgfCAyIHJlYWQgfCAyIHJlYWQgIHwgMSByZWFkICB8IDEgcmVhZCAgfCAx IHdyaXRlIHwgMiB3cml0ZSB8IDEgMDAgMCAgICAgfAp8ICAzMyB8IDIgcmVhZCB8IDIgcmVhZCB8 IDIgcmVhZCAgfCAxIHJlYWQgIHwgMSByZWFkICB8IDIgd3JpdGUgfCAxIHdyaXRlIHwgMSAwMCAg ICAgICB8CnwgIDM0IHwgMiByZWFkIHwgMiByZWFkIHwgMiByZWFkICB8IDEgcmVhZCAgfCAyIHdy aXRlIHwgMSByZWFkICB8IDEgd3JpdGUgfCAxIDAwIDAwICAgIHwKfCAgMzUgfCAyIHJlYWQgfCAy IHJlYWQgfCAyIHJlYWQgIHwgMiB3cml0ZSB8IDEgcmVhZCAgfCAxIHJlYWQgIHwgMSB3cml0ZSB8 IDEgMDAgMDAgMDAgfAoKU28gdGhlIHRvdGFsIHNldCBvZiB+eH4gdmFsdWVzIGlzIH4oMTAwLCAx MDAwLCAxMDAwMCwgMTAwMDAwLAoxMDAwMDAwKX4uCgpJdCB3b3VsZCBub3QgaGF2ZSBiZWVuIHRv IGhhcmQgdG8gZ2VuZXJhdGUgYWxsIHRob3NlIHJlYWQvd3JpdGUKc2VxdWVuY2VzLCBidXQgSSB3 b25kZXIsIGhvdyB3b3VsZCBJIGdlbmVyYXRlIGFsbCBwb3NzaWJsZSBjb2RlcyB0bwpjaGVjayB0 aGUgb3V0Y29tZXM/CgoqKioqIFBhcnQgMgoKV2hlbiB0aGUgdHdvIHNlcmlhbGl6ZWQgcHJvY2Vk dXJlcyBhcmUgdXNlZDoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMg b3V0cHV0CihkZWZpbmUgeCAxMCkKKGRlZmluZSBzIChtYWtlLXNlcmlhbGl6ZXIpKQoocGFyYWxs ZWwtZXhlY3V0ZSAocyAobGFtYmRhICgpIChzZXQhIHggKCogeCB4KSkpKQogICAgICAgICAgICAg ICAgICAocyAobGFtYmRhICgpIChzZXQhIHggKCogeCB4IHgpKSkpKQojK2VuZF9zcmMKCk9ubHkg dHdvIG91dGNvbWVzIGFyZSBsZWZ0OiB3aGVuIHRoZSBmaXJzdCBmdW5jdGlvbiBydW5zLCBhbmQg d2hlbiB0aGUKc2Vjb25kIGZ1bmN0aW9uIHJ1bnMsIHdoaWNoIGlzIGVpdGhlciBcKDEwMF4zXCks IG9yIFwoMTAwMF4yXCksIHdoaWNoIGlzCmJvdGggMTAwMDAwMC4KCioqKiBET05FIEV4ZXJjaXNl IDMuNDEgQmV0dGVyIHByb3RlY3RlZCBhY2NvdW50CiAgICBDTE9TRUQ6IFsyMDIwLTAxLTAyIFRo dSAxMDowMl0KCkkgZG9uJ3QgdGhpbmsgdGhhdCBCZW4ncyBjb25jZXJuIGlzIHZhbGlkLiBJdCBt YXkgaW5kZWVkIGhhcHBlbiB0aGF0CnRoZSB2YWx1ZSBvZiB+YmFsYW5jZX4gY2hhbmdlcyBiZXR3 ZWVuIHRoZSB0aW1lIHdoZW4gdGhlIHZhbHVlIGlzCnF1ZXJpZWQgYW5kIHRoZSB0aW1lIGl0IGlz IHJldHVybmVkLCBob3dldmVyIHdyYXBwaW5nIGEgdmFsdWUgaW4gYQpwcm90ZWN0aXZlIHNlcmlh bGl6ZWQgbGFtYmRhIGRvZXMgbm90IHNvbHZlIHRoaXMgaXNzdWUuIFJhdGhlciB0aGUKd2hvbGUg Y2FsbCB0byB0aGUgfmJhbGFuY2V+IGdldHRlciB3b3VsZCBuZWVkIHRvIGJlIHNlcmlhbGl6ZWQu CgoqKiogRE9ORSBFeGVyY2lzZSAzLjQyIFNhdmluZyBvbiBzZXJpYWxpemVycwogICAgQ0xPU0VE OiBbMjAyMC0wMS0wMiBUaHUgMTA6MzVdCgpUaGlzIGV4ZXJjaXNlIHNlZW1zIHRvIGJlIGRlYWxp bmcgd2l0aCBhIHRoaW5nIGNhbGxlZCByZWVudHJhbmN5LAp3aGljaCBzZWVtcyB0byBiZSBxdWl0 ZSBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuIFRoZSB2ZXJzaW9uIEkgd3JvdGUKd291bGQgYmUg YXNraW5nIHRvIGFjcXVpcmUgdGhlIG11dGV4IGFueSB3YXksIHNvIEkgZG9uJ3Qgc2VlIGhvdyBh CnJhY2UgY29uZGl0aW9uIGNhbiBhcHBlYXIgaGVyZS4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhw b3J0cyBib3RoIDpyZXN1bHRzIHZhbHVlCjw8cGFyYWxsZWwtZXhlY3V0ZT4+Cjw8bWFrZS1zZXJp YWxpemVyPj4KPDxtYWtlLXBhcmFsbGVsLWFjY291bnQ+PgogKGxldCAoKGFjYyAobWFrZS1hY2Nv dW50IDEwMCkpKSAKICAgKHBhcmFsbGVsLWV4ZWN1dGUgCiAgICAgKGxhbWJkYSAoKSAodGhyZWFk LXNsZWVwISAwLjEpICgoYWNjICd3aXRoZHJhdykgMTApKSAKICAgICAobGFtYmRhICgpICgoYWNj ICd3aXRoZHJhdykgMjApKSkgCiAgIChhY2MgJ2JhbGFuY2UpKSAKCiMrZW5kX3NyYwoKIytSRVNV TFRTOgo6IDcwCgoqKiogRE9ORSBFeGVyY2lzZSAzLjQzIE11bHRpcGxlIHNlcmlhbGl6YXRpb25z CiAgICBDTE9TRUQ6IFsyMDIwLTAxLTAyIFRodSAxMTozM10KCiMrYmVnaW5fc3JjIHNjaGVtZSA6 ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dCA6bm93ZWItcmVmIHVuc2FmZS1leGNoYW5nZQog IChkZWZpbmUgKGV4Y2hhbmdlIGFjY291bnQxIGFjY291bnQyKQogICAgKGxldCAoKGRpZmZlcmVu Y2UgKC0gKGFjY291bnQxICdiYWxhbmNlKQoJCQkgKGFjY291bnQyICdiYWxhbmNlKSkpKQogICAg ICAoKGFjY291bnQxICd3aXRoZHJhdykgZGlmZmVyZW5jZSkKICAgICAgKChhY2NvdW50MiAnZGVw b3NpdCkgZGlmZmVyZW5jZSkpKQojK2VuZF9zcmMKCkl0IHNlZW1zIHRvIGJlIHF1aXRlIG9idmlv dXMgdGhhdCB0aGlzIGNvZGUgd29ya3MgY29ycmVjdGx5IGluIGEKc2luZ2xlLXRocmVhZGVkIGNh c2UuIEFueSBpbmNvbnNpc3RlbmN5IHdvdWxkIGFyaXNlIGZyb20gYW4gaW5jb3JyZWN0Cm9yZGVy IG9mIG11dGF0aW9ucywgYnV0IHdpdGggb25lIHRocmVhZCwgdGhpcyBuZXZlciBoYXBwZW5zLgoK Rm9yIHRoZSBwYXJhbGxlbCBjYXNlLCB0aGUgZm9sbG93aW5nIGVycm9uZW91cyBiZWhhdmlvdXIg bWF5IGhhcHBlbjoKCiMrYmVnaW5fc3JjIHBsYW50dW1sIDpleHBvcnRzIGJvdGggOmZpbGUgZXhl cmNpc2UtMy00My0xLnBuZwpAc3RhcnR1bWwKc2tpbnBhcmFtIG1vbm9jaHJvbWUgdHJ1ZQphY3Rv ciAiICAgUGV0ZXIgICAiIGFzIFBldGVyCgplbnRpdHkgIiAgIEFjY291bnQgMSAgICIgYXMgYWNj MQplbnRpdHkgIiAgIEFjY291bnQgMiAgICIgYXMgYWNjMgplbnRpdHkgIiAgIEFjY291bnQgMyAg ICIgYXMgYWNjMwphY3RvciAiICAgUGF1bCAgICIgIGFzIFBhdWwKcm5vdGUgb3ZlciBhY2MxOiAk MTAKcm5vdGUgb3ZlciBhY2MyOiAkMjAKcm5vdGUgb3ZlciBhY2MzOiAkMzAKcm5vdGUgb3ZlciBQ ZXRlcjogRXhjaGFuZ2VcbiAxIGFuZCAyCnJub3RlIG92ZXIgUGF1bDogRXhjaGFuZ2VcbiAyIGFu ZCAzClBldGVyIC0+IGFjYzE6IGJhbGFuY2UKYWNjMSAtPiBQZXRlcjogMTAKUGV0ZXIgLT4gYWNj MjogYmFsYW5jZQphY2MyIC0+IFBldGVyOiAyMApybm90ZSBvdmVyIFBldGVyOiBkaWZmZXJlbmNl PS0xMAoKClBhdWwgLT4gYWNjMjogYmFsYW5jZQphY2MyIC0+IFBhdWw6IDIwClBhdWwgLT4gYWNj MzogYmFsYW5jZQphY2MzIC0+IFBhdWw6IDMwCnJub3RlIG92ZXIgUGF1bDogZGlmZmVyZW5jZT0t MTAKCgpQZXRlciAtPiBhY2MxOiB3aXRoZHJhdyAtMTAKcm5vdGUgb3ZlciBhY2MxOiAkMjAKClBh dWwgLT4gYWNjMjogd2l0aGRyYXcgLTEwCnJub3RlIG92ZXIgYWNjMjogJDMwClBhdWwgLT4gYWNj MzogZGVwb3NpdCAtMTAKcm5vdGUgb3ZlciBhY2MzOiAkMjAKClBldGVyIC0+IGFjYzI6IGRlcG9z aXQgLTEwCnJub3RlIG92ZXIgYWNjMjogJDIwCgpAZW5kdW1sCiMrZW5kX3NyYwoKIytSRVNVTFRT OgpbW2ZpbGU6ZXhlcmNpc2UtMy00My5wbmddXQoKRXZlbiB0aG91Z2ggZXZlcnkgYmFsYW5jZSBx dWVyeSBpcyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhIHJlc3BvbnNlLApzdGlsbCwgaW5jb3Jy ZWN0IG9yZGVyaW5nIG9mIG11dGF0aW9ucyBsZWFkcyB0byB0aGUgZmluYWwgYWNjb3VudHMnCnN0 YXRlcyBhcyAkMjAsICQyMCwgJDIwLgoKQSBmdWxseSBub24tc3luY2hyb25pemVkIHZlcnNpb24g d291bGQgYmUgbW9yZSBkaXNhc3Ryb3VzOgojK2JlZ2luX3NyYyBwbGFudHVtbCA6ZXhwb3J0cyBi b3RoIDpmaWxlIGV4ZXJjaXNlLTMtNDMtMi5wbmcKQHN0YXJ0dW1sCnNraW5wYXJhbSBtb25vY2hy b21lIHRydWUKYWN0b3IgIiAgIFBldGVyICAgIiBhcyBQZXRlcgoKZW50aXR5ICIgICBBY2NvdW50 IDEgICAiIGFzIGFjYzEKZW50aXR5ICIgICBBY2NvdW50IDIgICAiIGFzIGFjYzIKZW50aXR5ICIg ICBBY2NvdW50IDMgICAiIGFzIGFjYzMKYWN0b3IgIiAgIFBhdWwgICAiICBhcyBQYXVsCnJub3Rl IG92ZXIgYWNjMTogJDEwCnJub3RlIG92ZXIgYWNjMjogJDIwCnJub3RlIG92ZXIgYWNjMzogJDMw CnJub3RlIG92ZXIgUGV0ZXI6IEV4Y2hhbmdlXG4gMSBhbmQgMgpybm90ZSBvdmVyIFBhdWw6IEV4 Y2hhbmdlXG4gMiBhbmQgMwpQZXRlciAtPiBhY2MxOiBiYWxhbmNlCmFjYzEgLT4gUGV0ZXI6IDEw ClBldGVyIC0+IGFjYzI6IGJhbGFuY2UKClBhdWwgLT4gYWNjMjogYmFsYW5jZQphY2MyIC0+IFBh dWw6IDIwClBhdWwgLT4gYWNjMzogYmFsYW5jZQphY2MzIC0+IFBhdWw6IDMwCnJub3RlIG92ZXIg UGF1bDogZGlmZmVyZW5jZT0tMTAKCgphY2MyIC0+IFBldGVyOiAyMApybm90ZSBvdmVyIFBldGVy OiBkaWZmZXJlbmNlPS0xMApQZXRlciAtPiBhY2MxOiB3aXRoZHJhdyAtMTAKcm5vdGUgb3ZlciBh Y2MxOiAkMjAKCgpQZXRlciAtPiBhY2MyOiBkZXBvc2l0IC0xMApQYXVsIC0+IGFjYzI6IHdpdGhk cmF3IC0xMApybm90ZSBvdmVyIGFjYzI6ICQzMApybm90ZSBvdmVyIGFjYzI6ICQxMAoKClBhdWwg LT4gYWNjMzogZGVwb3NpdCAtMTAKcm5vdGUgb3ZlciBhY2MzOiAkMjAKCkBlbmR1bWwKIytlbmRf c3JjCgojK1JFU1VMVFM6CltbZmlsZTpleGVyY2lzZS0zLTQzLTIucG5nXV0KCkRlcGVuZGluZyBv biB0aGUgb3JkZXIgb2Ygd3JpdGluZyB0aGUgYmFsYW5jZSB2YXJpYWJsZSBpbiB0aGUgYWNjb3Vu dAoyLCB0aGUgdmFsdWUgbWF5IGJlIHdyb25nIGluIGRpZmZlcmVudCB3YXlzLgoKKioqIERPTkUg RXhlcmNpc2UgMy40NCBUcmFuc2ZlciBtb25leQogICAgQ0xPU0VEOiBbMjAyMC0wMS0wMiBUaHUg MTE6NDBdCgpJIHRoaW5rIHRoYXQgTG91aXMgaXMgd3JvbmcgaGVyZS4gVGhlIHByb2JsZW0gd2l0 aCBleGNoYW5naW5nIGFtb3VudHMKaXMgdGhhdCB0aGUgbmV4dCB2YWx1ZSBvZiBhY2NvdW50IEEg ZGVwZW5kcyBvbiB0aGUgcHJldmlvdXMgdmFsdWUgb2YKYW4gYWNjb3VudCBCLiBIb3dldmVyLCBp biB0aGlzIGNhc2UgdGhlIGRlcGVuZGVuY3kgaXMgbm90IHNvCnN0cmljdC4gVGhlIG5leHQgdmFs dWUgb2YgYW4gYWNjb3VudCBBIG9ubHkgZGVwZW5kcyBvbiB0aGUgYW1vdW50Cn5hbW91bnR+LiBU aGUgZGVwZW5kZW5jeSB3b3VsZCBiZSBiYWNrIHRob3VnaCwgaWYgdGhlcmUgbWF5IGJlIG5vdApl bm91Z2ggbW9uZXkgb24gdGhlIGFjY291bnQgQi4gVGhlbiB0aGUgb3BlcmF0aW9uIGNvdWxkIGZh aWwsCmRlcGVuZGluZyBvbiB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uLgoKKioqIERPTkUgRXhlcmNp c2UgMy40NSBuZXcgcGx1cyBvbGQgc2VyaWFsaXplcnMKICAgIENMT1NFRDogWzIwMjAtMDEtMDIg VGh1IDExOjQ2XQoKVGhlIHByb2JsZW0gd2l0aCBMb3Vpcycgc3VnZ2VzdGlvbiBpcyB0aGF0IHRo ZSBzYW1lIG11dGV4IHdvdWxkIGJlCmFjcXVpcmVkIHR3aWNlLiBUaGF0IGlzLCB3ZSB3b3VsZCBh dHRlbXB0IHRvIHNlcmlhbGl6ZSBhbiBhbHJlYWR5CnNlcmlhbGl6ZWQgcHJvY2VkdXJlLCBhbmQg d291bGQgZ2V0IGluIGEgZGVhZGxvY2suIAoKVGhhdCBpcywgd2Ugd291bGQgaGF2ZSBzb21ldGhp bmcgbGlrZSB+KGJhbGFuY2Utc2VyaWFsaXplcgooYmFsYW5jZS1zZXJpYWxpemVyIHdpdGhkcmF3 KSl+LCB3aGljaCB3b3VsZCBhdHRlbXB0IHRvIG9idGFpbiB0aGUKc2FtZSBsb2NrIHR3aWNlLCBh bmQgdGh1cyB3aWxsIHdhaXQgZm9yZXZlci4KCioqKiBET05FIEV4ZXJjaXNlIDMuNDYgYnJva2Vu IHRlc3QtYW5kLXNldCEKICAgIENMT1NFRDogWzIwMjAtMDEtMDIgVGh1IDExOjU2XQoKIytiZWdp bl9zcmMgcGxhbnR1bWwgOmV4cG9ydHMgYm90aCA6ZmlsZSBleGVyY2lzZS0zLTQ2LnBuZwpAc3Rh cnR1bWwKc2tpbnBhcmFtIG1vbm9jaHJvbWUgdHJ1ZQpjb250cm9sICIgIFByb2Nlc3MgMSAgICIg YXMgcDEKCmVudGl0eSAiICAgTXV0ZXggICAiIGFzIG0KY29udHJvbCAiICBQcm9jZXNzIDIgICAi ICBhcyBwMgpybm90ZSBvdmVyIG06IGZhbHNlCnAxIC0+IG06IHRlc3QtYW5kLXNldCEKcDIgLT4g bTogdGVzdC1hbmQtc2V0IQpybm90ZSBvdmVyIG06IHNldC1jYXIhIGNlbGwgdHJ1ZQpybm90ZSBv dmVyIG06IHNldC1jYXIhIGNlbGwgdHJ1ZQpybm90ZSBvdmVyIG06IHRydWUKbSAtPiBwMTogZmFs c2UKbSAtPiBwMjogZmFsc2UKcm5vdGUgb3ZlciBwMTogYWNxdWlyZWQKcm5vdGUgb3ZlciBwMjog YWNxdWlyZWQKCkBlbmR1bWwKIytlbmRfc3JjCgojK1JFU1VMVFM6CltbZmlsZTpleGVyY2lzZS0z LTQ2LnBuZ11dCgoqKiogRE9ORSBFeGVyY2lzZSAzLjQ3IHNlbWFwaG9yZXMKICAgIENMT1NFRDog WzIwMjAtMDEtMDMgRnJpIDEyOjU5XQoqKioqIERPTkUgYTogSW4gdGVybXMgb2YgbXV0ZXhlcwog ICAgIENMT1NFRDogWzIwMjAtMDEtMDMgRnJpIDEyOjM4XQoKIytiZWdpbl9zcmMgc2NoZW1lIDpl eHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CiAgPDxwYXJhbGxlbC1leGVjdXRlPj4KICA8PG1h a2Utc2VyaWFsaXplcj4+CiAgICAoZGVmaW5lIChtYWtlLXNlbWFwaG9yZSBtYXgtY291bnQpCiAg ICAgIChsZXQgKChjb3VudCAwKQoJICAgIChtdXRleCAobWFrZS1tdXRleCkpKQoJKGRlZmluZSAo dGhlLXNlbWFwaG9yZSBvcCkKCSAgKGNvbmQgKChlcT8gb3AgJ2FjcXVpcmUpCgkJIChiZWdpbgoJ CSAgIChtdXRleCAnYWNxdWlyZSkKCQkgICAoaWYgKD0gY291bnQgbWF4LWNvdW50KQoJCSAgICAg ICAoYmVnaW4KCQkJIChtdXRleCAncmVsZWFzZSkKCQkJICh0aGUtc2VtYXBob3JlICdhY3F1aXJl KSkKCQkgICAgICAgKGJlZ2luCgkJCSAoc2V0ISBjb3VudCAoKyAxIGNvdW50KSkKCQkJIChtdXRl eCAncmVsZWFzZSkpKSkpCgkJKChlcT8gb3AgJ3JlbGVhc2UpCgkJIChiZWdpbgoJCSAgIChtdXRl eCAnYWNxdWlyZSkKCQkgICAoc2V0ISBjb3VudCAobWF4IDAgKC0gY291bnQgMSkpKQoJCSAgICht dXRleCAncmVsZWFzZSkKCQkgICAncmVsZWFzZWQpKSkpIHRoZS1zZW1hcGhvcmUpKQoKICAoZGVm aW5lIHRlc3Qtc2VtYXBob3JlIChtYWtlLXNlbWFwaG9yZSAyKSkKICAocGFyYWxsZWwtZXhlY3V0 ZSAKICAgICAgIChsYW1iZGEgKCkgKHRlc3Qtc2VtYXBob3JlICdhY3F1aXJlKSAKCSAgICAgKHRo cmVhZC1zbGVlcCEgMykgCgkgICAgIChzaG93ICN0ICJIZWxsbzE6ICIgKGN1cnJlbnQtc2Vjb25k KSAiXG4iKQoJICAgICAodGVzdC1zZW1hcGhvcmUgJ3JlbGVhc2UpKSAKICAgICAgIChsYW1iZGEg KCkgKHRlc3Qtc2VtYXBob3JlICdhY3F1aXJlKSAKCSAgICAgKHRocmVhZC1zbGVlcCEgMykgCiAg ICAgICAgICAgICAoc2hvdyAjdCAiSGVsbG8yOiAiIChjdXJyZW50LXNlY29uZCkgIlxuIikKCSAg ICAgKHRlc3Qtc2VtYXBob3JlICdyZWxlYXNlKSkKICAgICAgIChsYW1iZGEgKCkgKHRlc3Qtc2Vt YXBob3JlICdhY3F1aXJlKSAKCSAgICAgKHRocmVhZC1zbGVlcCEgMykgCiAgICAgICAgICAgICAo c2hvdyAjdCAiSGVsbG8zOiAiIChjdXJyZW50LXNlY29uZCkgIlxuIikKCSAgICAgKHRlc3Qtc2Vt YXBob3JlICdyZWxlYXNlKSkpCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiBIZWxsbzI6IEhlbGxv MTogMTU3ODAyNjIyOC42NzUwNDYxNTc4MDI2MjI4LjY3NTA4Nwo6IAo6IEhlbGxvMzogMTU3ODAy NjIzMS42NzY3MjYKCk9uIG15IG1hY2hpbmUsIHRoZSBvdXRwdXQgZnJvbSB0aHJlYWRzIDEgYW5k IDIgaXMgaW50ZXJsZWF2ZWQsIHdoaWxlCnRoZSBvdXRwdXQgZnJvbSB0aHJlYWQgMyBpcyBzZXBh cmF0ZS4gSSBjb25zaWRlciB0aGlzIHRvIGJlIGEgcHJvb2Ygb2YKdGhlIGZhY3QgdGhhdCBteSBj b2RlIHdvcmtzIGFzIGV4cGVjdGVkLgoKKioqKiBET05FIGI6IEluIHRlcm1zIG9mIHRlc3QtYW5k LXNldCEgb3BlcmF0aW9ucwogICAgIENMT1NFRDogWzIwMjAtMDEtMDMgRnJpIDEyOjU5XQoKIyti ZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CiAgPDxwYXJhbGxl bC1leGVjdXRlPj4KICA8PG1ha2Utc2VyaWFsaXplcj4+CiAgICAoZGVmaW5lIChtYWtlLXNlbWFw aG9yZSBtYXgtY291bnQpCiAgICAgIChsZXQgKChjb3VudCAwKQogICAgICAgICAgICAoY2VsbCAo bGlzdCBmYWxzZSkpKQoJKGRlZmluZSAodGhlLXNlbWFwaG9yZSBvcCkKCSAgKGNvbmQgKChlcT8g b3AgJ2FjcXVpcmUpCgkJIChiZWdpbgogICAgICAgICAgICAgICAgICAgKGlmICh0ZXN0LWFuZC1z ZXQhIGNlbGwpCiAgICAgICAgICAgICAgICAgICAgICAgKHRoZS1zZW1hcGhvcmUgJ2FjcXVpcmUp KQoJCSAgIChpZiAoPSBjb3VudCBtYXgtY291bnQpCgkJICAgICAgIChiZWdpbgoJCQkgKGNsZWFy ISBjZWxsKQoJCQkgKHRoZS1zZW1hcGhvcmUgJ2FjcXVpcmUpKQoJCSAgICAgICAoYmVnaW4KCQkJ IChzZXQhIGNvdW50ICgrIDEgY291bnQpKQoJCQkgKGNsZWFyISBjZWxsKSkpKSkKCQkoKGVxPyBv cCAncmVsZWFzZSkKCQkgKGJlZ2luCiAgICAgICAgICAgICAgICAgICAoaWYgKHRlc3QtYW5kLXNl dCEgY2VsbCkKICAgICAgICAgICAgICAgICAgICAgICAodGhlLXNlbWFwaG9yZSAncmVsZWFzZSkp CgkJICAgKHNldCEgY291bnQgKG1heCAwICgtIGNvdW50IDEpKSkKCQkgICAoY2xlYXIhIGNlbGwp CgkJICAgJ3JlbGVhc2VkKSkpKSB0aGUtc2VtYXBob3JlKSkKCiAgKGRlZmluZSB0ZXN0LXNlbWFw aG9yZSAobWFrZS1zZW1hcGhvcmUgMikpCiAgKHBhcmFsbGVsLWV4ZWN1dGUgCiAgICAgICAobGFt YmRhICgpICh0ZXN0LXNlbWFwaG9yZSAnYWNxdWlyZSkgCgkgICAgICh0aHJlYWQtc2xlZXAhIDEp IAoJICAgICAoc2hvdyAjdCAiSGVsbG8xOiAiIChjdXJyZW50LXNlY29uZCkgIlxuIikKCSAgICAg KHRlc3Qtc2VtYXBob3JlICdyZWxlYXNlKSkgCiAgICAgICAobGFtYmRhICgpICh0ZXN0LXNlbWFw aG9yZSAnYWNxdWlyZSkgCgkgICAgICh0aHJlYWQtc2xlZXAhIDEpIAogICAgICAgICAgICAgKHNo b3cgI3QgIkhlbGxvMjogIiAoY3VycmVudC1zZWNvbmQpICJcbiIpCgkgICAgICh0ZXN0LXNlbWFw aG9yZSAncmVsZWFzZSkpCiAgICAgICAobGFtYmRhICgpICh0ZXN0LXNlbWFwaG9yZSAnYWNxdWly ZSkgCgkgICAgICh0aHJlYWQtc2xlZXAhIDEpIAogICAgICAgICAgICAgKHNob3cgI3QgIkhlbGxv MzogIiAoY3VycmVudC1zZWNvbmQpICJcbiIpCgkgICAgICh0ZXN0LXNlbWFwaG9yZSAncmVsZWFz ZSkpKQoKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogSGVsbG8xOiBIZWxsbzI6IDE1NzgwMjc1NjEu OTQ2NTI1MTU3ODAyNzU2MS45NDY1NzEKOiAKOiBIZWxsbzM6IDE1NzgwMjc1NjIuOTUwODQxCgpB bHNvIHNlZW1zIHRvIGJlIHdvcmtpbmcgZmluZS4KCioqKiBET05FIEV4ZXJjaXNlIDMuNDggc2Vy aWFsaXplZC1leGNoYW5nZSBkZWFkbG9jawogICAgQ0xPU0VEOiBbMjAyMC0wMS0wMyBGcmkgMTM6 MzBdCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKICAo ZGVmaW5lIChtYWtlLWFjY291bnQtYW5kLXNlcmlhbGl6ZXIgYmFsYW5jZSkKICAgIChkZWZpbmUg KHdpdGhkcmF3IGFtb3VudCkKICAgICAgKGlmICg+PSBiYWxhbmNlIGFtb3VudCkKCSAgKGJlZ2lu IChzZXQhIGJhbGFuY2UgKC0gYmFsYW5jZSBhbW91bnQpKQoJCSBiYWxhbmNlKQoJICAiSW5zdWZm aWNpZW50IGZ1bmRzIikpCiAgICAoZGVmaW5lIChkZXBvc2l0IGFtb3VudCkKICAgICAgKHNldCEg YmFsYW5jZSAoKyBiYWxhbmNlIGFtb3VudCkpCiAgICAgIGJhbGFuY2UpCiAgICAobGV0ICgoYmFs YW5jZS1zZXJpYWxpemVyIChtYWtlLXNlcmlhbGl6ZXIpKSkKICAgICAgKGRlZmluZSAoZGlzcGF0 Y2ggbSkKCShjb25kICgoZXE/IG0gJ3dpdGhkcmF3KSB3aXRoZHJhdykKCSAgICAgICgoZXE/IG0g J2RlcG9zaXQpIGRlcG9zaXQpCgkgICAgICAoKGVxPyBtICdiYWxhbmNlKSBiYWxhbmNlKQoJICAg ICAgKChlcT8gbSAnc2VyaWFsaXplcikgYmFsYW5jZS1zZXJpYWxpemVyKQoJICAgICAgKGVsc2Ug KGVycm9yICJVbmtub3duIHJlcXVlc3Q6IE1BS0UtQUNDT1VOVCIgbSkpKSkKICAgICAgZGlzcGF0 Y2gpKQoKICAoZGVmaW5lIChkZXBvc2l0IGFjY291bnQgYW1vdW50KQogICAgKGxldCAoKHMgKGFj Y291bnQgJ3NlcmlhbGl6ZXIpKQoJICAoZCAoYWNjb3VudCAnZGVwb3NpdCkpKQogICAgICAoKHMg ZCkgYW1vdW50KSkpCiAgKGRlZmluZSAoZXhjaGFuZ2UgYWNjb3VudDEgYWNjb3VudDIpCiAgICAo bGV0ICgoZGlmZmVyZW5jZSAoLSAoYWNjb3VudDEgJ2JhbGFuY2UpCgkJCSAoYWNjb3VudDIgJ2Jh bGFuY2UpKSkpCiAgICAgICgoYWNjb3VudDEgJ3dpdGhkcmF3KSBkaWZmZXJlbmNlKQogICAgICAo KGFjY291bnQyICdkZXBvc2l0KSBkaWZmZXJlbmNlKSkpCiAgKGRlZmluZSAoc2VyaWFsaXplZC1l eGNoYW5nZSBhY2NvdW50MSBhY2NvdW50MikKICAgIChsZXQgKChzZXJpYWxpemVyMSAoYWNjb3Vu dDEgJ3NlcmlhbGl6ZXIpKQoJICAoc2VyaWFsaXplcjIgKGFjY291bnQyICdzZXJpYWxpemVyKSkp CiAgICAgICgoc2VyaWFsaXplcjEgKHNlcmlhbGl6ZXIyIGV4Y2hhbmdlKSkKICAgICAgIGFjY291 bnQxCiAgICAgICBhY2NvdW50MikpKQoKIytlbmRfc3JjCgpUaGUgZm9sbG93aW5nIGNvZGUgd2ls bCB0aHVzIGdldCBzdHVjayBpbiBhIGRlYWRsb2NrOgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBv cnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CihkZWZpbmUgYTEgKG1ha2UtYWNjb3VudC1hbmQtc2Vy aWFsaXplciAyMCkpCihkZWZpbmUgYTIgKG1ha2UtYWNjb3VudC1hbmQtc2VyaWFsaXplciAzMCkp CgoocGFyYWxsZWwtZXhlY3V0ZQogIChsYW1iZGEgKCkgKHNlcmlhbGl6ZWQtZXhjaGFuZ2UgYTEg YTIpKQogIChsYW1iZGEgKCkgKHNlcmlhbGl6ZWQtZXhjaGFuZ2UgYTIgYTEpKSkKIytlbmRfc3Jj CgpXZSBhZGQgc2VyaWFsIG51bWJlcnMgdG8gcmVzb3VyY2VzOgoKIytiZWdpbl9zcmMgc2NoZW1l IDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CiAgICA8PG1ha2Utc2VyaWFsaXplcj4+CiAg ICA8PHBhcmFsbGVsLWV4ZWN1dGU+PgogICAgKGRlZmluZSAobWFrZS1hY2NvdW50LWFuZC1zZXJp YWxpemVyIGJhbGFuY2Ugc2VyaWFsKQogICAgICAoZGVmaW5lICh3aXRoZHJhdyBhbW91bnQpCgko aWYgKD49IGJhbGFuY2UgYW1vdW50KQoJICAgIChiZWdpbiAoc2V0ISBiYWxhbmNlICgtIGJhbGFu Y2UgYW1vdW50KSkKCQkgICBiYWxhbmNlKQoJICAgICJJbnN1ZmZpY2llbnQgZnVuZHMiKSkKICAg ICAgKGRlZmluZSAoZGVwb3NpdCBhbW91bnQpCgkoc2V0ISBiYWxhbmNlICgrIGJhbGFuY2UgYW1v dW50KSkKCWJhbGFuY2UpCiAgICAgIChsZXQgKChiYWxhbmNlLXNlcmlhbGl6ZXIgKG1ha2Utc2Vy aWFsaXplcikpKQoJKGRlZmluZSAoZGlzcGF0Y2ggbSkKCSAgKGNvbmQgKChlcT8gbSAnd2l0aGRy YXcpIHdpdGhkcmF3KQoJCSgoZXE/IG0gJ2RlcG9zaXQpIGRlcG9zaXQpCgkJKChlcT8gbSAnYmFs YW5jZSkgYmFsYW5jZSkKCQkoKGVxPyBtICdzZXJpYWxpemVyKSBiYWxhbmNlLXNlcmlhbGl6ZXIp CiAgICAgICAgICAgICAgICAoKGVxPyBtICdvcmRlcikgc2VyaWFsKQoJCShlbHNlIChlcnJvciAi VW5rbm93biByZXF1ZXN0OiBNQUtFLUFDQ09VTlQiIG0pKSkpCglkaXNwYXRjaCkpCgogICAgKGRl ZmluZSAoZGVwb3NpdCBhY2NvdW50IGFtb3VudCkKICAgICAgKGxldCAoKHMgKGFjY291bnQgJ3Nl cmlhbGl6ZXIpKQoJICAgIChkIChhY2NvdW50ICdkZXBvc2l0KSkpCgkoKHMgZCkgYW1vdW50KSkp CgogICAgKGRlZmluZSAoZXhjaGFuZ2UgYWNjb3VudDEgYWNjb3VudDIpCiAgICAgIChsZXQgKChk aWZmZXJlbmNlICgtIChhY2NvdW50MSAnYmFsYW5jZSkKCQkJICAgKGFjY291bnQyICdiYWxhbmNl KSkpKQoJKChhY2NvdW50MSAnd2l0aGRyYXcpIGRpZmZlcmVuY2UpCgkoKGFjY291bnQyICdkZXBv c2l0KSBkaWZmZXJlbmNlKSkpCgogICAgKGRlZmluZSAoc2VyaWFsaXplZC1leGNoYW5nZSBhY2Nv dW50MSBhY2NvdW50MikKICAgICAgKGxldCAoKHNlcmlhbGl6ZXIxIChhY2NvdW50MSAnc2VyaWFs aXplcikpCgkgICAgKHNlcmlhbGl6ZXIyIChhY2NvdW50MiAnc2VyaWFsaXplcikpKQoJKGlmICg8 IChhY2NvdW50MSAnb3JkZXIpIChhY2NvdW50MiAnb3JkZXIpKQoJICAgICgoc2VyaWFsaXplcjEg KHNlcmlhbGl6ZXIyIGV4Y2hhbmdlKSkKCSAgICAgYWNjb3VudDEKCSAgICAgYWNjb3VudDIpCgkg ICAgKChzZXJpYWxpemVyMiAoc2VyaWFsaXplcjEgZXhjaGFuZ2UpKQoJICAgICBhY2NvdW50MgoJ ICAgICBhY2NvdW50MSkpKSkKICAoZGVmaW5lIGExIChtYWtlLWFjY291bnQtYW5kLXNlcmlhbGl6 ZXIgMjAgMSkpCiAgKGRlZmluZSBhMiAobWFrZS1hY2NvdW50LWFuZC1zZXJpYWxpemVyIDMwIDIp KQoKKHNob3cgI3QgIkJhbGFuY2Ugc3RhcnQ6ICIgKGExICdiYWxhbmNlKSAiICIgKGEyICdiYWxh bmNlKSAiXG4iKQoKICAocGFyYWxsZWwtZXhlY3V0ZQogICAgKGxhbWJkYSAoKSAoc2VyaWFsaXpl ZC1leGNoYW5nZSBhMSBhMikpCiAgICAobGFtYmRhICgpIChzZXJpYWxpemVkLWV4Y2hhbmdlIGEy IGExKSkpCihzaG93ICN0ICJCYWxhbmNlIGVuZDogIiAoYTEgJ2JhbGFuY2UpICIgIiAoYTIgJ2Jh bGFuY2UpICJcbiIpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IEJhbGFuY2Ugc3RhcnQ6IDIwIDMw CjogQmFsYW5jZSBlbmQ6IDIwIDMwCgpFeGNoYW5nZSBzZWVtcyB0byBnbyBmaW5lLgoKVGhpcyB3 b3JrcywgYmVjYXVzZSBpZiBtdXRleGVzIGFyZSBvcmRlcmVkLCBib3RoIGFsbCBwYXJhbGxlbApw cm9jZXNzZXMgd2lsbCB0cnkgdG8gYWNjZXNzIHRoZSBzYW1lIG11dGV4IGZpcnN0LgoKKioqIERP TkUgRXhlcmNpc2UgMy40OSBXaGVuIG51bWJlcmluZyBhY2NvdW50cyBkb2Vzbid0IHdvcmsKICAg IENMT1NFRDogWzIwMjAtMDEtMDMgRnJpIDEzOjQxXQpUaGUgY2FzZSBzdWdnZXN0ZWQgYnkgdGhl IGhpbnQgb2YgdGhlIGV4ZXJjaXNlIGlzIHRoZSBmb2xsb3dpbmc6ClN1cHBvc2Ugd2UgbmVlZCB0 byB0cmFuc2ZlciB0aGUgbW9uZXkgZnJvbSBhY2NvdW50IGExIHRvIHNvbWUgb3RoZXIKYWNjb3Vu dCwgdGhhdCBpcyByZWNvcmRlZCBhcyBhIGxpc3QgaW5zaWRlIGFjY291bnQgYTEsIGFuZCB0aGVu IHJlbW92ZQp0aGlzICJwZW5kaW5nIHRyYW5zZmVyIiBmcm9tIHRoZSBsaXN0IG9mIHRyYW5zZmVy cyBvZiBhY2NvdW50IGExLiBUbwpkbyB0aGlzLCB3ZSB3b3VsZCBuZWVkIHRvIGZpcnN0IGxvY2sg dGhlIGFjY291bnQgYTEgdG8gZ2V0IHRoZSBwb2ludGVyCnRvIGFjY291bnQgYTIsIGFuZCBfdGhl bl8gbG9jayBhMi4gSG93ZXZlciwgaXQgbWF5IHZlcnkgd2VsbCBiZSB0aGF0CnRoZSBhY2NvdW50 IGEyIGhhcyBhIHNtYWxsZXIgc2VyaWFsIG51bWJlciB0aGFuIGExLiAKCldlIGNvdWxkLCBob3dl dmVyLCB1bmxvY2sgYTEsIGxvY2sgYTIsIHRoZW4gbG9jayBhMSBhZ2FpbiwgYW5kIGNoZWNrCnRo YXQgdGhlIHBlbmRpbmcgdHJhbnNhY3Rpb24gZnJvbSBhMSB0byBhMiBpcyBzdGlsbCBuZWVkZWQu CgoqKiogU3RyZWFtcyBjb21tb24KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpy ZXN1bHRzIG91dHB1dCA6bm93ZWItcmVmIHN0cmVhbXMtY29tbW9uCiAgKGRlZmluZS1zeW50YXgg Y29ucy1zdHJlYW0KICAgIChzeW50YXgtcnVsZXMgKCkKICAgICAgKChjb25zLXN0cmVhbSBhIGIp IChjb25zIGEgKGRlbGF5IGIpKSkpKQogIChkZWZpbmUgKHN0cmVhbS1jYXIgc3RyZWFtKSAoY2Fy IHN0cmVhbSkpCiAgKGRlZmluZSAoc3RyZWFtLWNkciBzdHJlYW0pIChmb3JjZSAoY2RyIHN0cmVh bSkpKQogIChkZWZpbmUgKHN0cmVhbS1yZWYgcyBuKQogICAgKGlmICg9IG4gMCkKCShzdHJlYW0t Y2FyIHMpCgkoc3RyZWFtLXJlZiAoc3RyZWFtLWNkciBzKSAoLSBuIDEpKSkpCgogIChkZWZpbmUg KHN0cmVhbS1tYXAgcHJvYyBzKQogICAgKGlmIChzdHJlYW0tbnVsbD8gcykKCXRoZS1lbXB0eS1z dHJlYW0KCShjb25zLXN0cmVhbSAocHJvYyAoc3RyZWFtLWNhciBzKSkKCQkgICAgIChzdHJlYW0t bWFwIHByb2MgKHN0cmVhbS1jZHIgcykpKSkpCiAgKGRlZmluZSBzdHJlYW0tbnVsbD8gbnVsbD8p CiAgKGRlZmluZSB0aGUtZW1wdHktc3RyZWFtICcoKSkKICAoZGVmaW5lIChzdHJlYW0tZm9yLWVh Y2ggcHJvYyBzKQogICAgKGlmIChzdHJlYW0tbnVsbD8gcykKCSdkb25lCgkoYmVnaW4gKHByb2Mg KHN0cmVhbS1jYXIgcykpCgkgICAgICAgKHN0cmVhbS1mb3ItZWFjaCBwcm9jIChzdHJlYW0tY2Ry IHMpKSkpKQogIChkZWZpbmUgKGRpc3BsYXktc3RyZWFtIHMpCiAgICAoc3RyZWFtLWZvci1lYWNo IGRpc3BsYXktbGluZSBzKSkKCiAgKGRlZmluZSAoZGlzcGxheS1saW5lIHgpCiAgICAobmV3bGlu ZSkKICAgIChkaXNwbGF5IHgpKQogIChkZWZpbmUgKHN0cmVhbS1lbnVtZXJhdGUtaW50ZXJ2YWwg bG93IGhpZ2gpCiAgICAoaWYgKD4gbG93IGhpZ2gpCgl0aGUtZW1wdHktc3RyZWFtCgkoY29ucy1z dHJlYW0KCSBsb3cKCSAoc3RyZWFtLWVudW1lcmF0ZS1pbnRlcnZhbCAoKyBsb3cgMSkgaGlnaCkp KSkKICAoZGVmaW5lIChzdHJlYW0tZmlsdGVyIHByZWQgc3RyZWFtKQogICAgKGNvbmQgKChzdHJl YW0tbnVsbD8gc3RyZWFtKSB0aGUtZW1wdHktc3RyZWFtKQoJICAoKHByZWQgKHN0cmVhbS1jYXIg c3RyZWFtKSkKCSAgIChjb25zLXN0cmVhbSAoc3RyZWFtLWNhciBzdHJlYW0pCgkJCShzdHJlYW0t ZmlsdGVyIHByZWQKCQkJCSAgICAgICAoc3RyZWFtLWNkciBzdHJlYW0pKSkpCgkgIChlbHNlIChz dHJlYW0tZmlsdGVyIHByZWQgKHN0cmVhbS1jZHIgc3RyZWFtKSkpKSkKCiMrZW5kX3NyYwoKIyti ZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8c3RyZWFtcy1j b21tb24+PgooZGlzcGxheSAoY29ucy1zdHJlYW0gMiAzKSkKKG5ld2xpbmUpCihkaXNwbGF5IChz dHJlYW0tY2FyIChjb25zLXN0cmVhbSAyIDMpKSkKKG5ld2xpbmUpCihkaXNwbGF5IChzdHJlYW0t Y2RyIChjb25zLXN0cmVhbSAyIDMpKSkKKG5ld2xpbmUpCihkaXNwbGF5LXN0cmVhbSAoY29ucy1z dHJlYW0gMiAoY29ucy1zdHJlYW0gMyB0aGUtZW1wdHktc3RyZWFtKSkpCiMrZW5kX3NyYwoKIytS RVNVTFRTOgo6ICgyICgjZiAuICM8cHJvY2VkdXJlICNmPikgcHJvbWlzZSkKOiAyCjogMwo6IAo6 IDIKOiAzCgpOT1RFOiBBcyBmYXIgYXMgSSB1bmRlcnN0YW5kLCB+KGRlbGF5KX4gYW5kIH4oZm9y Y2UpfiBhcmUgdXNpbmcKbWVtb2l6YXRpb24gaW5zaWRlIGJ5IGRlZmF1bHQgaW4gUl43IFJTLCBz byB3ZSBuZWVkbid0IGNhcmUgYWJvdXQgaXQKb3Vyc2VsdmVzLgoKKioqIERPTkUgRXhlcmNpc2Ug My41MCBzdHJlYW0tbWFwIG11bHRpcGxlIGFyZ3VtZW50cwogICAgQ0xPU0VEOiBbMjAyMC0wMS0w MyBGcmkgMjE6MThdCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBv dXRwdXQgOm5vd2ViLXJlZiBzdHJlYW1zLW11bHRpbWFwCiAgKGRlZmluZSAoc3RyZWFtLW1hcCBw cm9jIC4gYXJnc3RyZWFtcykKICAgIChpZiAoc3RyZWFtLW51bGw/IChjYXIgYXJnc3RyZWFtcykp Cgl0aGUtZW1wdHktc3RyZWFtCgkoY29ucy1zdHJlYW0KCSAoYXBwbHkgcHJvYyAobWFwIHN0cmVh bS1jYXIgYXJnc3RyZWFtcykpCgkgKGFwcGx5IHN0cmVhbS1tYXAKCQkoY29ucyBwcm9jIChtYXAg c3RyZWFtLWNkciBhcmdzdHJlYW1zKSkpKSkpCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoKCiMrYmVn aW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PHN0cmVhbXMtY29t bW9uPj4KPDxzdHJlYW1zLW11bHRpbWFwPj4KKGRpc3BsYXktc3RyZWFtIChzdHJlYW0tbWFwIGxp c3QgKGNvbnMtc3RyZWFtICdvbmUgdGhlLWVtcHR5LXN0cmVhbSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGNvbnMtc3RyZWFtICd0d28gdGhlLWVtcHR5LXN0cmVhbSkpKQoKIytl bmRfc3JjCgojK1JFU1VMVFM6CjogCjogKG9uZSB0d28pCgpBcHBhcmVudGx5LCB3b3Jrcy4KCioq KiBET05FIEV4ZXJjaXNlIDMuNTEgc3RyZWFtLXNob3cKICAgIENMT1NFRDogWzIwMjAtMDEtMDMg RnJpIDIxOjI4XQoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0 cHV0CiAgPDxzdHJlYW1zLWNvbW1vbj4+CiAgKGRlZmluZSAoc2hvdyB4KQogICAgKGRpc3BsYXkt bGluZSB4KQogICAgeCkKICAoZGVmaW5lIHggKHN0cmVhbS1tYXAgc2hvdyAoc3RyZWFtLWVudW1l cmF0ZS1pbnRlcnZhbCAwIDEwKSkpCiAgKHN0cmVhbS1yZWYgeCA1KQogIChuZXdsaW5lKSAoZGlz cGxheSAibmV4dCBjYWxsIHRvIHN0cmVhbS1yZWY6IikKICAoc3RyZWFtLXJlZiB4IDcpCiAgKHN0 cmVhbS1yZWYgeCA3KQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKIytiZWdpbl9leGFtcGxlCgowCjEK MgozCjQKNQpuZXh0IGNhbGwgdG8gc3RyZWFtLXJlZjoKNgo3CiMrZW5kX2V4YW1wbGUKCldoeSBk b2VzIGl0IG9ubHkgcHJpbnQgNiBhbmQgNyBvbiB0aGUgc2Vjb25kIGNhbGw/IFRoZSBhbnN3ZXIg aXMgLS0KbWVtb2l6YXRpb24uIFNpbmNlIH5mb3JjZX4gYWxyZWFkeSBrbm93cyB0aGUgcmVzdWx0 IG9mIGNhbGxzIHRvCn4oc3RyZWFtLXJlZiA1KX4sIGl0IGRvZXNuJ3QgY2FsbCB+c2hvd34gb24g dGhlbSBhZ2Fpbi4KCioqKiBET05FIEV4ZXJjaXNlIDMuNTIgc3RyZWFtcyB3aXRoIG1pbmQtYm9n Z2xpbmcKICAgIENMT1NFRDogWzIwMjAtMDEtMDMgRnJpIDIyOjE3XQoKIytiZWdpbl9zcmMgc2No ZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8c3RyZWFtcy1jb21tb24+PgogIChk ZWZpbmUgc3VtIDApCiAgKHNob3cgI3QgImRlYnVnMTogIiBzdW0gIlxuIikKICAoZGVmaW5lIChh Y2N1bSB4KQogICAgKHNldCEgc3VtICgrIHggc3VtKSkKICAgIHN1bSkKICAoc2hvdyAjdCAiZGVi dWcyOiAiIHN1bSAiXG4iKQogIChkZWZpbmUgc2VxIChzdHJlYW0tbWFwIGFjY3VtIChzdHJlYW0t ZW51bWVyYXRlLWludGVydmFsIDEgMjApKSkKICAoc2hvdyAjdCAiZGVidWczIChzdHJlYW0tbWFw IGZvcmNlcyBhIHN0cmVhbSBvbmNlKTogIiBzdW0gIlxuIikKICAoZGVmaW5lIHkgKHN0cmVhbS1m aWx0ZXIgZXZlbj8gc2VxKSkKICAoc2hvdyAjdCAiZGVidWc0IDErMiszOiAiIHN1bSAiXG4iKQog IChkZWZpbmUgeiAoc3RyZWFtLWZpbHRlciAobGFtYmRhICh4KSAoPSAocmVtYWluZGVyIHggNSkg MCkpCgkJCSAgIHNlcSkpCiAgKHNob3cgI3QgImRlYnVnNSBhZGRzIDQsIGFzIGFsbCBsb3dlciBh cmUgYWxyZWFkeSBldmFsdWF0ZWQ6ICIgc3VtICJcbiIpCiAgKHN0cmVhbS1yZWYgeSA3KQogIChz aG93ICN0ICJkZWJ1ZzYgYWRkcyBzdW1zIHRoYXQgYXJlIGV2ZW4gdXAgdG8gMjA6ICIgc3VtICJc biIpCiAgKGRpc3BsYXktc3RyZWFtIHopCiAgKHNob3cgI3QgIlxuZGVidWc3OiAiIHN1bSAiXG4i KQojK2VuZF9zcmMKCiMrUkVTVUxUUzoKIytiZWdpbl9leGFtcGxlCmRlYnVnMTogMApkZWJ1ZzI6 IDAKZGVidWczOiAxCmRlYnVnNDogNgpkZWJ1ZzU6IDEwCmRlYnVnNjogMTM2CgoxMAoxNQo0NQo1 NQoxMDUKMTIwCjE5MAoyMTAKZGVidWc3OiAyMTAKIytlbmRfZXhhbXBsZQoKIytiZWdpbl9zcmMg c2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0CihkZWZpbmUgZGVsYXkgI2YpCihk ZWZpbmUgZm9yY2UgI2YpCihkZWZpbmUtc3ludGF4IGRlbGF5CiAgKHN5bnRheC1ydWxlcyAoKQog ICAoKGRlbGF5IHgpIChsYW1iZGEgKCkgeCkpKSkKKGRlZmluZSAoZm9yY2UgZGVsYXllZC1vYmpl Y3QpIChkZWxheWVkLW9iamVjdCkpCjw8c3RyZWFtcy1jb21tb24+PgogIChkZWZpbmUgc3VtIDAp CiAgKHNob3cgI3QgImRlYnVnMTogIiBzdW0gIlxuIikKICAoZGVmaW5lIChhY2N1bSB4KQogICAg KHNldCEgc3VtICgrIHggc3VtKSkKICAgIHN1bSkKICAoc2hvdyAjdCAiZGVidWcyOiAiIHN1bSAi XG4iKQogIChkZWZpbmUgc2VxIChzdHJlYW0tbWFwIGFjY3VtIChzdHJlYW0tZW51bWVyYXRlLWlu dGVydmFsIDEgMjApKSkKICAoc2hvdyAjdCAiZGVidWczOiAiIHN1bSAiXG4iKQogIChkZWZpbmUg eSAoc3RyZWFtLWZpbHRlciBldmVuPyBzZXEpKQogIChzaG93ICN0ICJkZWJ1ZzQ6ICIgc3VtICJc biIpCiAgKGRlZmluZSB6IChzdHJlYW0tZmlsdGVyIChsYW1iZGEgKHgpICg9IChyZW1haW5kZXIg eCA1KSAwKSkKCQkJICAgc2VxKSkKICAoc2hvdyAjdCAiZGVidWc1OiAiIHN1bSAiXG4iKQogIChz dHJlYW0tcmVmIHkgNykKICAoc2hvdyAjdCAiZGVidWc2OiAiIHN1bSAiXG4iKQogIChkaXNwbGF5 LXN0cmVhbSB6KQogIChzaG93ICN0ICJcbmRlYnVnNzogIiBzdW0gIlxuIikKIytlbmRfc3JjCgoj K1JFU1VMVFM6CiMrYmVnaW5fZXhhbXBsZQpkZWJ1ZzE6IDAKZGVidWcyOiAwCmRlYnVnMzogMQpk ZWJ1ZzQ6IDYKZGVidWc1OiAxNQpkZWJ1ZzY6IDE2MgoKMTUKMTgwCjIzMAozMDUKZGVidWc3OiAz NjIKIytlbmRfZXhhbXBsZQoKVGhlIGRpZmZlcmVuY2UgaGVyZSwgYWdhaW4sIGxpZXMgaW4gbWVt b2l6YXRpb24uIEluIHRoZSBmaXJzdCBleGFtcGxlLApzdW0gaXMgb25seSBldmFsdWF0ZWQgb25j ZSBmb3IgZXZlcnkgbnVtYmVyIGZyb20gMSB0byAyMCwgaW4gdGhlCnNlY29uZCwgZXZlcnkgdGlt ZSB+Zm9yY2V+IGlzIGNhbGxlZC4gRXZlcnkgY2FsbCB0byB+Zm9yY2V+IGFkZHMgdG8KdGhlIH5z dW1+LiBJIGZpbmQgaXQgaGFyZCB0byBmaW5kIHdoZW4gZXhhY3RseSB0aGluZ3MgYXJlIGFkZGVk IHRvIHRoZQpzdW0uIFRoaXMgY2FuIGJlIGRlYnVnZ2VkIGJ5IGFkZGluZyBhIHByaW50IHRvIHRo ZSB+YWNjdW1+IHByb2NlZHVyZSwKYnV0IHRoZSBnZW5lcmFsIHJ1bGUgc2VlbXMgdG8gYmU6IGRv bid0IHVzZSBtdXRhdGlvbiB0b2dldGhlciB3aXRoCmxhenkgbGlzdHMuCgoqKiogU29tZSBtb3Jl IHRvb2xzIGZvciBzdHJlYW1zCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1 bHRzIG91dHB1dCA6bm93ZWItcmVmIHN0cmVhbXMtMgogIChkZWZpbmUgKGFkZC1zdHJlYW1zIHMx IHMyKQogICAgKHN0cmVhbS1tYXAgKyBzMSBzMikpCiAgKGRlZmluZSBvbmVzIChjb25zLXN0cmVh bSAxIG9uZXMpKQogIChkZWZpbmUgemVyb3MgKGNvbnMtc3RyZWFtIDAgemVyb3MpKQogIChkZWZp bmUgaW50ZWdlcnMgKGNvbnMtc3RyZWFtIDEgKGFkZC1zdHJlYW1zIG9uZXMgaW50ZWdlcnMpKSkK ICAoZGVmaW5lIChzY2FsZS1zdHJlYW0gc3RyZWFtIGZhY3RvcikKICAgIChzdHJlYW0tbWFwIChs YW1iZGEgKHgpICgqIHggZmFjdG9yKSkgc3RyZWFtKSkKCiMrZW5kX3NyYwoqKiogRE9ORSBFeGVy Y2lzZSAzLjUzIHN0cmVhbSBwb3dlciBvZiB0d28KICAgIENMT1NFRDogWzIwMjAtMDEtMDMgRnJp IDIyOjQwXQoKQmVmb3JlIHJ1bm5pbmcgdGhlIGNvZGUsIEkgbWFrZSBhIGh5cG90aGVzaXMgdGhh dCB0aGUgc3RyZWFtCnJlcHJlc2VudHMgcG93ZXJzIG9mIHR3bywgYmVjYXVzZSBlYWNoIGVsZW1l bnQgaXMgdGhlIHByZXZpb3VzIG9uZSwKZG91YmxlZC4gCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4 cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZQo8PHN0cmVhbXMtY29tbW9uPj4KPDxzdHJlYW1zLW11 bHRpbWFwPj4KPDxzdHJlYW1zLTI+PgooZGVmaW5lIHMgKGNvbnMtc3RyZWFtIDEgKGFkZC1zdHJl YW1zIHMgcykpKQooc3RyZWFtLXJlZiBzIDYpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6IDY0Cgoq KiogRE9ORSBFeGVyY2lzZSAzLjU0IG11bC1zdHJlYW1zCiAgICBDTE9TRUQ6IFsyMDIwLTAxLTAz IEZyaSAyMjo0N10KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91 dHB1dCA6bm93ZWItcmVmIHN0cmVhbXMtbXVsCiAgKGRlZmluZSAobXVsLXN0cmVhbXMgczEgczIp CiAgICAoc3RyZWFtLW1hcCAqIHMxIHMyKSkKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hlbWUg OmV4cG9ydHMgYm90aCA6cmVzdWx0cyB2YWx1ZQo8PHN0cmVhbXMtY29tbW9uPj4KPDxzdHJlYW1z LW11bHRpbWFwPj4KPDxzdHJlYW1zLTI+Pgo8PHN0cmVhbXMtbXVsPj4KKGRlZmluZSBmYWN0b3Jp YWxzIAogIChjb25zLXN0cmVhbSAxIChtdWwtc3RyZWFtcyBmYWN0b3JpYWxzIGludGVnZXJzKSkp CihzdHJlYW0tcmVmIGZhY3RvcmlhbHMgNSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogMTIwCgoq KiogRE9ORSBFeGVyY2lzZSAzLjU1IHN0cmVhbXMgcGFydGlhbC1zdW1zCiAgICBDTE9TRUQ6IFsy MDIwLTAxLTAzIEZyaSAyMzowNV0KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpy ZXN1bHRzIG91dHB1dCA6bm93ZWItcmVmIHN0cmVhbXMtcGFydGlhbC1zdW1zCihkZWZpbmUgKHBh cnRpYWwtc3VtcyBzKQogIChkZWZpbmUgcHMgKGNvbnMtc3RyZWFtIChzdHJlYW0tY2FyIHMpIChh ZGQtc3RyZWFtcyBwcyAoc3RyZWFtLWNkciBzKSkpKQogIHBzKQojK2VuZF9zcmMKCiMrYmVnaW5f c3JjIHNjaGVtZSA6ZXhwb3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dCB2YWx1ZQo8PHN0cmVhbXMt Y29tbW9uPj4KPDxzdHJlYW1zLW11bHRpbWFwPj4KPDxzdHJlYW1zLTI+Pgo8PHN0cmVhbXMtcGFy dGlhbC1zdW1zPj4KKGRlZmluZSBwcyAocGFydGlhbC1zdW1zIGludGVnZXJzKSkKKGxpc3QgKHN0 cmVhbS1yZWYgcHMgMCkKKHN0cmVhbS1yZWYgcHMgMSkKKHN0cmVhbS1yZWYgcHMgMikKKHN0cmVh bS1yZWYgcHMgMykKKHN0cmVhbS1yZWYgcHMgNCkpCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoKfCAx IHwgMyB8IDYgfCAxMCB8IDE1IHwKCioqKiBET05FIEV4ZXJjaXNlIDMuNTYgSGFtbWluZydzIHN0 cmVhbXMtbWVyZ2UKICAgIENMT1NFRDogWzIwMjAtMDEtMDMgRnJpIDIzOjI2XQoKIytiZWdpbl9z cmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpub3dlYi1yZWYgc3RyZWFt cy1tZXJnZQogICAgICAgICAgKGRlZmluZSAobWVyZ2UgczEgczIpCiAgICAgICAgICAgIChjb25k ICgoc3RyZWFtLW51bGw/IHMxKSBzMikKICAgICAgICAgICAgICAgICAgKChzdHJlYW0tbnVsbD8g czIpIHMxKQogICAgICAgICAgICAgICAgICAoZWxzZQogICAgICAgICAgICAgICAgICAgKGxldCAo KHMxY2FyIChzdHJlYW0tY2FyIHMxKSkKICAgICAgICAgICAgICAgICAgICAgICAgIChzMmNhciAo c3RyZWFtLWNhciBzMikpKQogICAgICAgICAgICAgICAgICAgICAoY29uZCAoKDwgczFjYXIgczJj YXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucy1zdHJlYW0gczFjYXIgKG1lcmdl IChzdHJlYW0tY2RyIHMxKSBzMikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAoKD4gczFj YXIgczJjYXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucy1zdHJlYW0gczJjYXIg KG1lcmdlIHMxIChzdHJlYW0tY2RyIHMyKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAo ZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMtc3RyZWFtIHMxY2FyCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lcmdlIChzdHJlYW0tY2RyIHMx KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyZWFt LWNkciBzMikpKSkpKSkpKQoKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMg Ym90aCA6cmVzdWx0cyB2YWx1ZQo8PHN0cmVhbXMtY29tbW9uPj4KPDxzdHJlYW1zLW11bHRpbWFw Pj4KPDxzdHJlYW1zLTI+Pgo8PHN0cmVhbXMtbWVyZ2U+PgooZGVmaW5lIFMgKGNvbnMtc3RyZWFt IDEgKG1lcmdlIChzY2FsZS1zdHJlYW0gUyAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChtZXJnZSAoc2NhbGUtc3RyZWFtIFMgMykKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHNjYWxlLXN0cmVhbSBTIDUpKSkpKQooc3RyZWFtLXJlZiBTIDUpCiMrZW5k X3NyYwoKIytSRVNVTFRTOgo6IDYKCioqKiBET05FIEV4ZXJjaXNlIDMuNTcgZXhwb25lbnRpYWwg YWRkaXRpb25zIGZpYnMKICAgIENMT1NFRDogWzIwMjAtMDEtMDMgRnJpIDIzOjM2XQoKVGhlIGRl ZmluaXRpb24gb2YgfmZpYnN+IGlzIHRoZSBmb2xsb3dpbmc6CgojK2JlZ2luX3NyYyBzY2hlbWUg OmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKICAoZGVmaW5lIGZpYnMKICAgIChjb25zLXN0 cmVhbSAwCgkJIChjb25zLXN0cmVhbSAxCgkJCSAgICAgIChhZGQtc3RyZWFtcyAoc3RyZWFtLWNk ciBmaWJzKQoJCQkJCSAgIGZpYnMpKSkpCiMrZW5kX3NyYwoKV2l0aCBtZW1vaXphdGlvbiwgZXZl cnkgc3RlcCBqdXN0IHJlcXVpcmVzIFwoTyhuKVwpIGFkZGl0aW9ucywgYmVjYXVzZQpldmVyeSB+ c3RyZWFtLWNkcn4gd291bGQgb25seSBhZGQgdHdvIGFscmVhZHkgY29tcHV0ZWQgdmFsdWVzLgoK V2l0aG91dCBtZW1vaXphdGlvbiwgZXZlcnkgc3RlcCB3b3VsZCByZXF1aXJlIGNvbXB1dGluZyBh bGwgcHJldmlvdXMKdmFsdWVzIG9mIHRoZSBGaWJvbmFjY2kgc2VxdWVuY2UgZnJvbSBzY3JhdGNo LiBJdCBpcyBub3QgaGFyZCB0bwpub3RpY2UgdGhhdCB0aGUgZWxlbWVudCBudW1iZXIgTiB3b3Vs ZCByZXF1aXJlIGNvbXB1dGluZyBudW1iZXJzIE4tMQphbmQgTi0yLCBzbyBldmVyeSBzdGVwIHdv dWxkIHJvdWdobHkgZG91YmxlIHRoZSBudW1iZXIKb3BlcmF0aW9ucy4gVGh1cyB0aGUgdG90YWwg bnVtYmVyIHdvdWxkIGJlIFwoTygyXm4pXCkuCgoqKiogRE9ORSBFeGVyY2lzZSAzLjU4IENyeXB0 aWMgc3RyZWFtCiAgICBDTE9TRUQ6IFsyMDIwLTAxLTAzIEZyaSAyMzo1MF0KVGhpcyBjcnlwdGlj IHN0cmVhbSBhcHByb3hpbWF0ZXMgYSByYXRpb25hbCBmcmFjdGlvbiBieSBhIGRlY2ltYWwKKHJh ZGl4KSBvbmUuIAoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0 cHV0IAogIDw8c3RyZWFtcy1jb21tb24+PgogIChkZWZpbmUgKGV4cGFuZCBudW0gZGVuIHJhZGl4 KQogICAgKGNvbnMtc3RyZWFtCiAgICAgKHF1b3RpZW50ICgqIG51bSByYWRpeCkgZGVuKQogICAg IChleHBhbmQgKHJlbWFpbmRlciAoKiBudW0gcmFkaXgpIGRlbikgZGVuIHJhZGl4KSkpCiAgKGRv ICgoaSAwICgrIGkgMSkpKQogICAgICAoKD0gaSA1KSAjdCkKICAgIChzaG93ICN0IChzdHJlYW0t cmVmIChleHBhbmQgMSA3IDEwKSBpKSkpCiAgKG5ld2xpbmUpCiAgKHNob3cgI3QgKC8gMS4wIDcu MCkgIlxuIikKICAoZG8gKChpIDAgKCsgaSAxKSkpCiAgICAgICgoPSBpIDUpICN0KQogICAgKHNo b3cgI3QgKHN0cmVhbS1yZWYgKGV4cGFuZCAzIDggMTApIGkpKSkKICAobmV3bGluZSkKICAoc2hv dyAjdCAoLyAzLjAgOC4wKSAiXG4iKQoKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogMTQyODUKOiAw LjE0Mjg1NzE0Mjg1NzE0Mjg1CjogMzc1MDAKOiAwLjM3NQoKKioqIERPTkUgRXhlcmNpc2UgMy41 OSBwb3dlciBzZXJpZXMKICAgIENMT1NFRDogWzIwMjAtMDEtMDQgU2F0IDA5OjU4XQoqKioqIERP TkUgaW50ZWdyYXRlIHNlcmllcwogICAgIENMT1NFRDogWzIwMjAtMDEtMDQgU2F0IDA5OjQ5XQoj K2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQgOm5vd2ViLXJl ZiBzdHJlYW1zLWludGVncmF0ZS1zZXJpZXMKKGRlZmluZSAoZGl2LXN0cmVhbXMgczEgczIpCiAg KHN0cmVhbS1tYXAgLyBzMSBzMikpCgooZGVmaW5lIChpbnRlZ3JhdGUtc2VyaWVzIHMpCiAoZGl2 LXN0cmVhbXMgcyBpbnRlZ2VycykpCgojK2VuZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhw b3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PHN0cmVhbXMtY29tbW9uPj4KPDxzdHJlYW1zLW11 bHRpbWFwPj4KPDxzdHJlYW1zLTI+Pgo8PHN0cmVhbXMtaW50ZWdyYXRlLXNlcmllcz4+CgooZGVm aW5lIHRlc3QgKGludGVncmF0ZS1zZXJpZXMgb25lcykpCgooZG8gKChpIDAgKCsgaSAxKSkpCiAg ICAgICgoPSBpIDUpICN0KQogICAgKHNob3cgI3QgKHN0cmVhbS1yZWYgdGVzdCBpKSAiICIpKQoK IytlbmRfc3JjCgojK1JFU1VMVFM6CjogMSAxLzIgMS8zIDEvNCAxLzUgCgoqKioqIERPTkUgZXhw b25lbnRpYWwgc2VyaWVzCiAgICAgQ0xPU0VEOiBbMjAyMC0wMS0wNCBTYXQgMDk6NThdCgojK2Jl Z2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQgOm5vd2ViLXJlZiBz dHJlYW1zLXNpbi1jb3MKKGRlZmluZSBleHAtc2VyaWVzCiAgKGNvbnMtc3RyZWFtIDEgKGludGVn cmF0ZS1zZXJpZXMgZXhwLXNlcmllcykpKQooZGVmaW5lIGNvc2luZS1zZXJpZXMKICAoY29ucy1z dHJlYW0gMSAoaW50ZWdyYXRlLXNlcmllcyAoc2NhbGUtc3RyZWFtIHNpbmUtc2VyaWVzIC0xKSkp KQooZGVmaW5lIHNpbmUtc2VyaWVzCiAgKGNvbnMtc3RyZWFtIDAgKGludGVncmF0ZS1zZXJpZXMg Y29zaW5lLXNlcmllcykpKQojK2VuZF9zcmMKCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBi b3RoIDpyZXN1bHRzIG91dHB1dAo8PHN0cmVhbXMtY29tbW9uPj4KPDxzdHJlYW1zLW11bHRpbWFw Pj4KPDxzdHJlYW1zLTI+Pgo8PHN0cmVhbXMtaW50ZWdyYXRlLXNlcmllcz4+Cjw8c3RyZWFtcy1z aW4tY29zPj4KCihkbyAoKGkgMCAoKyBpIDEpKSkKICAgICAgKCg9IGkgNSkgI3QpCiAgICAoc2hv dyAjdCAoc3RyZWFtLXJlZiBjb3NpbmUtc2VyaWVzIGkpICIgIikpCihuZXdsaW5lKQooZG8gKChp IDAgKCsgaSAxKSkpCiAgICAgICgoPSBpIDUpICN0KQogICAgKHNob3cgI3QgKHN0cmVhbS1yZWYg c2luZS1zZXJpZXMgaSkgIiAiKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogMSAwIC0xLzIgMCAx LzI0IAo6IDAgMSAwIC0xLzYgMCAKCioqKiBET05FIEV4ZXJjaXNlIDMuNjAgbXVsLXNlcmllcwog ICAgQ0xPU0VEOiBbMjAyMC0wMS0wNCBTYXQgMTE6MDddCkxldCdzIHdyaXRlIG91dCBhIGZvcm11 bGEgZmlyc3Q6CgpcKFMgPSBcc3VtX3tpPTB9XntcaW5mdHl9YV9pIFxjZG90IFxzdW1fe2o9MH1e e1xpbmZ0eX1iX2ogPSBhXzAgXGNkb3QgYl8wICsgYl8wIFxjZG90ClxzdW1fe2k9MX1ee1xpbmZ0 eX1hX2kgKyBcc3VtX3tpPTB9XntcaW5mdHl9YV9pIFxjZG90IFxzdW1fe2o9MX1ee1xpbmZ0eX1i X2pcKQoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpu b3dlYi1yZWYgc3RyZWFtcy1tdWwtc2VyaWVzCihkZWZpbmUgKG11bC1zZXJpZXMgczEgczIpCiAg KGNvbnMtc3RyZWFtICgqIChzdHJlYW0tY2FyIHMxKSAoc3RyZWFtLWNhciBzMikpCiAgICAgICAg ICAgICAgICAoYWRkLXN0cmVhbXMgKHNjYWxlLXN0cmVhbSAoc3RyZWFtLWNkciBzMSkgKHN0cmVh bS1jYXIgczIpKSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobXVsLXNlcmllcyBzMSAo c3RyZWFtLWNkciBzMikpKSkpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRz IGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8c3RyZWFtcy1jb21tb24+Pgo8PHN0cmVhbXMtbXVsdGlt YXA+Pgo8PHN0cmVhbXMtMj4+Cjw8c3RyZWFtcy1pbnRlZ3JhdGUtc2VyaWVzPj4KPDxzdHJlYW1z LXNpbi1jb3M+Pgo8PHN0cmVhbXMtbXVsLXNlcmllcz4+Cjw8c3RyZWFtcy1wYXJ0aWFsLXN1bXM+ PgooZGVmaW5lIHN1bS1vZi1zaW5lLWFuZC1jb3NpbmUKIChwYXJ0aWFsLXN1bXMgKGFkZC1zdHJl YW1zIChtdWwtc2VyaWVzIHNpbmUtc2VyaWVzIHNpbmUtc2VyaWVzKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG11bC1zZXJpZXMgY29zaW5lLXNlcmllcyBjb3NpbmUtc2VyaWVzKSkpKQoo ZG8gKChpIDAgKCsgaSAxKSkpCiAgICAgICgoPSBpIDEwKSAjdCkKICAgIChzaG93ICN0IChpbmV4 YWN0IChzdHJlYW0tcmVmIHN1bS1vZi1zaW5lLWFuZC1jb3NpbmUgaSkpICIgIikpCgojK2VuZF9z cmMKCiMrUkVTVUxUUzoKOiAxLjAgMS4wIDEuMCAxLjAgMS4wIDEuMCAxLjAgMS4wIDEuMCAxLjAg CgpDb252ZXJnZXMgdG8gMSBxdWl0ZSBmYXN0LgoKKioqIERPTkUgRXhlcmNpc2UgMy42MSBwb3dl ci1zZXJpZXMtaW52ZXJzaW9uCiAgICBDTE9TRUQ6IFsyMDIwLTAxLTA0IFNhdCAxMzoxM10KIyti ZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpub3dlYi1yZWYg c3RyZWFtcy1pbnZlcnQtdW5pdC1zZXJpZXMKIzsoZGVmaW5lIChpbnZlcnQtdW5pdC1zZXJpZXMg UykKICAoZGVmaW5lIHggKGNvbnMtc3RyZWFtIDEKICAgICAgICAgICAgICAgICAgICAgICAgICht dWwtc2VyaWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjYWxlLXN0cmVhbSAoY29ucy1z dHJlYW0gMCAoc3RyZWFtLWNkciBTKSkgLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgeCkp KQogIHgpCihkZWZpbmUgKGludmVydC11bml0LXNlcmllcyBTKQogICAgKGlmIChub3QgKD0gMSAo c3RyZWFtLWNhciBTKSkpCiAgICAgICAgKGVycm9yICJGaXJzdCB0ZXJtIG11c3QgYmUgMSAtLSBJ TlZFUlQtVU5JVC1TRVJJRVMiIChzdHJlYW0tY2FyIFMpKSAgICAgICAgCiAgICAgICAgKGxldCAo KFNyIChzdHJlYW0tY2RyIFMpKSkKICAgICAgICAgICAgKGRlZmluZSBYIAogICAgICAgICAgICAg ICAgKGNvbnMtc3RyZWFtIAogICAgICAgICAgICAgICAgICAgIDEgCiAgICAgICAgICAgICAgICAg ICAgKG11bC1zZXJpZXMgCiAgICAgICAgICAgICAgICAgICAgICAgIChzY2FsZS1zdHJlYW0gU3Ig LTEpCiAgICAgICAgICAgICAgICAgICAgICAgIFgpKSkKICAgICAgICAgICAgWCkpKQoKIytlbmRf c3JjCgojK1JFU1VMVFM6CgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0 cyBvdXRwdXQKPDxzdHJlYW1zLWNvbW1vbj4+Cjw8c3RyZWFtcy1tdWx0aW1hcD4+Cjw8c3RyZWFt cy0yPj4KPDxzdHJlYW1zLWludGVncmF0ZS1zZXJpZXM+Pgo8PHN0cmVhbXMtc2luLWNvcz4+Cjw8 c3RyZWFtcy1tdWwtc2VyaWVzPj4KPDxzdHJlYW1zLXBhcnRpYWwtc3Vtcz4+Cjw8c3RyZWFtcy1p bnZlcnQtdW5pdC1zZXJpZXM+PgoKKGRlZmluZSB0ZXN0IChwYXJ0aWFsLXN1bXMgKG11bC1zZXJp ZXMgb25lcyAoaW52ZXJ0LXVuaXQtc2VyaWVzIG9uZXMpKSkpCiM7KCJTaG91bGQgZ2l2ZSBhIHNl cmllcyB3aXRoIHBhcnRpYWwgc3VtcyBjb252ZXJnaW5nIHRvIDEiKQooZG8gKChpIDAgKCsgaSAx KSkpCiAgICAgICgoPSBpIDEwKSAjdCkKICAgIChzaG93ICN0IChpbmV4YWN0IChzdHJlYW0tcmVm IHRlc3QgaSkpICIgIikpCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAxLjAgMS4wIDEuMCAxLjAg MS4wIDEuMCAxLjAgMS4wIDEuMCAxLjAgCgpPa2F5LCB0aGlzIGV4ZXJjaXNlIGdhdmUgbWUgaGVs bCBvZiBhIGxvdCBvZiBwYWluLiBXaHkgb24gaXQgaXMgc28KZGVwZW5kZW50IG9uIHRoZSBpbXBs ZW1lbnRhdGlvbiBvZiB+bXVsLXNlcmllc34/CgpTbyB0aGlzIGV4ZXJjaXNlIGhhcyBiZWVuIHNv bHZlZCB3aXRoIHRoZSBoZWxwIG9mIHRoZSBHaXRIdWIgdXNlcgp5cGVlbHM6Cmh0dHBzOi8vZ2l0 aHViLmNvbS95cGVlbHMvc2ljcC9ibG9iL21hc3Rlci9leGVyY2lzZXMvMy42MS1pbnZlcnQtdW5p dC1zZXJpZXMuc2NtCgoqKiogRE9ORSBFeGVyY2lzZSAzLjYyIGRpdi1zZXJpZXMKICAgIENMT1NF RDogWzIwMjAtMDEtMDQgU2F0IDEzOjIxXQoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJv dGggOnJlc3VsdHMgb3V0cHV0IDpub3dlYi1yZWYgc3RyZWFtcy1kaXYtc2VyaWVzCihkZWZpbmUg KGRpdi1zZXJpZXMgczEgczIpCiAgKGxldCogKChzY2FsZS1mYWN0b3IgKHN0cmVhbS1jYXIgczIp KQogICAgICAgICAoc2NhbGVkLXMyIChzY2FsZS1zdHJlYW0gczIgKC8gMSBzY2FsZS1mYWN0b3Ip KSkKICAgICAgICAgKHNjYWxlZC1zMSAoc2NhbGUtc3RyZWFtIHMxIHNjYWxlLWZhY3RvcikpCiAg ICAgICAgIChpbnZlcnRlZC1zMiAoaW52ZXJ0LXVuaXQtc2VyaWVzIHNjYWxlZC1zMikpKQogICAo bXVsLXNlcmllcyBzY2FsZWQtczEgaW52ZXJ0ZWQtczIpKSkKIytlbmRfc3JjCgojK2JlZ2luX3Ny YyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKPDxzdHJlYW1zLWNvbW1vbj4+ Cjw8c3RyZWFtcy1tdWx0aW1hcD4+Cjw8c3RyZWFtcy0yPj4KPDxzdHJlYW1zLWludGVncmF0ZS1z ZXJpZXM+Pgo8PHN0cmVhbXMtc2luLWNvcz4+Cjw8c3RyZWFtcy1tdWwtc2VyaWVzPj4KPDxzdHJl YW1zLXBhcnRpYWwtc3Vtcz4+Cjw8c3RyZWFtcy1pbnZlcnQtdW5pdC1zZXJpZXM+Pgo8PHN0cmVh bXMtZGl2LXNlcmllcz4+CgooZGVmaW5lIHRlc3QgKGRpdi1zZXJpZXMgb25lcyBleHAtc2VyaWVz KSkKIzsoIlNob3VsZCBnaXZlIGEgc2VyaWVzIHdpdGggcGFydGlhbCBzdW1zIGNvbnZlcmdpbmcg dG8gMSIpCihkbyAoKGkgMCAoKyBpIDEpKSkKICAgICAgKCg9IGkgMTApICN0KQogICAgKHNob3cg I3QgKGluZXhhY3QgKHN0cmVhbS1yZWYgdGVzdCBpKSkgIiAiKSkKCiMrZW5kX3NyYwoKIytSRVNV TFRTOgo6IDEuMCAwLjAgMC41IDAuMzMzMzMzMzMzMzMzMzMzMyAwLjM3NSAwLjM2NjY2NjY2NjY2 NjY2NjY0IDAuMzY4MDU1NTU1NTU1NTU1NiAwLjM2Nzg1NzE0Mjg1NzE0MjkgMC4zNjc4ODE5NDQ0 NDQ0NDQ0NCAwLjM2Nzg3OTE4ODcxMjUyMjA2IAoKV2VsbCwgbm90IHN1cmUgdGhpcyBpcyBjb3Jy ZWN0LCBidXQgaXQgcnVucy4KCioqKiBET05FIEV4ZXJjaXNlIDMuNjMgc3FydC1zdHJlYW0KICAg IENMT1NFRDogWzIwMjAtMDEtMDQgU2F0IDIwOjMyXQojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9y dHMgYm90aCA6cmVzdWx0cyBvdXRwdXQgOm5vd2ViLXJlZiBzdHJlYW1zLXNxcnQtc3RyZWFtCiAg ICAgKGRlZmluZSAoYXZlcmFnZSB4IHkpCiAgICAgICAoLyAoKyB4IHkpIDIpKQogIChkZWZpbmUg KHNxcnQtaW1wcm92ZSBndWVzcyB4KQogICAgKGF2ZXJhZ2UgZ3Vlc3MgKC8geCBndWVzcykpKQoK ICAoZGVmaW5lIChzcXJ0LXN0cmVhbSB4KQogICAgKGNvbnMtc3RyZWFtIDEuMAoJCSAoc3RyZWFt LW1hcCAobGFtYmRhIChndWVzcykKCQkJICAgICAgIChzcXJ0LWltcHJvdmUgZ3Vlc3MgeCkpCgkJ CSAgICAgKHNxcnQtc3RyZWFtIHgpKSkpCiMrZW5kX3NyYwoKVGhlIHByb2JsZW0gd2l0aCB0aGUg c2Vjb25kIGRlZmluaXRpb24gaXMgdGhhdCB+KHNxcnQtc3RyZWFtIHgpfiwgYXMKaXQgaXMgY2Fs bGVkIGVhY2ggdGltZSwgY3JlYXRlcyBhIG5ldyBzdHJlYW0uIFNpbmNlIHRoaXMgc3RyZWFtcyBh cmUKbm90IH5lcT9+LCBtZW1vaXphdGlvbiBkb2Vzbid0IHdvcmsuIEluIHRoZSBmaXJzdCBpbXBs ZW1lbnRhdGlvbiwgdGhlCnNhbWUgfmd1ZXNzZXN+IGlzIHVzZWQsIGFuZCB0aHVzLCBjYWxscyB0 byB0aGUgbGFtYmRhIGFyZSBjYWNoZWQKKG1lbW9pemVkKS4KCklmIH5kZWxheX4gZGlkbid0IHVz ZSBtZW1vaXphdGlvbiwgcGVyZm9ybWFuY2Ugd291bGQgYmUgc2FtZSBmb3IgYm90aAppbXBsZW1l bnRhdGlvbnMuCioqKiBET05FIEV4ZXJjaXNlIDMuNjQgc3RyZWFtLWxpbWl0CiAgICBDTE9TRUQ6 IFsyMDIwLTAxLTA2IE1vbiAwOTozOF0KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBib3Ro IDpyZXN1bHRzIG91dHB1dCA6bm93ZWItcmVmIHN0cmVhbXMtc3RyZWFtLWxpbWl0CihkZWZpbmUg KHN0cmVhbS1saW1pdCBzdHJlYW0gdG9sZXJhbmNlKQogIChsZXQgKChhMSAoc3RyZWFtLWNhciBz dHJlYW0pKQogICAgICAgIChhMiAoc3RyZWFtLWNhciAoc3RyZWFtLWNkciBzdHJlYW0pKSkpCiAg ICAoaWYgKDwgKGFicyAoLSBhMSBhMikpIHRvbGVyYW5jZSkKICAgICAgYTIKICAgICAgKHN0cmVh bS1saW1pdCAoc3RyZWFtLWNkciBzdHJlYW0pIHRvbGVyYW5jZSkpKSkKCiMrZW5kX3NyYwoKIyti ZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpub3dlYi1yZWYg c3RyZWFtcy1zcXJ0CiAgKGRlZmluZSAoc3FydCB4IHRvbGVyYW5jZSkKICAgIChzdHJlYW0tbGlt aXQgKHNxcnQtc3RyZWFtIHgpIHRvbGVyYW5jZSkpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2No ZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8c3RyZWFtcy1jb21tb24+Pgo8PHN0 cmVhbXMtbXVsdGltYXA+Pgo8PHN0cmVhbXMtMj4+Cjw8c3RyZWFtcy1zdHJlYW0tbGltaXQ+Pgo8 PHN0cmVhbXMtc3FydC1zdHJlYW0+Pgo8PHN0cmVhbXMtc3FydD4+Cgooc2hvdyAjdCAiVGVzdCBz cXJ0IG9mIDE3OiAiIChzcXJ0IDE3IDAuMDAxKSAiXG4iKQoKIytlbmRfc3JjCgojK1JFU1VMVFM6 CjogVGVzdCBzcXJ0IG9mIDE3OiA0LjEyMzEwNTYyNTYxNzgwNQoKU2VlbXMgdG8gYmUgd29ya2lu Zy4gSSBjb3BpZWQgc29tZSBvZiB0aGUgfnNxcnR+LXJlbGF0ZWQgY29kZSBmcm9tIHRoZQplYXJs aWVyIGNoYXB0ZXJzIGluc3RlYWQgb2YgdGFuZ2xpbmcsIGJlY2F1c2UgaXQgc2VlbXMgdG9vIHNs b3cuCgoqKiogRE9ORSBFeGVyY2lzZSAzLjY1IGFwcHJveGltYXRpbmcgbG9nYXJpdGhtCiAgICBD TE9TRUQ6IFsyMDIwLTAxLTA2IE1vbiAxMDozNF0KCkZpcnN0IGxldCdzIG1ha2Ugc3VyZSB0aGF0 IHRoZSBwaS1zdHJlYW0gaXMgd29ya2luZy4KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBi b3RoIDpyZXN1bHRzIG91dHB1dCA6bm93ZWItcmVmIHN0cmVhbXMtcHJpbnQtbgooZGVmaW5lIChz dHJlYW0tcHJpbnQtbiBzdHJlYW0gbikKICAgIChkbyAoKGkgMCAoKyBpIDEpKSkKICAgICAgKCg9 IGkgbikgI3QpCiAgICAoZGlzcGxheSAoc3RyZWFtLXJlZiBzdHJlYW0gaSkpCiAgICAoZGlzcGxh eSAiICIpKSkKCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJl c3VsdHMgb3V0cHV0IDpub3dlYi1yZWYgc3RyZWFtcy1waS1zdW1tYW5kcwogICAgIChkZWZpbmUg KHBpLXN1bW1hbmRzIG4pCiAgICAgICAoY29ucy1zdHJlYW0gKC8gMS4wIG4pCiAgICAgICAgICAg ICAgICAgICAgKHN0cmVhbS1tYXAgLSAocGktc3VtbWFuZHMgKCsgbiAyKSkpKSkKICAgICAoZGVm aW5lIHBpLXN0cmVhbQogICAgICAgKHNjYWxlLXN0cmVhbSAocGFydGlhbC1zdW1zIChwaS1zdW1t YW5kcyAxKSkgNCkpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGgg OnJlc3VsdHMgb3V0cHV0Cjw8c3RyZWFtcy1jb21tb24+Pgo8PHN0cmVhbXMtbXVsdGltYXA+Pgo8 PHN0cmVhbXMtMj4+Cjw8c3RyZWFtcy1wYXJ0aWFsLXN1bXM+Pgo8PHN0cmVhbXMtcGktc3VtbWFu ZHM+Pgo8PHN0cmVhbXMtcHJpbnQtbj4+CihzdHJlYW0tcHJpbnQtbiBwaS1zdHJlYW0gMTApCgoj K2VuZF9zcmMKCiMrUkVTVUxUUzoKOiA0LjAgMi42NjY2NjY2NjY2NjY2NjcgMy40NjY2NjY2NjY2 NjY2NjcgMi44OTUyMzgwOTUyMzgwOTU2IDMuMzM5NjgyNTM5NjgyNTQwMyAyLjk3NjA0NjE3NjA0 NjE3NjUgMy4yODM3Mzg0ODM3Mzg0ODQ0IDMuMDE3MDcxODE3MDcxODE4IDMuMjUyMzY1OTM0NzE4 ODc2NyAzLjA0MTgzOTYxODkyOTQwMzIgCgpOb3cgbGV0IHVzIGRvIHRoZSBzYW1lIGZvciB0aGUg bG9nYXJpdGhtIG9mIDIuCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0 cyBvdXRwdXQgOm5vd2ViLXJlZiBzdHJlYW1zLWxvZy1zdW1tYW5kcwogICAgIChkZWZpbmUgKGxv Zy1zdW1tYW5kcyBuKQogICAgICAgKGNvbnMtc3RyZWFtICgvIDEuMCBuKQogICAgICAgICAgICAg ICAgICAgIChzdHJlYW0tbWFwIC0gKGxvZy1zdW1tYW5kcyAoKyBuIDEpKSkpKQogICAgIChkZWZp bmUgbG9nLXN0cmVhbQogICAgICAgKHBhcnRpYWwtc3VtcyAobG9nLXN1bW1hbmRzIDEpKSkKIytl bmRfc3JjCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQg Om5vd2ViLXJlZiBzdHJlYW1zLWV1bGVyLXRhYmxlYXUKICAgICAoZGVmaW5lIChldWxlci10cmFu c2Zvcm0gcykKICAgICAgIChsZXQgKChzMCAoc3RyZWFtLXJlZiBzIDApKSAgICAgICAgIAogICAg ICAgICAgICAgKHMxIChzdHJlYW0tcmVmIHMgMSkpICAgICAgICAgCiAgICAgICAgICAgICAoczIg KHN0cmVhbS1yZWYgcyAyKSkpICAgICAgICAKICAgICAgICAgKGNvbnMtc3RyZWFtICgtIHMyICgv IChzcXVhcmUgKC0gczIgczEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsgczAg KCogLTIgczEpIHMyKSkpCiAgICAgICAgICAgICAgICAgICAgICAoZXVsZXItdHJhbnNmb3JtIChz dHJlYW0tY2RyIHMpKSkpKQogICAgIChkZWZpbmUgKG1ha2UtdGFibGVhdSB0cmFuc2Zvcm0gcykK ICAgICAgIChjb25zLXN0cmVhbSBzCiAgICAgICAgICAgICAgICAgICAgKG1ha2UtdGFibGVhdSB0 cmFuc2Zvcm0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuc2Zvcm0gcykp KSkKICAgICAoZGVmaW5lIChhY2NlbGVyYXRlZC1zZXF1ZW5jZSB0cmFuc2Zvcm0gcykKICAgICAg IChzdHJlYW0tbWFwIHN0cmVhbS1jYXIKICAgICAgICAgICAgICAgICAgIChtYWtlLXRhYmxlYXUg dHJhbnNmb3JtIHMpKSkKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90 aCA6cmVzdWx0cyBvdXRwdXQKPDxzdHJlYW1zLWNvbW1vbj4+Cjw8c3RyZWFtcy1tdWx0aW1hcD4+ Cjw8c3RyZWFtcy0yPj4KPDxzdHJlYW1zLXBhcnRpYWwtc3Vtcz4+Cjw8c3RyZWFtcy1wcmludC1u Pj4KPDxzdHJlYW1zLWxvZy1zdW1tYW5kcz4+Cjw8c3RyZWFtcy1ldWxlci10YWJsZWF1Pj4KKGRv ICgoaSAwICgrIGkgMSkpKQogICgoPSBpIDEwKSAjdCkKICAoc2hvdyAjdCAoc3RyZWFtLXJlZiAo bG9nLXN1bW1hbmRzIDEpIGkpICIgIikpCihuZXdsaW5lKQooc3RyZWFtLXByaW50LW4gbG9nLXN0 cmVhbSAxMCkKKG5ld2xpbmUpCihzdHJlYW0tcHJpbnQtbiAoZXVsZXItdHJhbnNmb3JtIGxvZy1z dHJlYW0pIDEwKQoobmV3bGluZSkKKHN0cmVhbS1wcmludC1uIChhY2NlbGVyYXRlZC1zZXF1ZW5j ZSBldWxlci10cmFuc2Zvcm0gbG9nLXN0cmVhbSkgMTApCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoK OiAxLjAgLTAuNSAwLjMzMzMzMzMzMzMzMzMzMzMgLTAuMjUgMC4yIC0wLjE2NjY2NjY2NjY2NjY2 NjY2IDAuMTQyODU3MTQyODU3MTQyODUgLTAuMTI1IDAuMTExMTExMTExMTExMTExMSAtMC4xIAo6 IDEuMCAwLjUgMC44MzMzMzMzMzMzMzMzMzMzIDAuNTgzMzMzMzMzMzMzMzMzMyAwLjc4MzMzMzMz MzMzMzMzMzIgMC42MTY2NjY2NjY2NjY2NjY2IDAuNzU5NTIzODA5NTIzODA5NSAwLjYzNDUyMzgw OTUyMzgwOTUgMC43NDU2MzQ5MjA2MzQ5MjA3IDAuNjQ1NjM0OTIwNjM0OTIwNyAKOiAwLjcgMC42 OTA0NzYxOTA0NzYxOTA1IDAuNjk0NDQ0NDQ0NDQ0NDQ0NCAwLjY5MjQyNDI0MjQyNDI0MjQgMC42 OTM1ODk3NDM1ODk3NDM2IDAuNjkyODU3MTQyODU3MTQyOCAwLjY5MzM0NzMzODkzNTU3NDIgMC42 OTMwMDMzNDE2ODc1NTIyIDAuNjkzMjUzOTY4MjUzOTY4MyAwLjY5MzA2NTc1MDY3NDQ0NjQgCjog MS4wIDAuNyAwLjY5MzI3NzMxMDkyNDM2OTcgMC42OTMxNDg4NjkzMzI5MjU0IDAuNjkzMTQ3MTk2 MDczNTQ5MSAwLjY5MzE0NzE4MDY2MzU2MzYgMC42OTMxNDcxODA1NjA0MDM5IDAuNjkzMTQ3MTgw NTU5OTQ0NSAwLjY5MzE0NzE4MDU1OTk0MjcgMC42OTMxNDcxODA1NTk5NDU0IAoKVGhlIGZpcnN0 IHN0cmVhbSBzZWVtcyB0byBiZSBjb252ZXJnaW5nIHF1aXRlIHNsb3dseSwgbmVlZGluZyBhYm91 dCAxMApzdGVwcyBmb3IgMC4wMSBwcmVjaXNpb24uIFRoZSAiYWNjZWxlcmF0ZWQiIHNlcXVlbmNl IGNvbnZlcmdlcyBpbgp0aHJlZSBzdGVwcywgd2hpY2ggc2VlbXMgdG8gYmUgc3VwZXIgZmFzdC4g UHJvcGVyIGNvbnZlcmdlbmNlIGFuYWx5c2lzCndvdWxkIHJlcXVpcmUgYSBiaXQgbW9yZSBvZiBh IG1hdGhlbWF0aWNhbCBhbmFseXNpcy4gCgoqKiogRE9ORSBFeGVyY2lzZSAzLjY2IGxhenkgcGFp cnMKICAgIENMT1NFRDogWzIwMjAtMDEtMDYgTW9uIDIyOjU1XQoKIytiZWdpbl9zcmMgc2NoZW1l IDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpub3dlYi1yZWYgc3RyZWFtcy1pbnRlcmxl YXZlCiAgKGRlZmluZSAoaW50ZXJsZWF2ZSBzMSBzMikKICAgIChpZiAoc3RyZWFtLW51bGw/IHMx KQoJczIKCShjb25zLXN0cmVhbSAoc3RyZWFtLWNhciBzMSkKCQkgICAgIChpbnRlcmxlYXZlIHMy IChzdHJlYW0tY2RyIHMxKSkpKSkKIytlbmRfc3JjCiAgCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhw b3J0cyBib3RoIDpyZXN1bHRzIG91dHB1dCA6bm93ZWItcmVmIHN0cmVhbXMtcGFpcnMKICAoZGVm aW5lIChwYWlycyBzIHQpCiAgICAoY29ucy1zdHJlYW0KICAgICAobGlzdCAoc3RyZWFtLWNhciBz KSAoc3RyZWFtLWNhciB0KSkKICAgICAoaW50ZXJsZWF2ZQogICAgICAoc3RyZWFtLW1hcCAobGFt YmRhICh4KSAobGlzdCAoc3RyZWFtLWNhciBzKSB4KSkKCQkgIChzdHJlYW0tY2RyIHQpKQogICAg ICAocGFpcnMgKHN0cmVhbS1jZHIgcykgKHN0cmVhbS1jZHIgdCkpKSkpCiMrZW5kX3NyYwoKIyti ZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8c3RyZWFtcy1j b21tb24+Pgo8PHN0cmVhbXMtbXVsdGltYXA+Pgo8PHN0cmVhbXMtMj4+Cjw8c3RyZWFtcy1wYXJ0 aWFsLXN1bXM+Pgo8PHN0cmVhbXMtcHJpbnQtbj4+Cjw8c3RyZWFtcy1pbnRlcmxlYXZlPj4KPDxz dHJlYW1zLXBhaXJzPj4KCihzdHJlYW0tcHJpbnQtbiAocGFpcnMgaW50ZWdlcnMgaW50ZWdlcnMp IDEwMCkKCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICgxIDEpICgxIDIpICgyIDIpICgxIDMpICgy IDMpICgxIDQpICgzIDMpICgxIDUpICgyIDQpICgxIDYpICgzIDQpICgxIDcpICgyIDUpICgxIDgp ICg0IDQpICgxIDkpICgyIDYpICgxIDEwKSAoMyA1KSAoMSAxMSkgKDIgNykgKDEgMTIpICg0IDUp ICgxIDEzKSAoMiA4KSAoMSAxNCkgKDMgNikgKDEgMTUpICgyIDkpICgxIDE2KSAoNSA1KSAoMSAx NykgKDIgMTApICgxIDE4KSAoMyA3KSAoMSAxOSkgKDIgMTEpICgxIDIwKSAoNCA2KSAoMSAyMSkg KDIgMTIpICgxIDIyKSAoMyA4KSAoMSAyMykgKDIgMTMpICgxIDI0KSAoNSA2KSAoMSAyNSkgKDIg MTQpICgxIDI2KSAoMyA5KSAoMSAyNykgKDIgMTUpICgxIDI4KSAoNCA3KSAoMSAyOSkgKDIgMTYp ICgxIDMwKSAoMyAxMCkgKDEgMzEpICgyIDE3KSAoMSAzMikgKDYgNikgKDEgMzMpICgyIDE4KSAo MSAzNCkgKDMgMTEpICgxIDM1KSAoMiAxOSkgKDEgMzYpICg0IDgpICgxIDM3KSAoMiAyMCkgKDEg MzgpICgzIDEyKSAoMSAzOSkgKDIgMjEpICgxIDQwKSAoNSA3KSAoMSA0MSkgKDIgMjIpICgxIDQy KSAoMyAxMykgKDEgNDMpICgyIDIzKSAoMSA0NCkgKDQgOSkgKDEgNDUpICgyIDI0KSAoMSA0Nikg KDMgMTQpICgxIDQ3KSAoMiAyNSkgKDEgNDgpICg2IDcpICgxIDQ5KSAoMiAyNikgKDEgNTApICgz IDE1KSAoMSA1MSkgCgpUaGUgbG9naWMgYmVoaW5kIHRoZSBvcmRlcmluZyBjYW4gYmUgc2VlbiBm cm9tIHRoZSBraW5kIG9mIGEKInByb2JhYmlsaXN0aWMgYW5hbHlzaXMiLiBMZXQncyBpbWFnaW5l IGEgdGFibGUgd2l0aCBjb2x1bW5zIGluZGV4ZWQKYnkgdGhlIGVsZW1lbnRzIG9mIHRoZSBmaXJz dCBzdHJlYW0sIGFuZCByb3dzIGluZGV4ZWQgYnkgdGhlIHNlY29uZApzdHJlYW0uIEV2ZXJ5IGNh bGwgdG8gImludGVybGVhdmUiIHRha2VzIGEgcm93IG9mIGEgdGFibGUsIGFuZCBhbm90aGVyCmlu c3RhbmNlIG9mIHRoZSAicGFpcnMiLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZyZXF1ZW5jeSwgd2l0 aCB3aGljaAplbGVtZW50cyBvZiBldmVyeSByb3cgYXBwZWFyIGluIHRoZSBvdXRwdXQgaXMgXCgy XntefXstbn1cKSwgd2hlcmUgbiBpcwp0aGUgbnVtYmVyIG9mIHRoZSByb3cuIFRoZXJlZm9yZSB0 aGUgbnVtYmVyIG9mIGEgcGFpciAoYSxiKSBzaG91bGQgYmUKc29tZXRoaW5nIGxpa2UgXChiIFxj ZG90IGFee259IFwpLgoKKioqIERPTkUgRXhlcmNpc2UgMy42NyBhbGwgcG9zc2libGUgcGFpcnMK ICAgIENMT1NFRDogWzIwMjAtMDEtMDYgTW9uIDIzOjA5XQoKU2VlbXMgbm90IHRvbyBoYXJkLiBK dXN0IGFkZCBpbiBvbmUgbW9yZSBpbnRlcmxlYXZlLgoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBv cnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0IDpub3dlYi1yZWYgc3RyZWFtcy1wYWlycy1mdWxsCiAg KGRlZmluZSAocGFpcnMgcyB0KQogICAgKGNvbnMtc3RyZWFtCiAgICAgKGxpc3QgKHN0cmVhbS1j YXIgcykgKHN0cmVhbS1jYXIgdCkpCiAgICAgKGludGVybGVhdmUKICAgICAgKHN0cmVhbS1tYXAg KGxhbWJkYSAoeCkgKGxpc3QgKHN0cmVhbS1jYXIgcykgeCkpCgkJICAoc3RyZWFtLWNkciB0KSkK ICAgICAgKGludGVybGVhdmUKICAgICAgICAoc3RyZWFtLW1hcCAobGFtYmRhICh4KSAobGlzdCB4 IChzdHJlYW0tY2FyIHQpKSkKCQkgIChzdHJlYW0tY2RyIHMpKQogICAgICAgIChwYWlycyAoc3Ry ZWFtLWNkciBzKSAoc3RyZWFtLWNkciB0KSkpKSkpCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2No ZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8c3RyZWFtcy1jb21tb24+Pgo8PHN0 cmVhbXMtbXVsdGltYXA+Pgo8PHN0cmVhbXMtMj4+Cjw8c3RyZWFtcy1wYXJ0aWFsLXN1bXM+Pgo8 PHN0cmVhbXMtcHJpbnQtbj4+Cjw8c3RyZWFtcy1pbnRlcmxlYXZlPj4KPDxzdHJlYW1zLXBhaXJz LWZ1bGw+PgoKKHN0cmVhbS1wcmludC1uIChwYWlycyBpbnRlZ2VycyBpbnRlZ2VycykgMTAwKQoK IytlbmRfc3JjCgojK1JFU1VMVFM6CjogKDEgMSkgKDEgMikgKDIgMSkgKDEgMykgKDIgMikgKDEg NCkgKDMgMSkgKDEgNSkgKDIgMykgKDEgNikgKDQgMSkgKDEgNykgKDMgMikgKDEgOCkgKDUgMSkg KDEgOSkgKDIgNCkgKDEgMTApICg2IDEpICgxIDExKSAoMyAzKSAoMSAxMikgKDcgMSkgKDEgMTMp ICgyIDUpICgxIDE0KSAoOCAxKSAoMSAxNSkgKDQgMikgKDEgMTYpICg5IDEpICgxIDE3KSAoMiA2 KSAoMSAxOCkgKDEwIDEpICgxIDE5KSAoMyA0KSAoMSAyMCkgKDExIDEpICgxIDIxKSAoMiA3KSAo MSAyMikgKDEyIDEpICgxIDIzKSAoNSAyKSAoMSAyNCkgKDEzIDEpICgxIDI1KSAoMiA4KSAoMSAy NikgKDE0IDEpICgxIDI3KSAoNCAzKSAoMSAyOCkgKDE1IDEpICgxIDI5KSAoMiA5KSAoMSAzMCkg KDE2IDEpICgxIDMxKSAoNiAyKSAoMSAzMikgKDE3IDEpICgxIDMzKSAoMiAxMCkgKDEgMzQpICgx OCAxKSAoMSAzNSkgKDMgNSkgKDEgMzYpICgxOSAxKSAoMSAzNykgKDIgMTEpICgxIDM4KSAoMjAg MSkgKDEgMzkpICg3IDIpICgxIDQwKSAoMjEgMSkgKDEgNDEpICgyIDEyKSAoMSA0MikgKDIyIDEp ICgxIDQzKSAoNCA0KSAoMSA0NCkgKDIzIDEpICgxIDQ1KSAoMiAxMykgKDEgNDYpICgyNCAxKSAo MSA0NykgKDggMikgKDEgNDgpICgyNSAxKSAoMSA0OSkgKDIgMTQpICgxIDUwKSAoMjYgMSkgKDEg NTEpIAoKKioqIERPTkUgRXhlcmNpc2UgMy42OCBwYWlycy1sb3VpcwogICAgQ0xPU0VEOiBbMjAy MC0wMS0wNiBNb24gMjM6MjZdCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVz dWx0cyBvdXRwdXQgOm5vd2ViLXJlZiBzdHJlYW1zLXBhaXJzLWxvdWlzCiAgKGRlZmluZSAocGFp cnMgcyB0KQogICAgKGludGVybGVhdmUKICAgICAgKHN0cmVhbS1tYXAgKGxhbWJkYSAoeCkgKGxp c3QgKHN0cmVhbS1jYXIgcykgeCkpCgkJICB0KQogICAgICAocGFpcnMgKHN0cmVhbS1jZHIgcykg KHN0cmVhbS1jZHIgdCkpKSkKIytlbmRfc3JjCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMg Ym90aCA6cmVzdWx0cyBvdXRwdXQKPDxzdHJlYW1zLWNvbW1vbj4+Cjw8c3RyZWFtcy1tdWx0aW1h cD4+Cjw8c3RyZWFtcy0yPj4KPDxzdHJlYW1zLXBhcnRpYWwtc3Vtcz4+Cjw8c3RyZWFtcy1wcmlu dC1uPj4KPDxzdHJlYW1zLWludGVybGVhdmU+Pgo8PHN0cmVhbXMtcGFpcnMtbG91aXM+PgoKKHN0 cmVhbS1wcmludC1uIChwYWlycyBpbnRlZ2VycyBpbnRlZ2VycykgMzApCgojK2VuZF9zcmMKCiMr UkVTVUxUUzoKOiBFUlJPUjogb3V0IG9mIHN0YWNrIHNwYWNlCjogPiAKClRoaXMgaXMgZXhwZWN0 ZWQuIFJlbWVtYmVyLCB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIH5jb25zLXN0cmVhbX4gaXMKbm90 IGV2YWx1YXRlZCwgaXQncyBkZWxheWVkLiBJZiB3ZSBkb24ndCBzZXBhcmF0ZSB0aGUgZmlyc3Qg cGFpciBmcm9tCnRoZSByZXN0LCB+aW50ZXJsZWF2ZX4gd291bGQgcnVuIGluZGVmaW5pdGVseS4K CioqKiBET05FIEV4ZXJjaXNlIDMuNjkgdHJpcGxlcwogICAgQ0xPU0VEOiBbMjAyMC0wMS0wNyBU dWUgMTE6MDBdCgojK2JlZ2luX3NyYyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRw dXQgOm5vd2ViLXJlZiBzdHJlYW1zLXRyaXBsZXMKICAoZGVmaW5lICh0cmlwbGVzIHMgdCB1KQog ICAgKGNvbnMtc3RyZWFtCiAgICAgKGxpc3QgKHN0cmVhbS1jYXIgcykgKHN0cmVhbS1jYXIgdCkg KHN0cmVhbS1jYXIgdSkpCiAgICAgKGludGVybGVhdmUKICAgICAgKHN0cmVhbS1tYXAgKGxhbWJk YSAoeCkgKGNvbnMgKHN0cmVhbS1jYXIgcykgeCkpCgkJICAocGFpcnMgKHN0cmVhbS1jZHIgdCkg KHN0cmVhbS1jZHIgdSkpKQogICAgICAodHJpcGxlcyAoc3RyZWFtLWNkciBzKSAoc3RyZWFtLWNk ciB0KSAoc3RyZWFtLWNkciB1KSkpKSkKIytlbmRfc3JjCgojK1JFU1VMVFM6CgojK2JlZ2luX3Ny YyBzY2hlbWUgOmV4cG9ydHMgYm90aCA6cmVzdWx0cyBvdXRwdXQKPDxzdHJlYW1zLWNvbW1vbj4+ Cjw8c3RyZWFtcy1tdWx0aW1hcD4+Cjw8c3RyZWFtcy0yPj4KPDxzdHJlYW1zLXBhcnRpYWwtc3Vt cz4+Cjw8c3RyZWFtcy1wcmludC1uPj4KPDxzdHJlYW1zLWludGVybGVhdmU+Pgo8PHN0cmVhbXMt cGFpcnM+Pgo8PHN0cmVhbXMtdHJpcGxlcz4+Cgooc3RyZWFtLXByaW50LW4gCihzdHJlYW0tZmls dGVyIAogICAgICAgKGxhbWJkYSAodHJpcGxlKSAKICAgICAgICAgICAobGV0ICgoaSAoY2FyIHRy aXBsZSkpCiAgICAgICAgICAgICAgICAgKGogKGNhZHIgdHJpcGxlKSkKICAgICAgICAgICAgICAg ICAoayAoY2FkZHIgdHJpcGxlKSkpCiAgICAgICAgICAgICg9ICgqIGsgaykgKCsgKCogaSBpKSAo KiBqIGopKSkpKQoodHJpcGxlcyBpbnRlZ2VycyBpbnRlZ2VycyBpbnRlZ2VycykpCiAgICA3KQoK IytlbmRfc3JjCgojK1JFU1VMVFM6CjogKDMgNCA1KSAoNiA4IDEwKSAoNSAxMiAxMykgKDkgMTIg MTUpICg4IDE1IDE3KSAoMTIgMTYgMjApIAoKU2VlbXMgdG8gYmUgd29ya2luZyBmaW5lLiAKCioq KiBET05FIEV4ZXJjaXNlIDMuNzAgbWVyZ2Utd2VpZ2h0ZWQKICAgIENMT1NFRDogWzIwMjAtMDEt MDcgVHVlIDExOjU4XQoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMg b3V0cHV0IDpub3dlYi1yZWYgc3RyZWFtcy1tZXJnZS13ZWlnaHRlZAogIChkZWZpbmUgKG1lcmdl LXdlaWdodGVkIHMxIHMyIHdlaWdodCkKICAgIChjb25kICgoc3RyZWFtLW51bGw/IHMxKSBzMikK CSAgKChzdHJlYW0tbnVsbD8gczIpIHMxKQoJICAoZWxzZQoJICAgKGxldCAoKHMxY2FyIChzdHJl YW0tY2FyIHMxKSkKCQkgKHMyY2FyIChzdHJlYW0tY2FyIHMyKSkpCgkgICAgIChjb25kICgoPCAo d2VpZ2h0IHMxY2FyKSAod2VpZ2h0IHMyY2FyKSkKCQkgICAgKGNvbnMtc3RyZWFtIHMxY2FyICht ZXJnZS13ZWlnaHRlZCAoc3RyZWFtLWNkciBzMSkgczIgd2VpZ2h0KSkpCgkJICAgKCg+ICh3ZWln aHQgczFjYXIpICh3ZWlnaHQgczJjYXIpKQoJCSAgICAoY29ucy1zdHJlYW0gczJjYXIgKG1lcmdl LXdlaWdodGVkIHMxIChzdHJlYW0tY2RyIHMyKSB3ZWlnaHQpKSkKCQkgICAoZWxzZQoJCSAgICAo Y29ucy1zdHJlYW0gczFjYXIKCQkJCSAobWVyZ2Utd2VpZ2h0ZWQgKHN0cmVhbS1jZHIgczEpCgkJ CQkJCSBzMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg d2VpZ2h0KSkpKSkpKSkKCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgc2NoZW1lIDpleHBvcnRzIGJv dGggOnJlc3VsdHMgb3V0cHV0IDpub3dlYi1yZWYgc3RyZWFtcy1wYWlycy13ZWlnaHRlZAogIChk ZWZpbmUgKHBhaXJzLXdlaWdodGVkIHMgdCB3ZWlnaHQpCiAgICAoY29ucy1zdHJlYW0KICAgICAo bGlzdCAoc3RyZWFtLWNhciBzKSAoc3RyZWFtLWNhciB0KSkKICAgICAobWVyZ2Utd2VpZ2h0ZWQK ICAgICAgKHN0cmVhbS1tYXAgKGxhbWJkYSAoeCkgKGxpc3QgKHN0cmVhbS1jYXIgcykgeCkpCgkJ ICAoc3RyZWFtLWNkciB0KSkKICAgICAgKHBhaXJzLXdlaWdodGVkIChzdHJlYW0tY2RyIHMpIChz dHJlYW0tY2RyIHQpIHdlaWdodCkKICAgICAgd2VpZ2h0KSkpCiMrZW5kX3NyYwoKIytiZWdpbl9z cmMgc2NoZW1lIDpleHBvcnRzIGJvdGggOnJlc3VsdHMgb3V0cHV0Cjw8c3RyZWFtcy1jb21tb24+ Pgo8PHN0cmVhbXMtbXVsdGltYXA+Pgo8PHN0cmVhbXMtMj4+Cjw8c3RyZWFtcy1wYXJ0aWFsLXN1 bXM+Pgo8PHN0cmVhbXMtcHJpbnQtbj4+Cjw8c3RyZWFtcy1pbnRlcmxlYXZlPj4KPDxzdHJlYW1z LW1lcmdlLXdlaWdodGVkPj4KPDxzdHJlYW1zLXBhaXJzLXdlaWdodGVkPj4KCihzdHJlYW0tcHJp bnQtbiAKICAocGFpcnMtd2VpZ2h0ZWQgCiAgICBpbnRlZ2VycwogICAgaW50ZWdlcnMKICAgIChs YW1iZGEgKHApICgrIChjYXIgcCkgKGNhZHIgcCkpKSkKIDEwMCkKKG5ld2xpbmUpCihzdHJlYW0t cHJpbnQtbiAKICAocGFpcnMtd2VpZ2h0ZWQgCiAgICAoc3RyZWFtLWZpbHRlciAobGFtYmRhICh4 KSAoYW5kIChub3QgKD0gMCAocmVtYWluZGVyIHggMikpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobm90ICg9IDAgKHJlbWFpbmRlciB4IDMpKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG5vdCAoPSAwIChyZW1haW5kZXIgeCA1KSkpKSkgaW50ZWdlcnMpCiAgICAoc3Ry ZWFtLWZpbHRlciAobGFtYmRhICh4KSAoYW5kIChub3QgKD0gMCAocmVtYWluZGVyIHggMikpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90ICg9IDAgKHJlbWFpbmRlciB4IDMpKSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoPSAwIChyZW1haW5kZXIgeCA1KSkp KSkgaW50ZWdlcnMpCiAgICAobGFtYmRhIChwKSAoKyAoKiAyIChjYXIgcCkpICgqIDMgKGNhZHIg cCkgKCogNSAoY2FyIHApIChjYWRyIHApKSkpKSkKIDEwMCkKCiMrZW5kX3NyYwoKIytSRVNVTFRT Ogo6ICgxIDEpICgxIDIpICgxIDMpICgyIDIpICgxIDQpICgyIDMpICgxIDUpICgyIDQpICgzIDMp ICgxIDYpICgyIDUpICgzIDQpICgxIDcpICgyIDYpICgzIDUpICg0IDQpICgxIDgpICgyIDcpICgz IDYpICg0IDUpICgxIDkpICgyIDgpICgzIDcpICg0IDYpICg1IDUpICgxIDEwKSAoMiA5KSAoMyA4 KSAoNCA3KSAoNSA2KSAoMSAxMSkgKDIgMTApICgzIDkpICg0IDgpICg1IDcpICg2IDYpICgxIDEy KSAoMiAxMSkgKDMgMTApICg0IDkpICg1IDgpICg2IDcpICgxIDEzKSAoMiAxMikgKDMgMTEpICg0 IDEwKSAoNSA5KSAoNiA4KSAoNyA3KSAoMSAxNCkgKDIgMTMpICgzIDEyKSAoNCAxMSkgKDUgMTAp ICg2IDkpICg3IDgpICgxIDE1KSAoMiAxNCkgKDMgMTMpICg0IDEyKSAoNSAxMSkgKDYgMTApICg3 IDkpICg4IDgpICgxIDE2KSAoMiAxNSkgKDMgMTQpICg0IDEzKSAoNSAxMikgKDYgMTEpICg3IDEw KSAoOCA5KSAoMSAxNykgKDIgMTYpICgzIDE1KSAoNCAxNCkgKDUgMTMpICg2IDEyKSAoNyAxMSkg KDggMTApICg5IDkpICgxIDE4KSAoMiAxNykgKDMgMTYpICg0IDE1KSAoNSAxNCkgKDYgMTMpICg3 IDEyKSAoOCAxMSkgKDkgMTApICgxIDE5KSAoMiAxOCkgKDMgMTcpICg0IDE2KSAoNSAxNSkgKDYg MTQpICg3IDEzKSAoOCAxMikgKDkgMTEpICgxMCAxMCkgCjogKDEgMSkgKDEgNykgKDEgMTEpICgx IDEzKSAoMSAxNykgKDcgNykgKDEgMTkpICgxIDIzKSAoMSAyOSkgKDcgMTEpICgxIDMxKSAoNyAx MykgKDExIDExKSAoMSAzNykgKDEgNDEpICgxIDQzKSAoMTEgMTMpICg3IDE3KSAoMTMgMTMpICgx IDQ3KSAoMSA0OSkgKDcgMTkpICgxIDUzKSAoMTEgMTcpICgxIDU5KSAoNyAyMykgKDEgNjEpICgx MyAxNykgKDExIDE5KSAoMSA2NykgKDEzIDE5KSAoMTcgMTcpICgxIDcxKSAoMSA3MykgKDExIDIz KSAoNyAyOSkgKDEgNzcpICgxNyAxOSkgKDEgNzkpICg3IDMxKSAoMTkgMTkpICgxMyAyMykgKDEg ODMpICgxIDg5KSAoMSA5MSkgKDE3IDIzKSAoMTEgMjkpICgxIDk3KSAoNyAzNykgKDE5IDIzKSAo MSAxMDEpICgxMSAzMSkgKDEgMTAzKSAoMTMgMjkpICgxIDEwNykgKDcgNDEpICgxIDEwOSkgKDIz IDIzKSAoMTMgMzEpICgxIDExMykgKDcgNDMpICgxIDExOSkgKDE3IDI5KSAoMSAxMjEpICgxMSAz NykgKDcgNDcpICgxOSAyOSkgKDEgMTI3KSAoMTcgMzEpICg3IDQ5KSAoMSAxMzEpICgxIDEzMykg KDEzIDM3KSAoMTkgMzEpICgxMSA0MSkgKDEgMTM3KSAoMSAxMzkpICgyMyAyOSkgKDcgNTMpICgx MSA0MykgKDEgMTQzKSAoMTMgNDEpICgyMyAzMSkgKDEgMTQ5KSAoMSAxNTEpICgxNyAzNykgKDEz IDQzKSAoMTEgNDcpICg3IDU5KSAoMjkgMjkpICgxIDE1NykgKDEgMTYxKSAoMTkgMzcpICg3IDYx KSAoMTEgNDkpICgxIDE2MykgKDI5IDMxKSAoMSAxNjcpICgxIDE2OSkgKDE3IDQxKSAKCkNhbm5v dCBzYXkgSSB1bmRlcnN0YW5kIHdoYXQgdGhlIHNlY29uZCBzZXF1ZW5jZSBzaWduaWZpZXMsIGJ1 dCBtZWguCgoqKiogRE9ORSBFeGVyY2lzZSAzLjcxIFJhbWFudWphbiBudW1iZXJzCiAgICBDTE9T RUQ6IFsyMDIwLTAxLTA3IFR1ZSAxMjo0OV0KCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0cyBi b3RoIDpyZXN1bHRzIG91dHB1dAo8PHN0cmVhbXMtY29tbW9uPj4KPDxzdHJlYW1zLW11bHRpbWFw Pj4KPDxzdHJlYW1zLTI+Pgo8PHN0cmVhbXMtcGFydGlhbC1zdW1zPj4KPDxzdHJlYW1zLXByaW50 LW4+Pgo8PHN0cmVhbXMtaW50ZXJsZWF2ZT4+Cjw8c3RyZWFtcy1tZXJnZS13ZWlnaHRlZD4+Cjw8 c3RyZWFtcy1wYWlycy13ZWlnaHRlZD4+CgooZGVmaW5lIGN1YmljLXBhaXJzIAogIChwYWlycy13 ZWlnaHRlZCAKICAgIGludGVnZXJzCiAgICBpbnRlZ2VycwogICAgKGxhbWJkYSAocCkgKCsgKGV4 cHQgKGNhciBwKSAzKSAoZXhwdCAoY2FkciBwKSAzKSkpKSkKCihkZWZpbmUgc3Vtcy1vZi1jdWJl cyAKICAgKHN0cmVhbS1tYXAgKGxhbWJkYSAoeCkgKCsgKGV4cHQgKGNhciB4KSAzKQogICAgICAg ICAgICAgICAgICAgICAgICAgIChleHB0IChjYWRyIHgpIDMpKSkKICAgICAgICAgICAgICAgY3Vi aWMtcGFpcnMpKQooc3RyZWFtLXByaW50LW4gc3Vtcy1vZi1jdWJlcyAyMCkKKGRlZmluZSAoZmly c3QtcmVwZXRpdGlvbiBzKQogKGlmICg9IChzdHJlYW0tY2FyIHMpIChzdHJlYW0tY2FyIChzdHJl YW0tY2RyIHMpKSkKICAgIHMKICAgIChmaXJzdC1yZXBldGl0aW9uIChzdHJlYW0tY2RyIHMpKSkp CihkZWZpbmUgKGZpbHRlci1yZXBldGl0aW9ucyBzKQogIChjb25zLXN0cmVhbSAoc3RyZWFtLWNh ciAoZmlyc3QtcmVwZXRpdGlvbiBzKSkgCiAgICAgICAgICAgICAgIChmaWx0ZXItcmVwZXRpdGlv bnMgCiAgICAgICAgICAgICAgICAgKHN0cmVhbS1jZHIgKHN0cmVhbS1jZHIgKGZpcnN0LXJlcGV0 aXRpb24gcykpKSkpKQoobmV3bGluZSkKIzsoZGlzcGxheSAoc3RyZWFtLWNhciAoZmlsdGVyLXJl cGV0aXRpb25zIHMpKSkKKHN0cmVhbS1wcmludC1uIChmaWx0ZXItcmVwZXRpdGlvbnMgc3Vtcy1v Zi1jdWJlcykgNikKIytlbmRfc3JjCgojK1JFU1VMVFM6CjogMiA5IDE2IDI4IDM1IDU0IDY1IDcy IDkxIDEyNiAxMjggMTMzIDE1MiAxODkgMjE3IDIyNCAyNDMgMjUwIDI4MCAzNDEgCjogMTcyOSA0 MTA0IDEzODMyIDIwNjgzIDMyODMyIDM5MzEyIAoKClRoaXMgc29sdXRpb24gaXMgbm90IHZlcnkg Z29vZCwgYmVjYXVzZSBpdCB3b3VsZCBmYWlsIHRvIGRpc3Rpbmd1aXNoCnRoZSBSYW1hbnVqYW4g Mi1udW1iZXJzIGZyb20gdGhlIFJhbWFudWphbiA0LW51bWJlcnMsIGJ1dCBJIGFtIHRvbwpsYXp5 IHRvIGZpeCBpdC4KCioqKiBUT0RPIEV4ZXJjaXNlIDMuNzIgUmFtYW51amFuIDMtbnVtYmVycwpX QVJOSU5HOiBUaGUgY29kZSBiZWxvdyBpcyBxdWl0ZSBzbG93LiBPbiBteSBtYWNoaW5lIGl0IHRh a2VzIG1vcmUgdGltZSB0aGFuIApnZWlzZXIncyBkZWZhdWx0IH5nZWlzZXItY29ubmVjdGlvbi10 aW1lb3V0fiBwZXJtaXRzLiAKUmVmZXIgdG8gW1tTZXR0aW5nIGNoaWJpIGFyZ3VtZW50cy4gREFO R0VST1VTXV0gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiMrYmVnaW5fc3JjIHNjaGVtZSA6ZXhwb3J0 cyBib3RoIDpyZXN1bHRzIG91dHB1dAo8PHN0cmVhbXMtY29tbW9uPj4KPDxzdHJlYW1zLW11bHRp bWFwPj4KPDxzdHJlYW1zLTI+Pgo8PHN0cmVhbXMtcGFydGlhbC1zdW1zPj4KPDxzdHJlYW1zLXBy aW50LW4+Pgo8PHN0cmVhbXMtaW50ZXJsZWF2ZT4+Cjw8c3RyZWFtcy1tZXJnZS13ZWlnaHRlZD4+ Cjw8c3RyZWFtcy1wYWlycy13ZWlnaHRlZD4+CgooZGVmaW5lIGN1YmljLXBhaXJzIAogIChwYWly cy13ZWlnaHRlZCAKICAgIGludGVnZXJzCiAgICBpbnRlZ2VycwogICAgKGxhbWJkYSAocCkgKCsg KGV4cHQgKGNhciBwKSAzKSAoZXhwdCAoY2FkciBwKSAzKSkpKSkKCihkZWZpbmUgc3VtY3ViZXMK ICAgKGxhbWJkYSAoeCkgKCsgKGV4cHQgKGNhciB4KSAzKQogICAgICAgICAgICAgICAgICAgICAg ICAgIChleHB0IChjYWRyIHgpIDMpKSkpCiM7KHN0cmVhbS1wcmludC1uIHN1bXMtb2YtY3ViZXMg MjApCihkZWZpbmUgKGZpcnN0LXJlcGV0aXRpb24gcykKIChpZiAoPSAoc3VtY3ViZXMgKHN0cmVh bS1jYXIgcykpIAogICAgICAgIChzdW1jdWJlcyAoc3RyZWFtLWNhciAoc3RyZWFtLWNkciBzKSkp IAogICAgICAgIChzdW1jdWJlcyAoc3RyZWFtLWNhciAoc3RyZWFtLWNkciAoc3RyZWFtLWNkciBz KSkpKSkKICAgIHMKICAgIChmaXJzdC1yZXBldGl0aW9uIChzdHJlYW0tY2RyIHMpKSkpCihkZWZp bmUgKGZpbHRlci1yZXBldGl0aW9ucyBzKQogIChjb25zLXN0cmVhbSAoc3RyZWFtLWNhciAoZmly c3QtcmVwZXRpdGlvbiBzKSkgCiAgICAgICAgICAgICAgIChmaWx0ZXItcmVwZXRpdGlvbnMgCiAg ICAgICAgICAgICAgICAgKHN0cmVhbS1jZHIgKHN0cmVhbS1jZHIgKHN0cmVhbS1jZHIgKGZpcnN0 LXJlcGV0aXRpb24gcykpKSkpKSkKKGRpc3BsYXkgIiAiKQooc3RyZWFtLXByaW50LW4gKGZpbHRl ci1yZXBldGl0aW9ucyBjdWJpYy1wYWlycykgMSkKKG5ld2xpbmUpCiMrZW5kX3NyYwoKIytSRVNV TFRTOgo6ICAoMTY3IDQzNikgCgoqKiogVE9ETyBGaWd1cmUgMy4zMgoKCgoqKiogVE9ETyBFeGVy Y2lzZSAzLjczCgoqKiogVE9ETyBFeGVyY2lzZSAzLjc0CgoqKiogVE9ETyBFeGVyY2lzZSAzLjc1 CgoqKiogVE9ETyBFeGVyY2lzZSAzLjc2CgoqKiogVE9ETyBFeGVyY2lzZSAzLjc3CgoqKiogVE9E TyBGaWd1cmUgMy4zNQoqKiogVE9ETyBFeGVyY2lzZSAzLjc4CgoqKiogVE9ETyBFeGVyY2lzZSAz Ljc5CgoqKiogVE9ETyBFeGVyY2lzZSAzLjgwCgoqKiogVE9ETyBFeGVyY2lzZSAzLjgxCgoqKiog VE9ETyBFeGVyY2lzZSAzLjgyCgoqKiBUT0RPIENoYXB0ZXIgNDogTWV0YWxpbmd1aXN0aWMgQWJz dHJhY3Rpb24gWzAvNzldCgoqKiogVE9ETyBFeGVyY2lzZSA0LjEKCioqKiBUT0RPIEV4ZXJjaXNl IDQuMgoKKioqIFRPRE8gRXhlcmNpc2UgNC4zCgoqKiogVE9ETyBFeGVyY2lzZSA0LjQKCioqKiBU T0RPIEV4ZXJjaXNlIDQuNQoKKioqIFRPRE8gRXhlcmNpc2UgNC42CgoqKiogVE9ETyBFeGVyY2lz ZSA0LjcKCioqKiBUT0RPIEV4ZXJjaXNlIDQuOAoKKioqIFRPRE8gRXhlcmNpc2UgNC45CgoqKiog VE9ETyBFeGVyY2lzZSA0LjEwCgoqKiogVE9ETyBFeGVyY2lzZSA0LjExCgoqKiogVE9ETyBFeGVy Y2lzZSA0LjEyCgoqKiogVE9ETyBFeGVyY2lzZSA0LjEzCgoqKiogVE9ETyBFeGVyY2lzZSA0LjE0 CgoqKiogVE9ETyBFeGVyY2lzZSA0LjE1CgoqKiogVE9ETyBFeGVyY2lzZSA0LjE2CgoqKiogVE9E TyBFeGVyY2lzZSA0LjE3CgoqKiogVE9ETyBFeGVyY2lzZSA0LjE4CgoqKiogVE9ETyBFeGVyY2lz ZSA0LjE5CgoqKiogVE9ETyBFeGVyY2lzZSA0LjIwCgoqKiogVE9ETyBFeGVyY2lzZSA0LjIxCgoq KiogVE9ETyBFeGVyY2lzZSA0LjIyCgoqKiogVE9ETyBFeGVyY2lzZSA0LjIzCgoqKiogVE9ETyBF eGVyY2lzZSA0LjI0CgoqKiogVE9ETyBFeGVyY2lzZSA0LjI1CgoqKiogVE9ETyBFeGVyY2lzZSA0 LjI2CgoqKiogVE9ETyBFeGVyY2lzZSA0LjI3CgoqKiogVE9ETyBFeGVyY2lzZSA0LjI4CgoqKiog VE9ETyBFeGVyY2lzZSA0LjI5CgoqKiogVE9ETyBFeGVyY2lzZSA0LjMwCgoqKiogVE9ETyBFeGVy Y2lzZSA0LjMxCgoqKiogVE9ETyBFeGVyY2lzZSA0LjMyCgoqKiogVE9ETyBFeGVyY2lzZSA0LjMz CgoqKiogVE9ETyBFeGVyY2lzZSA0LjM0CgoqKiogVE9ETyBFeGVyY2lzZSA0LjM1CgoqKiogVE9E TyBFeGVyY2lzZSA0LjM2CgoqKiogVE9ETyBFeGVyY2lzZSA0LjM3CgoqKiogVE9ETyBFeGVyY2lz ZSA0LjM4CgoqKiogVE9ETyBFeGVyY2lzZSA0LjM5CgoqKiogVE9ETyBFeGVyY2lzZSA0LjQwCgoq KiogVE9ETyBFeGVyY2lzZSA0LjQxCgoqKiogVE9ETyBFeGVyY2lzZSA0LjQyCgoqKiogVE9ETyBF eGVyY2lzZSA0LjQzCgoqKiogVE9ETyBFeGVyY2lzZSA0LjQ0CgoqKiogVE9ETyBFeGVyY2lzZSA0 LjQ1CgoqKiogVE9ETyBFeGVyY2lzZSA0LjQ2CgoqKiogVE9ETyBFeGVyY2lzZSA0LjQ3CgoqKiog VE9ETyBFeGVyY2lzZSA0LjQ4CgoqKiogVE9ETyBFeGVyY2lzZSA0LjQ5CgoqKiogVE9ETyBFeGVy Y2lzZSA0LjUwCgoqKiogVE9ETyBFeGVyY2lzZSA0LjUxCgoqKiogVE9ETyBFeGVyY2lzZSA0LjUy CgoqKiogVE9ETyBFeGVyY2lzZSA0LjUzCgoqKiogVE9ETyBFeGVyY2lzZSA0LjU0CgoqKiogVE9E TyBFeGVyY2lzZSA0LjU1CgoqKiogVE9ETyBFeGVyY2lzZSA0LjU2CgoqKiogVE9ETyBFeGVyY2lz ZSA0LjU3CgoqKiogVE9ETyBFeGVyY2lzZSA0LjU4CgoqKiogVE9ETyBFeGVyY2lzZSA0LjU5Cgoq KiogVE9ETyBFeGVyY2lzZSA0LjYwCgoqKiogVE9ETyBFeGVyY2lzZSA0LjYxCgoqKiogVE9ETyBF eGVyY2lzZSA0LjYyCgoqKiogVE9ETyBFeGVyY2lzZSA0LjYzCgoqKiogVE9ETyBFeGVyY2lzZSA0 LjY0CgoqKiogVE9ETyBFeGVyY2lzZSA0LjY1CgoqKiogVE9ETyBFeGVyY2lzZSA0LjY2CgoqKiog VE9ETyBFeGVyY2lzZSA0LjY3CgoqKiogVE9ETyBFeGVyY2lzZSA0LjY4CgoqKiogVE9ETyBFeGVy Y2lzZSA0LjY5CgoqKiogVE9ETyBFeGVyY2lzZSA0LjcwCgoqKiogVE9ETyBFeGVyY2lzZSA0Ljcx CgoqKiogVE9ETyBFeGVyY2lzZSA0LjcyCgoqKiogVE9ETyBFeGVyY2lzZSA0LjczCiAgICAKKioq IFRPRE8gRXhlcmNpc2UgNC43NAoKKioqIFRPRE8gRXhlcmNpc2UgNC43NQoKKioqIFRPRE8gRXhl cmNpc2UgNC43NgoKKioqIFRPRE8gRXhlcmNpc2UgNC43NwoKKioqIFRPRE8gRXhlcmNpc2UgNC43 OAoKKioqIFRPRE8gRXhlcmNpc2UgNC43OQoKKiogVE9ETyBDaGFwdGVyIDU6IENvbXB1dGluZyB3 aXRoIFJlZ2lzdGVyIE1hY2hpbmVzIFswLzUyXQoKKioqIFRPRE8gRXhlcmNpc2UgNS4xCgoqKiog VE9ETyBFeGVyY2lzZSA1LjIKCioqKiBUT0RPIEV4ZXJjaXNlIDUuMwoKKioqIFRPRE8gRXhlcmNp c2UgNS40CgoqKiogVE9ETyBFeGVyY2lzZSA1LjUKCioqKiBUT0RPIEV4ZXJjaXNlIDUuNgoKKioq IFRPRE8gRXhlcmNpc2UgNS43CgoqKiogVE9ETyBFeGVyY2lzZSA1LjgKCioqKiBUT0RPIEV4ZXJj aXNlIDUuOQoKKioqIFRPRE8gRXhlcmNpc2UgNS4xMAoKKioqIFRPRE8gRXhlcmNpc2UgNS4xMQoK KioqIFRPRE8gRXhlcmNpc2UgNS4xMgoKKioqIFRPRE8gRXhlcmNpc2UgNS4xMwoKKioqIFRPRE8g RXhlcmNpc2UgNS4xNAoKKioqIFRPRE8gRXhlcmNpc2UgNS4xNQoKKioqIFRPRE8gRXhlcmNpc2Ug NS4xNgoKKioqIFRPRE8gRXhlcmNpc2UgNS4xNwoKKioqIFRPRE8gRXhlcmNpc2UgNS4xOAoKKioq IFRPRE8gRXhlcmNpc2UgNS4xOQoKKioqIFRPRE8gRXhlcmNpc2UgNS4yMAoKKioqIFRPRE8gRXhl cmNpc2UgNS4yMQoKKioqIFRPRE8gRXhlcmNpc2UgNS4yMgoKKioqIFRPRE8gRXhlcmNpc2UgNS4y MwoKKioqIFRPRE8gRXhlcmNpc2UgNS4yNAoKKioqIFRPRE8gRXhlcmNpc2UgNS4yNQoKKioqIFRP RE8gRXhlcmNpc2UgNS4yNgoKKioqIFRPRE8gRXhlcmNpc2UgNS4yNwoKKioqIFRPRE8gRXhlcmNp c2UgNS4yOAoKKioqIFRPRE8gRXhlcmNpc2UgNS4yOQoKKioqIFRPRE8gRXhlcmNpc2UgNS4zMAoK KioqIFRPRE8gRXhlcmNpc2UgNS4zMQoKKioqIFRPRE8gRXhlcmNpc2UgNS4zMgoKKioqIFRPRE8g RXhlcmNpc2UgNS4zMwoKKioqIFRPRE8gRXhlcmNpc2UgNS4zNAoKKioqIFRPRE8gRXhlcmNpc2Ug NS4zNQoKKioqIFRPRE8gRXhlcmNpc2UgNS4zNgoKKioqIFRPRE8gRXhlcmNpc2UgNS4zNwoKKioq IFRPRE8gRXhlcmNpc2UgNS4zOAoKKioqIFRPRE8gRXhlcmNpc2UgNS4zOQoKKioqIFRPRE8gRXhl cmNpc2UgNS40MAoKKioqIFRPRE8gRXhlcmNpc2UgNS40MQoKKioqIFRPRE8gRXhlcmNpc2UgNS40 MgoKKioqIFRPRE8gRXhlcmNpc2UgNS40MwoKKioqIFRPRE8gRXhlcmNpc2UgNS40NAoKKioqIFRP RE8gRXhlcmNpc2UgNS40NQoKKioqIFRPRE8gRXhlcmNpc2UgNS40NgoKKioqIFRPRE8gRXhlcmNp c2UgNS40NwoKKioqIFRPRE8gRXhlcmNpc2UgNS40OAoKKioqIFRPRE8gRXhlcmNpc2UgNS40OQoK KioqIFRPRE8gRXhlcmNpc2UgNS41MAoKKioqIFRPRE8gRXhlcmNpc2UgNS41MQoKKioqIFRPRE8g RXhlcmNpc2UgNS41MgoKKiBGb290bm90ZXMKCgoKW2ZuOjFdIFRoaXMgZXhlcmNpc2UgdG9vayBt ZSA3IGhvdXJzLgpbZm46Ml0gVGhpcyBleGVyY2lzZSB0b29rIG1lIGFib3V0IDQwIGhvdXJzLgo= --000000000000325547059b9784a9--