From debbugs-submit-bounces@debbugs.gnu.org Fri May 24 03:36:51 2013 Received: (at submit) by debbugs.gnu.org; 24 May 2013 07:36:51 +0000 Received: from localhost ([127.0.0.1]:59481 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UfmYU-000590-CZ for submit@debbugs.gnu.org; Fri, 24 May 2013 03:36:50 -0400 Received: from eggs.gnu.org ([208.118.235.92]:35580) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UfmXA-000540-ID for submit@debbugs.gnu.org; Fri, 24 May 2013 03:35:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UfmW5-00059f-0L for submit@debbugs.gnu.org; Fri, 24 May 2013 03:34:28 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_50,HTML_MESSAGE, RCVD_IN_DNSWL_MED,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:45349) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UfmW4-00059V-LU for submit@debbugs.gnu.org; Fri, 24 May 2013 03:34:20 -0400 Received: from eggs.gnu.org ([208.118.235.92]:46786) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UfmVt-0005DE-9A for bug-gnu-emacs@gnu.org; Fri, 24 May 2013 03:34:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UfmVm-00052z-Tl for bug-gnu-emacs@gnu.org; Fri, 24 May 2013 03:34:09 -0400 Received: from mx-sanjose.cadence.com ([158.140.2.60]:57402) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UfmVm-00052K-0X for bug-gnu-emacs@gnu.org; Fri, 24 May 2013 03:34:02 -0400 Received: from exowa01eu.global.cadence.com (exowa01eu.Cadence.COM [139.99.37.27]) by mx-sanjose.cadence.com (8.14.4/8.14.4) with ESMTP id r4O7VOUD015388 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=FAIL) for ; Fri, 24 May 2013 00:31:28 -0700 (PDT) Received: from MAILEU2.global.cadence.com ([139.99.37.20]) by exowa01eu.global.cadence.com ([139.99.37.27]) with mapi; Fri, 24 May 2013 09:33:48 +0200 From: Frederic Pouyet To: "bug-gnu-emacs@gnu.org" Date: Fri, 24 May 2013 09:33:40 +0200 Subject: 24.3; specman-mode_v1.22.el not compatible with emacs 24.x Thread-Topic: 24.3; specman-mode_v1.22.el not compatible with emacs 24.x Thread-Index: Ac5YUQKJ2C5n0eydTC6KVHRetVkCCg== Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-cr-puzzleid: {5E94433B-93FB-49ED-9321-D26C37CBE331} x-cr-hashedpuzzle: BdIi DaZq EWH3 EWMK Fg66 F/fw GeQt G395 HRtW H000 I++m JGmi JoM0 KBzS KSjR K+sL; 1; YgB1AGcALQBnAG4AdQAtAGUAbQBhAGMAcwBAAGcAbgB1AC4AbwByAGcA; Sosha1_v1; 7; {5E94433B-93FB-49ED-9321-D26C37CBE331}; cABvAHUAeQBlAHQAQABjAGEAZABlAG4AYwBlAC4AYwBvAG0A; Fri, 24 May 2013 07:33:40 GMT; MgA0AC4AMwA7ACAAcwBwAGUAYwBtAGEAbgAtAG0AbwBkAGUAXwB2ADEALgAyADIALgBlAGwAIABuAG8AdAAgAGMAbwBtAHAAYQB0AGkAYgBsAGUAIAB3AGkAdABoACAAZQBtAGEAYwBzACAAMgA0AC4AeAA= acceptlanguage: en-US Content-Type: multipart/mixed; boundary="_007_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_" MIME-Version: 1.0 X-Received: by mx-sanjose.cadence.com as r4O7VOUD015388 at Fri May 24 00:31:28 2013 X-detected-operating-system: by eggs.gnu.org: Solaris 10 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Fri, 24 May 2013 03:36:48 -0400 Cc: Avi Farjoun , Patrick Oury , Mahesh Soni , Orit Greengrass X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org --_007_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_ Content-Type: multipart/related; boundary="_006_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_"; type="multipart/alternative" --_006_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_ Content-Type: multipart/alternative; boundary="_000_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_" --_000_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello Emacs support team. I am working for an EDA company called Cadence that license a software call= ed specman. Its associated language is called "e". Until emacs 24.x, we were able to have syntax highlighting thanks to specm= an-mode.el (latest version is v1.22 see below) available on website http://= specman-mode.com which is no longer maintained. Although it does not crash or give an error, the specman-mode.el does not w= ork functionally: it does not perform highlighting syntax any longer. This was working on emacs versions prior t= o 24.x. Please advise, I attach specman-mode.el version 1.22 Best regards, Fred [cid:image002.jpg@01CE5861.C60EE520] Frederic Pouyet | Principal Application engineer. System Design and Ver= ification P: 46.856612318 M: 46.730605655 www.cadence.com --_000_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Hello Emacs supp= ort team.

 

I am working for an EDA company called Cadence that license a= software called specman. Its associated language is called "e".<= o:p>

Until emacs 24.x, we were able to have = syntax highlighting thanks to  specman-mode.el (latest version is v1.2= 2 see below) available on website http://specman-mode.com which is no longe= r maintained.

 

Although it does not crash or give an error, the specman-m= ode.el does not work functionally: it does not perform

highlighting syntax any longer. This was working on emacs v= ersions prior  to 24.x.

 =

Please advise,

 

I attach sp= ecman-mode.el version 1.22

Best r= egards,

Fred

 

 

=

3D"http://www.cadence.com/m=

3D"ht=

=

 

Frederic Pouyet   = |   Principal Application engineer. Sy= stem Design and Verification

P: 46.856612318   M: 46.73= 0605655   www.cadence.com

 <= /span>

3D"http://www.cadence.com/mail=

<= span style=3D'font-size:10.0pt;font-family:"Times New Roman","serif"'> = ;

 

<= /body>= --_000_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_-- --_006_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_ Content-Type: image/gif; name="image001.gif" Content-Description: image001.gif Content-Disposition: inline; filename="image001.gif"; size=64; creation-date="Fri, 24 May 2013 07:33:47 GMT"; modification-date="Fri, 24 May 2013 07:33:47 GMT" Content-ID: Content-Transfer-Encoding: base64 R0lGODlhgAIBAIAAANbW1gAAACH5BAAAAAAALAAAAACAAgEAAAIXhI+py+0Po5y02ouz3rz7D4bi SJbm6RQAOw== --_006_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_ Content-Type: image/jpeg; name="image002.jpg" Content-Description: image002.jpg Content-Disposition: inline; filename="image002.jpg"; size=2688; creation-date="Fri, 24 May 2013 07:33:47 GMT"; modification-date="Fri, 24 May 2013 07:33:47 GMT" Content-ID: Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAUAAA/+4AJkFkb2JlAGTAAAAAAQMA FQQDBgoNAAADZwAABlIAAAhiAAAKfv/bAIQAAgICAgICAgICAgMCAgIDBAMCAgMEBQQEBAQEBQYF BQUFBQUGBgcHCAcHBgkJCgoJCQwMDAwMDAwMDAwMDAwMDAEDAwMFBAUJBgYJDQsJCw0PDg4ODg8P DAwMDAwPDwwMDAwMDA8MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8IAEQgARwClAwERAAIR AQMRAf/EANQAAQADAQEBAQAAAAAAAAAAAAAFBwgGBAEDAQEBAQEBAQAAAAAAAAAAAAAAAQIDBQQQ AAEEAgAFBAMBAAAAAAAAAAUBAwQGAgcAIFBgEUASFjYwFDQXEQABAwIEBAMCCQ0BAAAAAAABAgME EQUAITESQVEyE2EUBnFCIDCBocEigjMVEFBg0VJysnODszREdDUSAAAEBwAAAAAAAAAAAAAAAAAh MQJAUGBwARESEwEBAAIBAwIHAAMBAAAAAAABEQAhMRBBYSBRMEBQYHGRofDB0fH/2gAMAwEAAhED EQAAAd/AAAAAAAAAAAAAAAAAAAAAAA4Dl7PU786W18/lPUAAACCJ0AAFNnelJZ73ZeVY3NUrotOb JgrVdKpndbuSkVuROmAABj9dfJh5bnSvV+niOuPxOPNKpXCxhxBs5AAAKRLJKKW304s9JPkWSBEl umc1vBKdNBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9oACAEBAAEFAunSLQBiPwp0UjH4weZc y/A2SgvSuayXKGAkB57pQcctajJIafCJjT94aDlNZyMJZyxWOHW4dfuDZmdarJhVx8PY7Tk9VREb 2E1NJkiMUTBG7CZmT2BMOPM5g/ty2oq+EklT9vHa0+o1v2f6Xr1ESy7C/dW1DKxaPlW2vrewf5bS r2Nc1gkf4ltZXPi7tYuR1jnsdJinZoiA6NHv63aR2uA8a6KOUlgqUrFQStybJWYNmiAa3OESLTXG 7QPPVFo61ljjnjF15iNIFBkQxBE0iWKf7E//2gAIAQIAAQUC6d704RfPpPHfX//aAAgBAwABBQLp 2A9/NHWsmsvRo5knCqq98//aAAgBAgIGPwK3v//aAAgBAwIGPwKXbw0hy5YRQdc//9oACAEBAQY/ Avzc7GkXBLbzKtrqNizQ/InCZUN3vsLqEuAEaZHWn5FpbdQ4pvrSlQJHt+JchNyErlNdbWfDXw+G xARFdud1k5twGNaHSpzxHmvwnLc69u3w3epG1RTnkOWJiz6OflwYjmyTdFJCUk8SPqnLxxFn29Oy LJTuQim3bzBA5HDVnh2168XAp3yGWPcTryNTTPHq6U2kpRJcS4lKslAKW4c8IkyUrfefX24cNvrd XyGJNpl256z3WMnueTf95HMZDnhqeuIqYlx4M9tKtlKgmtaHliFCudjlWhNwIEeQ6apJVkPdTlgk mgGpx5K0WaVc4iHksv3JvoTuNN2hyxIuE1ztxoydziuPgB4nEGJNtEm1MXX/AMuY90u8BwGuHZzS VB52tRX6orrQfDvnmfvksHye791vT7OCToNcep5zNxTbLHbUuNpgIbClvAJrRajpUYgfzHv7hx6p 7/8Akdtfl6/s1R9GPWwAoBI0/quY9JJiONtOf6a5H3Qe7g1+bEX1FepcFztNKZdEbcCU7SBltHPE b/ub/gXj0MePcGfyNYvhYr3RCe2016TX5sRezTeXnvNU137uP2aYTs6TMa7vsor6aYsLkmdazDt5 afhdnckhFE00RyHxDN1YnPWm6sAATGM6gaVFRmPbhiE/NcuTrW7uTHute5ROevPFw/Db7LtcO5Em TAQNyDXhqMsNWtEgyksqWoOqTtP1zXTDd6h3KRZ7klOxyRH98AU8OGWLjK/E3Lg7ctveLiAk7gSa 1qda4bjy1LZdjq3xJbfW2r9RwZEz1HMvA7XaaYeyQnMZ9Ss8sN29yUqIlt5L3cSndoCKUy54srS5 q4/4MoKQQgK39OueXThSFgKQsUUk8QceZtV+mW+Cp5LrttR0q2mu3duGXDTEi3Tm+5GkiixxHEEe IxF2eqZztuhuBbVtOScvdJ3afJ+gv//aAAgBAQMBPyH6c4A2qnkqGBLVQBfAVz0fOUYHwHXwTLgp lGnKVLuPrHdpxmwpRYwBfwZ74WBuQcmxrhxlcgtkFN6eTgeovKVTWBBHCjwaixrpewSBN4X7v9Bo 7Jd5zQRSz9Ad3/aGWJ5JXRsrSGTjZkw48pb8w3PY+ALHYU2WYCYVTQB3clh20kyDV5qlM0TrhV2B 3Rge+c8uUNnwlQEXafnPd6o5uvJ/NyX1pl0HwBc/y47XA1IKvBjZF0KuQdwnvA10y/7MD2f64TgG DQYuxKpqwLq/5MtJ3Drbyd7b6K/xTzs1bFBxHE/bAJvryOfn/GYQqnz55fE4VOzi0IYOrx8AbSFV zdGGqDWm57gOiO4uGhvjFI4BCu99synGrhT+mNWYXi4BRsR0BSofJs7ZPrFeD2LKeasDZo5l5gU8 HcwrTWhimrTguGTSma78cQlugYh5DF2qDqAiJ5xTvicA3HYckzvmjoMYg0+yFHJ+YVcdBIfcAPsX /9oACAECAwE/IfpyPfAFPlI++v/aAAgBAwMBPyH6cRuXGz/uRjP8e3yg0H+3HKq9H0TpOk+G9HqY dHD4d+Dfsf8A/9oADAMBAAIRAxEAABAAAAAAAAAAAAAAAAAAAAAAAA8AAAACAAAUfmEkQAQAAACU QCUwAAAAUQ022iQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/aAAgBAQMBPxD6c/dkO1VfzwuE HvRqhKwJs6bUsPKSPLom/gl/NkFiGUQAid+H1xXJvUBkTpoCpBRoMb9UKKHaGjOKOMewsoAj4x3/ ALsnNsQKKUU3jDtIRUBRNQQnaBFedhcdTSC84RtRICsW7BoZQBQBxE85aoAIXNRLIdk3h7FQsk75 crlwMnEsvsFJvHAKfAFUdAHLgV+lnqtLRKoWBvKQO5RAPEl3yM7VV/PoQDAWB0mAIHQlgidKrFSo Uvqj6c8j8wLn+C41FLmQKuP8638YMkUQeROJbtgGHaP9FX4/zwSyRgHCBxl4VEDwe3ZcFxqSKryK sCp4h7dNpNXQnYrO+eQxyn9fIkbpTWbN2saS0ezFwfc7LxJn/sJkDKDPcrwMHYN/AFUBClAqwhzs AQPMOmuUMgxVAGVJGHgNYkgiLYYRmv0KsfZFu8JW4W0PGdiQAOlxj1oYoQWK45VyQACWhKctBAcH wCTWEwRBJpffBvRB/wAxo229scgIIc0dicXnxh6w9Ki7SBRHLYpyOCgo2cdVjmiYLaNZabSbE1iu B8Vxoi8iex9i/wD/2gAIAQIDAT8Q+nOo7H5ygKfKKdjADR98/wD/2gAIAQMDAT8Q+nL/AA1Ro94h xhDRSjyU2k48/JBccCAhwAB/cRoTutf24HQFxMC+oX1vHSTOWPHQcZSZy6DOWcsofAGY9C3Bxbgz FwZgz0F+xf/Z --_006_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_-- --_007_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_ Content-Type: application/octet-stream; name="specman-modev122.el" Content-Description: specman-modev122.el Content-Disposition: attachment; filename="specman-modev122.el"; size=190139; creation-date="Wed, 22 May 2013 14:06:18 GMT"; modification-date="Wed, 22 May 2013 14:05:38 GMT" Content-Transfer-Encoding: base64 OzsgQCgjKSBzcGVjbWFuLW1vZGUuZWwgLS0gTW9kZSBmb3IgZWRpdGluZyBzcGVjbWFuIGZpbGVz Cjs7IEAoIykgJElkOiBzcGVjbWFuLW1vZGUuZWwsdiAxLjIyIDIwMDUvMDgvMDggMTQ6Mzk6MTMg dXJpbSBFeHAgJAo7OyBAKCMpICRLZXl3b3JkczogdG9vbHMgJAo7OyAkS25vd25Db21wYXRpYmls aXR5OiAxOS4yOCAkCgo7OyBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2YgRW1hY3MKCgo7OyBDb3B5 cmlnaHQgKEMpIDIwMDYgQ2FkZW5jZSBEZXNpZ24gU3lzdGVtcywgSW5jLgo7OyBBdXRob3JzOiAg ICAgIFVyaSBNYW96IDx1cmltQGNhZGVuY2UuY29tPgo7OyAgICAgICAgICAgICAgIE1pY2hhZWwg TWNOYW1hcmEgPG1hY0BjYWRlbmNlLmNvbT4KOzsgICAgICAgICAgICAgICBZYXJvbiBQZXJpIDx5 cGVyaUBjYWRlbmNlLmNvbT4KOzsgTWFpbnRhaW5lcjogICAKOzsgQ3JlYXRlZDogICAgICBNYXkg NSAyMDAwCgoKOzsgTENEIEFyY2hpdmUgRW50cnk6Cjs7IHNwZWNtYW4tbW9kZXxNaWNoYWVsIE1j TmFtYXJhfG1hY0B2ZXJpc2l0eS5jb218Cjs7IFNwZWNtYW4gTWFqb3IgbW9kZS4gYXV0byBpbmRl bnRzLCBjb2xvcml6ZXMsIGNvZGUgaW4gdGhlICdlIGxhbmd1YWdlfAo7OyAwNS1NYXktMjAwMHwk UmV2aXNpb246IDEuMjIgJHx+L21pc2Mvc3BlY21hbi1tb2RlLmVsLlp8Cgo7OyBDT1BZUklHSFQg Tk9USUNFCjs7Cjs7IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cjs7IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlCjs7IFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5 b3VyIG9wdGlvbikKOzsgYW55IGxhdGVyIHZlcnNpb24uCjs7Cjs7IFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKOzsgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBN RVJDSEFOVEFCSUxJVFkKOzsgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCjs7IGZvciBtb3JlIGRldGFpbHMuCjs7 Cjs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFsb25nCjs7IHdpdGggR05VIEVtYWNzLiAgSWYgeW91IGRpZCBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCjs7IEluYy4sIDY3NSBNYXNzIEF2 ZS4sIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KCjs7Cjs7ID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Cjs7IFNQRUNNQU4gTU9ERSAtIEEgTWFqb3IgbW9kZSBmb3Igd3JpdGluZyBpbiAnZScKOzsgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KOzsKCjs7IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gJnQtaW5zdGFsbCAuLi4KOzsgUHV0IHRoaXMgZmlsZSBv biB5b3VyIEVtYWNzLUxpc3AgbG9hZCBwYXRoLCBhZGQgZm9sbG93aW5nIGludG8geW91cgo7OyB+ Ly5lbWFjcyBzdGFydHVwIGZpbGUKOzsKOzsgICAocmVxdWlyZSAnc3BlY21hbi1tb2RlKQo7Owo7 OyBPciBhZGQgdGhlIGZvbGxvd2luZyBjb2RlIHRvIHlvdXIgLmVtYWNzOgo7OyAgCjs7IChhdXRv bG9hZCAnc3BlY21hbi1tb2RlICJzcGVjbWFuLW1vZGUiICJTcGVjbWFuIGNvZGUgZWRpdGluZyBt b2RlIiB0KSAKOzsKOzsgKHNldHEgYXV0by1tb2RlLWFsaXN0IAo7OyAgICAgICAocmVtb3ZlLWR1 cGxpY2F0ZXMKOzsgICAgICAgIChhcHBlbmQgKGxpc3QgCjs7ICAgICAgICAgICAgICAgICAoY29u cyAiXFwuZVxcJyIgJ3NwZWNtYW4tbW9kZSkKOzsgICAgICAgICAgICAgICAgIChjb25zICJcXC5l Y29tXFwnIiAnc3BlY21hbi1tb2RlKQo7OyAgICAgICAgICAgICAgICAgKGNvbnMgIlxcLmVybGRc XCciICdzcGVjbWFuLW1vZGUpKQo7OyAgICAgICAgICAgICAgICBhdXRvLW1vZGUtYWxpc3QpKSkK OzsgCjs7Cjs7OyBDb21tZXRhcnk6Cjs7Cjs7ICBzcGVjbWFuLW1vZGUgaXMgYSBtYWpvciBtb2Rl IGZvciBlZGl0aW5nIGNvZGUgd3JpdHRlbiBpbiB0aGUgJ2UnIGxhbmd1YWdlCjs7CgooZGVmY29u c3Qgc3BlY21hbi1tb2RlLXZlcnNpb24gIiQkUmV2aXNpb246IDEuMjIgJCQiCiAgIlZlcnNpb24g b2YgdGhpcyBTcGVjbWFuIG1vZGUuIikKCihkZWZ1biBzcGVjbWFuLXZlcnNpb24gKCkKICAiSW5m b3JtIGNhbGxlciBvZiB0aGUgdmVyc2lvbiBvZiB0aGlzIGZpbGUiCiAgKGludGVyYWN0aXZlKQog IChtZXNzYWdlIChjb25jYXQgIlVzaW5nIHNwZWNtYW4tbW9kZSB2ZXJzaW9uICIgCgkJICAgKHN1 YnN0cmluZyBzcGVjbWFuLW1vZGUtdmVyc2lvbiAxMiAtMyApKSApCiAgKQoKKGF1dG9sb2FkICdz cGVjbWFuLW1vZGUgInNwZWNtYW4tbW9kZSIgIlNwZWNtYW4gY29kZSBlZGl0aW5nIG1vZGUiIHQp IAoKKHNldHEgYXV0by1tb2RlLWFsaXN0IAogICAgICAocmVtb3ZlLWR1cGxpY2F0ZXMKICAgICAg IChhcHBlbmQgKGxpc3QgCiAgICAgICAgICAgICAgICAoY29ucyAiXFwuZVxcJyIgJ3NwZWNtYW4t bW9kZSkKICAgICAgICAgICAgICAgIChjb25zICJcXC5lY29tXFwnIiAnc3BlY21hbi1tb2RlKQog ICAgICAgICAgICAgICAgKGNvbnMgIlxcLmVybGRcXCciICdzcGVjbWFuLW1vZGUpKQogICAgICAg ICAgICAgICBhdXRvLW1vZGUtYWxpc3QpKSkKCihhZGQtaG9vayAnc3BlY21hbi1tb2RlLWhvb2sK CSAgKGxhbWJkYSAoKQogICAgICAgICAgICAodHVybi1vbi1mb250LWxvY2spCgkgICAgKHNldHEg aW5kZW50LXRhYnMtbW9kZSBuaWwpCgkgICAgKHNldHEgd3JpdGUtZmlsZS1ob29rcyBuaWwpKSkK CihhZGQtaG9vayAnc3BlZWRiYXItbG9hZC1ob29rCiAgICAgICAgICAobGFtYmRhICgpCiAgICAg ICAgICAgIChzcGVlZGJhci1hZGQtc3VwcG9ydGVkLWV4dGVuc2lvbiAiLmUiKSkpCgooZGVmbWFj cm8gc3BlY21hbi1zYWZlICgmcmVzdCBib2R5KQogICJTYWZlbHkgZXhlY3V0ZSBCT0RZLCByZXR1 cm4gbmlsIGlmIGFuIGVycm9yIG9jY3VycmVkLiIKICBgKGNvbmRpdGlvbi1jYXNlIG5pbAogICAg ICAgKHByb2duICxAYm9keSkKICAgICAoZXJyb3IgbmlsKSkpCgooaWYgKGZib3VuZHAgJ2V2YWwt d2hlbi1jb21waWxlKQogICAgKGV2YWwtd2hlbi1jb21waWxlCiAgICAgIChjb25kaXRpb24tY2Fz ZSBuaWwKICAgICAgICAgIChyZXF1aXJlICdjbCkJOzsgRlNGIGVtYWNzJ3MgaW1lbnUgbmVlZHMg Y2wsIGJ1dCBkb2Vzbid0IChyZXF1aXJlICdjbCkKICAgICAgICAoZXJyb3IgbmlsKSkKICAgICAg KGNvbmRpdGlvbi1jYXNlIG5pbAogICAgICAgICAgKHJlcXVpcmUgJ2ltZW51KQogICAgICAgIChl cnJvciBuaWwpKQogICAgICAoY29uZGl0aW9uLWNhc2UgbmlsCgkgICh1bmxlc3MgKGZib3VuZHAg J2ltZW51LWFkZC10by1tZW51YmFyKQoJICAgIChkZWZ1biBpbWVudS1hZGQtdG8tbWVudWJhciAo YSkgKSkKCShlcnJvciBuaWwpKQogICAgICAoY29uZGl0aW9uLWNhc2UgbmlsCgkgIChyZXF1aXJl ICdyZXBvcnRlcikKICAgICAgICAoZXJyb3IgbmlsKSkKICAgICAgKGNvbmRpdGlvbi1jYXNlIG5p bAoJICAoaWYgKGJvdW5kcCAnY3VycmVudC1tZW51YmFyKQoJICAgICAgbmlsIDs7IGdyZWF0Cgkg ICAgKGRlZm1hY3JvIHNldC1idWZmZXItbWVudWJhciAoJnJlc3QgYXJncykgbmlsKQoJICAgIChk ZWZtYWNybyBhZGQtc3VibWVudSAoJnJlc3QgYXJncykgbmlsKSkKCShlcnJvciBuaWwpKQogICAg ICAoY29uZGl0aW9uLWNhc2UgbmlsCgkgIChyZXF1aXJlICdmdW5jLW1lbnUpCgkoZXJyb3Igbmls KSkKICAgICAgKGNvbmRpdGlvbi1jYXNlIG5pbAoJICAodW5sZXNzIChmYm91bmRwICdjaGFyPSkK CSAgICAoZGVmdW4gY2hhcj0gKGEgYikKCSAgICAgICg9IGEgYikpKQoJKGVycm9yIG5pbCkpCiAg ICAgIChpZiAoYW5kIChmZWF0dXJlcCAnY3VzdG9tKSAoZmJvdW5kcCAnY3VzdG9tLWRlY2xhcmUt dmFyaWFibGUpKQoJICBuaWwgOzsgV2UndmUgZ290IHdoYXQgd2UgbmVlZGVkCgk7OyBXZSBoYXZl IHRoZSBvbGQgY3VzdG9tLWxpYnJhcnksIGhhY2sgYXJvdW5kIGl0IQoJKGRlZm1hY3JvIGRlZmdy b3VwICgmcmVzdCBhcmdzKSAgbmlsKQoJKGRlZm1hY3JvIGN1c3RvbWl6ZSAoJnJlc3QgYXJncykK CSAgKG1lc3NhZ2UgIlNvcnJ5LCBDdXN0b21pemUgaXMgbm90IGF2YWlsYWJsZSB3aXRoIHRoaXMg dmVyc2lvbiBvZiBlbWFjcyIpKQoJKGRlZm1hY3JvIGRlZmN1c3RvbSAodmFyIHZhbHVlIGRvYyAm cmVzdCBhcmdzKQoJICAoYCAoZGVmdmFyICgsIHZhcikgKCwgdmFsdWUpICgsIGRvYykpKSkKCSkK ICAgICAgKGlmIChmYm91bmRwICdkZWZmYWNlKQoJICBuaWwgOzsgZ3JlYXQhCgkoZGVmbWFjcm8g ZGVmZmFjZSAodmFyIHZhbHVlIGRvYyAmcmVzdCBhcmdzKQoJICAoYCAobWFrZS1mYWNlICgsIHZh cikpKSkKCSkKICAgICAgKGlmIChhbmQgKGZlYXR1cmVwICdjdXN0b20pIChmYm91bmRwICdjdXN0 b21pemUtZ3JvdXApKQoJICBuaWwgOzsgV2UndmUgZ290IHdoYXQgd2UgbmVlZGVkCgk7OyBXZSBo YXZlIGFuIGludGVybWVkaWF0ZSBjdXN0b20tbGlicmFyeSwgaGFjayBhcm91bmQgaXQhCgkoZGVm bWFjcm8gY3VzdG9taXplLWdyb3VwICh2YXIgJnJlc3QgYXJncykKCSAgKGAoY3VzdG9taXplICgs IHZhcikgKSkpCgkpCiAgICAgIChpZiAoYW5kIChmZWF0dXJlcCAnY3VzdG9tKSAoZmJvdW5kcCAn Y3VzdG9tLWRlY2xhcmUtdmFyaWFibGUpKQoJICBuaWwgOzsgV2UndmUgZ290IHdoYXQgd2UgbmVl ZGVkCgk7OyBXZSBoYXZlIHRoZSBvbGQgY3VzdG9tLWxpYnJhcnksIGhhY2sgYXJvdW5kIGl0IQoJ KGRlZm1hY3JvIGRlZmdyb3VwICgmcmVzdCBhcmdzKSAgbmlsKQoJKGRlZm1hY3JvIGN1c3RvbWl6 ZSAoJnJlc3QgYXJncykKCSAgKG1lc3NhZ2UgIlNvcnJ5LCBDdXN0b21pemUgaXMgbm90IGF2YWls YWJsZSB3aXRoIHRoaXMgdmVyc2lvbiBvZiBlbWFjcyIpKQoJKGRlZm1hY3JvIGRlZmN1c3RvbSAo dmFyIHZhbHVlIGRvYyAmcmVzdCBhcmdzKQoJICAoYCAoZGVmdmFyICgsIHZhcikgKCwgdmFsdWUp ICgsIGRvYykpKSkKCSkKICAgICAgCiAgICAgIChpZiAoYW5kIChmZWF0dXJlcCAnY3VzdG9tKSAo ZmJvdW5kcCAnY3VzdG9taXplLWdyb3VwKSkKCSAgbmlsIDs7IFdlJ3ZlIGdvdCB3aGF0IHdlIG5l ZWRlZAoJOzsgV2UgaGF2ZSBhbiBpbnRlcm1lZGlhdGUgY3VzdG9tLWxpYnJhcnksIGhhY2sgYXJv dW5kIGl0IQoJKGRlZm1hY3JvIGN1c3RvbWl6ZS1ncm91cCAodmFyICZyZXN0IGFyZ3MpCgkgIChg KGN1c3RvbWl6ZSAoLCB2YXIpICkpKQoJKQogICAgICAoY29uZGl0aW9uLWNhc2UgbmlsCiAgICAg ICAgICAocmVxdWlyZSAnZWFzeW1lbnUpCiAgICAgICAgKGVycm9yIG5pbCkpKSkKCjs7IElmIHlv dSBpbnN0YWxsIHhlbWFjcy1kZXZlbCwgeW91IHdpbGwgZ2V0IGEgMTAtMjAlIHNwZWVkdXAuCjs7 IGlmIG5vdCwgeW91IGdldCB0aGlzOgoodW5sZXNzIChmYm91bmRwICdyZWdleHAtb3B0KQogIChk ZWZ1biByZWdleHAtb3B0IChzdHJpbmdzICZvcHRpb25hbCBwYXJlbikKICAgIChsZXQgKChvcGVu IChpZiBwYXJlbiAiXFwoIiAiIikpCiAgICAgICAgICAoY2xvc2UgKGlmIHBhcmVuICJcXCkiICIi KSkKICAgICAgICAgICkKICAgICAgKGNvbmNhdCBvcGVuIChtYXBjb25jYXQgJ3JlZ2V4cC1xdW90 ZSBzdHJpbmdzICJcXHwiKSBjbG9zZSkpKSkKCjs7IFRPRE86IHRoaXMgaXMgYWxzbyBkZWZpbmVk IGFib3ZlLCBub3Qgc3VyZSB3aHkKKHVubGVzcyAoZmJvdW5kcCAnY2hhcj0pCiAgKGRlZnVuIGNo YXI9IChhIGIpCiAgICAoPSBhIGIpKSkKCihpZiAobm90IChib3VuZHAgJ2ltZW51LWdlbmVyaWMt ZXhwcmVzc2lvbikpCiAgICAoZGVmdmFyIGltZW51LWdlbmVyaWMtZXhwcmVzc2lvbikpCgoodW5s ZXNzIChib3VuZHAgJ2ZvbnQtbG9jay1jb25zdGFudC1mYWNlKQogIChtYWtlLWZhY2UgJ2ZvbnQt bG9jay1jb25zdGFudC1mYWNlKQogIChzZXQtZmFjZS1mb3JlZ3JvdW5kICdmb250LWxvY2stY29u c3RhbnQtZmFjZSAiQ2FkZXRCbHVlIikpCgooaWYgKDwgbWF4LXNwZWNwZGwtc2l6ZSAzMDAwKSAK ICAgIChzZXRxIG1heC1zcGVjcGRsLXNpemUgMzAwMCkpCgoKOzsgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo7OyBTUEVDTUFOIENVU1RPTUlaQUJMRSBW QVJTCjs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ozs7IC0gQ3VzdG9taXphYmxlIHZhcmlhYmxlcwoKKGRlZmdyb3VwIHNwZWNtYW4tbW9kZSBuaWwK ICAiRmFjaWxpdGF0ZXMgZWFzeSBlZGl0aW5nIG9mIFNwZWNtYW4gc291cmNlIHRleHQiCiAgOmdy b3VwICdsYW5ndWFnZXMKICApCgooZGVmY3VzdG9tIHNwZWNtYW4tYmFzaWMtb2Zmc2V0IDMKICAi KkluZGVudGF0aW9uIG9mIFNwZWNtYW4gc3RhdGVtZW50cyB3aXRoIHJlc3BlY3QgdG8gY29udGFp bmluZyBibG9jay4iCiAgOmdyb3VwICdzcGVjbWFuLW1vZGUKICA6dHlwZSAnaW50ZWdlcgogICkK CihkZWZjb25zdCBzcGVjbWFuLXRhYi13aWR0aCBzcGVjbWFuLWJhc2ljLW9mZnNldAogICIqVGFi IHN0b3Agd2lkdGgiCiAgKQoKKGRlZmN1c3RvbSBzcGVjbWFuLWNvbnRpbnVlZC1saW5lLW9mZnNl dCAyCiAgIipJbmRlbnRhdGlvbiBvZiBjb250aW51ZWQgU3BlY21hbiBzdGF0ZW1lbnRzIHdpdGgg cmVzcGVjdCB0byBmaXJzdCBsaW5lIG9mIHN0YXRlbWVudC4iCiAgOmdyb3VwICdzcGVjbWFuLW1v ZGUKICA6dHlwZSAnaW50ZWdlcgogICkKCihkZWZjdXN0b20gc3BlY21hbi1hdXRvLW5ld2xpbmUg bmlsCiAgIipPTiAob3Igbm9uIG5pbCkgbWVhbnMgdG8gYXV0b21hdGljYWxseSBuZXdsaW5lIGFm dGVyIGluc2VydGluZyBhIHNlbWljb2xvbi4iCiAgOmdyb3VwICdzcGVjbWFuLW1vZGUKICA6dHlw ZSAnYm9vbGVhbgogICkKCihkZWZjdXN0b20gc3BlY21hbi1hdXRvLWVuZGNvbW1lbnRzIG5pbAog ICIqT04gKG9yIG5vbiBuaWwpIG1lYW5zIHRvIGF1dG9tYXRpY2FsbHkgYWRkIGEgY29tbWVudCB3 aGVuIGNsb3NpbmcgYSBjb2RlIGJsb2NrLiIKICA6Z3JvdXAgJ3NwZWNtYW4tbW9kZQogIDp0eXBl ICdib29sZWFuCiAgKQoKKGRlZmN1c3RvbSBzcGVjbWFuLWF1dG8tZW5kY29tbWVudHMtZm9yLW1h am9yLXNjb3Blcy1vbmx5IHQKICAiKk9OIChvciBub24gbmlsKSBtZWFucyB0aGF0IGVuZC1jb21t ZW50cyBhcmUgb25seSBhcHBsaWVkIHRvIHN0cnVjdCBhbmQgbWV0aG9kIHNjb3Blcy4iCiAgOmdy b3VwICdzcGVjbWFuLW1vZGUKICA6dHlwZSAnYm9vbGVhbgogICkKCihkZWZjdXN0b20gc3BlY21h bi1hdXRvLWVuZGNvbW1lbnRzLWtpbGwtZXhpc3RpbmctY29tbWVudCB0CiAgIipPTiAob3Igbm9u IG5pbCkgbWVhbnMgdGhhdCByZWRvaW5nIGFuIGVuZC1jb21tZW50IHJlcGxhY2VzIGFuIGV4aXN0 aW5nIGVuZC1jb21tZW50LiIKICA6Z3JvdXAgJ3NwZWNtYW4tbW9kZQogIDp0eXBlICdib29sZWFu CiAgKQoKKGRlZmN1c3RvbSBzcGVjbWFuLW1heC1saW5lLWxlbmd0aCAxNTAKICAiKlRoZSBtYXhp bXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgc2hvdWxkIGJlIGluIGEgbGluZS4iCiAgOmdy b3VwICdzcGVjbWFuLW1vZGUKICA6dHlwZSAnaW50ZWdlcgogICkKCihkZWZjdXN0b20gc3BlY21h bi1oaWdobGlnaHQtYmV5b25kLW1heC1saW5lLWxlbmd0aCB0CiAgIipPTiAob3Igbm9uIG5pbCkg bWVhbnMgdG8gaGlnaGxpZ2h0IHRleHQgYmV5b25kIHNwZWNtYW4tbWF4LWxpbmUtbGVuZ3RoLiIK ICA6Z3JvdXAgJ3NwZWNtYW4tbW9kZQogIDp0eXBlICdib29sZWFuCiAgKQoKKGRlZmZhY2Ugc3Bl Y21hbi1oaWdobGlnaHQtYmV5b25kLW1heC1saW5lLWxlbmd0aC1mYWNlCiAgJygodCAoOnVuZGVy bGluZSB0KSkpCiAgIkZhY2UgdXNlZCB0byBoaWdobGlnaHQgdGV4dCBiZXlvbmQgdGhlIGRlZmlu ZWQgbWF4aW11bSBsaW5lIGxlbmd0aC4iCiAgOmdyb3VwICdzcGVjbWFuLW1vZGUKICApCgooZGVm Y3VzdG9tIHNwZWNtYW4taGlnaGxpZ2h0LXB1bmN0dWF0aW9uIHQKICAiKk9OIChvciBub24gbmls KSBtZWFucyB0byBoaWdobGlnaHQgcHVuY3R1YXRpb24gc3ltYm9scy4iCiAgOmdyb3VwICdzcGVj bWFuLW1vZGUKICA6dHlwZSAnYm9vbGVhbgogICkKCihkZWZmYWNlIHNwZWNtYW4tcHVuY3R1YXRp b24tZmFjZQogICcoKHQgKDpmb3JlZ3JvdW5kICJTdGVlbEJsdWUiKSkpCiAgIkZhY2UgdXNlZCB0 byBoaWdobGlnaHQgcHVuY3R1YXRpb24gc3ltYm9scyAtIHNpZ25pZmljYW50IGJlY2F1c2UgdGhl eSBhcmUgbW9zdGx5IGEgc2luZ2xlIGNoYXIuIgogIDpncm91cCAnc3BlY21hbi1tb2RlCiAgKQoK KGRlZmN1c3RvbSBzcGVjbWFuLWNvbXBpbGUtY29tbWFuZCAiJHtTUEVDTUFOX0hPTUV9L2Jpbi9z bl9jb21waWxlLnNoICIKICAiU3RyaW5nIHVzZWQgdG8gY29tcGlsZSBlIGZpbGVzLiIKICA6Z3Jv dXAgJ3NwZWNtYW4tbW9kZQogICkKCihkZWZjdXN0b20gc3BlY21hbi1tYWtlLWNvbW1hbmQgIi91 c3IvYmluL21ha2UgIgogICJTdHJpbmcgdXNlZCB0byBpbnZva2UgbWFrZSIKICA6Z3JvdXAgJ3Nw ZWNtYW4tbW9kZQogICkKCihkZWZjdXN0b20gc3BlY21hbi1pbmRleC1tZW51LWFjdGl2ZSB0CiAg IipPTiAob3Igbm9uIG5pbCkgbWVhbnMgdGhhdCB0aGUgJ1NwZWNtYW4tSW5kZXgnIG1lbnUgaXMg YWN0aXZlLiIKICA6Z3JvdXAgJ3NwZWNtYW4tbW9kZQogIDp0eXBlICdib29sZWFuCiAgKQoKKGRl ZmN1c3RvbSBzcGVjbWFuLWRhdGUtc2NpZW50aWZpYy1mb3JtYXQgbmlsCiAgIipJZiBub24tbmls LCBkYXRlcyBhcmUgd3JpdHRlbiBpbiBzY2llbnRpZmljIGZvcm1hdCAoZS5nLiAxOTk3LzA5LzE3 KSwKaW4gZXVyb3BlYW4gZm9ybWF0IG90aGVyd2lzZSAoZS5nLiAxNy4wOS4xOTk3KS4gVGhlIGJy YWluZGVhZCBhbWVyaWNhbgpmb3JtYXQgKGUuZy4gMDkvMTcvMTk5NykgaXMgbm90IHN1cHBvcnRl ZC4iCiAgOmdyb3VwICdzcGVjbWFuLW1vZGUKICA6dHlwZSAnYm9vbGVhbgogICkKCihkZWZjdXN0 b20gc3BlY21hbi1jb21wYW55ICJBQ01FIENvbXBhbnkiCiAgIipEZWZhdWx0IG5hbWUgb2YgQ29t cGFueSBmb3Igc3BlY21hbiBoZWFkZXIuIElmIHNldCB3aWxsIGJlY29tZSBidWZmZXIgbG9jYWwu ICIKICA6Z3JvdXAgJ3NwZWNtYW4tbW9kZQogIDp0eXBlICdzdHJpbmcgIAogICkKCihkZWZjdXN0 b20gc3BlY21hbi1wcm9qZWN0ICJSb2FkcnVubmVyIgogICIqRGVmYXVsdCBuYW1lIG9mIFByb2pl Y3QgZm9yIHNwZWNtYW4gaGVhZGVyLiBJZiBzZXQgd2lsbCBiZWNvbWUgYnVmZmVyIGxvY2FsLiIK ICA6Z3JvdXAgJ3NwZWNtYW4tbW9kZQogIDp0eXBlICdzdHJpbmcgIAogICkKCgo7OyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cjs7IFNQRUNNQU4gUkVH VUxBUiBFWFBSRVNTSU9OUwo7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CgooZGVmY29uc3Qgc3BlY21hbi1leC1jb2RlLXJlZ2V4cCAiXlxcKD86XFwo Jz5cXClcXHxcXCg8J1xcKVxcKSIgCiAgIlJlZ3VsYXIgRXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMg ZXgtY29kZSB0b2tlbnMiKQoKOzsgTWF0dGhldyBMb3ZlbGwgPGxvdmVsbEBmYy5ocC5jb20+Cjs7 ICAgVXAgdG8gb25lIGxldmVsIG9mIHBhcmVudGhlc2VzIGlzIGFsbG93ZWQgaW4gdGhlIHBhcmFt ZXRlcgo7OyAgIGxpc3QgdG8gYSBtZXRob2QuICBUaGUgcmVnZXggcGF0dGVybiBmb3IgdGhhdCBw b3J0aW9uIGlmCjs7ICAgZnJvbSBKLiBGcmllZGwncyAiTWFzdGVyaW5nIFJlZ3VsYXIgRXhwcmVz c2lvbnMiCgooZGVmY29uc3Qgc3BlY21hbi1sZWdhbC1uYW1lLXJlZ2V4cCAiXFwoPzpbYS16QS1a XVthLXpBLVowLTlfXSpcXCkiCiAgImUgbGVnYWwgbmFtZSIpCgooZGVmY29uc3Qgc3BlY21hbi1t ZXRob2QtZGVmaW5pdGlvbi1yZWdleHAKICAiXFwoPzpcXCg/OnByaXZhdGVcXHxwYWNrYWdlXFx8 cHJvdGVjdGVkXFwpWyBcdFxuXStcXCk/XFwoW0EtWmEtejAtOV9dK1xcKVsgXHRcbl0qKFteKCld KlxcKD86KFteKCldKilbXigpXSpcXCkqKVteLS87XSo/WyBcdFxuXStpc1thLXogXHRcbl0qeyIK ICAiUmVnZXhwIHRoYXQgaWRlbnRpZmllcyBtZXRob2RzIChhcmcgMSkiKQoKKGRlZmNvbnN0IHNw ZWNtYW4tb24tZXZlbnQtbWV0aG9kLWRlZmluaXRpb24tcmVnZXhwCiAgIlxcKG9uWyBcdFxuXStb QS1aYS16MC05X10rXFwpWyBcdFxuXSp7IgogICJSZWdleHAgdGhhdCBpZGVudGlmaWVzIG9uLWV2 ZW50IG1ldGhvZHMgKGFyZyAxKSIpCgooZGVmY29uc3Qgc3BlY21hbi1jbGFzcy1kZWZpbml0aW9u LXJlZ2V4cAogIChjb25jYXQKICAgIlxcKCIKICAgIlxcKD86XFwoPzpwYWNrYWdlWyBcdFxuXSpc XCk/c3RydWN0WyBcdFxuXStbQS1aYS16MC05X10rXFwpIgogICAiXFx8IgogICAiXFwoPzpleHRl bmRbIFx0XG5dK1tee10rXFwpIgogICAiXFx8IgogICAiXFwoPzpcXCg/OnBhY2thZ2VbIFx0XG5d KlxcKT91bml0WyBcdFxuXStbQS1aYS16MC05X10rXFwpIgogICAiXFwpIikKICAiUmVnZXhwIHRo YXQgaWRlbnRpZmllcyBtYWpvciBjbGFzcyBzY29wZXMgKGFyZyAxKSIpCgooZGVmY29uc3Qgc3Bl Y21hbi13aGVuLXN1YnR5cGUtZGVmaW5pdGlvbi1yZWdleHAKICAiXFwod2hlblsgXHRcbl0rW157 XStcXCkiCiAgIlJlZ2V4cCB0aGF0IGlkZW50aWZpZXMgd2hlbiBzdWJ0eXBlcyAoYXJnIDEpIikK CihkZWZjb25zdCBzcGVjbWFuLWRlZmluZS1yZWdleHAKICAiXFwoZGVmaW5lWyBcdF0qPFtePl0r PlxcKSIKICAiUmVnZXhwIHRoYXQgaWRlbnRpZmllcyBkZWZpbmUgc2NvcGVzIChhcmcgMSkiKQoK KGRlZmNvbnN0IHNwZWNtYW4tbWFjcm8tYW5kLWRlZmluZS1yZWdleHAKICAgIlxcKFxcKD86Iz9k ZWZpbmVcXHwjaWZuP2RlZlxcfCNlbHNlXFwpWyBcdFxuXStbXiBcdFxuXStcXCkiCiAgIlJlZ2V4 cCB0aGF0IGlkZW50aWZpZXMgbWFjcm8gYW5kIGRlZmluZSBzY29wZXMgKGFyZyAxKSIpCgooZGVm Y29uc3Qgc3BlY21hbi10b3AtbGV2ZWwtY29udGFpbmVyLWRlZmluaXRpb24tcmVnZXhwCiAgKGNv bmNhdAogICAiXFwoIgogICAiXFwoPzpcXCg/OnBhY2thZ2VbIFx0XG5dKlxcKT9zdHJ1Y3RbIFx0 XG5dK1tBLVphLXowLTlfXStcXCkiCiAgICJcXHwiCiAgICJcXCg/OmV4dGVuZFsgXHRcbl0rW157 XStcXCkiCiAgICJcXHwiCiAgICJcXCg/OlxcKD86cGFja2FnZVsgXHRcbl0qXFwpP3VuaXRbIFx0 XG5dK1tBLVphLXowLTlfXStcXCkiCiAgICJcXHwiCiAgICJcXCg/OlxcKD86Iz9kZWZpbmVcXHwj aWZuP2RlZlxcfCNlbHNlXFwpWyBcdFxuXStbXiBcdFxuXStcXCkiCiAgICJcXCkiKQogICJSZWdl eHAgdGhhdCBpZGVudGlmaWVzIGFsbCBzcGVjbWFuIGNvbnRhaW5lciBzY29wZXMgKGFyZyAxKSIp CgooZGVmY29uc3Qgc3BlY21hbi1jb250YWluZXItc2NvcGUtZGVmaW5pdGlvbi1yZWdleHAKICAo Y29uY2F0CiAgICJcXCgiCiAgICJcXCg/OlxcKD86cGFja2FnZVsgXHRcbl0qXFwpP3N0cnVjdFsg XHRcbl0rW0EtWmEtejAtOV9dK1xcKSIKICAgIlxcfCIKICAgIlxcKD86ZXh0ZW5kWyBcdFxuXStb XntdK1xcKSIKICAgIlxcfCIKICAgIlxcKD86XFwoPzpwYWNrYWdlWyBcdFxuXSpcXCk/dW5pdFsg XHRcbl0rW0EtWmEtejAtOV9dK1xcKSIKICAgIlxcfCIKICAgIlxcKD86XFwoPzojP2RlZmluZVxc fCNpZm4/ZGVmXFx8I2Vsc2VcXClbIFx0XG5dK1teIFx0XG5dK1xcKSIKICAgIlxcfCIKICAgIlxc KD86d2hlblsgXHRcbl0rW157XStcXCkiCiAgICJcXCkiKQogICJSZWdleHAgdGhhdCBpZGVudGlm aWVzIGFsbCBzcGVjbWFuIGNvbnRhaW5lciBzY29wZXMgKGFyZyAxKSIpCgoKKGRlZmNvbnN0IHNw ZWNtYW4tZmllbGQtZGVmaW5pdGlvbi1yZWdleHAKICAiXFwoPzpcXCg/OnByaXZhdGVcXHxwYWNr YWdlXFx8cHJvdGVjdGVkXFwpWyBcdFxuXStcXCk/XFwoW0EtWmEtejAtOV9dK1xcKVsgXHRcbl0q OlsgXHRcbl0qXFwoPzpcXCo/W0EtWmEtejAtOV9dK1xcfFxcW1teXFxbXSpcXF1cXCkiCiAgIlJl Z2V4cCB0aGF0IGlkZW50aWZpZXMgZmllbGQgZGVmaW5pdGlvbnMgKGFyZyAxKSIpCgooZGVmY29u c3Qgc3BlY21hbi12YXJpYWJsZS1kZWZpbml0aW9uLXJlZ2V4cAogICJ2YXJbIFx0XG5dK1xcKFtB LVphLXowLTlfXStcXClbIFx0XG5dKjo9P1sgXHRcbl0qW3sqKy1dP1sgXHRcbl0qXFwoW0EtWmEt ejAtOV9dK1xcKSIKICAiUmVnZXhwIHRoYXQgaWRlbnRpZmllcyB2YXJpYWJsZSBkZWZpbml0aW9u cyAoYXJnIDEpIikKCihkZWZjb25zdCBzcGVjbWFuLWV2ZW50LWRlZmluaXRpb24tcmVnZXhwCiAg IlxcKD86XFwoPzpwcml2YXRlXFx8cGFja2FnZVxcfHByb3RlY3RlZFxcKVsgXHRcbl0rXFwpP2V2 ZW50WyBcdFxuXStcXChbQS1aYS16MC05X10rXFwpIgogICJSZWdleHAgdGhhdCBpZGVudGlmaWVz IGV2ZW50IGRlZmluaXRpb25zIChhcmcgMSkiKQoKKGRlZmNvbnN0IHNwZWNtYW4tdHlwZS1kZWZp bml0aW9uLXJlZ2V4cAogICJcXCg/OnBhY2thZ2VbIFx0XG5dKlxcKT9cXCg/Om1ldGhvZF9cXCk/ dHlwZVsgXHRcbl0rXFwoW0EtWmEtejAtOV9dK1xcKVsgXHRcbl0qOlsgXHRcbl0qXFxbIgogICJS ZWdleHAgdGhhdCBpZGVudGlmaWVzIHR5cGUgZGVmaW5pdGlvbnMgKGFyZyAxKSIpCgooZGVmY29u c3Qgc3BlY21hbi1jb3Zlci1kZWZpbml0aW9uLXJlZ2V4cAogICJjb3ZlclsgXHRcbl0rXFwoW0Et WmEtejAtOV9dK1xcKVsgXHRcbl0raXMiCiAgIlJlZ2V4cCB0aGF0IGlkZW50aWZpZXMgY292ZXIg ZGVmaW5pdGlvbnMgKGFyZyAxKSIpCgooZGVmY29uc3Qgc3BlY21hbi1zeW1ib2wtYmVnaW4tcmVn ZXhwCiAgIlxcPCIKICAiUmVnZXhwIHRoYXQgaWRlbnRpZmllcyB0aGUgYmVnaW5uaW5nIG9mIGEg c3ltYm9sIikKCihkZWZjb25zdCBzcGVjbWFuLXN5bWJvbC1lbmQtcmVnZXhwCiAgIlxcPiIKICAi UmVnZXhwIHRoYXQgaWRlbnRpZmllcyB0aGUgZW5kIG9mIGEgc3ltYm9sIikKCihkZWZjb25zdCBz cGVjbWFuLW51bWJlci1yZWdleHAKICAoY29uY2F0CiAgICJcXCgiCgogICA7OyB0aGlzIGlzIHVn bHksIGJ1dCB0aGUgb25seSB3YXkgSSBjb3VsZCBmaW5kIHRvIGNvdW50ICsgYW5kIC0gYXMKICAg OzsgbnVtYmVyIHN5bWJvbHMgYnV0IG1haW50YWluaW5nIHRoYXQgbnVtYmVycyBoYXZlIHRvIGNv bWUgYWZ0ZXIKICAgOzsgYSBzeW1ib2wgYmVnaW5uaW5nCiAgICJcXCg/OiIKICAgIlsrLV0iCiAg ICJcXHwiCiAgIHNwZWNtYW4tc3ltYm9sLWJlZ2luLXJlZ2V4cAogICAiXFwpIgogICAKICAgIlxc KD86IgogICAiWzAtOV0rIgogICAiXFx8IgogICAiMGJbMDFdKyIKICAgIlxcfCIKICAgIjBvWzAt N10rIgogICAiXFx8IgogICAiMFt4aF1bMC05YS1mQS1GXSsiCiAgICJcXCkiCiAgIAogICAiW2tL bU1dPyIKICAgIlxcKSIKICAgc3BlY21hbi1zeW1ib2wtZW5kLXJlZ2V4cCkKICAiUmVnZXhwIHRo YXQgaWRlbnRpZmllcyBudW1iZXJzIChhcmcxKSIpCgoKKGRlZmNvbnN0IHNwZWNtYW4tbWV0aG9k LWRlZmluaXRpb24tcmVnZXhwLWZ1bGwKICAoY29uY2F0ICJeWyBcdF0qIiBzcGVjbWFuLW1ldGhv ZC1kZWZpbml0aW9uLXJlZ2V4cCkpCgooZGVmY29uc3Qgc3BlY21hbi1vbi1ldmVudC1tZXRob2Qt ZGVmaW5pdGlvbi1yZWdleHAtZnVsbAogIChjb25jYXQgIl5bIFx0XSoiIHNwZWNtYW4tb24tZXZl bnQtbWV0aG9kLWRlZmluaXRpb24tcmVnZXhwKSkKCihkZWZjb25zdCBzcGVjbWFuLWNsYXNzLWRl ZmluaXRpb24tcmVnZXhwLWZ1bGwKICAoY29uY2F0ICJeWyBcdF0qIiBzcGVjbWFuLWNsYXNzLWRl ZmluaXRpb24tcmVnZXhwKSkKCihkZWZjb25zdCBzcGVjbWFuLXdoZW4tc3VidHlwZS1kZWZpbml0 aW9uLXJlZ2V4cC1mdWxsCiAgKGNvbmNhdCAiXlsgXHRdKiIgc3BlY21hbi13aGVuLXN1YnR5cGUt ZGVmaW5pdGlvbi1yZWdleHApKQoKKGRlZmNvbnN0IHNwZWNtYW4tZGVmaW5lLXJlZ2V4cC1mdWxs CiAgKGNvbmNhdCAiXlsgXHRdKiIgc3BlY21hbi1kZWZpbmUtcmVnZXhwKSkKCihkZWZjb25zdCBz cGVjbWFuLW1hY3JvLWFuZC1kZWZpbmUtcmVnZXhwLWZ1bGwKICAoY29uY2F0ICJeWyBcdF0qIiBz cGVjbWFuLW1hY3JvLWFuZC1kZWZpbmUtcmVnZXhwKSkKCihkZWZjb25zdCBzcGVjbWFuLWNvbnRh aW5lci1zY29wZS1kZWZpbml0aW9uLXJlZ2V4cC1mdWxsCiAgKGNvbmNhdCAiXlsgXHRdKiIgc3Bl Y21hbi1jb250YWluZXItc2NvcGUtZGVmaW5pdGlvbi1yZWdleHApKQoKKGRlZmNvbnN0IHNwZWNt YW4tZmllbGQtZGVmaW5pdGlvbi1yZWdleHAtZnVsbAogIChjb25jYXQgIl5bIFx0XSoiIHNwZWNt YW4tZmllbGQtZGVmaW5pdGlvbi1yZWdleHApKQoKKGRlZmNvbnN0IHNwZWNtYW4tdmFyaWFibGUt ZGVmaW5pdGlvbi1yZWdleHAtZnVsbAogIChjb25jYXQgIl5bIFx0XSoiIHNwZWNtYW4tdmFyaWFi bGUtZGVmaW5pdGlvbi1yZWdleHApKQoKKGRlZmNvbnN0IHNwZWNtYW4tZXZlbnQtZGVmaW5pdGlv bi1yZWdleHAtZnVsbAogIChjb25jYXQgIl5bIFx0XSoiIHNwZWNtYW4tZXZlbnQtZGVmaW5pdGlv bi1yZWdleHApKQoKKGRlZmNvbnN0IHNwZWNtYW4tdHlwZS1kZWZpbml0aW9uLXJlZ2V4cC1mdWxs CiAgKGNvbmNhdCAiXlsgXHRdKiIgc3BlY21hbi10eXBlLWRlZmluaXRpb24tcmVnZXhwKSkKCihk ZWZjb25zdCBzcGVjbWFuLWNvdmVyLWRlZmluaXRpb24tcmVnZXhwLWZ1bGwKICAoY29uY2F0ICJe WyBcdF0qIiBzcGVjbWFuLWNvdmVyLWRlZmluaXRpb24tcmVnZXhwKSkKCgo7OyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cjs7IFNQRUNNQU4gU0VBUkNI RVMgQU5EIFFVRVJJRVMKOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQoKKGRlZnN1YnN0IHNwZWNtYW4tcmUtc2VhcmNoLWZvcndhcmQgKFJFR0VYUCBC T1VORCBOT0VSUk9SICZvcHRpb25hbCB3aXRoaW4tY29kZS1yZWdpb24pCiAgIkxpa2UgcmUtc2Vh cmNoLWZvcndhcmQsIGJ1dCBza2lwcyBvdmVyIG1hdGNoZXMgaW4gY29tbWVudHMgb3Igc3RyaW5n cyIKICAobGV0ICgoc3RhcnQtcG9zCiAgICAgICAgIChwb2ludCkpCiAgICAgICAgKGZ1bGwtcmVn ZXhwCiAgICAgICAgIChjb25jYXQKICAgICAgICAgICJcXCgvL1xcfC0tXFwpXFx8XFwoXic+XFwp XFx8XFwoXCJcXClcXHxcXCgvXFwqXFwpXFx8XFwoIgogICAgICAgICAgUkVHRVhQCiAgICAgICAg ICAiXFwpIikpCiAgICAgICAgKQogICAgCiAgICAodW5sZXNzIHdpdGhpbi1jb2RlLXJlZ2lvbgog ICAgICAoc3BlY21hbi1za2lwLWZvcndhcmQtY29tbWVudC1vci1zdHJpbmcpKQogICAgCiAgICAo c3RvcmUtbWF0Y2gtZGF0YSAnKG5pbCBuaWwpKQogICAgKHdoaWxlIChhbmQgKGlmIEJPVU5ECiAg ICAgICAgICAgICAgICAgICAgKDw9IChwb2ludCkgQk9VTkQpCiAgICAgICAgICAgICAgICAgIHQp CiAgICAgICAgICAgICAgICAocmUtc2VhcmNoLWZvcndhcmQgZnVsbC1yZWdleHAgQk9VTkQgTk9F UlJPUikKICAgICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAgICAgKDs7IGUgbGluZSBj b21tZW50CiAgICAgICAgICAgICAgICAgIChtYXRjaC1iZWdpbm5pbmcgMSkKICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgIChmb3J3 YXJkLWxpbmUgMSkKICAgICAgICAgICAgICAgICAgICB0KQogICAgICAgICAgICAgICAgICApCiAg ICAgICAgICAgICAgICAgKDs7IGV4LWNvZGUgcmVnaW9uCiAgICAgICAgICAgICAgICAgIChtYXRj aC1iZWdpbm5pbmcgMikKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIChwcm9n bgogICAgICAgICAgICAgICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiXjwnIiBCT1VORCAnbW92 ZSkKICAgICAgICAgICAgICAgICAgICB0KQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAg ICAgICAgKDs7IHN0cmluZwogICAgICAgICAgICAgICAgICAobWF0Y2gtYmVnaW5uaW5nIDMpCiAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAg ICAgICA7OyB0byBhbHNvIGNvbnNpZGVyIHRoZSBuZXh0IGNoYXJhY3RlciwgZm9yICIiCiAgICAg ICAgICAgICAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIDMpKQogICAgICAgICAg ICAgICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiXFwoPzpbXlxcXVxcfFtcXF1bXFxdXFwpXCIi IEJPVU5EICdtb3ZlKQogICAgICAgICAgICAgICAgICAgIHQpCiAgICAgICAgICAgICAgICAgICkK ICAgICAgICAgICAgICAgICAoOzsgYyBtdWx0aS1saW5lIGNvbW1lbnQKICAgICAgICAgICAgICAg ICAgKG1hdGNoLWJlZ2lubmluZyA0KQoKICAgICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAg ICAgICAgICAgICAgKHJlLXNlYXJjaC1mb3J3YXJkICJcXCovIiBCT1VORCAnbW92ZSkKICAgICAg ICAgICAgICAgICAgICB0KQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgKDs7 IHRoZSByZWdleHAKICAgICAgICAgICAgICAgICAgKG1hdGNoLWJlZ2lubmluZyA1KQoKICAgICAg ICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gt YmVnaW5uaW5nIDUpKQogICAgICAgICAgICAgICAgICAgIChsb29raW5nLWF0IFJFR0VYUCkgIDs7 IHRvIHJlc2V0IG1hdGNoLWRhdGEKICAgICAgICAgICAgICAgICAgICBuaWwpCiAgICAgICAgICAg ICAgICAgICkKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAocHJvZ24KICAgICAg ICAgICAgICAgICAgKHN0b3JlLW1hdGNoLWRhdGEgJyhuaWwgbmlsKSkKICAgICAgICAgICAgICAg ICAgKGlmIEJPVU5ECiAgICAgICAgICAgICAgICAgICAgICAoPCAocG9pbnQpIEJPVU5EKQogICAg ICAgICAgICAgICAgICAgIHQpKQogICAgICAgICAgICAgICAgKSkKICAgIChnb3RvLWNoYXIgKGlm IChtYXRjaC1lbmQgMCkKICAgICAgICAgICAgICAgICAgIChtYXRjaC1lbmQgMCkKICAgICAgICAg ICAgICAgICBzdGFydC1wb3MpKQogICAgKG1hdGNoLWVuZCAwKSkpCgooZGVmc3Vic3Qgc3BlY21h bi1yZS1zZWFyY2gtYmFja3dhcmQgKFJFR0VYUCBCT1VORCBOT0VSUk9SICZvcHRpb25hbCB3aXRo aW4tY29kZS1yZWdpb24pCiAgIkxpa2UgcmUtc2VhcmNoLWJhY2t3YXJkLCBidXQgc2tpcHMgb3Zl ciBtYXRjaGVzIGluIGNvbW1lbnRzIG9yIHN0cmluZ3MiCiAgKGxldCAoKHN0YXJ0LXBvcwogICAg ICAgICAocG9pbnQpKQogICAgICAgIChmdWxsLXJlZ2V4cAogICAgICAgICAoY29uY2F0CiAgICAg ICAgICAiXFwoXjwnXFwpXFx8XFwoXCJcXClcXHxcXChcXCovXFwpXFx8XFwoIgogICAgICAgICAg UkVHRVhQCiAgICAgICAgICAiXFwpIikpCiAgICAgICAgKQoKICAgICh1bmxlc3Mgd2l0aGluLWNv ZGUtcmVnaW9uCiAgICAgIChzcGVjbWFuLXNraXAtYmFja3dhcmQtY29tbWVudC1vci1zdHJpbmcp KQogICAgCiAgICAoc3RvcmUtbWF0Y2gtZGF0YSAnKG5pbCBuaWwpKQogICAgKHdoaWxlIChhbmQg KGlmIEJPVU5ECiAgICAgICAgICAgICAgICAgICAgKD49IChwb2ludCkgQk9VTkQpCiAgICAgICAg ICAgICAgICAgIHQpCiAgICAgICAgICAgICAgICAocmUtc2VhcmNoLWJhY2t3YXJkIGZ1bGwtcmVn ZXhwIEJPVU5EIE5PRVJST1IpCiAgICAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICAg ICg7OyBleC1jb2RlIHJlZ2lvbgogICAgICAgICAgICAgICAgICAobWF0Y2gtYmVnaW5uaW5nIDEp CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAg ICAgICAgICAocmUtc2VhcmNoLWJhY2t3YXJkICJeJz4iIEJPVU5EICdtb3ZlKQogICAgICAgICAg ICAgICAgICAgIHQpCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAoOzsgc3Ry aW5nCiAgICAgICAgICAgICAgICAgIChtYXRjaC1iZWdpbm5pbmcgMikKICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgIDs7IE5PVEU6 IHRoaXMgYXBwcm9hY2ggaXMgbW9yZSBlbGVnYW50LCBidXQgc2xvd2VyIHRoYW4gdGhlIGNvZGUg YmVsb3cKICAgICAgICAgICAgICAgICAgICA7OyhpZiAoc3BlY21hbi13aXRoaW4tc3RyaW5nLXAp CiAgICAgICAgICAgICAgICAgICAgOzsgICAgKHJlLXNlYXJjaC1iYWNrd2FyZCAiW15cXF1cIiIg Qk9VTkQgJ21vdmUpCiAgICAgICAgICAgICAgICAgICAgOzsgIChyZS1zZWFyY2gtYmFja3dhcmQg Ii8vXFx8LS0iIChzcGVjbWFuLWJlZy1vZi1saW5lLXBvcykgJ21vdmUpKQogICAgICAgICAgICAg ICAgICAgICh3aGVuIChzYXZlLW1hdGNoLWRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICAg KGJhY2stdG8taW5kZW50YXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZS1zZWFy Y2gtZm9yd2FyZCAiXFwoLy9cXHwtLVxcKVxcfFxcKFteXFxdXCJcXCkiIChtYXRjaC1iZWdpbm5p bmcgMikgJ21vdmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAobWF0Y2gtYmVnaW5u aW5nIDEpICA7OyBhIGNvbW1lbnQgYW5kIG5vdCBhIHN0cmluZwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3Rv LWNoYXIgKG1hdGNoLWJlZ2lubmluZyAxKSkgOzsgZ28gdG8gdGhlIGNvbW1lbnQgYmVnaW5uaW5n CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbCkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOzsgYW5kIGZhaWwsIHN0YXlpbmcgdGhlcmUKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0KSkKICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lu bmluZyAyKSkgICAgICAgICAgICA7OyByZXR1cm4gdG8gdGhlIHN0cmluZwogICAgICAgICAgICAg ICAgICAgICAgKHdoZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGFu ZCBmaW5kIHRoZSBzdHJpbmcgb3BlbmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlLXNl YXJjaC1iYWNrd2FyZCAiXFwoPzpbXlxcXVxcfFtcXF1bXFxdXFwpXFwoXCJcXCkiIEJPVU5EICdt b3ZlKQogICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcg MSkpKSkKICAgICAgICAgICAgICAgICAgICB0KQogICAgICAgICAgICAgICAgICApCiAgICAgICAg ICAgICAgICAgKDs7IGMgbXVsdGktbGluZSBjb21tZW50CiAgICAgICAgICAgICAgICAgIChtYXRj aC1iZWdpbm5pbmcgMykKCiAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAg ICAgIChyZS1zZWFyY2gtYmFja3dhcmQgIi9cXCoiIEJPVU5EICdtb3ZlKQogICAgICAgICAgICAg ICAgICAgIHQpCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAoOzsgdGhlIHJl Z2V4cAogICAgICAgICAgICAgICAgICAobWF0Y2gtYmVnaW5uaW5nIDQpCgogICAgICAgICAgICAg ICAgICAobGV0ICgoZmFpbGVkLW1hdGNoIG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgKQog ICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyA0KSkKICAgICAg ICAgICAgICAgICAgICAobG9va2luZy1hdCBSRUdFWFApICA7OyB0byByZXNldCBtYXRjaC1kYXRh CiAgICAgICAgICAgICAgICAgICAgKHNhdmUtbWF0Y2gtZGF0YQogICAgICAgICAgICAgICAgICAg ICAgOzsgaWYgYSBjb21tZW50IGlzIG5vdCBmb3VuZCB0aGVuIHBvaW50IGlzIGxlZnQgb24gdGhl CiAgICAgICAgICAgICAgICAgICAgICA7OyBiZWdpbm5pbmcgb2YgdGhlIGxpbmUgYnV0IHRoZSBn b3RvLWNoYXIgYmVsb3cgZml4ZXMgdGhpcy4KICAgICAgICAgICAgICAgICAgICAgIDs7IG5vdGU6 IHRoZSB3aGlsZSBjaGVja3MgdGhhdCB0aGUgY29tbWVudCBwcmVmaXggaXMgbm90IGluIGEgc3Ry aW5nCiAgICAgICAgICAgICAgICAgICAgICAod2hpbGUgKGFuZCAocmUtc2VhcmNoLWJhY2t3YXJk ICIvL1xcfC0tIiAoc3BlY21hbi1iZWctb2YtbGluZS1wb3MpICdtb3ZlKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGlmIChzcGVjbWFuLXdpdGhpbi1zdHJpbmctcCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChzZXRxIGZhaWxlZC1tYXRjaCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5pbCkpKSkpCiAgICAgICAgICAgICAgICAgICAgZmFpbGVkLW1hdGNoCiAgICAgICAgICAg ICAgICAgICAgKQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgKQogICAgICAg ICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgIChzdG9yZS1tYXRjaC1kYXRhICcobmls IG5pbCkpCiAgICAgICAgICAgICAgICAgIChpZiBCT1VORAogICAgICAgICAgICAgICAgICAgICAg KD4gKHBvaW50KSBCT1VORCkKICAgICAgICAgICAgICAgICAgICB0KSkKICAgICAgICAgICAgICAg ICkpCiAgICAoZ290by1jaGFyIChpZiAobWF0Y2gtYmVnaW5uaW5nIDApCiAgICAgICAgICAgICAg ICAgICAobWF0Y2gtYmVnaW5uaW5nIDApCiAgICAgICAgICAgICAgICAgc3RhcnQtcG9zKSkKICAg IChtYXRjaC1iZWdpbm5pbmcgMCkpKQoKKGRlZnN1YnN0IHNwZWNtYW4tYmVnLW9mLWxpbmUtcG9z ICgpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAocG9pbnQp KSkKCihkZWZzdWJzdCBzcGVjbWFuLWVuZC1vZi1saW5lLXBvcyAoKQogIChzYXZlLWV4Y3Vyc2lv bgogICAgKGVuZC1vZi1saW5lKQogICAgKHBvaW50KSkpCgooZGVmc3Vic3Qgc3BlY21hbi13aXRo aW4tY29tbWVudC1wICgpCiAgKG9yIChzcGVjbWFuLXdpdGhpbi1saW5lLWNvbW1lbnQtcCkKICAg ICAgKHNwZWNtYW4td2l0aGluLXJlZ2lvbi1jb21tZW50LXApKQogICkKCihkZWZzdWJzdCBzcGVj bWFuLWVtcHR5LWxpbmUtcCAoKQogIChsb29raW5nLWF0ICJeWyBcdF0qJCIpKQoKKGRlZnVuIHNw ZWNtYW4td2l0aGluLXN0cmluZy1wICgpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAobnRoIDMgKHBh cnNlLXBhcnRpYWwtc2V4cCAocG9pbnQtbWluKSAocG9pbnQpKSkpKQoKKGRlZnN1YnN0IHNwZWNt YW4tbGluZS13aXRoaW4tc3RyaW5nLXAgKCkKICAoc2F2ZS1leGN1cnNpb24KICAgIChiZWdpbm5p bmctb2YtbGluZSkKICAgIChzcGVjbWFuLXdpdGhpbi1zdHJpbmctcCkpKQoKKGRlZnN1YnN0IHNw ZWNtYW4tcHJlcGFyZWQtYnVmZmVyLXN1YnN0cmluZyAoYmVnIGVuZCkKICAiUmVtb3ZlIGV4dHJh IHNwYWNlcyBhbmQgbmV3LWxpbmVzIGZyb20gc3RyaW5ncy4iCiAgKHNhdmUtbWF0Y2gtZGF0YQog ICAgKGlmIChlcSBlbWFjcy1raW5kICdlbWFjcykKICAgICAgICAocmVwbGFjZS1yZWdleHAtaW4t c3RyaW5nICJbIFx0XG5dKyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAi CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXBsYWNlLXJlZ2V4cC1pbi1z dHJpbmcgIl5bIFx0XG5dK1xcfFsgXHRcbl0rJCIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItc3Vic3Ry aW5nIGJlZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkpKQogICAgICAocmVwbGFjZS1pbi1z dHJpbmcgKHJlcGxhY2UtaW4tc3RyaW5nIChidWZmZXItc3Vic3RyaW5nIGJlZwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXlsgXHRcbl0rXFx8 WyBcdFxuXSskIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIi KQogICAgICAgICAgICAgICAgICAgICAgICAgIlsgXHRcbl0rIgogICAgICAgICAgICAgICAgICAg ICAgICAgIiAiKSkpKQoKCjs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KOzsgU1BFQ01BTiBTQ09QRSBRVUVSSUVTCjs7ID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCihkZWZ2YXIgZ2xvYmFsLXNjb3BlLWlu ZGV4IG5pbAogICJVc2VkIGFzIGEgZ2xvYmFsIHJlZmVyZW5jZSBmb3IgY2FjaGVkIHJlZnMgdG8g c2NvcGVzIGZvciBwZXJmb3JtYW5jZS4KSW5pdGlhbGl6ZWQgZm9yIHBlcmZvcm1hY2UgaW50ZW5z aXZlIG9wZXJhdGlvbnMgd2l0aG91dCB1c2VyIGludGVyYWN0aW9uCihlLmcuIHJlZ2lvbiBpbmRl bnRhdGlvbikgYW5kIG11c3QgYmUgY2xlYXJlZCBhZnRlcndhcmRzLiIpCihtYWtlLXZhcmlhYmxl LWJ1ZmZlci1sb2NhbCAnZ2xvYmFsLXNjb3BlLWluZGV4KQoKKGRlZnN0cnVjdCBzY29wZS1kZXNj cmlwdG9yIHBhcmVuIG1hdGNoIHBhcmVudCBwYXJlbi1wYXJlbnQpCgooZGVmdW4gc3BlY21hbi1j cmVhdGUtc2NvcGUtaW5kZXggKCkKICAiQ3JlYXRlIGEgbGlzdCBvZiBzY29wZSBkZXNjcmlwdG9y cywgZWFjaCBvZiB3aGljaCBpcyBhIGxpc3Qgb2YgMyBtZW1iZXJzOgpzY29wZSwgbWF0Y2hpbmct c2NvcGUgYW5kIHBhcmVudC1zY29wZS1vcGVuZXIiCgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKHNh dmUtbWF0Y2gtZGF0YQogICAgICAobGV0ICgoc2NvcGUtaW5kZXgKICAgICAgICAgICAgIG5pbAog ICAgICAgICAgICAgKQogICAgICAgICAgICAoc2NvcGUtc3RhY2sKICAgICAgICAgICAgIG5pbAog ICAgICAgICAgICAgKQogICAgICAgICAgICAocGFyZW4tc3RhY2sKICAgICAgICAgICAgIG5pbAog ICAgICAgICAgICAgKQogICAgICAgICAgICAoYnVmZmVyLWVuZAogICAgICAgICAgICAgKHBvaW50 LW1heCkKICAgICAgICAgICAgICkKICAgICAgICAgICAgKHRvcC1zY29wZS1vcGVuZXIKICAgICAg ICAgICAgIChwb2ludC1taW4tbWFya2VyKQogICAgICAgICAgICAgKQogICAgICAgICAgICAoZW5k LXNjb3BlLWNsb3NlcgogICAgICAgICAgICAgKHBvaW50LW1heC1tYXJrZXIpCiAgICAgICAgICAg ICApCiAgICAgICAgICAgIChzZWFyY2gtcmVnZXhwCiAgICAgICAgICAgICAoY29uY2F0ICAgICAg ICAgICAgICAgICAgICAgICJcXCgiCiAgICAgICAgICAgICAgICAgICAgICJ7XFx8KCIgICAgICAg ICAgICAgICJcXClcXHxcXCgiCiAgICAgICAgICAgICAgICAgICAgICJ9XFx8KSIgICAgICAgICAg ICAgICJcXClcXHxcXCgiCiAgICAgICAgICAgICAgICAgICAgICIvL1xcfC0tIiAgICAgICAgICAg ICJcXClcXHxcXCgiCiAgICAgICAgICAgICAgICAgICAgICJeJz4iICAgICAgICAgICAgICAgICJc XClcXHxcXCgiCiAgICAgICAgICAgICAgICAgICAgICJcIiIgICAgICAgICAgICAgICAgICJcXClc XHxcXCgiCiAgICAgICAgICAgICAgICAgICAgICIvXFwqIiAgICAgICAgICAgICAgICJcXCkiKQog ICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgCiAgICAgIChnb3RvLWNoYXIgKHBv aW50LW1pbikpCgogICAgICA7OyBmb3IgY29tcGxldGVuZXNzIC0gaGF2ZSBhIHRvcCBwc2V1ZG8t c2NvcGUgZm9yIHRoZSB3aG9sZSBmaWxlCiAgICAgIChzZXQtbWFya2VyLWluc2VydGlvbi10eXBl IHRvcC1zY29wZS1vcGVuZXIgdCkKICAgICAgKHNldC1tYXJrZXItaW5zZXJ0aW9uLXR5cGUgZW5k LXNjb3BlLWNsb3NlciB0KQogICAgICAocHVzaCAoY29ucyB0b3Atc2NvcGUtb3BlbmVyCiAgICAg ICAgICAgICAgICAgIChtYWtlLXNjb3BlLWRlc2NyaXB0b3IKICAgICAgICAgICAgICAgICAgIDpw YXJlbiAgdG9wLXNjb3BlLW9wZW5lcgogICAgICAgICAgICAgICAgICAgOm1hdGNoICBlbmQtc2Nv cGUtY2xvc2VyCiAgICAgICAgICAgICAgICAgICA6cGFyZW50IHRvcC1zY29wZS1vcGVuZXIKICAg ICAgICAgICAgICAgICAgIDpwYXJlbi1wYXJlbnQgbmlsKSkKICAgICAgICAgICAgc2NvcGUtaW5k ZXgpCiAgICAgIAogICAgICAod2hlbiAocmUtc2VhcmNoLWZvcndhcmQgIl48JyIgYnVmZmVyLWVu ZCBuaWwpCiAgICAgICAgKHdoaWxlIChhbmQgKDwgKHBvaW50KSBidWZmZXItZW5kKQogICAgICAg ICAgICAgICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCBzZWFyY2gtcmVnZXhwIGJ1ZmZlci1lbmQg J21vdmUpKQogICAgICAgICAgCiAgICAgICAgICAoY29uZAogICAgICAgICAgIDs7IG5ldyBzY29w ZQogICAgICAgICAgICgobWF0Y2gtYmVnaW5uaW5nIDEpCgogICAgICAgICAgICAoc2F2ZS1leGN1 cnNpb24KICAgICAgICAgICAgICAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMSkpCiAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgKGxldCogKChwb2ludC1tYXJrZXIKICAgICAgICAgICAg ICAgICAgICAgIChwb2ludC1tYXJrZXIpCiAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAg ICAgICAgICAgICAgIChpcy1zY29wZQogICAgICAgICAgICAgICAgICAgICAgKGxvb2tpbmctYXQg InsiKQogICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAocGFyZW50 CiAgICAgICAgICAgICAgICAgICAgICAoaWYgc2NvcGUtc3RhY2sKICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2NvcGUtZGVzY3JpcHRvci1wYXJlbiAoY2FyIHNjb3BlLXN0YWNrKSkKICAgICAg ICAgICAgICAgICAgICAgICAgdG9wLXNjb3BlLW9wZW5lcikKICAgICAgICAgICAgICAgICAgICAg ICkKICAgICAgICAgICAgICAgICAgICAgKHBhcmVuLXBhcmVudAogICAgICAgICAgICAgICAgICAg ICAgKGlmIHBhcmVuLXN0YWNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjb3BlLWRlc2Ny aXB0b3ItcGFyZW4gKGNhciBwYXJlbi1zdGFjaykpCiAgICAgICAgICAgICAgICAgICAgICAgIG5p bCkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgKHBvaW50LWRl c2NyaXB0b3IKICAgICAgICAgICAgICAgICAgICAgIChtYWtlLXNjb3BlLWRlc2NyaXB0b3IKICAg ICAgICAgICAgICAgICAgICAgICA6cGFyZW4gIHBvaW50LW1hcmtlcgogICAgICAgICAgICAgICAg ICAgICAgIDptYXRjaCAgZW5kLXNjb3BlLWNsb3NlciA7OyBwbGFjZSBob2xkZXIgdW50aWwgdGhl IGNsb3NlciBpcyBmb3VuZAogICAgICAgICAgICAgICAgICAgICAgIDpwYXJlbnQgcGFyZW50CiAg ICAgICAgICAgICAgICAgICAgICAgOnBhcmVuLXBhcmVudCBwYXJlbi1wYXJlbnQpCiAgICAgICAg ICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIChz ZXQtbWFya2VyLWluc2VydGlvbi10eXBlIHBvaW50LW1hcmtlciB0KQogICAgICAgICAgICAKICAg ICAgICAgICAgICAgIChwdXNoIChjb25zIHBvaW50LW1hcmtlcgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgcG9pbnQtZGVzY3JpcHRvcikKICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLWlu ZGV4KQogICAgICAgICAgICAgICAgKGlmIGlzLXNjb3BlCiAgICAgICAgICAgICAgICAgICAgKHB1 c2ggcG9pbnQtZGVzY3JpcHRvciBzY29wZS1zdGFjaykKICAgICAgICAgICAgICAgICAgKHB1c2gg cG9pbnQtZGVzY3JpcHRvciBwYXJlbi1zdGFjaykpKSkKICAgICAgICAgICAgKQogICAgICAgICAg IDs7IGNsb3NlIHNjb3BlCiAgICAgICAgICAgKChtYXRjaC1iZWdpbm5pbmcgMikKCiAgICAgICAg ICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lu bmluZyAyKSkKICAgICAgICAgICAgICAKICAgICAgICAgICAgICAobGV0KiAoKHBvaW50LW1hcmtl cgogICAgICAgICAgICAgICAgICAgICAgKHBvaW50LW1hcmtlcikKICAgICAgICAgICAgICAgICAg ICAgICkKICAgICAgICAgICAgICAgICAgICAgKGlzLXNjb3BlCiAgICAgICAgICAgICAgICAgICAg ICAobG9va2luZy1hdCAifSIpCiAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAg ICAgICAgIChoYXMtbWF0Y2gKICAgICAgICAgICAgICAgICAgICAgIChpZiBpcy1zY29wZQogICAg ICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLXN0YWNrCiAgICAgICAgICAgICAgICAgICAgICAg IHBhcmVuLXN0YWNrKQogICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAg ICAobWF0Y2gKICAgICAgICAgICAgICAgICAgICAgICh3aGVuIGhhcy1tYXRjaAogICAgICAgICAg ICAgICAgICAgICAgICAoaWYgaXMtc2NvcGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChw b3Agc2NvcGUtc3RhY2spCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvcCBwYXJlbi1zdGFj aykpKQogICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAocGFyZW50 CiAgICAgICAgICAgICAgICAgICAgICAoaWYgc2NvcGUtc3RhY2sKICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2NvcGUtZGVzY3JpcHRvci1wYXJlbiAoY2FyIHNjb3BlLXN0YWNrKSkKICAgICAg ICAgICAgICAgICAgICAgICAgdG9wLXNjb3BlLW9wZW5lcikKICAgICAgICAgICAgICAgICAgICAg ICkKICAgICAgICAgICAgICAgICAgICAgKHBhcmVuLXBhcmVudAogICAgICAgICAgICAgICAgICAg ICAgKGlmIHBhcmVuLXN0YWNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjb3BlLWRlc2Ny aXB0b3ItcGFyZW4gKGNhciBwYXJlbi1zdGFjaykpCiAgICAgICAgICAgICAgICAgICAgICAgIG5p bCkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgKQogICAgICAg ICAgICAgICAgKHNldC1tYXJrZXItaW5zZXJ0aW9uLXR5cGUgcG9pbnQtbWFya2VyIHQpCiAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgKGlmIGhhcy1tYXRjaAogICAgICAgICAgICAgICAgICAg IChsZXQgKChwb2ludC1kZXNjcmlwdG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtl LXNjb3BlLWRlc2NyaXB0b3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwYXJlbiAgcG9p bnQtbWFya2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF0Y2ggIChzY29wZS1kZXNj cmlwdG9yLXBhcmVuIG1hdGNoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOnBhcmVudCBw YXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwYXJlbi1wYXJlbnQgcGFyZW4tcGFy ZW50KQogICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAg ICAgKQogICAgICAgICAgICAgICAgICAgICAgKHNldGYgKHNjb3BlLWRlc2NyaXB0b3ItbWF0Y2gg bWF0Y2gpIHBvaW50LW1hcmtlcikKICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgKHB1c2ggKGNvbnMgcG9pbnQtbWFya2VyCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwb2ludC1kZXNjcmlwdG9yKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg c2NvcGUtaW5kZXgpCiAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgIDs7 IGN1cnJlbnRseSBubyBlcnJvciBjaGVja2luZyBmb3IgdW5tYXRjaGVkIHNjb3BlcyAtIGhlcmUg Zm9yIGNsb3Npbmcgc2NvcGUKICAgICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAg ICAgICAgKHB1c2ggKGNvbnMgcG9pbnQtbWFya2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG1ha2Utc2NvcGUtZGVzY3JpcHRvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA6cGFyZW4gIHBvaW50LW1hcmtlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA6bWF0Y2ggIHRvcC1zY29wZS1vcGVuZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOnBhcmVudCBwYXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnBhcmVu LXBhcmVudCBwYXJlbi1wYXJlbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLWlu ZGV4KSkKICAgICAgICAgICAgICAgICAgKQoKOzsgVE9ETzogY2xlYXIgYW55IGRhbmdsaW5nIG9w ZW4gcGFyZW5zIHdoaWNoIGFyZW4ndCBjbG9zZWQgd2l0aGluIHRoZQo7OyBzY29wZSBiZWluZyBj bG9zZWQgbm93LiAgbmljZSBpZGVhLCBtYXliZSBzaG91bGQgYmUgZXhwbG9yZWQgbW9yZSwKOzsg YnV0IGRvZXNuJ3Qgd29yayBmb3Igbm93LgogICAgICAgICAgICAgICAgCjs7ICAgICAgICAgICAg ICAgICAod2hlbiBtYXRjaAo7OyAgICAgICAgICAgICAgICAgICAobGV0ICgoY2xvc2UtdG8tcG9p bnQKOzsgICAgICAgICAgICAgICAgICAgICAgICAgIChzY29wZS1kZXNjcmlwdG9yLXBhcmVuIG1h dGNoKQo7OyAgICAgICAgICAgICAgICAgICAgICAgICAgKQo7OyAgICAgICAgICAgICAgICAgICAg ICAgICAoc3RhY2stdG8tY2xlYXIKOzsgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBpcy1z Y29wZQo7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVuLXN0YWNrCjs7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLXN0YWNrKQo7OyAgICAgICAgICAgICAgICAgICAg ICAgICAgKQo7OyAgICAgICAgICAgICAgICAgICAgICAgICAoY29udGludWUKOzsgICAgICAgICAg ICAgICAgICAgICAgICAgIHQKOzsgICAgICAgICAgICAgICAgICAgICAgICAgICkKOzsgICAgICAg ICAgICAgICAgICAgICAgICAgKQo7OyAgICAgICAgICAgICAgICAgICAgICh3aGlsZSAoYW5kIGNv bnRpbnVlCjs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2stdG8tY2xlYXIp Cjs7ICAgICAgICAgICAgICAgICAgICAgICAoaWYgKDwgY2xvc2UtdG8tcG9pbnQKOzsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2NvcGUtZGVzY3JpcHRvci1wYXJlbiAoY2FyIHN0YWNr LXRvLWNsZWFyKSkpCjs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvcCBzdGFjay10by1j bGVhcikKOzsgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgY29udGludWUgbmlsKSkpCjs7 ICAgICAgICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgICkK ICAgICAgICAgICA7OyBjb21tZW50CiAgICAgICAgICAgKChtYXRjaC1iZWdpbm5pbmcgMykKICAg ICAgICAgICAgCiAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgMSkKICAgICAgICAgICAgKQogICAg ICAgICAgIDs7IGVuZCBlLWNvZGUgcmVnaW9uCiAgICAgICAgICAgKChtYXRjaC1iZWdpbm5pbmcg NCkKICAgICAgICAgICAgCiAgICAgICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiXjwnIiBidWZm ZXItZW5kICdtb3ZlKQogICAgICAgICAgICApCiAgICAgICAgICAgOzsgc3RyaW5nCiAgICAgICAg ICAgKChtYXRjaC1iZWdpbm5pbmcgNSkKCiAgICAgICAgICAgIDs7IHRvIGFsc28gY29uc2lkZXIg dGhlIG5leHQgY2hhcmFjdGVyLCBmb3IgIiIKICAgICAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gt YmVnaW5uaW5nIDApKQogICAgICAgICAgICAKICAgICAgICAgICAgKHJlLXNlYXJjaC1mb3J3YXJk ICJcXCg/OlteXFxdXFx8W1xcXVtcXF1cXClcIiIgYnVmZmVyLWVuZCAnbW92ZSkKICAgICAgICAg ICAgKQogICAgICAgICAgIDs7IGMgbXVsdGktbGluZSBjb21tZW50CiAgICAgICAgICAgKChtYXRj aC1iZWdpbm5pbmcgNikKCiAgICAgICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiXFwqLyIgYnVm ZmVyLWVuZCAnbW92ZSkKICAgICAgICAgICAgKQogICAgICAgICAgICkKICAgICAgICAgICkKICAg ICAgICA7OyBjdXJyZW50bHkgbm8gZXJyb3IgY2hlY2tpbmcgZm9yIHVubWF0Y2hlZCBzY29wZXMg LSBoZXJlIGZvciBvcGVuaW5nIHNjb3BlCiAgICAgICAgKQoKICAgICAgOzsgZm9yIGFlc3RoZXRp YyByZWFzb25zIC0gdGhlIGxpc3QgaXMgYXJyYW5nZWQgYXMgYSBzdGFjaywgc28gaXQgaXMgYmFj a3dhcmQKICAgICAgKHJldmVyc2Ugc2NvcGUtaW5kZXgpCiAgICAgICkpKSkKCihkZWZ1biBzcGVj bWFuLWNsZWFyLXNjb3BlLWRlc2NyaXB0b3ItYW5kLWtleSAoa2V5IHZhbHVlKQogICJDbGVhciBh IHNjb3BlIGluZGV4IGVudHJ5LiAgSW50ZW5kZWQgZm9yIHVzZSB3aXRoIG1hcGhhc2guIgogICAg KGxldCAoKG9wZW5lcgogICAgICAgICAgIChzY29wZS1kZXNjcmlwdG9yLXBhcmVuIHZhbHVlKSkK ICAgICAgICAgIChjbG9zZXIKICAgICAgICAgICAoc2NvcGUtZGVzY3JpcHRvci1tYXRjaCB2YWx1 ZSkpCiAgICAgICAgICAocGFyZW50CiAgICAgICAgICAgKHNjb3BlLWRlc2NyaXB0b3ItcGFyZW50 IHZhbHVlKSkKICAgICAgICAgICkKICAgICAgOzsgc29tZSBzY29wZSBtYXJrZXJzIGNhbiBiZSBu aWwKICAgICAgKHdoZW4ga2V5CiAgICAgICAgKHNldC1tYXJrZXIga2V5IG5pbCkpCiAgICAgICh3 aGVuIG9wZW5lcgogICAgICAgIChzZXQtbWFya2VyIG9wZW5lciBuaWwpKQogICAgICAod2hlbiBj bG9zZXIKICAgICAgICAoc2V0LW1hcmtlciBjbG9zZXIgbmlsKSkKICAgICAgKHdoZW4gcGFyZW50 CiAgICAgICAgKHNldC1tYXJrZXIgcGFyZW50IG5pbCkpKSkKICAKCihkZWZ1biBzcGVjbWFuLWNs ZWFyLXNjb3BlLWluZGV4IChzY29wZS1pbmRleCkKICAiQ2xlYXIgYSBzY29wZSBpbmRleCBieSBz ZXR0aW5nIGFsbCBtYXJrZXJzIHRvIG5pbCwgc28gdGhleSBubyBsb25nZXIKaGF2ZSBhbiB1cGRh dGluZyBjb3N0IGFuZCB0aGUgaW5kZXggaXRzZWxmIHRvIG5pbC4iCiAgKHdoaWxlIHNjb3BlLWlu ZGV4CiAgICAoc3BlY21hbi1jbGVhci1zY29wZS1kZXNjcmlwdG9yLWFuZC1rZXkgKGNhYXIgc2Nv cGUtaW5kZXgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNk YXIgc2NvcGUtaW5kZXgpKQogICAgKHNldHEgc2NvcGUtaW5kZXgKICAgICAgICAgIChjZHIgc2Nv cGUtaW5kZXgpKSkpCgooZGVmdW4gc3BlY21hbi1mb3JtYXQtc2NvcGUtZGVzY3JpcHRvci1hbmQt a2V5IChrZXkgdmFsdWUpCiAgImZvcm1hdCBhIHNjb3BlIGluZGV4IGVudHJ5LiAgSW50ZW5kZWQg Zm9yIHVzZSB3aXRoIG1hcGhhc2guIgogIChmb3JtYXQgIiVkID0+IDwlZCAlZD4gJWReXG4iCiAg ICAgICAgICAobWFya2VyLXBvc2l0aW9uIGtleSkKICAgICAgICAgIChtYXJrZXItcG9zaXRpb24g KHNjb3BlLWRlc2NyaXB0b3ItcGFyZW4gdmFsdWUpKQogICAgICAgICAgKG1hcmtlci1wb3NpdGlv biAoc2NvcGUtZGVzY3JpcHRvci1tYXRjaCB2YWx1ZSkpCiAgICAgICAgICAobWFya2VyLXBvc2l0 aW9uIChzY29wZS1kZXNjcmlwdG9yLXBhcmVudCB2YWx1ZSkpKSkKCihkZWZ1biBzcGVjbWFuLXBy aW50LXNjb3BlLWluZGV4IChzY29wZS1pbmRleCkKICAiUHJpbnQgYSBzY29wZSBpbmRleC4iCiAg KGlmIHNjb3BlLWluZGV4CiAgICAgICh3aGlsZSBzY29wZS1pbmRleAogICAgICAgIChzcGVjbWFu LWZvcm1hdC1zY29wZS1kZXNjcmlwdG9yLWFuZC1rZXkgKGNhYXIgc2NvcGUtaW5kZXgpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RhciBzY29wZS1p bmRleCkpCiAgICAgICAgKHNldHEgc2NvcGUtaW5kZXgKICAgICAgICAgICAgICAoY2RyIHNjb3Bl LWluZGV4KSkpCiAgICAobWVzc2FnZSAiVHJ5aW5nIHRvIHByaW50IGFuIGVtcHR5IHNjb3BlLWlu ZGV4LiIpKSkKCihkZWZ1biBzcGVjbWFuLXNjb3BlLWluZGV4LXVwLWxpc3QgKHNjb3BlLWluZGV4 ICZvcHRpb25hbCB3aXRoaW4tY29kZS1yZWdpb24pCiAgKGxldCAoKHJlc3VsdAogICAgICAgICBu aWwpCiAgICAgICAgKQogICAgKHdoZW4gKHNwZWNtYW4tcmUtc2VhcmNoLWJhY2t3YXJkICJcXCgo XFwpXFx8XFwoKVxcfHtcXHx9XFwpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5pbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4tY29kZS1yZWdpb24pCiAgICAgIDs7 IGF0IG1hdGNoLWJlZ2lubmluZyAxIHdlJ3JlIGRvbmUsIG90aGVyd2lzZToKICAgICAgKGlmICht YXRjaC1iZWdpbm5pbmcgMikKICAgICAgICAgIChsZXQqICgocG9pbnQtbWFya2VyCiAgICAgICAg ICAgICAgICAgIChwb2ludC1tYXJrZXIpKQogICAgICAgICAgICAgICAgIChzY29wZS1kZXNjcmlw dG9yCiAgICAgICAgICAgICAgICAgIChhc3NvYyBwb2ludC1tYXJrZXIKICAgICAgICAgICAgICAg ICAgICAgICAgIHNjb3BlLWluZGV4KSkKICAgICAgICAgICAgICAgICAocGFyZW50LW9wZW5lcgog ICAgICAgICAgICAgICAgICAod2hlbiBzY29wZS1kZXNjcmlwdG9yCiAgICAgICAgICAgICAgICAg ICAgKHNjb3BlLWRlc2NyaXB0b3ItcGFyZW4tcGFyZW50IChjZHIgc2NvcGUtZGVzY3JpcHRvcikp KSkKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIChzZXQtbWFya2VyIHBvaW50LW1hcmtl ciBuaWwpCiAgICAgICAgICAgICh3aGVuIHBhcmVudC1vcGVuZXIKICAgICAgICAgICAgICAoc2V0 cSByZXN1bHQgKG1hcmtlci1wb3NpdGlvbiBwYXJlbnQtb3BlbmVyKSkpKQogICAgICAgIChzZXRx IHJlc3VsdCAocG9pbnQpKQogICAgICAgICkpCiAgICAod2hlbiByZXN1bHQKICAgICAgKGdvdG8t Y2hhciByZXN1bHQpKQogICAgcmVzdWx0KSkKCihkZWZ1biBzcGVjbWFuLXNjb3BlLWluZGV4LXVw LXNjb3BlIChzY29wZS1pbmRleCAmb3B0aW9uYWwgd2l0aGluLWNvZGUtcmVnaW9uKQogIChpZiAo c3BlY21hbi1yZS1zZWFyY2gtYmFja3dhcmQgIlxcKHtcXClcXHxcXCh9XFx8KFxcfClcXCkiCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpbi1j b2RlLXJlZ2lvbikKICAgICAgOzsgYXQgbWF0Y2gtYmVnaW5uaW5nIDEgd2UncmUgZG9uZSwgb3Ro ZXJ3aXNlOgogICAgICAod2hlbiAobWF0Y2gtYmVnaW5uaW5nIDIpCiAgICAgICAgKGxldCogKChw b2ludC1tYXJrZXIKICAgICAgICAgICAgICAgIChwb2ludC1tYXJrZXIpKQogICAgICAgICAgICAg ICAoc2NvcGUtZGVzY3JpcHRvcgogICAgICAgICAgICAgICAgKGFzc29jIHBvaW50LW1hcmtlcgog ICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLWluZGV4KSkKICAgICAgICAgICAgICAgKHBhcmVu dC1vcGVuZXIKICAgICAgICAgICAgICAgICh3aGVuIHNjb3BlLWRlc2NyaXB0b3IKICAgICAgICAg ICAgICAgICAgKHNjb3BlLWRlc2NyaXB0b3ItcGFyZW50IChjZHIgc2NvcGUtZGVzY3JpcHRvcikp KSkKICAgICAgICAgICAgICAgKQogICAgICAgICAgKHVubGVzcyBwYXJlbnQtb3BlbmVyCiAgICAg ICAgICAgIChlcnJvciAocHJpbnQgKGZvcm1hdCAic2NvcGUgLSAlZCAlZCIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChpZiBwYXJlbnQtb3BlbmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG1hcmtlci1wb3NpdGlvbiBwYXJlbnQtb3BlbmVyKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtMSkpKSkpCiAgICAgICAgOzsoYXNzZXJ0IHBhcmVudC1vcGVuZXIp CiAgICAgICAgKGdvdG8tY2hhciBwYXJlbnQtb3BlbmVyKQogICAgICAgIChzZXQtbWFya2VyIHBv aW50LW1hcmtlciBuaWwpKSkKICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpKQogIChwb2ludCkp CgooZGVmdW4gc3BlY21hbi1zY29wZS1pbmRleC1kb3duLXNjb3BlIChzY29wZS1pbmRleCAmb3B0 aW9uYWwgd2l0aGluLWNvZGUtcmVnaW9uKQogIChpZiAoc3BlY21hbi1yZS1zZWFyY2gtZm9yd2Fy ZCAiXFwoe1xcfChcXHwpXFwpXFx8XFwofVxcKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHBvaW50LW1heCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4tY29kZS1yZWdpb24pCiAgICAgIChw cm9nbgogICAgICAgIChiYWNrd2FyZC1jaGFyKSAgOzsgdG8gYmUgZXhhY3RseSBvbiB0aGUgcGFy ZW4KICAgICAgICA7OyBhdCBtYXRjaC1iZWdpbm5pbmcgMiB3ZSdyZSBkb25lLCBvdGhlcndpc2U6 CiAgICAgICAgKHdoZW4gKG1hdGNoLWJlZ2lubmluZyAxKQogICAgICAgICAgKGxldCogKChwb2lu dC1tYXJrZXIKICAgICAgICAgICAgICAgICAgKHBvaW50LW1hcmtlcikpCiAgICAgICAgICAgICAg ICAgKHNjb3BlLWRlc2NyaXB0b3IKICAgICAgICAgICAgICAgICAgbmlsKQogICAgICAgICAgICAg ICAgIChwYXJlbnQtb3BlbmVyCiAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAg ICAgICAgIChzZXRxIHNjb3BlLWRlc2NyaXB0b3IKICAgICAgICAgICAgICAgICAgICAgICAgICAo YXNzb2MgcG9pbnQtbWFya2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3Bl LWluZGV4KSkKICAgICAgICAgICAgICAgICAgICAod2hlbiBzY29wZS1kZXNjcmlwdG9yCiAgICAg ICAgICAgICAgICAgICAgICAgIChzY29wZS1kZXNjcmlwdG9yLXBhcmVudCAoY2RyIHNjb3BlLWRl c2NyaXB0b3IpKSkpKQogICAgICAgICAgICAgICAgIChwYXJlbnQtY2xvc2VyCiAgICAgICAgICAg ICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgICh3aGVuIHBhcmVudC1vcGVuZXIKICAg ICAgICAgICAgICAgICAgICAgIChzZXRxIHNjb3BlLWRlc2NyaXB0b3IKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChhc3NvYyBwYXJlbnQtb3BlbmVyCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2NvcGUtaW5kZXgpKQogICAgICAgICAgICAgICAgICAgICAgKHdoZW4gc2Nv cGUtZGVzY3JpcHRvcgogICAgICAgICAgICAgICAgICAgICAgICAoc2NvcGUtZGVzY3JpcHRvci1t YXRjaCAoY2RyIHNjb3BlLWRlc2NyaXB0b3IpKSkpKSkKICAgICAgICAgICAgICAgICApCiAgICAg ICAgICAgIChnb3RvLWNoYXIgKGlmIHBhcmVudC1jbG9zZXIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFyZW50LWNsb3NlcgogICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50LW1heCkp KQogICAgICAgICAgICAoc2V0LW1hcmtlciBwb2ludC1tYXJrZXIgbmlsKSkpKQogICAgKGdvdG8t Y2hhciAocG9pbnQtbWF4KSkpCiAgKHBvaW50KSkKCjs7IGZpbmQgdGhlIHRvcCBjb250YWluaW5n IHNjb3BlIC0gZm9yIHNwZWNtYW4tYmVnLW9mLWRlZnVuCjs7IHRoZSBwcm9ibGVtIGlzIHRoYXQg aXQgaGFzIHdvcnNlIHBlcmZvcm1hbmNlIHRoYW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24u Cjs7IHRoaXMgY2FuIGJlIHNvbHZlZCBieSBoYXZpbmcgdGhlIHNjb3BlIGluZGV4IHJlZmVyIHRv IHNjb3BlLWRlc2NyaXB0b3JzCjs7IGluc3RlYWQgb2YgbWFya2VycywgYXMgaXQgZG9lcyBub3cu ICB0aGlzIHdpbGwgYWxsb3cgZmFzdCB0cmF2ZXJzYWwgb2YgdGhlCjs7IHNjb3BlIGluZGV4Lgo7 OyBUT0RPOiBvbmUgZGF5Li4uCjs7Cjs7IChkZWZ1biBzcGVjbWFuLXNjb3BlLWluZGV4LXRvcC1z Y29wZSAoc2NvcGUtaW5kZXggJm9wdGlvbmFsIHdpdGhpbi1jb2RlLXJlZ2lvbikKOzsgICAiRmlu ZCB0aGUgdG9wbW9zdCBzY29wZSBwb2ludCBpcyBjb250YWluZWQgaW4uIgo7OyAgIChpZiAoc3Bl Y21hbi1yZS1zZWFyY2gtYmFja3dhcmQgIlxcKHtcXClcXHxcXCh9XFx8KFxcfClcXCkiCjs7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKOzsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHQKOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp dGhpbi1jb2RlLXJlZ2lvbikKCjs7ICAgICAgIChsZXQgKChjb250aW51ZQo7OyAgICAgICAgICAg ICAgdCkKOzsgICAgICAgICAgICAgKG9wZW5lci1wb3NpdGlvbgo7OyAgICAgICAgICAgICAgKG1h dGNoLWJlZ2lubmluZyAxKSkKOzsgICAgICAgICAgICAgKHRvcC1zY29wZQo7OyAgICAgICAgICAg ICAgKHBvaW50LW1pbikpCjs7ICAgICAgICAgICAgICkKOzsgICAgICAgICAod2hpbGUgY29udGlu dWUKOzsgICAgICAgICAgIChsZXQqICgocG9pbnQtbWFya2VyCjs7ICAgICAgICAgICAgICAgICAg IChwb2ludC1tYXJrZXIpKQo7OyAgICAgICAgICAgICAgICAgIChzY29wZS1kZXNjcmlwdG9yCjs7 ICAgICAgICAgICAgICAgICAgIChhc3NvYyBwb2ludC1tYXJrZXIKOzsgICAgICAgICAgICAgICAg ICAgICAgICAgIHNjb3BlLWluZGV4KSkKOzsgICAgICAgICAgICAgICAgICAoY3VycmVudC1vcGVu ZXIKOzsgICAgICAgICAgICAgICAgICAgKHdoZW4gc2NvcGUtZGVzY3JpcHRvcgo7OyAgICAgICAg ICAgICAgICAgICAgIChpZiBvcGVuZXItcG9zaXRpb24KOzsgICAgICAgICAgICAgICAgICAgICAg ICAgKHNjb3BlLWRlc2NyaXB0b3ItcGFyZW4gKGNkciBzY29wZS1kZXNjcmlwdG9yKSkKOzsgICAg ICAgICAgICAgICAgICAgICAgIChzY29wZS1kZXNjcmlwdG9yLXBhcmVudCAoY2RyIHNjb3BlLWRl c2NyaXB0b3IpKSkpKQo7OyAgICAgICAgICAgICAgICAgIChwYXJlbnQtZGVzY3JpcHRvcgo7OyAg ICAgICAgICAgICAgICAgICAod2hlbiBjdXJyZW50LW9wZW5lcgo7OyAgICAgICAgICAgICAgICAg ICAgIChhc3NvYyBjdXJyZW50LW9wZW5lcgo7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz Y29wZS1pbmRleCkpKQo7OyAgICAgICAgICAgICAgICAgIChwYXJlbnQtb3BlbmVyCjs7ICAgICAg ICAgICAgICAgICAgICh3aGVuIHBhcmVudC1kZXNjcmlwdG9yCjs7ICAgICAgICAgICAgICAgICAg ICAgKHNjb3BlLWRlc2NyaXB0b3ItcGFyZW50IChjZHIgcGFyZW50LWRlc2NyaXB0b3IpKSkpCjs7 ICAgICAgICAgICAgICAgICAgKQoKOzsgICAgICAgICAgICAgKHNldHEgb3BlbmVyLXBvc2l0aW9u IHQpCjs7ICAgICAgICAgICAgIChzZXQtbWFya2VyIHBvaW50LW1hcmtlciBuaWwpCiAgICAgICAg ICAKOzsgICAgICAgICAgICAgKHVubGVzcyBwYXJlbnQtb3BlbmVyCjs7IDs7ICAgICAgICAgICAg ICAgKGVycm9yIChwcmludCAoZm9ybWF0ICJzY29wZSAtICVkICVkIgo7OyA7OyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpCjs7IDs7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChpZiBjdXJyZW50LW9wZW5lcgo7OyA7OyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcmtlci1wb3NpdGlvbiBjdXJyZW50LW9wZW5l cikKOzsgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSkpKSkpCjs7 ICAgICAgICAgICAgICAgKHNldHEgY29udGludWUgbmlsKQo7OyAgICAgICAgICAgICAgIChnb3Rv LWNoYXIgKHBvaW50LW1pbikpKQoKOzsgICAgICAgICAgICAgKHNldHEgdG9wLXNjb3BlIGN1cnJl bnQtb3BlbmVyKQo7OyAgICAgICAgICAgICAoZ290by1jaGFyIHBhcmVudC1vcGVuZXIpCjs7ICAg ICAgICAgICAgICh3aGVuIChlcXVhbCAocG9pbnQpCjs7ICAgICAgICAgICAgICAgICAgICAgICAg ICAocG9pbnQtbWluKSkKOzsgICAgICAgICAgICAgICAoc2V0cSBjb250aW51ZSBuaWwpKSkpCgo7 OyAgICAgICAgIChnb3RvLWNoYXIgdG9wLXNjb3BlKSkKICAgIAo7OyAgICAgKGdvdG8tY2hhciAo cG9pbnQtbWluKSkpCgo7OyAgIChwb2ludCkKOzsgICApCgooZGVmdW4gc3BlY21hbi1jcmVhdGUt Z2xvYmFsLXNjb3BlLWluZGV4ICgpCiAgKHNldHEgZ2xvYmFsLXNjb3BlLWluZGV4IChzcGVjbWFu LWNyZWF0ZS1zY29wZS1pbmRleCkpKQoKKGRlZnVuIHNwZWNtYW4tY2xlYXItZ2xvYmFsLXNjb3Bl LWluZGV4ICgpCiAgKHNwZWNtYW4tY2xlYXItc2NvcGUtaW5kZXggZ2xvYmFsLXNjb3BlLWluZGV4 KQogIChzZXRxIGdsb2JhbC1zY29wZS1pbmRleCBuaWwpKQoKKGRlZnVuIHNwZWNtYW4tcHJpbnQt Z2xvYmFsLXNjb3BlLWluZGV4ICgpCiAgKHNwZWNtYW4tcHJpbnQtc2NvcGUtaW5kZXggZ2xvYmFs LXNjb3BlLWluZGV4KSkKCgo7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Cjs7IFNQRUNNQU4gU1lOVEFYIFRBQkxFCjs7ID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCihkZWZjb25zdCBzcGVjbWFuLWVtYWNz LWZlYXR1cmVzCiAgKGxldCAoKG1ham9yIChhbmQgKGJvdW5kcCAnZW1hY3MtbWFqb3ItdmVyc2lv bikKCQkgICAgZW1hY3MtbWFqb3ItdmVyc2lvbikpCgkobWlub3IgKGFuZCAoYm91bmRwICdlbWFj cy1taW5vci12ZXJzaW9uKQoJCSAgICBlbWFjcy1taW5vci12ZXJzaW9uKSkKCWZsYXZvciBjb21t ZW50cyApCiAgICA7OyBmaWd1cmUgb3V0IHZlcnNpb24gbnVtYmVycyBpZiBub3QgYWxyZWFkeSBk aXNjb3ZlcmVkCiAgICAoYW5kIChvciAobm90IG1ham9yKSAobm90IG1pbm9yKSkKCSAoc3RyaW5n LW1hdGNoICJcXChbMC05XStcXCkuXFwoWzAtOV0rXFwpIiBlbWFjcy12ZXJzaW9uKQoJIChzZXRx IG1ham9yIChzdHJpbmctdG8taW50IChzdWJzdHJpbmcgZW1hY3MtdmVyc2lvbgoJCQkJCSAgICAg ICAobWF0Y2gtYmVnaW5uaW5nIDEpCgkJCQkJICAgICAgIChtYXRjaC1lbmQgMSkpKQoJICAgICAg IG1pbm9yIChzdHJpbmctdG8taW50IChzdWJzdHJpbmcgZW1hY3MtdmVyc2lvbgoJCQkJCSAgICAg ICAobWF0Y2gtYmVnaW5uaW5nIDIpCgkJCQkJICAgICAgIChtYXRjaC1lbmQgMikpKSkpCiAgICAo aWYgKG5vdCAoYW5kIG1ham9yIG1pbm9yKSkKCShlcnJvciAiQ2Fubm90IGZpZ3VyZSBvdXQgdGhl IG1ham9yIGFuZCBtaW5vciB2ZXJzaW9uIG51bWJlcnMuIikpCiAgICA7OyBjYWxjdWxhdGUgdGhl IG1ham9yIHZlcnNpb24KICAgIChjb25kCiAgICAgKCg9IG1ham9yIDQpICAoc2V0cSBtYWpvciAn djE4KSkJO0Vwb2NoIDQKICAgICAoKD0gbWFqb3IgMTgpIChzZXRxIG1ham9yICd2MTgpKQk7RW1h Y3MgMTgKICAgICAoKD0gbWFqb3IgMTkpIChzZXRxIG1ham9yICd2MTkJO0VtYWNzIDE5CgkJCSBm bGF2b3IgKGlmIChvciAoc3RyaW5nLW1hdGNoICJMdWNpZCIgZW1hY3MtdmVyc2lvbikKCQkJCQko c3RyaW5nLW1hdGNoICJYRW1hY3MiIGVtYWNzLXZlcnNpb24pKQoJCQkJICAgICdYRW1hY3MgJ0ZT RikpKQogICAgICgoPiBtYWpvciAxOSkgKHNldHEgbWFqb3IgJ3YyMAoJCQkgZmxhdm9yIChpZiAo b3IgKHN0cmluZy1tYXRjaCAiTHVjaWQiIGVtYWNzLXZlcnNpb24pCgkJCQkJKHN0cmluZy1tYXRj aCAiWEVtYWNzIiBlbWFjcy12ZXJzaW9uKSkKCQkJCSAgICAnWEVtYWNzICdGU0YpKSkKICAgICA7 OyBJIGRvbid0IGtub3cKICAgICAodCAoZXJyb3IgIkNhbm5vdCByZWNvZ25pemUgbWFqb3IgdmVy c2lvbiBudW1iZXI6ICVzIiBtYWpvcikpKQogICAgOzsgWEVtYWNzIDE5IHVzZXMgOC1iaXQgbW9k aWZ5LXN5bnRheC1lbnRyeSBmbGFncywgYXMgZG8gYWxsCiAgICA7OyBwYXRjaGVkIEVtYWNzIDE5 LCBFbWFjcyAxOCwgRXBvY2ggNCdzLiAgT25seSBFbWFjcyAxOSB1c2VzIGEKICAgIDs7IDEtYml0 IGZsYWcuICBMZXQncyBiZSBhcyBzbWFydCBhcyB3ZSBjYW4gYWJvdXQgZmlndXJpbmcgdGhpcwog ICAgOzsgb3V0LgogICAgKGlmIChvciAoZXEgbWFqb3IgJ3YyMCkgKGVxIG1ham9yICd2MTkpKQoJ KGxldCAoKHRhYmxlIChjb3B5LXN5bnRheC10YWJsZSkpKQoJICAobW9kaWZ5LXN5bnRheC1lbnRy eSA/YSAiLiAxMjM0NTY3OCIgdGFibGUpCgkgIChjb25kCgkgICA7OyBYRW1hY3MgcHJlIDIwIGFu ZCBFbWFjcyBwcmUgMTkuMzAgdXNlIHZlY3RvcnMgZm9yIHN5bnRheCB0YWJsZXMuCgkgICAoKHZl Y3RvcnAgdGFibGUpCgkgICAgKGlmICg9IChsb2dhbmQgKGxzaCAoYXJlZiB0YWJsZSA/YSkgLTE2 KSAyNTUpIDI1NSkKCQkoc2V0cSBjb21tZW50cyAnOC1iaXQpCgkgICAgICAoc2V0cSBjb21tZW50 cyAnMS1iaXQpKSkKCSAgIDs7IFhFbWFjcyAyMCBpcyBrbm93biB0byBiZSA4LWJpdAoJICAgKChl cSBmbGF2b3IgJ1hFbWFjcykgKHNldHEgY29tbWVudHMgJzgtYml0KSkKCSAgIDs7IEVtYWNzIDE5 LjMwIGFuZCBiZXlvbmQgYXJlIGtub3duIHRvIGJlIDEtYml0CgkgICAoKGVxIGZsYXZvciAnRlNG KSAoc2V0cSBjb21tZW50cyAnMS1iaXQpKQoJICAgOzsgRG9uJ3Qga25vdyB3aGF0IHRoaXMgaXMK CSAgICh0IChlcnJvciAiQ291bGRuJ3QgZmlndXJlIG91dCBzeW50YXggdGFibGUgZm9ybWF0LiIp KQoJICAgKSkKICAgICAgOzsgRW1hY3MgMTggaGFzIG5vIHN1cHBvcnQgZm9yIGR1YWwgY29tbWVu dHMKICAgICAgKHNldHEgY29tbWVudHMgJ25vLWR1YWwtY29tbWVudHMpKQogICAgOzsgbGV0cyBk byBzb21lIG1pbmltYWwgc2FuaXR5IGNoZWNraW5nLgogICAgKGlmIChvcgoJIDs7IExlbWFjcyBi ZWZvcmUgMTkuNiBoYWQgYnVncwoJIChhbmQgKGVxIG1ham9yICd2MTkpIChlcSBmbGF2b3IgJ1hF bWFjcykgKDwgbWlub3IgNikpCgkgOzsgRW1hY3MgMTkgYmVmb3JlIDE5LjIxIGhhcyBrbm93biBi dWdzCgkgKGFuZCAoZXEgbWFqb3IgJ3YxOSkgKGVxIGZsYXZvciAnRlNGKSAoPCBtaW5vciAyMSkp CgkgKQoJKHdpdGgtb3V0cHV0LXRvLXRlbXAtYnVmZmVyICIqc3BlY21hbi1tb2RlIHdhcm5pbmdz KiIKCSAgKHByaW50IChmb3JtYXQKCQkgICJUaGUgdmVyc2lvbiBvZiBFbWFjcyB0aGF0IHlvdSBh cmUgcnVubmluZywgJXMsCmhhcyBrbm93biBidWdzIGluIGl0cyBzeW50YXggcGFyc2luZyByb3V0 aW5lcyB3aGljaCB3aWxsIGFmZmVjdCB0aGUKcGVyZm9ybWFuY2Ugb2Ygc3BlY21hbi1tb2RlLiBZ b3Ugc2hvdWxkIHN0cm9uZ2x5IGNvbnNpZGVyIHVwZ3JhZGluZyB0byB0aGUKbGF0ZXN0IGF2YWls YWJsZSB2ZXJzaW9uLiAgU3BlY21hbi1tb2RlIG1heSBjb250aW51ZSB0byB3b3JrLCBhZnRlciBh CmZhc2hpb24sIGJ1dCBzdHJhbmdlIGluZGVudGF0aW9uIGVycm9ycyBjb3VsZCBiZSBlbmNvdW50 ZXJlZC4iCgkJICBlbWFjcy12ZXJzaW9uKSkpKQogICAgOzsgRW1hY3MgMTgsIHdpdGggbm8gcGF0 Y2ggaXMgbm90IHRvbyBnb29kCiAgICAoaWYgKGFuZCAoZXEgbWFqb3IgJ3YxOCkgKGVxIGNvbW1l bnRzICduby1kdWFsLWNvbW1lbnRzKSkKCSh3aXRoLW91dHB1dC10by10ZW1wLWJ1ZmZlciAiKnNw ZWNtYW4tbW9kZSB3YXJuaW5ncyoiCgkgIChwcmludCAoZm9ybWF0CgkJICAiVGhlIHZlcnNpb24g b2YgRW1hY3MgMTggeW91IGFyZSBydW5uaW5nLCAlcywKaGFzIGtub3duIGRlZmljaWVuY2llcyBp biBpdHMgYWJpbGl0eSB0byBoYW5kbGUgdGhlIGR1YWwgc3BlY21hbgpjb21tZW50cywgW2UuZy4g dGhlIC8vIGFuZCAtLSBjb21tZW50c10uIFlvdSByZWFsbHkgc2hvdWxkIHN0cm9uZ2x5CmNvbnNp ZGVyIHVwZ3JhZGluZyB0byBvbmUgb2YgdGhlIGxhdGVzdCBFbWFjcyAxOVwncy4gIEluIEVtYWNz IDE4LCB5b3UKbWF5IGFsc28gZXhwZXJpZW5jZSBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbnMuICBF bWFjcyAxOSBoYXMgc29tZSBuZXcKYnVpbHQtaW4gcm91dGluZXMgd2hpY2ggd2lsbCBzcGVlZCB0 aGluZ3MgdXAgZm9yIHlvdS4gIEJlY2F1c2Ugb2YKdGhlc2UgaW5oZXJlbnQgcHJvYmxlbXMsIHNw ZWNtYW4tbW9kZSBpcyBub3Qgc3VwcG9ydGVkIG9uIGVtYWNzLTE4LiIKCQkgIGVtYWNzLXZlcnNp b24pKSkpCiAgICA7OyBFbWFjcyAxOCB3aXRoIHRoZSBzeW50YXggcGF0Y2hlcyBhcmUgbm8gbG9u Z2VyIHN1cHBvcnRlZAogICAgKGlmIChhbmQgKGVxIG1ham9yICd2MTgpIChub3QgKGVxIGNvbW1l bnRzICduby1kdWFsLWNvbW1lbnRzKSkpCgkod2l0aC1vdXRwdXQtdG8tdGVtcC1idWZmZXIgIipz cGVjbWFuLW1vZGUgd2FybmluZ3MqIgoJICAocHJpbnQgKGZvcm1hdAogICJZb3UgYXJlIHJ1bm5p bmcgYSBzeW50YXggcGF0Y2hlZCBFbWFjcyAxOCB2YXJpYW50LiAgV2hpbGUgdGhpcyBzaG91bGQK d29yayBmb3IgeW91LCB5b3UgbWF5IHdhbnQgdG8gY29uc2lkZXIgdXBncmFkaW5nIHRvIEVtYWNz IDE5LgpUaGUgc3ludGF4IHBhdGNoZXMgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQgZWl0aGVyIGZv ciBzcGVjbWFuLW1vZGUuIikpKSkKICAgIChsaXN0IG1ham9yIGNvbW1lbnRzICkpCiAgIkEgbGlz dCBvZiBmZWF0dXJlcyBleHRhbnQgaW4gdGhlIEVtYWNzIHlvdSBhcmUgdXNpbmcuClRoZXJlIGFy ZSBtYW55IGZsYXZvcnMgb2YgRW1hY3Mgb3V0IHRoZXJlLCBlYWNoIHdpdGggZGlmZmVyZW50CmZl YXR1cmVzIHN1cHBvcnRpbmcgdGhvc2UgbmVlZGVkIGJ5IHNwZWNtYW4tbW9kZS4gIEhlcmUncyB0 aGUgY3VycmVudApzdXBwb3J0ZWQgbGlzdCwgYWxvbmcgd2l0aCB0aGUgdmFsdWVzIGZvciB0aGlz IHZhcmlhYmxlOgoKIFZhbmlsbGEgRW1hY3MgMTgvRXBvY2ggNDogICAodjE4IG5vLWR1YWwtY29t bWVudHMgZmxvY2stc3ludGF4LWJlZm9yZS0xOTMwKQogRW1hY3MgMTgvRXBvY2ggNCAocGF0Y2gy KTogICh2MTggOC1iaXQgZmxvY2stc3ludGF4LWFmdGVyLTE5MzApCiBYRW1hY3MgKGZvcm1lcmx5 IEx1Y2lkKSAxOTogKHYxOSA4LWJpdCBmbG9jay1zeW50YXgtYWZ0ZXItMTkzMCkKIFhFbWFjcyA+ PSAyMDogICAgICAgICAgICAgICAodjIwIDgtYml0IGZsb2NrLXN5bnRheC1hZnRlci0xOTMwKQog RW1hY3MgMTkuMS0xOS4zMDogICAgICAgICAgICh2MTkgOC1iaXQgZmxvY2stc3ludGF4LWJlZm9y ZS0xOTMwKQogRW1hY3MgMTkuMzEtMTkueHg6ICAgICAgICAgICh2MTkgOC1iaXQgZmxvY2stc3lu dGF4LWFmdGVyLTE5MzApCiBFbWFjcyA+PTIwOiAgICAgICAgICAgICAgICAgKHYyMCAxLWJpdCBm bG9jay1zeW50YXgtYWZ0ZXItMTkzMCkuIgogICkKCihkZWZ1biBzcGVjbWFuLXBvcHVsYXRlLXN5 bnRheC10YWJsZSAodGFibGUpCiAgKG1vZGlmeS1zeW50YXgtZW50cnkgP18gICJ3IiAgICAgICAg dGFibGUpICA7OyB1bmRlcnNjb3JlIGlzIGEgcGFydCBvZiB3b3JkcwogIChtb2RpZnktc3ludGF4 LWVudHJ5ID97ICAiKH0iICAgICAgIHRhYmxlKQogIChtb2RpZnktc3ludGF4LWVudHJ5ID99ICAi KXsiICAgICAgIHRhYmxlKQogIChtb2RpZnktc3ludGF4LWVudHJ5ID9cKCAiKCkiICAgICAgIHRh YmxlKQogIChtb2RpZnktc3ludGF4LWVudHJ5ID9cKSAiKSgiICAgICAgIHRhYmxlKQogIChtb2Rp Znktc3ludGF4LWVudHJ5ID9cWyAiKF0iICAgICAgIHRhYmxlKQogIChtb2RpZnktc3ludGF4LWVu dHJ5ID9cXSAiKVsiICAgICAgIHRhYmxlKQogIChtb2RpZnktc3ludGF4LWVudHJ5ID9cJSAiLiIg ICAgICAgIHRhYmxlKQogIChtb2RpZnktc3ludGF4LWVudHJ5ID9cQCAiLiIgICAgICAgIHRhYmxl KSAgOzsgZm9yIGV2ZW50cwogIChtb2RpZnktc3ludGF4LWVudHJ5ID9cJyAiLiIgICAgICAgIHRh YmxlKQogIChtb2RpZnktc3ludGF4LWVudHJ5ID9cPCAiLiIgICAgICAgIHRhYmxlKQogIChtb2Rp Znktc3ludGF4LWVudHJ5ID9cPiAiLiIgICAgICAgIHRhYmxlKQogIChtb2RpZnktc3ludGF4LWVu dHJ5ID9cXCAiXFwiICAgICAgIHRhYmxlKQogIChtb2RpZnktc3ludGF4LWVudHJ5ID9cbiAiLiIg ICAgICAgIHRhYmxlKQogIHRhYmxlCiAgKQoKKGRlZnVuIHNwZWNtYW4tc2V0dXAtZHVhbC1jb21t ZW50cyAodGFibGUpCiAgOzsgU2V0IHVwIFRBQkxFIHRvIGhhbmRsZSBjb21tZW50cwogIDs7IHVu Zm9ydHVuYXRlbHksIGVtYWNzIGNhbid0IGhhbmRsZSAyIHN0eWxlcyBvZiBkdWFsIGNvbW1lbnRz CiAgOzsgcHJvcGVybHksIHNvIG9ubHkgLy8gaXMgZGVmaW5lZCBoZXJlLiAgLS0gaXMgaGFuZGxl ZAogIDs7IHNlcGFyYXRlbHkuICB4ZW1hY3MgY2FuLCBidXQgd2UgbXVzdCB1c2Ugc29tZXRoaW5n IHdoaWNoCiAgOzsgaXMgY29tcGF0aWJsZSBmb3IgYm90aCBlbWFjc2VuLgogIDs7IGluc3RlYWQs IHRoZSBzZWNvbmQgY29tbWVudCBzdHlsZSAvKi4uLiovIGlzIHVzZWQsIGFsdGhvdWdoCiAgOzsg aXQgaXMgb25seSBhIHZhbGlkIHN5bnRheCBpbiB0aGUgY29udGV4dCBvZiBjIHJvdXRpbmVzLgog IAogIChjb25kCiAgICgobWVtcSAnOC1iaXQgc3BlY21hbi1lbWFjcy1mZWF0dXJlcykKICAgIDs7 IFhFbWFjcyAoZm9ybWVybHkgTHVjaWQpIGhhcyB0aGUgYmVzdCBpbXBsZW1lbnRhdGlvbgogICAg Cjs7ICAgIChtb2RpZnktc3ludGF4LWVudHJ5ID8vICAiLiAxMiIgdGFibGUpCjs7ICAgIChtb2Rp Znktc3ludGF4LWVudHJ5ID8tICAiLiA1NiIgdGFibGUpCjs7ICAgIChtb2RpZnktc3ludGF4LWVu dHJ5ID9cbiAiPiAzNyIgdGFibGUpCjs7ICAgIChtb2RpZnktc3ludGF4LWVudHJ5ID9cZiAiPiAz NyIgdGFibGUpCiAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/LyAgIi4gMTI1OCIgdGFibGUpCiAg ICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/KiAgIi4gNjciIHRhYmxlKQogICAgKG1vZGlmeS1zeW50 YXgtZW50cnkgP1xuICI+IDMiIHRhYmxlKQogICAgKG1vZGlmeS1zeW50YXgtZW50cnkgP1xmICI+ IDMiIHRhYmxlKQogICAgKQogICAoKG1lbXEgJzEtYml0IHNwZWNtYW4tZW1hY3MtZmVhdHVyZXMp CiAgICA7OyBFbWFjcyAxOSBkb2VzIHRoaW5ncyBkaWZmZXJlbnRseSwgYnV0IHdlIGNhbiB3b3Jr IHdpdGggaXQKICAgIAo7OyAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/LyAgIi4gMTIiIHRhYmxl KQo7OyAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/XG4gIj4iICAgIHRhYmxlKQo7OyAgICAobW9k aWZ5LXN5bnRheC1lbnRyeSA/XGYgIj4iICAgIHRhYmxlKQo7OyAgICAobW9kaWZ5LXN5bnRheC1l bnRyeSA/LSAgIjwgMTJiIiB0YWJsZSkKOzsgICAgKG1vZGlmeS1zeW50YXgtZW50cnkgP1xuICI+ IGIiICAgIHRhYmxlKQo7OyAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/XGYgIj4gYiIgICAgdGFi bGUpCiAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/LyAgIi4gMTI0IiB0YWJsZSkKICAgIChtb2Rp Znktc3ludGF4LWVudHJ5ID8qICAiLiAyM2IiIHRhYmxlKQogICAgKG1vZGlmeS1zeW50YXgtZW50 cnkgP1xuICI+IiAgICB0YWJsZSkKICAgIChtb2RpZnktc3ludGF4LWVudHJ5ID9cZiAiPiIgICAg dGFibGUpCiAgICApKQogICkKCihkZWZ2YXIgZW1hY3Mta2luZCBuaWwpCgo7OyBlbWFjcyBvciB4 ZW1hY3MKKGlmIChvciAoc3RyaW5nLW1hdGNoICJMdWNpZCIgZW1hY3MtdmVyc2lvbikKICAgICAg ICAoc3RyaW5nLW1hdGNoICJYRW1hY3MiIGVtYWNzLXZlcnNpb24pKQogICAgKHNldHEgc3BlY21h bi1lbWFjcy1raW5kICd4ZW1hY3MpCiAgKHNldHEgc3BlY21hbi1lbWFjcy1raW5kICdlbWFjcykp CgoKOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo7 OyBTUEVDTUFOIElNRU5VIEZFQVRVUkUKOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQoKKGRlZnVuIHNwZWNtYW4taW1lbnUtc3BsaXQtbWVudSAoaW5k ZXgtYWxpc3QgbWF4LWl0ZW1zKQogIAogIChsZXQgKChyZXN1bHQtYWxpc3QKICAgICAgICAgbmls KQogICAgICAgIChzdWItYWxpc3QKICAgICAgICAgbmlsKQogICAgICAgIChjb3VudGVyCiAgICAg ICAgIG1heC1pdGVtcykKICAgICAgICApCiAgICA7OyBicmVhayB0aGUgaW5kZXggbGlzdCBpbnRv IHN1Yi1saXN0cyBpbiB0aGUgcmVzdWx0IGxpc3QKICAgICh3aGlsZSBpbmRleC1hbGlzdAogICAg ICAoaWYgKD4gY291bnRlciAwKQogICAgICAgICAgKHByb2duCiAgICAgICAgICAgIChzZXRxIGNv dW50ZXIgKDEtIGNvdW50ZXIpKQogICAgICAgICAgICAocHVzaCAoY2FyIGluZGV4LWFsaXN0KQog ICAgICAgICAgICAgICAgICBzdWItYWxpc3QpCiAgICAgICAgICAgIChzZXRxIGluZGV4LWFsaXN0 IChjZHIgaW5kZXgtYWxpc3QpKSkKICAgICAgICAocHJvZ24KICAgICAgICAgIChzZXRxIGNvdW50 ZXIgbWF4LWl0ZW1zKQogICAgICAgICAgKHNldHEgc3ViLWFsaXN0IChyZXZlcnNlIHN1Yi1hbGlz dCkpCiAgICAgICAgICAocHVzaCAoY29ucyAoZm9ybWF0ICJGcm9tOiAlcyIgKGNhYXIgc3ViLWFs aXN0KSkKICAgICAgICAgICAgICAgICAgICAgIHN1Yi1hbGlzdCkKICAgICAgICAgICAgICAgIHJl c3VsdC1hbGlzdCkKICAgICAgICAgIChzZXRxIHN1Yi1hbGlzdCBuaWwpKSkpCgogICAgOzsgaGFu ZGxlIHdoYXQgaXMgbGVmdCBpbiB0aGUgc3ViLWxpc3QKICAgIChpZiByZXN1bHQtYWxpc3QKICAg ICAgICAocHJvZ24KICAgICAgICAgIChzZXRxIHN1Yi1hbGlzdCAocmV2ZXJzZSBzdWItYWxpc3Qp KQogICAgICAgICAgKHB1c2ggKGNvbnMgKGZvcm1hdCAiRnJvbTogJXMiIChjYWFyIHN1Yi1hbGlz dCkpCiAgICAgICAgICAgICAgICAgICAgICBzdWItYWxpc3QpCiAgICAgICAgICAgICAgICByZXN1 bHQtYWxpc3QpKQogICAgICAoc2V0cSByZXN1bHQtYWxpc3Qgc3ViLWFsaXN0KSkKCiAgICAoc2V0 cSBpbmRleC1hbGlzdCAocmV2ZXJzZSByZXN1bHQtYWxpc3QpKQoKICAgIDs7IHJldHVybiByZXN1 bHQKICAgIGluZGV4LWFsaXN0KSkKCihkZWZ1biBzcGVjbWFuLWltZW51LWNyZWF0ZS1tZW51LWZv ci1yZWdpb24gKHJlZy1zdGFydCByZWctZW5kIHNjb3BlLWluZGV4LXBhcmFtKQogIDs7IGZ1bmN0 aW9uIGFjY2VwdHMgYSByZWdpb24gYmVjYXVzZSBpdCBpcyB1c2VkIHJlY3Vyc2l2ZWx5CgogIChs ZXQgKChzY29wZS1yZWdleHAKICAgICAgICAgc3BlY21hbi1jb250YWluZXItc2NvcGUtZGVmaW5p dGlvbi1yZWdleHApCiAgICAgICAgKG1ldGhvZC1yZWdleHAKICAgICAgICBzcGVjbWFuLW1ldGhv ZC1kZWZpbml0aW9uLXJlZ2V4cCkKICAgICAgICAob24tZXZlbnQtcmVnZXhwCiAgICAgICAgc3Bl Y21hbi1vbi1ldmVudC1tZXRob2QtZGVmaW5pdGlvbi1yZWdleHApCiAgICAgICAgKGV2ZW50LXJl Z2V4cAogICAgICAgIHNwZWNtYW4tZXZlbnQtZGVmaW5pdGlvbi1yZWdleHApCiAgICAgICAgKHR5 cGUtcmVnZXhwCiAgICAgICAgc3BlY21hbi10eXBlLWRlZmluaXRpb24tcmVnZXhwKQogICAgICAg IChjb3Zlci1yZWdleHAKICAgICAgICBzcGVjbWFuLWNvdmVyLWRlZmluaXRpb24tcmVnZXhwKQog ICAgICAgIChmaWVsZC1yZWdleHAKICAgICAgICBzcGVjbWFuLWZpZWxkLWRlZmluaXRpb24tcmVn ZXhwKQoKICAgICAgICA7OyB0aGVzZSBhcmUgdXNlZCB0byBhdm9pZCBwb3NzaWJsZSBwYXJzaW5n IGVycm9ycyBvbiB0aGUgYmxvY2tzIHRoZXkgc3RhcnQKICAgICAgICAoa2VlcC1zb2Z0LXNlbGVj dC1yZWdleHAKICAgICAgICAiXFwoa2VlcFsgXHRcbl0rc29mdFsgXHRcbl0rW147XSs9PVsgXHRc bl0rc2VsZWN0WyBcdFxuXSp7XFwpIikKICAgICAgICAoZ2VuLWtlZXBpbmctcmVnZXhwCiAgICAg ICAgImdlblsgXHRcbl0qXFwoW0EtWmEtejAtOV9dK1xcKVsgXHRcbl0qa2VlcGluZ1sgXHRcbl0q eyIpCiAgICAgICAgIAogICAgICAgIChpbmRleC1hbGlzdAogICAgICAgIG5pbCkKICAgICAgICAo ZXZlbnQtYWxpc3QKICAgICAgICBuaWwpCiAgICAgICAgKHR5cGUtYWxpc3QKICAgICAgICBuaWwp CiAgICAgICAgKGNvdmVyLWFsaXN0CiAgICAgICAgbmlsKQogICAgICAgIChmaWVsZC1hbGlzdAog ICAgICAgIG5pbCkKCiAgICAgICAgKHNjb3BlLWluZGV4CiAgICAgICAgIHNjb3BlLWluZGV4LXBh cmFtKQogICAgICAgICkKICAgIAogICAgKGxldCAoKGNvbW1vbi1yZWdleHAKICAgICAgICAgICAo Y29uY2F0CiAgICAgICAgICAgICJeWyBcdF0qIgogICAgICAgICAgICAiXFwoPzoiCiAgICAgICAg ICAgCiAgICAgICAgICAgICJcXCg/OiIKICAgICAgICAgICAgc2NvcGUtcmVnZXhwCiAgICAgICAg ICAgICJcXClcXHxcXCg/OiIKICAgICAgICAgICAgbWV0aG9kLXJlZ2V4cAogICAgICAgICAgICAi XFwpXFx8XFwoPzoiCiAgICAgICAgICAgIG9uLWV2ZW50LXJlZ2V4cAogICAgICAgICAgICAiXFwp XFx8XFwoPzoiCiAgICAgICAgICAgIGV2ZW50LXJlZ2V4cAogICAgICAgICAgICAiXFwpXFx8XFwo PzoiCiAgICAgICAgICAgIHR5cGUtcmVnZXhwCiAgICAgICAgICAgICJcXClcXHxcXCg/OiIKICAg ICAgICAgICAgY292ZXItcmVnZXhwCiAgICAgICAgICAgICJcXClcXHxcXCg/OiIKICAgICAgICAg ICAgZmllbGQtcmVnZXhwCiAgICAgICAgICAgICJcXClcXHxcXCg/OiIKICAgICAgICAgICAga2Vl cC1zb2Z0LXNlbGVjdC1yZWdleHAKICAgICAgICAgICAgIlxcKVxcfFxcKD86IgogICAgICAgICAg ICBnZW4ta2VlcGluZy1yZWdleHAKICAgICAgICAgICAgIlxcKSIKICAgICAgICAgICAKICAgICAg ICAgICAgIlxcKSIpKQogICAgICAgICAgKQoKICAgICAgKHVubGVzcyBzY29wZS1pbmRleC1wYXJh bQogICAgICAgIChzcGVjbWFuLWNyZWF0ZS1nbG9iYWwtc2NvcGUtaW5kZXgpCiAgICAgICAgKHNl dHEgc2NvcGUtaW5kZXggZ2xvYmFsLXNjb3BlLWluZGV4KSkKICAgIAogICAgICA7OyBjb250YWlu ZXJzIGFuZCBtZXRob2RzIGFyZSBpbnNlcnRlZCBhcyB0aGV5IG9jY3VyIGludG8gdGhlIG1haW4g bGlzdCwKICAgICAgOzsgYWxsIG90aGVyIHR5cGVzIGdldCB0aGVpciBvd24gc3ViLW1lbnVzLgog ICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAoZ290by1jaGFyIHJlZy1zdGFydCkKICAgICAg ICAoc3BlY21hbi1za2lwLWZvcndhcmQtY29tbWVudC1vci1zdHJpbmcpCiAgICAgICAgKHdoaWxl IChzcGVjbWFuLXJlLXNlYXJjaC1mb3J3YXJkIGNvbW1vbi1yZWdleHAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnLWVuZAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHQpCiAgICAgICAgICAoY29uZAogICAgICAgICAgICg7OyAgY29udGFpbmVyCiAgICAg ICAgICAgIChtYXRjaC1iZWdpbm5pbmcgMSkKICAgICAgICAgIAogICAgICAgICAgICAocHJvZ24K ICAgICAgICAgICAgICAoc2F2ZS1tYXRjaC1kYXRhCiAgICAgICAgICAgICAgICAoc3BlY21hbi1y ZS1zZWFyY2gtZm9yd2FyZCAieyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwb2ludC1tYXgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0KSkKICAg ICAgICAgICAgICAocHVzaCAoY29ucyAoc3BlY21hbi1wcmVwYXJlZC1idWZmZXItc3Vic3RyaW5n IChtYXRjaC1iZWdpbm5pbmcgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1lbmQgMSkpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbnMgKGNvbnMgIj09ICBERUZJTklUSU9OICA9PSIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoY29weS1tYXJrZXIgKG1hdGNoLWJlZ2lubmluZyAxKSkp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwZWNtYW4taW1lbnUtY3JlYXRlLW1l bnUtZm9yLXJlZ2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzcGVjbWFuLXNjb3BlLWluZGV4LWRvd24tc2NvcGUg c2NvcGUtaW5kZXggdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLWlu ZGV4KSkpCiAgICAgICAgICAgICAgICAgICAgaW5kZXgtYWxpc3QpCgogICAgICAgICAgICAgIChz cGVjbWFuLXNjb3BlLWluZGV4LWRvd24tc2NvcGUgc2NvcGUtaW5kZXggdCkKICAgICAgICAgICAg ICApCiAgICAgICAgICAgICkKICAgICAgICAgICAoOzsgIG1ldGhvZAogICAgICAgICAgICAobWF0 Y2gtYmVnaW5uaW5nIDIpCiAgICAgICAgICAKICAgICAgICAgICAgKHB1c2ggKGNvbnMgKGNvbmNh dAogICAgICAgICAgICAgICAgICAgICAgICAgKHNwZWNtYW4tcHJlcGFyZWQtYnVmZmVyLXN1YnN0 cmluZyAobWF0Y2gtYmVnaW5uaW5nIDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1lbmQgMikpCiAgICAgICAgICAgICAg ICAgICAgICAgICAiKCkiKQogICAgICAgICAgICAgICAgICAgICAgICAoY29weS1tYXJrZXIgKG1h dGNoLWJlZ2lubmluZyAyKSkpCiAgICAgICAgICAgICAgICAgIGluZGV4LWFsaXN0KQogICAgICAg ICAgICApCiAgICAgICAgICAgKDs7ICBvbiBldmVudCBtZXRob2QKICAgICAgICAgICAgKG1hdGNo LWJlZ2lubmluZyAzKQoKICAgICAgICAgICAgKHB1c2ggKGNvbnMgKHNwZWNtYW4tcHJlcGFyZWQt YnVmZmVyLXN1YnN0cmluZyAobWF0Y2gtYmVnaW5uaW5nIDMpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWVuZCAzKSkKICAg ICAgICAgICAgICAgICAgICAgICAgKGNvcHktbWFya2VyIChtYXRjaC1iZWdpbm5pbmcgMykpKQog ICAgICAgICAgICAgICAgICBpbmRleC1hbGlzdCkKICAgICAgICAgICAgKQogICAgICAgICAgICg7 OyAgZXZlbnQKICAgICAgICAgICAgKG1hdGNoLWJlZ2lubmluZyA0KQoKICAgICAgICAgICAgKHB1 c2ggKGNvbnMgKHNwZWNtYW4tcHJlcGFyZWQtYnVmZmVyLXN1YnN0cmluZyAobWF0Y2gtYmVnaW5u aW5nIDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG1hdGNoLWVuZCA0KSkKICAgICAgICAgICAgICAgICAgICAgICAgKGNvcHktbWFy a2VyIChtYXRjaC1iZWdpbm5pbmcgNCkpKQogICAgICAgICAgICAgICAgICBldmVudC1hbGlzdCkK ICAgICAgICAgICAgKQogICAgICAgICAgICg7OyAgdHlwZQogICAgICAgICAgICAobWF0Y2gtYmVn aW5uaW5nIDUpCgogICAgICAgICAgICAocHVzaCAoY29ucyAoc3BlY21hbi1wcmVwYXJlZC1idWZm ZXItc3Vic3RyaW5nIChtYXRjaC1iZWdpbm5pbmcgNSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtZW5kIDUpKQogICAgICAg ICAgICAgICAgICAgICAgICAoY29weS1tYXJrZXIgKG1hdGNoLWJlZ2lubmluZyA1KSkpCiAgICAg ICAgICAgICAgICAgIHR5cGUtYWxpc3QpCiAgICAgICAgICAgICkKICAgICAgICAgICAoOzsgIGNv dmVyIGdyb3VwCiAgICAgICAgICAgIChtYXRjaC1iZWdpbm5pbmcgNikKCiAgICAgICAgICAgIChw cm9nbgogICAgICAgICAgICAgIChwdXNoIChjb25zIChzcGVjbWFuLXByZXBhcmVkLWJ1ZmZlci1z dWJzdHJpbmcgKG1hdGNoLWJlZ2lubmluZyA2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWVuZCA2KSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAoY29weS1tYXJrZXIgKG1hdGNoLWJlZ2lubmluZyA2KSkpCiAgICAg ICAgICAgICAgICAgICAgY292ZXItYWxpc3QpCiAgICAgICAgICAgIAogICAgICAgICAgICAgIDs7 IGF2b2lkIHBhcnNpbmcgdGhlIGNvdmVyIGdyb3VwCiAgICAgICAgICAgICAgKHNwZWNtYW4tcmUt c2VhcmNoLWZvcndhcmQgInsiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHBvaW50LW1heCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCkKICAgICAgICAgICAg ICAoc3BlY21hbi1zY29wZS1pbmRleC1kb3duLXNjb3BlIHNjb3BlLWluZGV4IHQpKQogICAgICAg ICAgICApCiAgICAgICAgICAgKDs7ICBmaWVsZAogICAgICAgICAgICAobWF0Y2gtYmVnaW5uaW5n IDcpCgogICAgICAgICAgICAocHVzaCAoY29ucyAoc3BlY21hbi1wcmVwYXJlZC1idWZmZXItc3Vi c3RyaW5nIChtYXRjaC1iZWdpbm5pbmcgNykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtZW5kIDcpKQogICAgICAgICAgICAg ICAgICAgICAgICAoY29weS1tYXJrZXIgKG1hdGNoLWJlZ2lubmluZyA3KSkpCiAgICAgICAgICAg ICAgICAgIGZpZWxkLWFsaXN0KQogICAgICAgICAgICApCiAgICAgICAgICAgKDs7ICBrZWVwIC0g dXNlZCB0byBza2lwIHNvZnQgc2VsZWN0cywgd2hlcmUgdGhlIHdlaWdodHMgbG9vayBsaWtlIGZp ZWxkcwogICAgICAgICAgICAobWF0Y2gtYmVnaW5uaW5nIDgpCgogICAgICAgICAgICA7OyBwb2lu dCBpcyBhbHJlYWR5IGJleW9uZCB0aGUgb3BlbmluZyBwYXJlbgogICAgICAgICAgICAoc3BlY21h bi1zY29wZS1pbmRleC1kb3duLXNjb3BlIHNjb3BlLWluZGV4IHQpCiAgICAgICAgICAgICkKICAg ICAgICAgICAoOzsgIGdlbiBrZWVwaW5nIC0gc2tpcCB0aGUgc2NvcGUgdG8gYXZvaWQgY29uZnVz aW9uCiAgICAgICAgICAgIChtYXRjaC1iZWdpbm5pbmcgOSkKCiAgICAgICAgICAgIDs7IHBvaW50 IGlzIGFscmVhZHkgYmV5b25kIHRoZSBvcGVuaW5nIHBhcmVuCiAgICAgICAgICAgIChzcGVjbWFu LXNjb3BlLWluZGV4LWRvd24tc2NvcGUgc2NvcGUtaW5kZXggdCkKICAgICAgICAgICAgKQogICAg ICAgICAgICkKICAgICAgICAgICkKCiAgICAgICAgOzsgb3JkZXIgYW5kIGNvbGxlY3QgYWxsIGVu dHJpZXMKICAgICAgCiAgICAgICAgKHdoZW4gaW5kZXgtYWxpc3QKICAgICAgICAgIChzZXRxIGlu ZGV4LWFsaXN0CiAgICAgICAgICAoc3BlY21hbi1pbWVudS1zcGxpdC1tZW51IChyZXZlcnNlIGlu ZGV4LWFsaXN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWVudS1tYXgt aXRlbXMpKSkKICAgICAgICAod2hlbiBjb3Zlci1hbGlzdAogICAgICAgICAgKHB1c2ggKGNvbnMg IiogQ292ZXIgR3JvdXBzICoiCiAgICAgICAgICAgICAgICAgICAgICAoc3BlY21hbi1pbWVudS1z cGxpdC1tZW51IChyZXZlcnNlIGNvdmVyLWFsaXN0KQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbWVudS1tYXgtaXRlbXMpKQogICAgICAgICAgaW5kZXgt YWxpc3QpKQogICAgICAgICh3aGVuIGV2ZW50LWFsaXN0CiAgICAgICAgICAocHVzaCAoY29ucyAi KiBFdmVudHMgKiIKICAgICAgICAgICAgICAgICAgICAgIChzcGVjbWFuLWltZW51LXNwbGl0LW1l bnUgKHJldmVyc2UgZXZlbnQtYWxpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGltZW51LW1heC1pdGVtcykpCiAgICAgICAgICBpbmRleC1hbGlzdCkp CiAgICAgICAgKHdoZW4gZmllbGQtYWxpc3QKICAgICAgICAgIChwdXNoIChjb25zICIqIEZpZWxk cyAqIgogICAgICAgICAgICAgICAgICAgICAgKHNwZWNtYW4taW1lbnUtc3BsaXQtbWVudSAocmV2 ZXJzZSBmaWVsZC1hbGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW1lbnUtbWF4LWl0ZW1zKSkKICAgICAgICAgIGluZGV4LWFsaXN0KSkKICAgICAg ICAod2hlbiB0eXBlLWFsaXN0CiAgICAgICAgICAocHVzaCAoY29ucyAiKiBUeXBlcyAqIgogICAg ICAgICAgICAgICAgICAgICAgKHNwZWNtYW4taW1lbnUtc3BsaXQtbWVudSAocmV2ZXJzZSB0eXBl LWFsaXN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bWVudS1tYXgtaXRlbXMpKQogICAgICAgICAgaW5kZXgtYWxpc3QpKQogICAgICAgICkKCiAgICAg ICh1bmxlc3Mgc2NvcGUtaW5kZXgtcGFyYW0KICAgICAgICAoc3BlY21hbi1jbGVhci1nbG9iYWwt c2NvcGUtaW5kZXgpKQogICAgICAKICAgICAgaW5kZXgtYWxpc3QKICAgICAgKSkKICApCgooZGVm dmFyIGltZW51LS1zcGxpdC1zdWJtZW51cy1lbmFibGUgdAogICJUb2dnbGUgc3ViLW1lbnUgc3Bs aXR0aW5nIGJlaGF2aW9yIG9mIGltZW51IHdoaWNoIGNhbiBtZXNzIHVwIHByZWZvcm1hdHRlZCBt ZW51cyIpCihtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAnaW1lbnUtLXNwbGl0LXN1Ym1lbnVz LWVuYWJsZSkKCjs7ICBwcmV2ZW50IHRoZSBpbWVudS0tc3BsaXQtc3VibWVudXMgb3BlcmF0aW9u IGluIHNwZWNtYW4tbW9kZSBidWZmZXJzLAo7OyAgYXMgaXQgcmVvcmRlcnMgdGhlIGluZGV4LWFs aXN0IGFuZCBydWlucyB0aGUgcHJlcGFyZWQgb3JkZXIuCihkZWZhZHZpY2UgaW1lbnUtLXNwbGl0 LXN1Ym1lbnVzIChhcm91bmQgc3BlY21hbi1kaXNhYmxlLWltZW51LXNwbGl0LXN1Ym1lbnVzIChB TElTVCkgYWN0aXZhdGUpCiAgImVuYWJsZSB0b2dnbGluZyBpbWVudS0tc3BsaXQtc3VibWVudXMg b24vb2ZmIgogIChpZiBpbWVudS0tc3BsaXQtc3VibWVudXMtZW5hYmxlCiAgICAgIGFkLWRvLWl0 CiAgICAoc2V0cSBhZC1yZXR1cm4tdmFsdWUgQUxJU1QpKSkKCihkZWZ1biBzcGVjbWFuLWltZW51 LWNyZWF0ZS1tZW51ICgpCiAgKGxldCAoaW1lbnUKICAgICAgICApCiAgKG1lc3NhZ2UgIkNyZWF0 aW5nIFNwZWNtYW4tSW5kZXggZm9yIEJ1ZmZlciIpCiAgKHNldHEgaW1lbnUgKHNwZWNtYW4taW1l bnUtY3JlYXRlLW1lbnUtZm9yLXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSBuaWwpKQog IChtZXNzYWdlIG5pbCkKICBpbWVudSkpCgoKOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQo7OyBTUEVDTUFOIFVUSUxJVFkKOzsgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKOzsgTWFjcm9zCihkZWZtYWNy byBpbmMgKG51bSAmb3B0aW9uYWwgdmFsKSAKICAiaW5jcmVtZW50IHRoZSB2YWx1ZSBvZiBudW0i CiAgKHNldHEgbnVtICgrIG51bSAob3IgdmFsIDEpKSkpCgooZGVmbWFjcm8gZm9yICh2YXIgZnJv bSBpbml0IHRvIGZpbmFsIGRvICZyZXN0IGJvZHkpCiAgIkV4ZWN1dGUgYSBzaW1wbGUgXCJmb3Jc IiBsb29wLCBlLmcuLAogICAgKGZvciBpIGZyb20gMSB0byAxMCBkbyAocHJpbnQgaSkpLiIKOzsg ICcobGV0ICgoLHZhciAsaW5pdCkpCjs7ICAgICAod2hpbGUgKDw9ICx2YXIgLGZpbmFsKQo7OyAg ICAgICAsKGFwcGVuZCBib2R5Cjs7ICAgICAgICAgICAgICAgIChzZXRxICx2YXIgKCsgMSAsdmFy KSkpKSkpCiAgKGxpc3QgJ2xldCAobGlzdCAobGlzdCB2YXIgaW5pdCkpCiAgICAgICAgKGNvbnMg J3doaWxlIAogICAgICAgICAgICAgIChjb25zIChsaXN0ICc8PSB2YXIgZmluYWwpCiAgICAgICAg ICAgICAgICAgICAgKGFwcGVuZCBib2R5IChsaXN0IChsaXN0ICdzZXRxIHZhciAobGlzdCAnKyAn MSB2YXIpKSkpKSkpKQoKKGRlZnVuIHNhZmUtY2hhcj0gKGEgYikKICAiU2FmZSBleGVjdXRpb24g b2YgY2hhcj0gd2hpY2ggY2FuIGFjY2VwdC1uaWwiCiAgKG9yIChhbmQgYQogICAgICAgICAgIGIK ICAgICAgICAgICAoY2hhcj0gYSBiKSkKICAgICAgKG5vdCAob3IgYQogICAgICAgICAgICAgICBi KSkKICAgICAgKQogICkKCihkZWZ1biBzcGVjbWFuLXNlYXJjaC1mb3J3YXJkLW1pbnVzLWNvbW1l bnQgKGxpbWl0KQogICJMb29rIGZvciBhIC0tIGNvbW1lbnQgYmV0d2VlbiBwb2ludCBhbmQgYSBn aXZlbiBsaW1pdCIKICAobGV0ICgoY29udGludWUKICAgICAgICAgdAogICAgICAgICApCiAgICAg ICAgKHJldHVybi12YWwKICAgICAgICAgbmlsCiAgICAgICAgICkKICAgICAgICApCiAgICAod2hp bGUgKGFuZCBjb250aW51ZQogICAgICAgICAgICAgICAgKDwgKHBvaW50KSBsaW1pdCkKICAgICAg ICAgICAgICAgIChzZWFyY2gtZm9yd2FyZCAiLS0iIGxpbWl0IHQpKQogICAgICAoaWYgKHNwZWNt YW4td2l0aGluLXN0cmluZy1wKQogICAgICAgICAgKG9yIChzZWFyY2gtZm9yd2FyZCAiXCIiIGxp bWl0IHQpCiAgICAgICAgICAgICAgKHNldHEgY29udGludWUgbmlsKSkKICAgICAgICAocHJvZ24K ICAgICAgICAgIChzZXRxIGNvbnRpbnVlIG5pbCkKICAgICAgICAgIChnb3RvLWNoYXIgKG1hdGNo LWJlZ2lubmluZyAwKSkKICAgICAgICAgIChzZXRxIHJldHVybi12YWwgKHBvaW50KSkpKSkKICAg IHJldHVybi12YWwpKQoKCihkZWZ1biBzcGVjbWFuLXNraXAtZm9yd2FyZC1jb21tZW50LW9yLXN0 cmluZyAoKQogIk1vdmUgYmV5b25kIGFuZCByZXR1cm4gdHJ1ZSBpZiBpbiBhIHN0cmluZyBvciBj b21tZW50IgogKGxldCAoKHN0YXRlCgkoc2F2ZS1leGN1cnNpb24KCSAgKHBhcnNlLXBhcnRpYWwt c2V4cCAocG9pbnQtbWluKSAocG9pbnQpKSkKICAgICAgICApCiAgICAgICApCiAgIChzYXZlLW1h dGNoLWRhdGEKICAgICAoY29uZAogICAgICAoOzsgb3V0c2lkZSBlLWNvZGUgYmxvY2sKICAgICAg IChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAocmUtc2VhcmNoLWZvcndhcmQgIl5cXCg/OlxcKDwn XFwpXFx8XFwoJz5cXClcXCkiIChwb2ludC1tYXgpIHQpCiAgICAgICAgIChub3QgKG1hdGNoLWJl Z2lubmluZyAyKSkpCiAgICAgICAKICAgICAgIChpZiAobWF0Y2gtZW5kIDEpCiAgICAgICAgICAg KGdvdG8tY2hhciAobWF0Y2gtZW5kIDEpKQogICAgICAgICAoZ290by1jaGFyIChwb2ludC1tYXgp KSkKICAgICAgIHQKICAgICAgICkKICAgICAgKDs7IGluc2lkZSBzdHJpbmcKICAgICAgIChudGgg MyBzdGF0ZSkKICAgICAgIAogICAgICAgKHJlLXNlYXJjaC1mb3J3YXJkICJcXCg/OlteXFxdXFx8 W1xcXVtcXF1cXClcIiIpCiAgICAgICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpCiAgICAgICB0 CiAgICAgICApCiAgICAgICg7OyBpbnNpZGUgLy8gY29tbWVudCAoLyouLi4qLyBhbHNvKQogICAg ICAgKG50aCA0IHN0YXRlKQoKICAgICAgIChpZiAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAg IChnb3RvLWNoYXIgKG50aCA4IHN0YXRlKSkKICAgICAgICAgICAgIChsb29raW5nLWF0ICIvLyIp KQogICAgICAgICAgIDs7IGluIC8vLi4uIGNvbW1lbnQKICAgICAgICAgICAoZm9yd2FyZC1saW5l IDEpCiAgICAgICAgIDs7IGluIC8qLi4uKi8gY29tbWVudAogICAgICAgICAoc2VhcmNoLWZvcndh cmQgIiovIiAocG9pbnQtbWF4KSB0KSkKICAgICAgIHQKICAgICAgICkKICAgICAgKDs7IHRydWUg aWYgd2UgYXJlIGluIGEgLS0gLi4uIEVPTCByZWdpb24KICAgICAgIChzYXZlLWV4Y3Vyc2lvbgog ICAgICAgICAobGV0ICgoY3VyLXBvc2l0aW9uIChwb2ludCkpCiAgICAgICAgICAgICAgICkKICAg ICAgICAgICAoYmFjay10by1pbmRlbnRhdGlvbikKICAgICAgICAgICAoc3BlY21hbi1zZWFyY2gt Zm9yd2FyZC1taW51cy1jb21tZW50IGN1ci1wb3NpdGlvbikpKQogICAgICAgCiAgICAgICAoZm9y d2FyZC1saW5lIDEpCiAgICAgICB0CiAgICAgICApCiAgICAgICg7OyBkZWZhdWx0CiAgICAgICB0 CiAgICAgICAKICAgICAgIG5pbAogICAgICAgKQogICAgICApCiAgICAgKQogICApCiApCgooZGVm dW4gc3BlY21hbi1za2lwLWJhY2t3YXJkLWNvbW1lbnQtb3Itc3RyaW5nICgpCiAiTW92ZSB0byB0 aGUgYmVnaW5pbmcgYW5kIHJldHVybiB0cnVlIGlmIGluIGEgc3RyaW5nIG9yIGNvbW1lbnQiCiAo bGV0ICgoc3RhdGUKCShzYXZlLWV4Y3Vyc2lvbgoJICAocGFyc2UtcGFydGlhbC1zZXhwIChwb2lu dC1taW4pIChwb2ludCkpKQogICAgICAgICkKICAgICAgICkKICAgKHNhdmUtbWF0Y2gtZGF0YQog ICAgIChjb25kCiAgICAgICg7OyBvdXRzaWRlIGUtY29kZSBibG9jawogICAgICAgKHNhdmUtZXhj dXJzaW9uCiAgICAgICAgIChyZS1zZWFyY2gtYmFja3dhcmQgIl5cXCg/OlxcKDwnXFwpXFx8XFwo Jz5cXClcXCkiIChwb2ludC1taW4pIHQpCiAgICAgICAgIChub3QgKG1hdGNoLWJlZ2lubmluZyAx KSkpCiAgICAgICAKICAgICAgIChpZiAobWF0Y2gtYmVnaW5uaW5nIDIpCiAgICAgICAgICAgKGdv dG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIDIpKQogICAgICAgICAoZ290by1jaGFyIChwb2ludC1t aW4pKSkKICAgICAgIHQKICAgICAgICkKICAgICAgKDs7IGluc2lkZSBzdHJpbmcKICAgICAgIChu dGggMyBzdGF0ZSkKICAgICAgIAogICAgICAgKHJlLXNlYXJjaC1iYWNrd2FyZCAiXFwoPzpbXlxc XVxcfFtcXF1bXFxdXFwpXCIiKQogICAgICAgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIDAp KQogICAgICAgdCkKICAgICAgKDs7IGluc2lkZSAvLyBjb21tZW50ICgvKi4uLiovIGFsc28pCiAg ICAgICAobnRoIDQgc3RhdGUpCiAgICAgICAKICAgICAgIDs7KHNlYXJjaC1iYWNrd2FyZCAiLy8i KQogICAgICAgKGdvdG8tY2hhciAobnRoIDggc3RhdGUpKQogICAgICAgdAogICAgICAgKQogICAg ICAoOzsgdHJ1ZSBpZiB3ZSBhcmUgaW4gYSAtLSAuLi4gRU9MIHJlZ2lvbgogICAgICAgKHNhdmUt ZXhjdXJzaW9uCiAgICAgICAgIChsZXQgKChjdXItcG9zaXRpb24gKHBvaW50KSkKICAgICAgICAg ICAgICAgKQogICAgICAgICAgIChiYWNrLXRvLWluZGVudGF0aW9uKQogICAgICAgICAgIChzcGVj bWFuLXNlYXJjaC1mb3J3YXJkLW1pbnVzLWNvbW1lbnQgY3VyLXBvc2l0aW9uKSkpCiAgICAgICAK ICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAwKSkKICAgICAgIHQpCiAgICAgICg7 OyBkZWZhdWx0CiAgICAgICB0CiAgICAgICAKICAgICAgIG5pbCkKICAgICAgKQogICAgICkKICAg KQogKQoKKGRlZnVuIHNwZWNtYW4tZm9yd2FyZC13cyAoJm9wdGlvbmFsIGJvdW5kKQogICJGb3J3 YXJkIHNraXAgb3ZlciBzeW50YWN0aWMgd2hpdGVzcGFjZSIKICAoc2tpcC1jaGFycy1mb3J3YXJk ICIgXHRcbiIpCiAgKHdoaWxlIAogICAgICAoY29uZAogICAgICAgKChsb29raW5nLWF0ICJbIFx0 XG5dIikgKHNraXAtY2hhcnMtZm9yd2FyZCAiWyBcdFxuXSIpKQogICAgICAgKChsb29raW5nLWF0 ICItLSIpICAgICAgKGZvcndhcmQtdG8taW5kZW50YXRpb24gMSkpCiAgICAgICAoKGxvb2tpbmct YXQgIi8vIikgICAgICAoZm9yd2FyZC10by1pbmRlbnRhdGlvbiAxKSkKICAgICAgICgobG9va2lu Zy1hdCAiXic+IikgICAgIChzZWFyY2gtZm9yd2FyZCAiXG48JyIgbmlsIHQpKQogICAgICAgKHQK CW5pbCkpKSkKCihkZWZ1biBzcGVjbWFuLXdpdGhpbi1wYXJlbi1wICgpCQogICJSZXR1cm4gdHJ1 ZSBpZiBpbiBhIHBhcmVudGhldGljYWwgZXhwcmVzc2lvbiIKICAoc2F2ZS1leGN1cnNpb24KICAg IChzcGVjbWFuLXVwLWxpc3QpKSkKCihkZWZ1biBzcGVjbWFuLXdpdGhpbi1saW5lLWNvbW1lbnQt cCAoKQogICJSZXR1cm4gcG9pbnQgaWYgaW4gYSAvLyBvciAtLSBjb21tZW50LiIKICAob3IgKHNh dmUtZXhjdXJzaW9uCiAgICAgICAgKGxldCAoKHN0YXRlCiAgICAgICAgICAgICAgIChwYXJzZS1w YXJ0aWFsLXNleHAgKHBvaW50LW1pbikgKHBvaW50KSkpCiAgICAgICAgICAgICAgKQogICAgICAg ICAgKGFuZCAobnRoIDQgc3RhdGUpCiAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKG50aCA4IHN0 YXRlKSkKICAgICAgICAgICAgICAgKGlmIChsb29raW5nLWF0ICIvLyIpCiAgICAgICAgICAgICAg ICAgICAocG9pbnQpCiAgICAgICAgICAgICAgICAgbmlsKSkpKQogICAgICAoc2F2ZS1leGN1cnNp b24gOzsgdHJ1ZSBpZiB3ZSBhcmUgaW4gYSAtLSAuLi4gRU9MIHJlZ2lvbgogICAgICAgIChsZXQg KChjdXItcG9zaXRpb24KICAgICAgICAgICAgICAgKHBvaW50KSkKICAgICAgICAgICAgICApCiAg ICAgICAgICAoYmFjay10by1pbmRlbnRhdGlvbikKICAgICAgICAgIChpZiAoc3BlY21hbi1zZWFy Y2gtZm9yd2FyZC1taW51cy1jb21tZW50IGN1ci1wb3NpdGlvbikKICAgICAgICAgICAgICAocG9p bnQpCiAgICAgICAgICAgIG5pbCkpKSkpCgooZGVmdW4gc3BlY21hbi1saW5lLXdpdGhpbi1jb21t ZW50LXAgKCkKICAiUmV0dXJuIHRydWUgaWYgdGhlIGN1cnJlbnQgbGluZSBpcyBmdWxseSBjb21t ZW50ZWQtb3V0IGFzIGEgbGluZSBjb21tZW50LiIKICAoc2F2ZS1leGN1cnNpb24KICAgIChiYWNr LXRvLWluZGVudGF0aW9uKQogICAgKGxvb2tpbmctYXQgIi8vXFx8LS0iKSkpCgooZGVmdW4gc3Bl Y21hbi1saW5lLXdpdGhpbi1zdGFyLWNvbW1lbnQtcCAoKQogICJSZXR1cm4gdHJ1ZSBpZiB0aGUg Y3VycmVudCBsaW5lIGlzIGZ1bGx5IGluIGEgc3RhciBjb21tZW50LiIKICAoc2F2ZS1leGN1cnNp b24KICAgIChiYWNrLXRvLWluZGVudGF0aW9uKQogICAgKG50aCA0IChwYXJzZS1wYXJ0aWFsLXNl eHAgKHBvaW50LW1pbikgKHBvaW50KSkpKSkKCihkZWZ1biBzcGVjbWFuLWxpbmUtd2l0aGluLXN0 YXItY29tbWVudC1vci1zdHJpbmctcCAoKQogICJSZXR1cm4gdHJ1ZSBpZiB0aGUgY3VycmVudCBs aW5lIGJlZ2lucyB3aXRoaW4gYSBzdHJpbmcgb3IgYSBzdGFyIGNvbW1lbnQuIgogIChzYXZlLWV4 Y3Vyc2lvbgogICAgKGJhY2stdG8taW5kZW50YXRpb24pCiAgICAobGV0KiAoKHBvaW50LXN0YXR1 cwogICAgICAgICAgICAocGFyc2UtcGFydGlhbC1zZXhwIChwb2ludC1taW4pIChwb2ludCkpCiAg ICAgICAgICAgICkKICAgICAgICAgICAoaW4tc3RyaW5nCiAgICAgICAgICAgIChudGggMyBwb2lu dC1zdGF0dXMpCiAgICAgICAgICAgICkKICAgICAgICAgICAoaW4tc3Rhci1jb21tZW50CiAgICAg ICAgICAgIChudGggNCBwb2ludC1zdGF0dXMpCiAgICAgICAgICAgICkKICAgICAgICAgICApCiAg ICAgIChvciBpbi1zdHJpbmcKICAgICAgICAgIGluLXN0YXItY29tbWVudCkpKQogICkKCihkZWZ1 biBzcGVjbWFuLWluZGVudC1wb3MgKCkKICAoc2F2ZS1leGN1cnNpb24KICAgIChiYWNrLXRvLWlu ZGVudGF0aW9uKQogICAgKHBvaW50KSkpCgooZGVmdW4gc3BlY21hbi1pbmRlbnQtY29sICgpCiAg KHNhdmUtZXhjdXJzaW9uCiAgICAoYmFjay10by1pbmRlbnRhdGlvbikKICAgIChjdXJyZW50LWNv bHVtbikpKQoKCihkZWZ1biBzcGVjbWFuLWluc2VydC10YWIgKCkKICAiQmV0dGVyIHRhYiBpbnNl cnRpb24gLSBub3JtYWwgaW4gc3RyaW5nLCB1c2luZyBzcGFjZXMgdW50aWwgdGFiLXN0b3AKb3Ro ZXJ3aXNlLiIKICAoaW50ZXJhY3RpdmUpCiAgOzsgaWYgd2UgYXJlIGluc2lkZSBhIHN0cmluZywg cHV0IHBsYWluIHRhYgogIChpZiAoc3BlY21hbi13aXRoaW4tc3RyaW5nLXApCiAgICAgIChpbnNl cnQgIlx0IikKICAgIChwcm9nbgogICAgICAoaW5zZXJ0ICIgIikKICAgICAgKHdoaWxlIChub3Qg KGVxICglIChjdXJyZW50LWNvbHVtbikgc3BlY21hbi10YWItd2lkdGgpIDApKQoJKGluc2VydCAi ICIpKSkpKQoKKGRlZnVuIHNwZWNtYW4tcmVtb3ZlLXRhYiAoKQogICJCZXR0ZXIgdGFiIHJlbW92 YWwgLSByZW1vdmUgYSB0YWIgb3Igc3BhY2VzIHVudGlsIHRhYi1zdG9wIGFjY29yZGluZwp0byBj b250ZXh0LiIKICAoaW50ZXJhY3RpdmUpCiAgOzsgaWYgd2UgYXJlIGluc2lkZSBhIHN0cmluZywg ZGVsZXRlIG9uZSBjaGFyCiAgKGxldCAoKHN0YXJ0LXdpdGgtc3BhY2UKICAgICAgICAgKHNhZmUt Y2hhcj0gKGNoYXItYmVmb3JlKSA/XCAgKQogICAgICAgICApCiAgICAgICAgKQogICAgKGRlbGV0 ZS1iYWNrd2FyZC1jaGFyIDEpCiAgICAoaWYgKGFuZCAobm90IChzcGVjbWFuLXdpdGhpbi1zdHJp bmctcCkpCiAgICAgICAgICAgICBzdGFydC13aXRoLXNwYWNlKQoJKHdoaWxlIChhbmQgKG5vdCAo ZXEgKCUgKGN1cnJlbnQtY29sdW1uKSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz cGVjbWFuLXRhYi13aWR0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKSkKICAgICAg ICAgICAgICAgICAgICAoc2FmZS1jaGFyPSAoY2hhci1iZWZvcmUpID9cICApKQoJICAoZGVsZXRl LWJhY2t3YXJkLWNoYXIgMSkpKSkpCgooZGVmdW4gc3BlY21hbi1raWxsLWVudGlyZS1saW5lICgp CiAgIktpbGwgZW50aXJlIGxpbmUgYW5kIGluZGVudCIKICAoaW50ZXJhY3RpdmUpCiAgKGtpbGwt ZW50aXJlLWxpbmUpCiAgKHNwZWNtYW4tYWN0aXZhdGUtaW5kZW50KQogICkKCjs7ID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KOzsgU1BFQ01BTiBNT0RF IE1BUAo7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CihkZWZjb25zdCBzcGVjbWFuLW1vZGUtbWFwIAogIChsZXQgKChtYXAgKG1ha2Utc3BhcnNlLWtl eW1hcCkpKQogICAgKGRlZmluZS1rZXkgbWFwIFsodGFiKV0gICAgICAgICAgICAgICAgICAgICAn c3BlY21hbi1hY3RpdmF0ZS1pbmRlbnQpCiAgICAoZGVmaW5lLWtleSBtYXAgWyhpc28tbGVmdC10 YWIpXSAgICAgICAgICAgICdzcGVjbWFuLWluc2VydC10YWIpCiAgICAoZGVmaW5lLWtleSBtYXAg IlxDLWNcQy10IiAgICAgICAgICAgICAgICAgICdzcGVjbWFuLWluc2VydC10YWIpCiAgICAoZGVm aW5lLWtleSBtYXAgIlxDLWNcQy1hIiAgICAgICAgICAgICAgICAgICdzcGVjbWFuLXJlZG8tZW5k Y29tbWVudHMpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLWNcQy1iIiAgICAgICAgICAgICAgICAg ICdzcGVjbWFuLXN1Ym1pdC1idWctcmVwb3J0KQogICAgKGRlZmluZS1rZXkgbWFwIFsoYmFja3Nw YWNlKV0gICAgICAgICAgICAgICAnc3BlY21hbi1yZW1vdmUtdGFiKQogICAgKGRlZmluZS1rZXkg bWFwICJcciIgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY21hbi1pbnNlcnQtbmV3bGluZSkK ICAgIDsoZGVmaW5lLWtleSBtYXAgIjsiICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVjbWFu LWVsZWN0cmljLXNlbWljb2xvbikKCShkZWZpbmUta2V5IG1hcCBbKGNvbnRyb2wgYykgKGNvbnRy b2wgP1w7KV0gJ3NwZWNtYW4taW5zZXJ0LWF1dG8tZW5kY29tbWVudCkKICAgIChkZWZpbmUta2V5 IG1hcCAiXEMtY1xDLWwiICAgICAgICAgICAgICAgICAgJ2V2YWwtZnJvbS1taW5pYnVmZmVyKQog ICAgOyhkZWZpbmUta2V5IG1hcCAiXEMtY0AiICAgICAgICAgICAgICAgICAgICAgJ3NwZWNtYW4t dG9nZ2xlLWhpZGUtY29tbWVudHMpCiAgICA7KGRlZmluZS1rZXkgbWFwICJ7IiAgICAgICAgICAg ICAgICAgICAgICAgICAnc3BlY21hbi1pbnNlcnQtY3VybHktb3BlbmVyKQoJKGRlZmluZS1rZXkg bWFwIFsoY29udHJvbCB7KV0gICAgICAgICAgICAgICAnc3BlY21hbi1vcGVuLWUtY29kZS1ibG9j aykKICAgIChkZWZpbmUta2V5IG1hcCAifSIgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWNt YW4taW5zZXJ0LWN1cmx5LWNsb3NlcikKICAgIChkZWZpbmUta2V5IG1hcCAiKCIgICAgICAgICAg ICAgICAgICAgICAgICAgJ3NwZWNtYW4taW5zZXJ0LXBhcmVucy1vcGVuZXIpCiAgICAoZGVmaW5l LWtleSBtYXAgIikiICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVjbWFuLWluc2VydC1wYXJl bnMtY2xvc2VyKQogICAgKGRlZmluZS1rZXkgbWFwICJbIiAgICAgICAgICAgICAgICAgICAgICAg ICAnc3BlY21hbi1pbnNlcnQtYnJhY2tldC1vcGVuZXIpCiAgICAoZGVmaW5lLWtleSBtYXAgIl0i ICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVjbWFuLWluc2VydC1icmFja2V0LWNsb3NlcikK ICAgIChkZWZpbmUta2V5IG1hcCAiJyIgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWNtYW4t aW5zZXJ0LXRpY2spCiAgICAoZGVmaW5lLWtleSBtYXAgIjwiICAgICAgICAgICAgICAgICAgICAg ICAgICdzcGVjbWFuLWluc2VydC1sdCkKICAgIChkZWZpbmUta2V5IG1hcCAiPiIgICAgICAgICAg ICAgICAgICAgICAgICAgJ3NwZWNtYW4taW5zZXJ0LWd0KQogICAgKGRlZmluZS1rZXkgbWFwIFso Y29udHJvbCBjKSAoY29udHJvbCA/LSldICAnc3BlY21hbi1pbnNlcnQtbWludXMtY29tbWVudCkK ICAgIChkZWZpbmUta2V5IG1hcCBbKGNvbnRyb2wgYykgKGNvbnRyb2wgPy8pXSAgJ3NwZWNtYW4t aW5zZXJ0LXNsYXNoLWNvbW1lbnQpCiAgICAoZGVmaW5lLWtleSBtYXAgWyhjb250cm9sIGMpIChj b250cm9sID9fKV0gICdzcGVjbWFuLW1pbm9yLWNvbW1lbnQtc2VwYXJhdG9yKQogICAgKGRlZmlu ZS1rZXkgbWFwIFsoY29udHJvbCBjKSAoY29udHJvbCA/PSldICAnc3BlY21hbi1tYWpvci1jb21t ZW50LXNlcGFyYXRvcikKICAgIChkZWZpbmUta2V5IG1hcCBbKGNvbnRyb2wgYykgP2ZdICAgICAg ICAgICAgJ3NwZWNtYW4tZGV2ZWxvcG1lbnQtZmlsZS1oZWFkZXIpCiAgICAoZGVmaW5lLWtleSBt YXAgWyhjb250cm9sIGMpID9zXSAgICAgICAgICAgICdzcGVjbWFuLXN0cnVjdC1hbmQtZGVmaW5l LWhlYWRlci1jb21wYWN0KQogICAgKGRlZmluZS1rZXkgbWFwIFsoY29udHJvbCBjKSA/bV0gICAg ICAgICAgICAnc3BlY21hbi1tZXRob2QtaGVhZGVyLWNvbXBhY3QpCiAgICAoZGVmaW5lLWtleSBt YXAgWyhjb250cm9sIGMpIChjb250cm9sID88KV0gICdzcGVjbWFuLW9wZW4tZS1jb2RlLXNlY3Rp b24pCiAgICAoZGVmaW5lLWtleSBtYXAgWyhjb250cm9sIGMpIChjb250cm9sID8+KV0gICdzcGVj bWFuLWV4Y2x1ZGUtY29kZS1yZWdpb24pCiAgICAoZGVmaW5lLWtleSBtYXAgWyhjb250cm9sIGMp ID97XSAgICAgICAgICAgICdzcGVjbWFuLW9wZW4tZS1jb2RlLWJsb2NrKQogICAgKGRlZmluZS1r ZXkgbWFwIFsoY29udHJvbCBjKSAoY29udHJvbCBkKV0gICAnc3BlY21hbi1kZXNjcmliZS1jb250 ZXh0KQogICAgKGRlZmluZS1rZXkgbWFwICJcQy1jXEMtYyIgICAgICAgICAgICAgICAgICAnY29t bWVudC1yZWdpb24pCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLWNcQy11IiAgICAgICAgICAgICAg ICAgICdzcGVjbWFuLXVuY29tbWVudC1yZWdpb24pCiAgICAoZGVmaW5lLWtleSBtYXAgWyhtZXRh IHEpXSAgICAgICAgICAgICAgICAgICdzcGVjbWFuLXJlYWxpZ24tY29tbWVudCkKCShkZWZpbmUt a2V5IG1hcCBbKGNvbnRyb2wgZCldICAgICAgICAgICAgICAgJ3NwZWNtYW4ta2lsbC1lbnRpcmUt bGluZSkKCShkZWZpbmUta2V5IG1hcCBbKHNoaWZ0IGluc2VydCldICAgICAgICAgICAgJ3NwZWNt YW4teWFuaykKICAgIG1hcCkKICAiS2V5bWFwIHVzZWQgaW4gU3BlY21hbiBtb2RlLiIKICApCgo7 OyBUT0RPOiBub3Qgc3VyZSB3aGF0IHRoaXMgaXMgZm9yLCBidXQgaXQncyBkaXNhYmxlZCBhbG9u Zwo7OyAgICAgICB3aXRoIHRoZSByZXN0IG9mIGhpZGUtY29tbWVudHMKOzsoZGVmY29uc3QgaGlk ZS1pZmRlZi1tb2RlLXByZWZpeC1rZXkgWyhjb250cm9sIGMpIEBdCjs7ICAiUHJlZml4IGtleSBm b3IgYWxsIEhpZGUtSWZkZWYgbW9kZSBjb21tYW5kcy4iKQoKCjs7ID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KOzsgU1BFQ01BTiBGT05UTE9DSyBTVVBQ T1JUCjs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KGRlZnZhciBzcGVjbWFuLW1vZGUtc3ludGF4LXRhYmxlIG5pbAogICJTeW50YXggdGFibGUgdXNl ZCBpbiBzcGVjbWFuLW1vZGUgYnVmZmVycy4iKQoKKGRlZmNvbnN0IHNwZWNtYW4tZm9udC1sb2Nr LWtleXdvcmRzIG5pbAogICJEZWZhdWx0IGhpZ2hsaWdodGluZyBmb3IgU3BlY21hbiBtb2RlLiIp CgooZGVmY29uc3Qgc3BlY21hbi1mb250LWxvY2sta2V5d29yZHMtMSBuaWwKICAiU3ViZHVlZCBs ZXZlbCBoaWdobGlnaHRpbmcgZm9yIFNwZWNtYW4gbW9kZS4iKQoKKGRlZmNvbnN0IHNwZWNtYW4t Zm9udC1sb2NrLWtleXdvcmRzLTIgbmlsCiAgIk1lZGl1bSBsZXZlbCBoaWdobGlnaHRpbmcgZm9y IFNwZWNtYW4gbW9kZS4KU2VlIGFsc28gYHNwZWNtYW4tZm9udC1sb2NrLWV4dHJhLXR5cGVzJy4i KQoKKGRlZmNvbnN0IHNwZWNtYW4tZm9udC1sb2NrLWtleXdvcmRzLTMgbmlsCiAgIkdhdWR5IGxl dmVsIGhpZ2hsaWdodGluZyBmb3IgU3BlY21hbiBtb2RlLgpTZWUgYWxzbyBgc3BlY21hbi1mb250 LWxvY2stZXh0cmEtdHlwZXMnLiIpCgoobGV0IAogICAgKAogICAgIChzcGVjbWFuLXR5cGVzLWtl eXdvcmRzCiAgICAgIChldmFsLXdoZW4tY29tcGlsZQogICAgICAgIChjb25jYXQKICAgICAgICAg c3BlY21hbi1zeW1ib2wtYmVnaW4tcmVnZXhwCiAgICAgICAgICJcXCgiCiAgICAgICAgIChyZWdl eHAtb3B0CiAgICAgICAgICAnKAogICAgICAgICAgICA7OyBwcmVkZWZpbmVkIHR5cGVzCiAgICAg ICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgImJpdCIgImJpdHMiICJib29s IiAiYnl0ZSIgImJ5dGVzIgogICAgICAgICAgICAiaW50IiAidWludCIgImxvbmciICJuaWJibGUi ICJpbmRleCIKICAgICAgICAgICAgImZpbGUiICJzdHJpbmciCiAgICAgICAgICAgICJ0aW1lIiAi ZV90aW1lX3VuaXRzIgogICAgICAgICAgICAic2VtYXBob3JlIiAibWVzc2FnZV9sb2dnZXIiCiAg ICAgICAgICAgICJ1bnR5cGVkIgoKICAgICAgICAgICAgOzsgcG9ydCB0eXBlcwogICAgICAgICAg ICA7OyAtLS0tLS0tLS0tCiAgICAgICAgICAgICJhbnlfcG9ydCIgImFueV9idWZmZXJfcG9ydCIg ImFueV9jYWxsX3BvcnQiICJhbnlfZXZlbnRfcG9ydCIKICAgICAgICAgICAgImFueV9tZXRob2Rf cG9ydCIgImFueV9zaW1wbGVfcG9ydCIKCiAgICAgICAgICAgIDs7IHNlcXVlbmNlIHR5cGVzCiAg ICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICJhbnlfc2VxdWVuY2UiICJh bnlfc2VxdWVuY2VfaXRlbSIgImFueV9zZXF1ZW5jZV9kcml2ZXIiCgogICAgICAgICAgICApKQog ICAgICAgICAiXFwpIgogICAgICAgICBzcGVjbWFuLXN5bWJvbC1lbmQtcmVnZXhwKSkpCgogICAg IChzcGVjbWFuLWNvbnN0YW50LWtleXdvcmRzCiAgICAgIChldmFsLXdoZW4tY29tcGlsZQogICAg ICAgIChjb25jYXQKICAgICAgICAgc3BlY21hbi1zeW1ib2wtYmVnaW4tcmVnZXhwCiAgICAgICAg ICJcXCgiCiAgICAgICAgIChyZWdleHAtb3B0CiAgICAgICAgICAnKAogICAgICAgICAgICA7OyB0 eXBlIGNvbnN0YW50cwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAi VFJVRSIgIkZBTFNFIiAiVU5ERUYiICJOVUxMIiAiTUFYX0lOVCIgIk1JTl9JTlQiICJNQVhfVUlO VCIKCiAgICAgICAgICAgIDs7IGVycm9yIGNvbnN0YW50cwogICAgICAgICAgICA7OyAtLS0tLS0t LS0tLS0tLS0KICAgICAgICAgICAgIkVSUk9SIiAiRVJST1JfQlJFQUtfUlVOIiAiRVJST1JfQVVU T01BVElDIgogICAgICAgICAgICAiRVJST1JfQ09OVElOVUUiICJXQVJOSU5HIiAiSUdOT1JFIgoK ICAgICAgICAgICAgOzsgcmFkaXggY29uc3RhbnRzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0t LS0tLQogICAgICAgICAgICAiQklOIiAiREVDIiAiSEVYIgogICAgICAgICAgICApKQogICAgICAg ICAiXFwpIgogICAgICAgICBzcGVjbWFuLXN5bWJvbC1lbmQtcmVnZXhwKSkpCgogICAgIChzcGVj bWFuLW1hY3JvLWtleXdvcmRzCiAgICAgIChjb25jYXQKICAgICAgICI8Ijs7c3BlY21hbi1zeW1i b2wtYmVnaW4tcmVnZXhwCiAgICAgICAiXFwoIgogICAgICAgCiAgICAgICAiXFwoPzpbXiddK1wn IgogICAgICAgIlxcKCIKICAgICAgICJzdGF0ZW1lbnQiCiAgICAgICAiXFx8IgogICAgICAgImFj dGlvbiIKICAgICAgICJcXHwiCiAgICAgICAiY29tbWFuZCIKICAgICAgICJcXHwiCiAgICAgICAi c3RydWN0X21lbWJlciIKICAgICAgICJcXHwiCiAgICAgICAiZXhwIgogICAgICAgIlxcfCIKICAg ICAgICJ0eXBlIgogICAgICAgIlxcfCIKICAgICAgICJibG9jayIKICAgICAgICJcXHwiCiAgICAg ICAibnVtIgogICAgICAgIlxcfCIKICAgICAgICJmaWxlIgogICAgICAgIlxcKSIKICAgICAgIHNw ZWNtYW4tc3ltYm9sLWVuZC1yZWdleHAKICAgICAgICJcXCkiCiAgICAgICAgIAogICAgICAgIlxc fCIKICAgICAgICAgCiAgICAgICAiXFwoPzpcXCg/OlteJ10rXCdcXCk/IgogICAgICAgIlxcKD86 IgogICAgICAgInN0YXRlbWVudCIgCiAgICAgICAiXFx8IgogICAgICAgImFjdGlvbiIgCiAgICAg ICAiXFx8IgogICAgICAgImNvbW1hbmQiIAogICAgICAgIlxcfCIKICAgICAgICJzdHJ1Y3RfbWVt YmVyIiAKICAgICAgICJcXHwiCiAgICAgICAiZXhwIiAKICAgICAgICJcXHwiCiAgICAgICAibmFt ZSIgCiAgICAgICAiXFx8IgogICAgICAgImZpbGUiIAogICAgICAgIlxcfCIKICAgICAgICJudW0i IAogICAgICAgIlxcfCIKICAgICAgICJibG9jayIgCiAgICAgICAiXFx8IgogICAgICAgIlR5cGUi IAogICAgICAgIlxcfCIKICAgICAgICJhbnkiIAogICAgICAgIlxcKSIKICAgICAgICJcXCg/Onxb QS1aYS16MC05X10rXFwpPyIKICAgICAgICJcXCkiCgogICAgICAgIlxcfCIKCiAgICAgICAiXFwo PzoiCiAgICAgICAiWzAtOV0rIgogICAgICAgIlxcfCIKICAgICAgICJcXD8iCiAgICAgICAiXFwp IgoKICAgICAgICJcXCkiCiAgICAgICAiPiI7O3NwZWNtYW4tc3ltYm9sLWVuZC1yZWdleHAKICAg ICAgICkpCgogICAgIChzcGVjbWFuLWZ1bmN0aW9uLWtleXdvcmRzCiAgICAgIChldmFsLXdoZW4t Y29tcGlsZQoJKGNvbmNhdAogICAgICAgICBzcGVjbWFuLXN5bWJvbC1iZWdpbi1yZWdleHAKICAg ICAgICAgIlxcKCIKICAgICAgICAgKHJlZ2V4cC1vcHQKICAgICAgICAgICcoCiAgICAgICAgICAg IDs7IGxpc3QgcHNldWRvIG1ldGhvZHMKICAgICAgICAgICAgOzsgLS0tLS0tLS0tLS0tLS0tLS0t LQoKICAgICAgICAgICAgOzsgbGlzdCAtIG1vZGlmeQogICAgICAgICAgICAiYWRkIiAiYWRkMCIg ImNsZWFyIiAiZGVsZXRlIiAiZmFzdF9kZWxldGUiICJpbnNlcnQiICJwb3AiICJwb3AwIgogICAg ICAgICAgICAicHVzaCIgInB1c2gwIiAicmVzaXplIgoKICAgICAgICAgICAgOzsgbGlzdCAtIGdl bmVyYWwKICAgICAgICAgICAgImFwcGx5IiA7OyAiY29weSIgLSBhbHNvIGZvciBhbnlfc3RydWN0 CiAgICAgICAgICAgICJjb3VudCIgImV4aXN0cyIgOzsgImZpZWxkIiAtIGFscmVhZHkgZXhpc3Rz CiAgICAgICAgICAgICJmaXJzdCIgImZpcnN0X2luZGV4IiAiZ2V0X2luZGljZXMiICJoYXMiICJp c19hX3Blcm11dGF0aW9uIiAiaXNfZW1wdHkiCiAgICAgICAgICAgICJsYXN0IiAibGFzdF9pbmRl eCIKICAgICAgICAgICAgIm1heCIgIm1heF9pbmRleCIgIm1heF92YWx1ZSIKICAgICAgICAgICAg Im1pbiIgIm1pbl9pbmRleCIgIm1pbl92YWx1ZSIKICAgICAgICAgICAgInJldmVyc2UiICJzaXpl IiAic29ydCIgInNvcnRfYnlfZmllbGQiICJzcGxpdCIgInRvcCIgInRvcDAiICJ1bmlxdWUiCgog ICAgICAgICAgICA7OyBsaXN0IC0gc3VibGlzdAogICAgICAgICAgICAiYWxsIiAiYWxsX2luZGlj ZXMiCgogICAgICAgICAgICA7OyBsaXN0IC0gbWF0aCBhbmQgbG9naWMKICAgICAgICAgICAgImFu ZF9hbGwiICJhdmVyYWdlIiAib3JfYWxsIiAicHJvZHVjdCIgInN1bSIKCiAgICAgICAgICAgIDs7 IGxpc3QgLSBjcmMKICAgICAgICAgICAgImNyY184IiAiY3JjXzMyIiAiY3JjXzMyX2ZsaXAiCgog ICAgICAgICAgICA7OyBsaXN0IC0ga2V5ZWQgbGlzdAogICAgICAgICAgICAia2V5IiAia2V5X2lu ZGV4IiAia2V5X2V4aXN0cyIKCiAgICAgICAgICAgIAogICAgICAgICAgICA7OyBzdHJpbmcgcHNl dWRvIG1ldGhvZHMKICAgICAgICAgICAgOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAg ICAgICA7OyBzdHJpbmcgLSBjb252ZXJ0IHRvIHN0cmluZwogICAgICAgICAgICAiYXBwZW5kIiAi YXBwZW5kZiIgInF1b3RlIiAidG9fc3RyaW5nIgoKICAgICAgICAgICAgOzsgc3RyaW5nIC0gbWFu aXB1bGF0ZSBzdWJzdHJpbmdzCiAgICAgICAgICAgICJzdHJfam9pbiIgInN0cl9zcGxpdCIgInN0 cl9zcGxpdF9hbGwiICJzdHJfc3ViIgoKICAgICAgICAgICAgOzsgc3RyaW5nIC0gbWFuaXB1bGF0 ZSByZWd1bGFyIGV4cHJlc3Npb25zCiAgICAgICAgICAgICJzdHJfbWF0Y2giICJzdHJfcmVwbGFj ZSIgInN0cl9pbnNlbnNpdGl2ZSIKCiAgICAgICAgICAgIDs7IHN0cmluZyAtIGNoYW5nZSB0aGUg cmFkaXggb2YgYSBudW1lcmljIGV4cHJlc3Npb24KICAgICAgICAgICAgImJpbiIgImRlYyIgImhl eCIKCiAgICAgICAgICAgIDs7IHN0cmluZyAtIG1hbmlwdWxhdGUgdGhlIGxlbmd0aCBvZiBhbiBl eHByZXNzaW9uCiAgICAgICAgICAgICJzdHJfY2hvcCIgInN0cl9lbXB0eSIgInN0cl9leGFjdGx5 IiAic3RyX2xlbiIgInN0cl9wYWQiCgogICAgICAgICAgICA7OyBzdHJpbmcgLSB1c2VmdWwgd2l0 aGluIG1hY3JvcwogICAgICAgICAgICAicXVvdGUiICJzdHJfZXhwYW5kX2RvdHMiCgogICAgICAg ICAgICA7OyBzdHJpbmcgLSBtYW5pcHVsYXRlIHRoZSBjYXNlIG9mIGNoYXJhY3RlcnMgd2l0aGlu IGEgc3RyaW5nCiAgICAgICAgICAgICJzdHJfbG93ZXIiICJzdHJfdXBwZXIiICJzdHJfaW5zZW5z aXRpdmUiCgoKICAgICAgICAgICAgOzsgZGVlcCBjb3B5IGFuZCBjb21wYXJlCiAgICAgICAgICAg IDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAiZGVlcF9jb3B5IiAiZGVlcF9j b21wYXJlIiAiZGVlcF9jb21wYXJlX3BoeXNpY2FsIgoKCiAgICAgICAgICAgIDs7IGJpdHdpc2Ug b3BlcmF0aW9ucwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAg ImJpdHdpc2VfYW5kIiAiYml0d2lzZV9vciIgImJpdHdpc2VfeG9yIgogICAgICAgICAgICAiYml0 d2lzZV9uYW5kIiAiYml0d2lzZV9ub3IiICJiaXR3aXNlX3hub3IiCgogICAgICAgICAgICAKICAg ICAgICAgICAgOzsgYXJpdGhtZXRpYwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tCiAgICAgICAg ICAgIDs7ICJtaW4iICJtYXgiIC0gYWxyZWFkeSBpbiBsaXN0CiAgICAgICAgICAgICJhYnMiICJv ZGQiICJldmVuIiAiaWxvZzIiICJpbG9nMTAiICJpcG93IiAiaXNxcnQiICJkaXZfcm91bmRfdXAi CgoKICAgICAgICAgICAgOzsgb3V0cHV0CiAgICAgICAgICAgIDs7IC0tLS0tLQogICAgICAgICAg ICAib3V0IiAib3V0ZiIKCgogICAgICAgICAgICA7OyBjb25maWd1cmF0aW9uIHJvdXRpbmVzCiAg ICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgInNldF9jb25m aWciICJnZXRfY29uZmlnIiAid3JpdGVfY29uZmlnIiAicmVhZF9jb25maWciCiAgICAgICAgICAg ICJzZXRfcmV0YWluX3N0YXRlIiAiZ2V0X3JldGFpbl9zdGF0ZSIKCgogICAgICAgICAgICA7OyBz cGVjbWFuIGNvbW1hbmQKICAgICAgICAgICAgOzsgLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAg ICJzcGVjbWFuIgogICAgICAgICAgICAKCiAgICAgICAgICAgIDs7IG9zIGludGVyZmFjZSByb3V0 aW5lcwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgInNw YXduIiAic3Bhd25fY2hlY2siICJzeXN0ZW0iICJvdXRwdXRfZnJvbSIgIm91dHB1dF9mcm9tX2No ZWNrIgogICAgICAgICAgICAiZ2V0X3N5bWJvbCIgImRhdGVfdGltZSIgImdldHBpZCIKCgogICAg ICAgICAgICA7OyBTaW11bGF0aW9uLVJlbGF0ZWQgUm91dGluZXMKICAgICAgICAgICAgOzsgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICJzaW11bGF0b3JfY29tbWFuZCIg InN0b3BfcnVuIgoKCiAgICAgICAgICAgIDs7IGxvdyBsZXZlbCBmaWxlIHJvdXRpbmVzCiAgICAg ICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICJmaWxlcy53cml0 ZV9zdHJpbmdfbGlzdCIgImZpbGVzLmFkZF9maWxlX3R5cGUiCiAgICAgICAgICAgICJmaWxlcy5j bG9zZSIgImZpbGVzLmZsdXNoIiAiZmlsZXMub3BlbiIKICAgICAgICAgICAgImZpbGVzLnJlYWQi ICJmaWxlcy5yZWFkX2xvYiIKICAgICAgICAgICAgImZpbGVzLndyaXRlIiAiZmlsZXMud3JpdGVf bG9iIgogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIDs7IHJlYWRpbmcgYW5k IHdyaXRpbmcgc3RydWN0cwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAgICAgICAgICAgImZpbGVzLnJlYWRfYXNjaWlfc3RydWN0IiAiZmlsZXMucmVhZF9iaW5h cnlfc3RydWN0IgogICAgICAgICAgICAiZmlsZXMud3JpdGVfYXNjaWlfc3RydWN0IiAiZmlsZXMu d3JpdGVfYmluYXJ5X3N0cnVjdCIKCgogICAgICAgICAgICA7OyBPbi10aGUtRmx5IEdhcmJhZ2Ug Q29sbGVjdGlvbiBSb3V0aW5lCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgImRvX290Zl9nYyIKCiAgICAgICAgICAgIAogICAg ICAgICAgICA7OyBDb25zdHJ1Y3RzIGZvciBQYWNraW5nIGFuZCBVbnBhY2tpbmcKICAgICAgICAg ICAgOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICJw YWNrIiAidW5wYWNrIiAic3dhcCIgImRvX3BhY2siICJkb191bnBhY2siCgoKICAgICAgICAgICAg OzsgZHV0IGVycm9yIHJvdXRpbmVzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLQog ICAgICAgICAgICAiZHV0X2Vycm9yIiAiZHV0X2Vycm9yZiIgInNldF9jaGVjayIKCgogICAgICAg ICAgICA7OyB1c2VyIGVycm9yIHJvdXRpbmVzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0t LS0tLS0KICAgICAgICAgICAgImVycm9yIiAid2FybmluZyIgImZhdGFsIgoKCiAgICAgICAgICAg IDs7IG1lc3NhZ2VzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tCiAgICAgICAgICAgICJtZXNzYWdl IiAibWVzc2FnZWYiCgoKICAgICAgICAgICAgOzsgcHJlZGVmaW5lZCBnbG9iYWwgdGVzdCBwaGFz ZSBtZXRob2RzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICAgICAgICAgICAic2V0dXBfdGVzdCIgImdlbmVyYXRlX3Rlc3QiICJzdGFydF90ZXN0 IiAicnVuX3Rlc3QiICJleHRyYWN0X3Rlc3QiCiAgICAgICAgICAgICJjaGVja190ZXN0IiAiZmlu YWxpemVfdGVzdCIKCiAgICAgICAgICAgIAogICAgICAgICAgICA7OyBwcmVkZWZpbmVkIHN5cyBt ZXRob2RzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAg IndhdmVfc2V0dXAiICJzZXR1cCIKCiAgICAgICAgICAgIAogICAgICAgICAgICA7OyBwcmVkZWZp bmVkIGFueV9zdHJ1Y3QgbWV0aG9kcwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICAgICAgICAgICAiaW5pdCIgInByZV9nZW5lcmF0ZSIgInBvc3RfZ2VuZXJh dGUiICJjaGVjayIgImV4dHJhY3QiICJmaW5hbGl6ZSIKICAgICAgICAgICAgInF1aXQiICJydW4i ICJyZXJ1biIgImNvcHkiICJkb19wcmludCIgInByaW50X2xpbmUiCgogICAgICAgICAgICAKICAg ICAgICAgICAgOzsgcHJlZGVmaW5lZCB1bml0LXJlbGF0ZWQgYW55X3N0cnVjdCBtZXRob2RzCiAg ICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICAgICAgICAgICAiZ2V0X3VuaXQiICJnZXRfZW5jbG9zaW5nX3VuaXQiICJ0cnlfZW5jbG9zaW5n X3VuaXQiICJzZXRfdW5pdCIKCiAgICAgICAgICAgIAogICAgICAgICAgICA7OyBwcmVkZWZpbmVk IGFueV91bml0IG1ldGhvZHMKICAgICAgICAgICAgOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgICAgICAgICAgICJoZGxfcGF0aCIgImZ1bGxfaGRsX3BhdGgiICJlX3BhdGgiICJhZ2Vu dCIgImdldF9wYXJlbnRfdW5pdCIKCiAgICAgICAgICAgIAogICAgICAgICAgICA7OyBsYW5ndWFn ZSBwc2V1ZG8tbWV0aG9kcwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICAgICAgICAgICAiZGVjbGFyZWRfdHlwZSIgInR5cGUiICJmaWVsZCIgInVuc2FmZSIgInNvdXJj ZV9sb2NhdGlvbiIKICAgICAgICAgICAgInNvdXJjZV9tZXRob2QiICJhc19hIiAiYWxsX3ZhbHVl cyIKICAgICAgICAgICAgImluX3NlcXVlbmNlIiAiaW5fdW5pdCIKICAgICAgICAgICAgInVuc2Fm ZSIKCiAgICAgICAgICAgIAogICAgICAgICAgICA7OyBzZW1hcGhvcmUgbWV0aG9kcwogICAgICAg ICAgICA7OyAtLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAidXAiICJkb3duIiAidHJ5X3Vw IiAidHJ5X2Rvd24iICJzZXRfdmFsdWUiICJnZXRfdmFsdWUiCiAgICAgICAgICAgICJzZXRfbWF4 X3ZhbHVlIiAiZ2V0X21heF92YWx1ZSIgImxvY2siICJyZWxlYXNlIgoKICAgICAgICAgICAgCiAg ICAgICAgICAgIDs7IHRjbSByZWxhdGVkIG1ldGhvZHMKICAgICAgICAgICAgOzsgLS0tLS0tLS0t LS0tLS0tLS0tLQogICAgICAgICAgICAiZ2V0X2N1cnJlbnRfaGFuZGxlIiAiZ2V0X2hhbmRsZXNf YnlfbmFtZSIgImdldF9oYW5kbGVzX2J5X3R5cGUiCiAgICAgICAgICAgICJraWxsIiAidGVybWlu YXRlX2JyYW5jaCIgInRlcm1pbmF0ZV90aHJlYWQiCgogICAgICAgICAgICAKICAgICAgICAgICAg OzsgY292ZXJhZ2UgbWV0aG9kcwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLS0tCiAgICAg ICAgICAgICJzZXRfZXh0ZXJuYWxfY292ZXIiICJ3cml0ZV9jb3Zlcl9maWxlIgoKICAgICAgICAg ICAgImNvdmVycy5pbmNsdWRlX3Rlc3RzIgogICAgICAgICAgICAiY292ZXJzLnNldF93ZWlnaHQi ICJjb3ZlcnMuc2V0X2F0X2xlYXN0IiAiY292ZXJzLnNldF9jb3ZlciIKICAgICAgICAgICAgImNv dmVycy5nZXRfY29udHJpYnV0aW5nX3J1bnMiICJjb3ZlcnMuZ2V0X3VuaXF1ZV9idWNrZXRzIgog ICAgICAgICAgICAiY292ZXJzLmdldF9vdmVyYWxsX2dyYWRlIiAiY292ZXJzLmdldF9lY292X25h bWUiCiAgICAgICAgICAgICJjb3ZlcnMuZ2V0X3Rlc3RfbmFtZSIgImNvdmVycy5nZXRfc2VlZCIK CiAgICAgICAgICAgICJyYW5nZSIKCgogICAgICAgICAgICA7OyBnZW5lcmF0aW9uIG1ldGhvZHMK ICAgICAgICAgICAgOzsgLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICJpc19hbGxfaXRl cmF0aW9ucyIgInJlc2V0X3NvZnQiICJzaXplIiAidmFsdWUiICJyZWFkX29ubHkiCiAgICAgICAg ICAgICJnZW5fYmVmb3JlX3N1YnR5cGVzIiAicmVzZXRfZ2VuX2JlZm9yZV9zdWJ0eXBlcyIKCgog ICAgICAgICAgICA7OyB0ZW1wb3JhbCBtZXRob2RzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0t LS0tLS0KICAgICAgICAgICAgInRydWUiICJjaGFuZ2UiICJmYWxsIiAicmlzZSIKCgogICAgICAg ICAgICA7OyBzZXF1ZW5jZSBtZXRob2RzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0K CiAgICAgICAgICAgIDs7IGludGVyZmFjZSAtIGFueV9zZXF1ZW5jZV9pdGVtCiAgICAgICAgICAg ICJnZXRfZGVwdGgiICJnZXRfZHJpdmVyIiAibmljZV9zdHJpbmciCiAgICAgICAgICAgIAogICAg ICAgICAgICA7OyBpbnRlcmZhY2UgLSBhbnlfc2VxdWVuY2UKICAgICAgICAgICAgImdldF9pbmRl eCIgImdyYWIiICJpc19ibG9ja2VkIiAiaXNfcmVsZXZhbnQiCiAgICAgICAgICAgICJzdGFydF9z ZXF1ZW5jZSIgImJvZHkiICJzdG9wIiAidW5ncmFiIgogICAgICAgICAgICAibWlkX2RvIgogICAg ICAgICAgICAicG9zdF9ib2R5IiAicG9zdF9kbyIgInBvc3RfdHJhY2UiCiAgICAgICAgICAgICJw cmVfYm9keSIgInByZV9kbyIKICAgICAgICAgICAgOzsgaW5oZXJpdGVkIGZyb20gYW55X3NlcXVl bmNlX2l0ZW06CiAgICAgICAgICAgIDs7ICJnZXRfZGVwdGgiICJnZXRfZHJpdmVyIiAibmljZV9z dHJpbmciCgogICAgICAgICAgICA7OyBpbnRlcmZhY2UgLSBhbnlfc2VxdWVuY2VfZHJpdmVyCiAg ICAgICAgICAgICJjdXJyZW50X2dyYWJiZXIiICJnZXRfY3VycmVudF9pdGVtIiAiZ2V0X2luZGV4 IiAiZ2V0X2l0ZW1fdHJhY2VfbGlzdCIKICAgICAgICAgICAgImdldF9uZXh0X2l0ZW0iICJnZXRf bnVtX2l0ZW1zX3NlbnQiICJnZXRfc2VxdWVuY2VfdHJhY2VfbGlzdCIKICAgICAgICAgICAgImdl dF90cmFjZV9saXN0IiAiaXNfZ3JhYmJlZCIgOzsgImxhc3QiIC0gYWxzbyBrZXl3b3JkIG9mIGxp c3QKICAgICAgICAgICAgInRyeV9uZXh0X2l0ZW0iICJjaGVja19pc19yZWxldmFudCIgImRlbGF5 X2Nsb2NrIiAiZ2V0X3N1Yl9kcml2ZXJzIgogICAgICAgICAgICAicmVhZCIgInJlZ2VuZXJhdGVf ZGF0YSIgInNlbmRfdG9fYmZtIiAid2FpdF9mb3Jfc2VxdWVuY2VzIiAid3JpdGUiCgoKICAgICAg ICAgICAgOzsgcG9ydCBtZXRob2RzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLQogICAgICAg ICAgICA7OyBUT0RPOiBhZGQgY3ZsIHN0dWZmCiAgICAgICAgICAgICJiaW5kIgogICAgICAgICAg ICAKICAgICAgICAgICAgKSkKICAgICAgICAgIlxcKSIKICAgICAgICAgIlsgXHRdKigiKSA7OyBO T1RFOiBpdCdzIHBvc3NpYmxlIHRvIGFsc28gYWRkIFxuIHRvIHRoZSBzZXBhcmF0b3JzCiAgICAg ICAgICAgICAgICAgICAgOzsgYmVmb3JlIHRoZSBvcGVuaW5nIHBhcmVuLCBidXQgdGhhdCBtZXNz ZXMgdXAgZm9udC1sb2NrLgoKICAgICAgICApKQoKICAgICAoc3BlY21hbi1rZXl3b3JkcwogICAg ICAoZXZhbC13aGVuLWNvbXBpbGUKCShjb25jYXQKICAgICAgICAgc3BlY21hbi1zeW1ib2wtYmVn aW4tcmVnZXhwCiAgICAgICAgICJcXCgiIAogICAgICAgICAocmVnZXhwLW9wdAogICAgICAgICAg JygKICAgICAgICAgICAgOzsgbGFuZ3VhZ2Uga2V5d29yZHMKICAgICAgICAgICAgOzsgLS0tLS0t LS0tLS0tLS0tLS0KICAgICAgICAgICAgOzsgImFsc28iICJvbmx5IiAiaW5saW5lIiAidW5kZWZp bmVkIiAiZW1wdHkiIC0gaGFuZGxlZCB3aGVuIHByZWZpeGVkIGJ5ICJpcyIKICAgICAgICAgICAg ImlzIiAiYSIgImFzIiAiY29tcHV0ZWQiICJ3aXRoIgogICAgICAgICAgICAiYXNzZXJ0IiAiY29t cHV0ZSIgImltcG9ydCIgIm5ldyIgInRyeSIKCiAgICAgICAgICAgICJzdHJ1Y3QiICJleHRlbmQi ICJ1bml0IiAid2hlbiIgImxpa2UiCiAgICAgICAgICAgIDs7IGRlZmluZS9pZmRlZi9ldGMnIC0g aGFuZGxlZCBkaWZmZXJlbnRseQogICAgICAgICAgICAiZGVmX2VyciIKICAgICAgICAgICAgCiAg ICAgICAgICAgICJwcmludCIgInJlcG9ydCIKCiAgICAgICAgICAgICJsaXN0IiAib2YiICJrZXki CgogICAgICAgICAgICAicHJpdmF0ZSIgInBhY2thZ2UiICJwcm90ZWN0ZWQiCgogICAgICAgICAg ICA7OyBoYW5kbGVkIHNlcGVyYXRlbHkgc28gdGhleSBjYW4gaGF2ZSBhIGRpZmZlcmVudCBmYWNl IGZvciBlbXBoYXNpcwogICAgICAgICAgICA7OyAicmVzdWx0IiAicmV0dXJuIiAibWUiICJpdCIg ImluZGV4IiAicHJldiIKCiAgICAgICAgICAgICJyb3V0aW5lIiAidHlwZSIgIm1ldGhvZF90eXBl IiAidmFyIiAiYXR0cmlidXRlIgoKICAgICAgICAgICAgCiAgICAgICAgICAgIDs7IHBhY2tpbmcg a2V5d29yZHMKICAgICAgICAgICAgOzsgLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAicGFj a2luZy5sb3ciICJwYWNraW5nLmxvd19iaWdfZW5kaWFuIiAicGFja2luZy5oaWdoIgogICAgICAg ICAgICAicGFja2luZy5oaWdoX2JpZ19lbmRpYW4iICJwYWNraW5nLm5ldHdvcmsiICJwYWNraW5n Lmdsb2JhbF9kZWZhdWx0IiAKICAgICAgICAgICAgCgogICAgICAgICAgICA7OyBsb2dpYyBrZXl3 b3JkcwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAiYW5kIiAib3Ii ICJ4b3IiICJub3QiCiAgICAgICAgICAgICJuYW5kIiAibm9yIiAibnhvciIKCgogICAgICAgICAg ICA7OyBjb250cm9sIGZsb3cga2V5d29yZHMKICAgICAgICAgICAgOzsgLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgICAgICAgICAgICJpZiIgInRoZW4iICJlbHNlIgogICAgICAgICAgICAiY2FzZSIg ImRlZmF1bHQiCiAgICAgICAgICAgICJ3aGlsZSIgImRvIiAicmVwZWF0IiAidW50aWwiICJjb250 aW51ZSIgImJyZWFrIgogICAgICAgICAgICAiZm9yIiAiZWFjaCIgImluIiAidXNpbmciICJyZXZl cnNlIiA7OyAiaW5kZXgiIC0gYWxzbyBsYW5ndWFnZSBrZXl3b3JkCiAgICAgICAgICAgICJmcm9t IiAidG8iICJzdGVwIiA7OyAiZG93biB0byIgLSBoYW5kbGVkIGRpZmZlcmVudGx5CiAgICAgICAg ICAgICJtYXRjaGluZyIKCiAgICAgICAgICAgIAogICAgICAgICAgICA7OyBnZW5lcmF0aW9uIGtl eXdvcmRzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgImJl Zm9yZSIgImtlZXAiICJrZWVwaW5nIiAic29mdCIgInNlbGVjdCIgImdlbiIKICAgICAgICAgICAg Im90aGVycyIgInBhc3MiICJlZGdlcyIgIm1pbiIgIm1heCIKCiAgICAgICAgICAgIAogICAgICAg ICAgICA7OyBjb3ZlcmFnZSBrZXl3b3JkcwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLS0t LQogICAgICAgICAgICAiY292ZXIiICJpdGVtIiAidHJhbnNpdGlvbiIgImNyb3NzIiA7OyAidXNp bmciIC0gYWxzbyBpbiBjb250cm9sIGZsb3cKICAgICAgICAgICAgImlnbm9yZSIgImlsbGVnYWwi ICJwZXJfaW5zdGFuY2UiICJub19jb2xsZWN0IiAibm9fdHJhY2UiCiAgICAgICAgICAgICJhdF9s ZWFzdCIgInJhbmdlcyIgInJhZGl4IiA7OyAid2hlbiIgLSBhbHNvIGluIGxhbmd1YWdlCiAgICAg ICAgICAgIDs7IG5hbWUsIHRleHQsIHdlaWdodCAtIHRoZXNlIGFyZSBub3QgcHJvcGVyIGtleXdv cmRzIGFuZCBhcmUgdmFsaWQgaW4KICAgICAgICAgICAgOzsgb3RoZXIgY29udGV4dHMgYXMgd2Vs bCwgc28gY29tbWVudGVkIG91dC4KCiAgICAgICAgICAgIAogICAgICAgICAgICA7OyB0ZW1wb3Jh bCBrZXl3b3JkcwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICA7 OyBsb2dpYyAtICJub3QiICJhbmQiICJvciIKICAgICAgICAgICAgImV2ZW50dWFsbHkiICJmYWls IiAiZGV0YWNoIiAiZGVsYXkiICJjeWNsZSIgImNvbnN1bWUiICJleGVjIgogICAgICAgICAgICAi bm93IiA7OyAtIGRlc2NyaWJlZCBhcyBsb2dpYyBpbiB0aGUgZS1yZWYKICAgICAgICAgICAgImFz c3VtZSIgImV4cGVjdCIgIndhaXQiICJzeW5jIiAib24iOzsgImV2ZW50IiAtIGhhbmRsZWQgZGlm ZmVyZW50bHkKICAgICAgICAgICAgImV2ZW50IiAic3RhcnQiICJlbWl0IgoKICAgICAgICAgICAg CiAgICAgICAgICAgIDs7IHByZWRlZmluZWQgZXZlbnRzIC0gbW92ZWQgd2l0aCBnZW5lcmFsIGV2 ZW50cyBleHByZXNzaW9uLCBkb2Vzbid0IHdvcmsgaGVyZQogICAgICAgICAgICA7OyAtLS0tLS0t LS0tLS0tLS0tLQogICAgICAgICAgICA7OyJAYW55IiAiQHRpY2tfc3RhcnQiICJAdGlja19lbmQi ICJAc3RhcnRfb2ZfdGVzdCIKICAgICAgICAgICAgOzsiQGVuZF9vZl90ZXN0IiAiQHF1aXQiICJA bmV3X3RpbWUiCgogICAgICAgICAgICA7OyBwb3J0IGtleXdvcmRzCiAgICAgICAgICAgIDs7IC0t LS0tLS0tLS0tLS0KICAgICAgICAgICAgOzsgVE9ETzogYWRkIGN2bCBzdHVmZgogICAgICAgICAg ICAiZGVlcF9jb3B5IiAiZGVlcF9jb21wYXJlIiAiZGVlcF9jb21wYXJlX3BoeXNpY2FsIiAiZGVl cF9hbGwiCiAgICAgICAgICAgICJub3JtYWwiICJyZWZlcmVuY2UiICJpZ25vcmUiCiAgICAgICAg ICAgICJleHRlcm5hbCIgImVtcHR5IiAidW5kZWZpbmVkIgogICAgICAgICAgICAiZm9yY2UiICJp biIgIm91dCIgImlub3V0IgoKICAgICAgICAgICAgOzsgc2VxdWVuY2VzIGtleXdvcmRzCiAgICAg ICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAgICAgInNlcXVlbmNlIgogICAg ICAgICAgICAKICAgICAgICAgICAgOzsgLSBhbnlfc2VxdWVuY2VfaXRlbQogICAgICAgICAgICA7 OyBmaWVsZHM6ICJwYXJlbnRfc2VxdWVuY2UiICJkcml2ZXIiCiAgICAgICAgICAgIAogICAgICAg ICAgICA7OyAtIGFueV9zZXF1ZW5jZQogICAgICAgICAgICA7OyBmaWVsZHM6ICJwYXJlbnRfc2Vx dWVuY2UiICJkcml2ZXIiICJraW5kIgogICAgICAgICAgICA7OyBldmVudHM6CiAgICAgICAgICAg IDs7IkBlbmRlZCIgIkBzdGFydGVkIiAgLS0gbW92ZWQgd2l0aCBvdGhlciBldmVudHMKICAgICAg ICAgICAgCiAgICAgICAgICAgIDs7IC0gYW55X3NlcXVlbmNlX2RyaXZlcgogICAgICAgICAgICA7 OyBmaWVsZHM6ICJiZm1faW50ZXJhY3Rpb25fbW9kZSIgIm1heF9yYW5kb21fY291bnQiCiAgICAg ICAgICAgIDs7ICAgICAgICAgIm1heF9yYW5kb21fZGVwdGgiICJudW1fb2ZfbGFzdF9pdGVtcyIK ICAgICAgICAgICAgOzsgICAgICAgICAiZ2VuX2FuZF9zdGFydF9tYWluIgogICAgICAgICAgICA7 OyBldmVudHM6CiAgICAgICAgICAgIDs7IkBjbG9jayIgIkBpdGVtX2RvbmUiICAtLSBtb3ZlZCB3 aXRoIG90aGVyIGV2ZW50cwogICAgICAgICAgICAKICAgICAgICAgICAgKSkKICAgICAgICAgIlxc KSIKICAgICAgICAgc3BlY21hbi1zeW1ib2wtZW5kLXJlZ2V4cCkKICAgICAgICApKQoKICAgICAo c3BlY21hbi1tdWx0aS13b3JkLWtleXdvcmRzCiAgICAgIDs7IFRPRE86IGRvZXMgZXZhbC13aGVu LWNvbXBpbGUgaGVscCBoZXJlPwogICAgICAoZXZhbC13aGVuLWNvbXBpbGUKICAgICAgICAoY29u Y2F0CiAgICAgICAgIHNwZWNtYW4tc3ltYm9sLWJlZ2luLXJlZ2V4cAogICAgICAgICAiXFwoIgog ICAgICAgICAKICAgICAgICAgIlxcKFxcKD86YWxsXFx8Zmlyc3RcXClbIFx0XG5dK29mXFwpXFx8 IgoKICAgICAgICAgIlxcKGNoZWNrWyBcdFxuXSt0aGF0XFwpXFx8IgogICAgICAgICAgIAogICAg ICAgICAiXFwoZWFjaFsgXHRcbl0rXFwoPzpmaWxlXFx8bGluZVxcKVxcKVxcfCIKICAgICAgICAg IlxcKGluWyBcdFxuXStmaWxlXFwpXFx8IgogICAgICAgICAiXFwoZG93blsgXHRcbl0rdG9cXClc XHwiCiAgICAgICAgICAgCiAgICAgICAgICJcXChpblsgXHRcbl0rcmFuZ2VcXClcXHwiCiAgICAg ICAgICAgCiAgICAgICAgICJcXChpc1sgXHRcbl0rXFwoPzpub3RbIFx0XG5dK1xcKT9hbj9cXClc XHwiCiAgICAgICAgICJcXChpc1sgXHRcbl0rIgogICAgICAgICAiXFwoPzoiCiAgICAgICAgICJh bHNvIgogICAgICAgICAiXFx8IgogICAgICAgICAiZmlyc3QiCiAgICAgICAgICJcXHwiCiAgICAg ICAgICJpbmxpbmVcXCg/OlsgXHRcbl0rb25seVxcKT8iCiAgICAgICAgICJcXHwiCiAgICAgICAg ICJvbmx5IgogICAgICAgICAiXFx8IgogICAgICAgICAiXFwoPzpub3RbIFx0XG5dK1xcKT9lbXB0 eSIKICAgICAgICAgIlxcfCIKICAgICAgICAgInVuZGVmaW5lZCIKICAgICAgICAgIlxcfCIKICAg ICAgICAgIltjQ11bIFx0XG5dK3JvdXRpbmUiCiAgICAgICAgICJcXCkiCiAgICAgICAgICJcXClc XHwiCiAgICAgICAgICJcXChpc1sgXHRcbl0raW5zdGFuY2VcXClcXHwiCiAgICAgICAgICAgCiAg ICAgICAgICJcXChzdGF0ZVsgXHRcbl0rbWFjaGluZVxcKVxcfCIKICAgICAgICAgICAgCiAgICAg ICAgICJcXCh2ZXJpbG9nWyBcdFxuXSsiCiAgICAgICAgICJcXCg/OiIKICAgICAgICAgImNvZGUi CiAgICAgICAgICJcXHwiCiAgICAgICAgICJmdW5jdGlvbiIKICAgICAgICAgIlxcfCIKICAgICAg ICAgImltcG9ydCIKICAgICAgICAgIlxcfCIKICAgICAgICAgInNpbXVsYXRvciIKICAgICAgICAg IlxcfCIKICAgICAgICAgInRhc2siCiAgICAgICAgICJcXHwiCiAgICAgICAgICJ0aW1lIgogICAg ICAgICAiXFx8IgogICAgICAgICAidHJhY2UiCiAgICAgICAgICJcXHwiCiAgICAgICAgICJ2YXJp YWJsZSIKICAgICAgICAgIlxcKSIKICAgICAgICAgIlxcKVxcfCIKCiAgICAgICAgICJcXCh2aGRs WyBcdFxuXSsiCiAgICAgICAgICJcXCg/OiIKICAgICAgICAgImNvZGUiCiAgICAgICAgICJcXHwi CiAgICAgICAgICJkcml2ZXIiCiAgICAgICAgICJcXHwiCiAgICAgICAgICJmdW5jdGlvbiIKICAg ICAgICAgIlxcfCIKICAgICAgICAgIm9iamVjdCIKICAgICAgICAgIlxcfCIKICAgICAgICAgInBy b2NlZHVyZSIKICAgICAgICAgIlxcfCIKICAgICAgICAgInNpbXVsYXRvciIKICAgICAgICAgIlxc fCIKICAgICAgICAgInRpbWUiCiAgICAgICAgICJcXCkiCiAgICAgICAgICJcXClcXHwiCiAgICAg ICAgICAgIAogICAgICAgICAiXFwoW2NDXVsgXHRcbl0rZXhwb3J0XFwpXFx8IgoKICAgICAgICAg OzsgY3ZsIGRlY2xhcmF0aW9ucwogICAgICAgICAiXFwoY3ZsWyBcdFxuXStcXCg/Om1ldGhvZFxc fGNhbGxcXCg/OmJhY2tcXCk/XFwpXFwoPzpbIFx0XG5dK2FzeW5jXFwpXFwpIgogICAgICAgICAg ICAKICAgICAgICAgOzsgcG9ydCBkZWNsYXJhdGlvbgogICAgICAgICAiXFwoXFwoPzpcXCg/Omlu XFx8b3V0XFx8aW50b3V0XFwpWyBcdFxuXStcXCk/c2ltcGxlX3BvcnRbIFx0XG5dK29mXFwpIgog ICAgICAgICAiXFwoXFwoPzppblxcfG91dFxcfGludG91dFxcKVsgXHRcbl0rXFwoPzpidWZmZXJc XHxjYWxsXFx8ZXZlbnRcXHxtZXRob2RcXClfcG9ydFsgXHRcbl0rb2ZcXCkiCgogICAgICAgICAi XFwpIgogICAgICAgICBzcGVjbWFuLXN5bWJvbC1lbmQtcmVnZXhwCiAgICAgICAgICkpCiAgICAg ICkKICAgICApCgogIChzZXRxIHNwZWNtYW4tZm9udC1sb2NrLWtleXdvcmRzCgkobGlzdAogICAg ICAgICA7Oyhjb25zICJcXCgvLy4qJFxcKVxcfFxcKC0tLiokXFwpIiAnKDAgZm9udC1sb2NrLWNv bW1lbnQtZmFjZSkpIDs7IG5vdCBuZWVkZWQKICAgICAgICAgOzsgRm9udGlmeSBhbGwgdHlwZXMK ICAgICAgICAgKGNvbnMgc3BlY21hbi10eXBlcy1rZXl3b3JkcwogICAgICAgICAgICAgICAnKDAg J2ZvbnQtbG9jay10eXBlLWZhY2UgYXBwZW5kKSkKICAgICAgICAgOzsgRm9udGlmeSByZXR1cm4g YW5kIHJlc3VsdCBrZXl3b3JkcyBzZXBlcmF0ZWx5IGZvciBlbXBoYXNpcwogICAgICAgICAoY29u cyAoY29uY2F0CiAgICAgICAgICAgICAgICBzcGVjbWFuLXN5bWJvbC1iZWdpbi1yZWdleHAKICAg ICAgICAgICAgICAgICJyZVxcKD86c3VsdFxcfHR1cm5cXCkiCiAgICAgICAgICAgICAgICBzcGVj bWFuLXN5bWJvbC1lbmQtcmVnZXhwKQogICAgICAgICAgICAgICAnKDAgJ2ZvbnQtbG9jay10eXBl LWZhY2UgYXBwZW5kKSkKICAgICAgICAgOzsgRm9udGlmeSBzcGVjaWFsIHZhci9maWVsZHMga2V5 d29yZHMgIm1lIiAiaXQiICJpbmRleCIgInByZXYiIHNlcGVyYXRlbHkgZm9yIGVtcGhhc2lzCiAg ICAgICAgIChjb25zIChjb25jYXQKICAgICAgICAgICAgICAgIHNwZWNtYW4tc3ltYm9sLWJlZ2lu LXJlZ2V4cAogICAgICAgICAgICAgICAgIlxcKD86bWVcXHxpdFxcfGluZGV4XFx8cHJldlxcKSIK ICAgICAgICAgICAgICAgIHNwZWNtYW4tc3ltYm9sLWVuZC1yZWdleHApCiAgICAgICAgICAgICAg ICcoMCAnZm9udC1sb2NrLXR5cGUtZmFjZSBhcHBlbmQpKQoJCSA7OyBGb250aWZ5IGFsbCBjb25z dGFudHMKICAgICAgICAgKGNvbnMgc3BlY21hbi1jb25zdGFudC1rZXl3b3JkcwogICAgICAgICAg ICAgICAnKDAgJ2ZvbnQtbG9jay1jb25zdGFudC1mYWNlIGFwcGVuZCkpCiAgICAgICAgIDs7IEZv bnRpZnkgbWFjcm9zCiAgICAgICAgIChjb25zIChjb25jYXQKICAgICAgICAgICAgICAgICIjIgog ICAgICAgICAgICAgICAgIlxcKCIKICAgICAgICAgICAgICAgICJpZm4/ZGVmIgogICAgICAgICAg ICAgICAgIlxcfCIKICAgICAgICAgICAgICAgICJlbHNlIgogICAgICAgICAgICAgICAgIlxcfCIK ICAgICAgICAgICAgICAgICJ1bmRlZiIKICAgICAgICAgICAgICAgICJcXHwiCiAgICAgICAgICAg ICAgICAiZGVmaW5lIgogICAgICAgICAgICAgICAgIlxcKSIKICAgICAgICAgICAgICAgIHNwZWNt YW4tc3ltYm9sLWVuZC1yZWdleHAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIlxc fCIKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgc3BlY21hbi1zeW1ib2wtYmVnaW4t cmVnZXhwCiAgICAgICAgICAgICAgICAiZGVmaW5lIgogICAgICAgICAgICAgICAgc3BlY21hbi1z eW1ib2wtZW5kLXJlZ2V4cCkKICAgICAgICAgICAgICAgJygwICdmb250LWxvY2sta2V5d29yZC1m YWNlIGFwcGVuZCkpCiAgICAgICAgIDs7IEZvbnRpZnkgbnVtYmVycwogICAgICAgICAoY29ucyBz cGVjbWFuLW51bWJlci1yZWdleHAKICAgICAgICAgICAgICAgJygxICdmb250LWxvY2stY29uc3Rh bnQtZmFjZSBhcHBlbmQpKQogICAgICAgICA7OyBGb250aWZ5IGFsbCBidWlsdGluIGtleXdvcmRz CiAgICAgICAgIChjb25zIHNwZWNtYW4ta2V5d29yZHMKICAgICAgICAgICAgICAgJygwICdmb250 LWxvY2sta2V5d29yZC1mYWNlIGFwcGVuZCkpCiAgICAgICAgIDs7IEZvbnRpZnkgbXVsdGktd29y ZCBrZXl3b3JkcwogICAgICAgICAoY29ucyBzcGVjbWFuLW11bHRpLXdvcmQta2V5d29yZHMKICAg ICAgICAgICAgICAgJygwICdmb250LWxvY2sta2V5d29yZC1mYWNlIGFwcGVuZCkpKSkKCiAgOzsg Rm9udGlmeSBwdW5jdHVhdGlvbgogICh3aGVuIHNwZWNtYW4taGlnaGxpZ2h0LXB1bmN0dWF0aW9u CiAgICAoc2V0cSBzcGVjbWFuLWZvbnQtbG9jay1rZXl3b3JkcwogICAgICAgICAgKGFwcGVuZCBz cGVjbWFuLWZvbnQtbG9jay1rZXl3b3JkcwogICAgICAgICAgICAgICAgICAobGlzdAogICAgICAg ICAgICAgICAgICAgKGNvbnMgIltdW1wuXCxcO1w6XCpcfFwmXCFcKFwpXHtcfVw9XCRcPFw+XCdc I1wlXC1cK1xAXSIKICAgICAgICAgICAgICAgICAgICAgICAgICcoMCAnc3BlY21hbi1wdW5jdHVh dGlvbi1mYWNlIGFwcGVuZCkpKSkpKQoKCiAgOzsgRm9udGlmeSBjb21tZW50cwogIDs7IC0gJy8v JyBjb21tZW50cyBoYW5kbGVkIGFzIHN5bnRheCBpbiBib3RoIGVtYWNzZW4gYnV0ICctLScgb25s eSBpbgogIDs7ICAgeGVtYWNzLgogIDs7IC0gdGhpcyBoYW5kbGVzICctLScgY29tbWVudHMKICA7 OyAgIC0gdXNpbmcgdGhpcyBldmVuIGluIHhlbWFjcywgd2hpY2ggc2hvdWxkIGJlIGFibGUgdG8g aGFuZGxlIDIgZnVsbHkKICA7OyAgICAgaW5kZXBlbmRlbnQgY29tbWVudCB0eXBlcywgYnV0IGZh aWxzIHRvIGRvIHNvIGluIGUuZy4gdmVyc2lvbiAyMS4xCiAgKHNldHEgc3BlY21hbi1mb250LWxv Y2sta2V5d29yZHMKICAgICAgICAoYXBwZW5kIHNwZWNtYW4tZm9udC1sb2NrLWtleXdvcmRzCiAg ICAgICAgICAgICAgICAobGlzdAogICAgICAgICAgICAgICAgICcoc3BlY21hbi1tYXRjaC1taW51 cy1jb21tZW50cwogICAgICAgICAgICAgICAgICAgKDAgJ2ZvbnQtbG9jay1jb21tZW50LWZhY2Ug dCkpCiAgICAgICAgICAgICAgICAgKSkpCgogIChzZXRxIHNwZWNtYW4tZm9udC1sb2NrLWtleXdv cmRzLTEKICAgICAgICAoYXBwZW5kIHNwZWNtYW4tZm9udC1sb2NrLWtleXdvcmRzCiAgICAgICAg ICAgICAgICAobGlzdAogICAgICAgICAgICAgICAgIDs7IEFkZGl0aW9uYWxseSBmb250aWZ5IHBy ZS1kZWZpbmVkIGZ1bmN0aW9ucwogICAgICAgICAgICAgICAgIDs7IC0gdXNpbmcga2VlcCB0byBw cmV2ZW50IGJvbGQgaGlnaGxpZ2h0IGluIGNvbW1lbnRzCiAgICAgICAgICAgICAgICAgKGNvbnMg c3BlY21hbi1mdW5jdGlvbi1rZXl3b3JkcwogICAgICAgICAgICAgICAgICAgICAgICcoMSAnZm9u dC1sb2NrLWZ1bmN0aW9uLW5hbWUtZmFjZSBrZWVwKSkKICAgICAgICAgICAgICAgICApKSkKCiAg KHNldHEgc3BlY21hbi1mb250LWxvY2sta2V5d29yZHMtMgogICAgICAgIChhcHBlbmQgc3BlY21h bi1mb250LWxvY2sta2V5d29yZHMtMSAKICAgICAgICAgICAgICAgIChsaXN0CiAgICAgICAgICAg ICAgICAgOzsgRm9udGlmeSB1c2VyIGRlZmluZWQgbWV0aG9kcwogICAgICAgICAgICAgICAgIChj b25zIHNwZWNtYW4tbWV0aG9kLWRlZmluaXRpb24tcmVnZXhwLWZ1bGwKICAgICAgICAgICAgICAg ICAgICAgICAnKDEgJ2ZvbnQtbG9jay1mdW5jdGlvbi1uYW1lLWZhY2UgcHJlcGVuZCkpCiAgICAg ICAgICAgICAgICAgOzsgRm9udGlmeSB1c2VyIGRlZmluZWQgdmFyaWFibGVzCiAgICAgICAgICAg ICAgICAgKGNvbnMgc3BlY21hbi12YXJpYWJsZS1kZWZpbml0aW9uLXJlZ2V4cC1mdWxsCiAgICAg ICAgICAgICAgICAgICAgICAgJygxICdmb250LWxvY2stdmFyaWFibGUtbmFtZS1mYWNlIHByZXBl bmQpKQogICAgICAgICAgICAgICAgIDs7IEZvbnRpZnkgdXNlciBkZWZpbmVkIGZpZWxkcyAoYW5k IG1vcmUpCiAgICAgICAgICAgICAgICAgOzsgLSBub3QgdXNpbmcgcmVnZXhwLWZ1bGwgc28gbWV0 aG9kIGFyZ3VtZW50cwogICAgICAgICAgICAgICAgIDs7ICAgYW5kIHR5cGUgZGVmaW5pdGlvbnMg YXJlIGFsc28gaGlnaGxpZ2h0ZWQKICAgICAgICAgICAgICAgICA7OyAgIHVzaW5nIHRoaXMgcmVn ZXhwLgogICAgICAgICAgICAgICAgIChjb25zIHNwZWNtYW4tZmllbGQtZGVmaW5pdGlvbi1yZWdl eHAKICAgICAgICAgICAgICAgICAgICAgICAnKDEgJ2ZvbnQtbG9jay12YXJpYWJsZS1uYW1lLWZh Y2UgYXBwZW5kKSkKICAgICAgICAgICAgICAgICA7OyBGb250aWZ5IHVzZXIgZGVmaW5lZCBldmVu dHMKICAgICAgICAgICAgICAgICAoY29ucyBzcGVjbWFuLWV2ZW50LWRlZmluaXRpb24tcmVnZXhw LWZ1bGwKICAgICAgICAgICAgICAgICAgICAgICAnKDEgJ2ZvbnQtbG9jay12YXJpYWJsZS1uYW1l LWZhY2UgYXBwZW5kKSkKICAgICAgICAgICAgICAgICA7OyBGb250aWZ5IHVzZXIgZGVmaW5lZCBj b3ZlciBncm91cHMKICAgICAgICAgICAgICAgICAoY29ucyBzcGVjbWFuLWNvdmVyLWRlZmluaXRp b24tcmVnZXhwLWZ1bGwKICAgICAgICAgICAgICAgICAgICAgICAnKDEgJ2ZvbnQtbG9jay12YXJp YWJsZS1uYW1lLWZhY2UgYXBwZW5kKSkKICAgICAgICAgICAgICAgICA7OyBGb250aWZ5IHVzZXIg ZGVmaW5lZCBvbiBldmVudCBtZXRob2RzCiAgICAgICAgICAgICAgICAgKGNvbnMgc3BlY21hbi1v bi1ldmVudC1tZXRob2QtZGVmaW5pdGlvbi1yZWdleHAtZnVsbAogICAgICAgICAgICAgICAgICAg ICAgICcoMSAnZm9udC1sb2NrLWZ1bmN0aW9uLW5hbWUtZmFjZSBhcHBlbmQpKQogICAgICAgICAg ICAgICAgICkpKQoKICAoc2V0cSBzcGVjbWFuLWZvbnQtbG9jay1rZXl3b3Jkcy0zCiAgICAgICAg KGFwcGVuZCBzcGVjbWFuLWZvbnQtbG9jay1rZXl3b3Jkcy0yICAKICAgICAgICAgICAgICAgIChs aXN0CiAgICAgICAgICAgICAgICAgOzsgRm9udGlmeSBhcyBjb21tZW50cyBhbnl0aGluZyBub3Qg aW4gZS1jb2RlIHNjb3BlCiAgICAgICAgICAgICAgICAgOzsgKGkuZS4gZGVsaW1pdGVkIGJ5IDwn Li4uJz4pCiAgICAgICAgICAgICAgICAgJyhzcGVjbWFuLW1hdGNoLWV4LWNvZGUtcmVnaW9ucyAK ICAgICAgICAgICAgICAgICAgICgwICdmb250LWxvY2stY29tbWVudC1mYWNlIHQpKQogICAgICAg ICAgICAgICAgIDs7IEhpZ2hsaWdodCB0ZXh0IGJleW9uZCBzcGVjbWFuLW1heC1saW5lLWxlbmd0 aAogICAgICAgICAgICAgICAgICcoc3BlY21hbi1tYXRjaC1iZXlvbmQtbWF4LWxpbmUtbGVuZ3Ro CiAgICAgICAgICAgICAgICAgICAoMCAnc3BlY21hbi1oaWdobGlnaHQtYmV5b25kLW1heC1saW5l LWxlbmd0aC1mYWNlIHQpKQogICAgICAgICAgICAgICAgIDs7IEZvbnRpZnkgJ1RPRE8nIGFzIGtl eXdvcmQgKGZvciBUT0RPIGNvbW1lbnRzKQogICAgICAgICAgICAgICAgIChjb25zICJcXDxUT0RP WyBcdF0/WzotXSIKICAgICAgICAgICAgICAgICAgICAgICAnKDAgJ2ZvbnQtbG9jay13YXJuaW5n LWZhY2UgdCkpCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgOzsgRm9udGlmeSBw cmVkZWZpbmVkIGV2ZW50cyBhcyBrZXl3b3JkcwogICAgICAgICAgICAgICAgIChjb25zIChjb25j YXQgIkBcXCgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJhbnkiICAgICAgICAgICAgIlxcfCIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJ0aWNrX3N0YXJ0IiAgICAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJ0aWNrX2VuZCIgICAgICAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJzdGFydF9vZl90ZXN0IiAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJlbmRfb2ZfdGVzdCIgICAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJxdWl0IiAgICAgICAgICAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJu ZXdfdGltZSIgICAgICAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmRl ZCIgICAgICAgICAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGFydGVk IiAgICAgICAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbG9jayIgICAg ICAgICAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVtX2RvbmUiCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJcXCkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjbWFuLXN5bWJvbC1l bmQtcmVnZXhwKQogICAgICAgICAgICAgICAgICAgICAgICcoMCAnZm9udC1sb2NrLWtleXdvcmQt ZmFjZSBhcHBlbmQpKQogICAgICAgICAgICAgICAgIDs7IEZvbnRpZnkgZXZlbnRzIGFzIGNvbnN0 YW50cwogICAgICAgICAgICAgICAgIChjb25zICJAXFwoW2EtekEtWjAtOV8uXStcXCkiCiAgICAg ICAgICAgICAgICAgICAgICAgJygxICdmb250LWxvY2stY29uc3RhbnQtZmFjZSBhcHBlbmQpKQog ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIDs7IEZvbnRpZnkgbWFjcm8ga2V5d29y ZHMgYXMgY29uc3RhbnRzCiAgICAgICAgICAgICAgICAgKGNvbnMgc3BlY21hbi1tYWNyby1rZXl3 b3JkcwogICAgICAgICAgICAgICAgICAgICAgIDs7JygwICdmb250LWxvY2stY29uc3RhbnQtZmFj ZSBhcHBlbmQpKQogICAgICAgICAgICAgICAgICAgICAgICcoMSAnZm9udC1sb2NrLWNvbnN0YW50 LWZhY2UgYXBwZW5kKSkKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICBuaWwpKQog ICkKCjs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K OzsgU1BFQ01BTiBVVElMSVRZIEZVTkNUSU9OUwo7OyA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CgooZGVmdW4gc3BlY21hbi11cC1saXN0ICgmb3B0aW9u YWwgd2l0aGluLWNvZGUtcmVnaW9uKQogICJNb3ZlIHVwIG9uZSBsaXN0LCBza2lwcGluZyBvdmVy IHNwZWNtYW4ncyBtYW55IGNvbW1lbnQgc3R5bGVzLiAKICAgUmV0dXJuIHBvaW50IG9mIG9wZW5l ciBpZiB3ZSBhcmUgaW4gYSBsaXN0IgogIAogIChpZiBnbG9iYWwtc2NvcGUtaW5kZXgKICAgICAg KHNwZWNtYW4tc2NvcGUtaW5kZXgtdXAtbGlzdCBnbG9iYWwtc2NvcGUtaW5kZXggd2l0aGluLWNv ZGUtcmVnaW9uKQogICAgKGxldCAoCiAgICAgICAgICA7OyB0aGlzIGNhbiBiZSB3cm9uZyB3aGVu IHRoZXJlIGlzIGEgbGlzdCB3aXRoaW4gYQogICAgICAgICAgOzsgcGFyZW5zLCBidXQgdGhlcmUg aXMgYSBjaGVjayBiZWxvdyB0aGF0IHdpbGwgcmVjb3ZlcgogICAgICAgICAgOzsgZnJvbSB0aGF0 IGNhc2UuCiAgICAgICAgICAobGltCiAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICAg ICAgICAoc3BlY21hbi1iZWctb2YtZGVmdW4gd2l0aGluLWNvZGUtcmVnaW9uKSkpCiAgICAgICAg ICAobmVzdAogICAgICAgICAgIDEpCiAgICAgICAgICAoc3RhcnQtcG9pbnQKICAgICAgICAgICAo cG9pbnQpKQogICAgICAgICAgdGIKICAgICAgICAgICkKCiAgICAgICh1bmxlc3Mgd2l0aGluLWNv ZGUtcmVnaW9uCiAgICAgICAgKHNwZWNtYW4tc2tpcC1iYWNrd2FyZC1jb21tZW50LW9yLXN0cmlu ZykpCiAgICAKICAgICAgKGNhdGNoICdza2lwCiAgICAgICAgKHdoaWxlIChhbmQgKD4gKHBvaW50 KSBsaW0pCiAgICAgICAgICAgICAgICAgICAgKHNwZWNtYW4tcmUtc2VhcmNoLWJhY2t3YXJkICJb KCl9XSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlt CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCkpCiAgICAgICAgICAo c2V0cSB0YiAoY2hhci1hZnRlcikpCiAgICAgICAgICAoY29uZAogICAgICAgICAgICgoPSB0YiA/ XCggKSAoc2V0cSBuZXN0ICgxLSBuZXN0KSkpCiAgICAgICAgICAgKCg9IHRiID9cKSApIChzZXRx IG5lc3QgKDErIG5lc3QpKSkKICAgICAgICAgCiAgICAgICAgICAgOzsgdGhpcyBza2lwcyB0aGUg YmxvY2sgYW5kIGFsc28gbW92ZXMgcG9pbnQKICAgICAgICAgICAoKD0gdGIgP1x9ICkgKHNldHEg bGltIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo c3BlY21hbi11cC1zY29wZSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo aWYgKHNwZWNtYW4tcmUtc2VhcmNoLWJhY2t3YXJkICI7IiBuaWwgdCB0KQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChwb2ludC1taW4pKSkpKQogICAgICAgICAKICAgICAgICAgICApCiAg ICAgICAgICAoaWYgKD0gMCBuZXN0KQogICAgICAgICAgICAgICh0aHJvdyAnc2tpcCAocG9pbnQp KSkKICAgICAgICAgICkKICAgICAgICA7OyBpZiB3ZSByZWFjaGVkIHRoaXMgcG9pbnQgdGhlbiB0 aGUgc2VhcmNoIGZhaWxlZAogICAgICAgIChnb3RvLWNoYXIgc3RhcnQtcG9pbnQpCiAgICAgICAg bmlsKQogICAgICApCiAgICApKQoKKGRlZnVuIHNwZWNtYW4tdXAtc2NvcGUgKCZvcHRpb25hbCB3 aXRoaW4tY29kZS1yZWdpb24pCiAgIk1vdmUgdXAgb25lIHNjb3BlLCBza2lwcGluZyBvdmVyIHNw ZWNtYW4ncyBtYW55IGNvbW1lbnQgc3R5bGVzLgogICBSZXR1cm4gcG9pbnQgb2Ygb3BlbmVyIGlm IHdlIGFyZSBpbiBhIGxpc3QiCgogIChpZiBnbG9iYWwtc2NvcGUtaW5kZXgKICAgICAgKHNwZWNt YW4tc2NvcGUtaW5kZXgtdXAtc2NvcGUgZ2xvYmFsLXNjb3BlLWluZGV4IHdpdGhpbi1jb2RlLXJl Z2lvbikKICAgIChsZXQgKChsaW0gKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAgICAgICAgKHNw ZWNtYW4tYmVnLW9mLWRlZnVuIHdpdGhpbi1jb2RlLXJlZ2lvbiB0KSkpCiAgICAgICAgICAobmVz dCAxKQogICAgICAgICAgdGIKICAgICAgICAgICkKCiAgICAgICh1bmxlc3Mgd2l0aGluLWNvZGUt cmVnaW9uCiAgICAgICAgKHNwZWNtYW4tc2tpcC1iYWNrd2FyZC1jb21tZW50LW9yLXN0cmluZykp CiAgICAgIAogICAgICAoY2F0Y2ggJ3NraXAKICAgICAgICAod2hpbGUKICAgICAgICAgICAgKGFu ZCAoPiAocG9pbnQpIGxpbSkKICAgICAgICAgICAgICAgICAoc3BlY21hbi1yZS1zZWFyY2gtYmFj a3dhcmQgIlt7fV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxpbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW92ZQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0KSkKICAgICAgICAg IChzZXRxIHRiIChjaGFyLXN5bnRheCAoY2hhci1hZnRlcikpKQogICAgICAgICAgKGNvbmQKICAg ICAgICAgICAoKD0gdGIgP1woKSAoc2V0cSBuZXN0ICgxLSBuZXN0KSkpCiAgICAgICAgICAgKCg9 IHRiID9cKSkgKHNldHEgbmVzdCAoMSsgbmVzdCkpKQogICAgICAgICAgICkKICAgICAgICAgIChp ZiAoPSAwIG5lc3QpCiAgICAgICAgICAgICAgKHRocm93ICdza2lwIChwb2ludCkpKQogICAgICAg ICAgKQogICAgICAgIDs7IGlmIHdlIHJlYWNoZWQgdGhpcyBwb2ludCB0aGVuIHRoZSBzZWFyY2gg ZmFpbGVkCiAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICAodGhyb3cgJ3Nr aXAgKHBvaW50KSkpCiAgICAgICkKICAgICkpCgooZGVmdW4gc3BlY21hbi1kb3duLXNjb3BlICgm b3B0aW9uYWwgd2l0aGluLWNvZGUtcmVnaW9uKQogICJNb3ZlIGRvd24gb25lIHNjb3BlLCBza2lw cGluZyBvdmVyIHNwZWNtYW4ncyBtYW55IGNvbW1lbnQgc3R5bGVzLgogICBSZXR1cm4gcG9pbnQg b2YgY2xvc2VyIGlmIHdlIGFyZSBpbiBhIGxpc3QiCgogIChpZiBnbG9iYWwtc2NvcGUtaW5kZXgK ICAgICAgKHNwZWNtYW4tc2NvcGUtaW5kZXgtZG93bi1zY29wZSBnbG9iYWwtc2NvcGUtaW5kZXgg d2l0aGluLWNvZGUtcmVnaW9uKQogICAgKGxldCAoCiAgICAgICAgICAobGltCiAgICAgICAgICAg KHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAgICAoc3BlY21hbi1lbmQtb2YtZS1jb2RlKQogICAg ICAgICAgICAgKHBvaW50KSkKICAgICAgICAgICApCiAgICAgICAgICAobmVzdAogICAgICAgICAg IDEKICAgICAgICAgICApCiAgICAgICAgICApCgogICAgICAodW5sZXNzIHdpdGhpbi1jb2RlLXJl Z2lvbgogICAgICAgIChzcGVjbWFuLXNraXAtZm9yd2FyZC1jb21tZW50LW9yLXN0cmluZykpCiAg ICAgIAogICAgICAoY2F0Y2ggJ3NraXAKICAgICAgICAod2hpbGUKICAgICAgICAgICAgKGFuZCAo PCAocG9pbnQpIGxpbSkKICAgICAgICAgICAgICAgICAoc3BlY21hbi1yZS1zZWFyY2gtZm9yd2Fy ZCAiXFwoe1xcKVxcfFxcKH1cXClcXHxcXCgvL1xcfC0tXFwpXFx8XFwoXic+XFwpXFx8XFwoXCJc XCkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vdmUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0KSkKICAgICAgICAgIChzZXRxIHRiIChj aGFyLXN5bnRheCAoY2hhci1iZWZvcmUpKSkKICAgICAgICAgIChjb25kCiAgICAgICAgICAgKCht YXRjaC1iZWdpbm5pbmcgMSkKICAgICAgICAgICAgKHNldHEgbmVzdCAoMSsgbmVzdCkpCiAgICAg ICAgICAgICkKICAgICAgICAgICAoKG1hdGNoLWJlZ2lubmluZyAyKQogICAgICAgICAgICAoc2V0 cSBuZXN0ICgxLSBuZXN0KSkKICAgICAgICAgICAgKQogICAgICAgICAgICgobWF0Y2gtYmVnaW5u aW5nIDMpCiAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgMSkKICAgICAgICAgICAgKQogICAgICAg ICAgICgobWF0Y2gtYmVnaW5uaW5nIDQpCiAgICAgICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCAi XjwnIiBsaW0gJ21vdmUpCiAgICAgICAgICAgICkKICAgICAgICAgICAoKG1hdGNoLWJlZ2lubmlu ZyA1KQogICAgICAgICAgICAocmUtc2VhcmNoLWZvcndhcmQgIlwiIiBsaW0gJ21vdmUpCiAgICAg ICAgICAgICkKICAgICAgICAgICApCiAgICAgICAgICAoaWYgKD0gMCBuZXN0KQogICAgICAgICAg ICAgICh0aHJvdyAnc2tpcCAocG9pbnQpKSkKICAgICAgICAgICkKICAgICAgICA7OyBpZiB3ZSBy ZWFjaGVkIHRoaXMgcG9pbnQgdGhlbiB0aGUgc2VhcmNoIGZhaWxlZAogICAgICAgIChnb3RvLWNo YXIgKHBvaW50LW1heCkpCiAgICAgICAgKHRocm93ICdza2lwIChwb2ludCkpKQogICAgICApCiAg ICApKQoKKGRlZnVuIHNwZWNtYW4td2l0aGluLWV4LWNvZGUtcG9pbnQgKCkKICAiUmV0dXJuIHBv aW50IGlmIHdpdGhpbiBleC1jb2RlIHJlZ2lvbiwgZWxzZSBuaWwuIgogIChzYXZlLWV4Y3Vyc2lv bgogICAgKGlmIChyZS1zZWFyY2gtYmFja3dhcmQgIl5cXCg/OlxcKCc+XFwpXFx8XFwoPCdcXClc XCkiIG5pbCAnbSkKCShpZiAobWF0Y2gtYmVnaW5uaW5nIDIpCiAgICAgICAgICAgIG5pbAogICAg ICAgICAgKHBvaW50KSkKICAgICAgKHBvaW50KSkpKQoKKGRlZnVuIHNwZWNtYW4td2l0aGluLXJl Z2lvbi1jb21tZW50LXAgKCkKICAiUmV0dXJuIHRydWUgaWYgcG9pbnQgaXMgaW4gYSByZWdpb24g Y29tbWVudDoKICAgLSBlaXRoZXIgb3V0c2lkZSBlLWNvZGUgcmVnaW9uIDwnLi4uJz4KICAgLSBv ciBpbiBhIC8qLi4uKi8gY29tbWVudCwgYnV0IG5vdCBvbiB0aGUgb3BlbmluZyBsaW5lIgoKICAo b3IgKHNwZWNtYW4td2l0aGluLWV4LWNvZGUtcG9pbnQpCiAgICAgIChzcGVjbWFuLWxpbmUtd2l0 aGluLXN0YXItY29tbWVudC1wKSkpCgooZGVmdW4gc3BlY21hbi1zdGFydC1leC1jb2RlLXBvaW50 IChsaW1pdCkKICAiUmV0dXJuIHBvaW50IGJlZm9yZSBjb21tZW50IHN0YXJ0cyBpZiBiZWZvcmUg TElNSVQsIGVsc2UgbmlsLiIKICAoc2F2ZS1leGN1cnNpb24KICAgICh3aGVuIChyZS1zZWFyY2gt Zm9yd2FyZCAiXic+IiBsaW1pdCB0KQogICAgICAobWF0Y2gtYmVnaW5uaW5nIDApKSkpCgooZGVm dW4gc3BlY21hbi1lbmQtZXgtY29kZS1wb2ludCAobGltaXQpCiAgIlJldHVybiBwb2ludCBhZnRl ciBjb21tZW50IGVuZHMgaWYgYmVmb3JlIExJTUlULCBlbHNlIG5pbC4iCiAgKHNhdmUtZXhjdXJz aW9uCiAgICAod2hlbiAocmUtc2VhcmNoLWZvcndhcmQgIl48JyIgbGltaXQgdCkKICAgICAgKG1h dGNoLWVuZCAwKSkpKQoKKGRlZnZhciBlY29tLXN5bnRheC1oaWdobGlnaHQgbmlsCiAgIlRydWUg aWYgdGhlIGN1cnJlbnQgYnVmZmVyIGlzIGFuIC5lY29tIGZpbGUgYW5kIHNob3VsZCBiZSBzeW50 YXgKIGhpZ2hsaWdodGVkIGFzIHN1Y2ggKGkuZS4gaWdub3JlIGV4LWNvZGUtcmVnaW9ucykuIikK KG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdlY29tLXN5bnRheC1oaWdobGlnaHQpCgooZGVm dW4gc3BlY21hbi1tYXRjaC1leC1jb2RlLXJlZ2lvbnMgKGxpbWl0KQogICJNYXRjaCBhIG5vbiBj b2RlIGJsb2NrLCBzZXR0aW5nIG1hdGNoLWRhdGEgYW5kIHJldHVybmluZyB0LCBlbHNlIG5pbC4i CiAgKHdoZW4gKG5vdCBlY29tLXN5bnRheC1oaWdobGlnaHQpCiAgICAod2hlbiAoPCAocG9pbnQp IGxpbWl0KQogICAgICAobGV0ICgoc3RhcnQKICAgICAgICAgICAgIChvciAoc3BlY21hbi13aXRo aW4tZXgtY29kZS1wb2ludCkKICAgICAgICAgICAgICAgICAoc3BlY21hbi1zdGFydC1leC1jb2Rl LXBvaW50IGxpbWl0KSkpCiAgICAgICAgICAgIChjYXNlLWZvbGQtc2VhcmNoCiAgICAgICAgICAg ICB0KQogICAgICAgICAgICAob3JpZ2luCiAgICAgICAgICAgICAocG9pbnQpKQogICAgICAgICAg ICApCiAgICAgICAgKHdoZW4gc3RhcnQKICAgICAgICAgIChnb3RvLWNoYXIgc3RhcnQpCiAgICAg ICAgICAobGV0ICgoZW5kCiAgICAgICAgICAgICAgICAgKG9yIChzcGVjbWFuLWVuZC1leC1jb2Rl LXBvaW50IGxpbWl0KQogICAgICAgICAgICAgICAgICAgICBsaW1pdCkpCiAgICAgICAgICAgICAg ICApCiAgICAgICAgICAgIChnb3RvLWNoYXIgZW5kKQogICAgICAgICAgICAoc3RvcmUtbWF0Y2gt ZGF0YSAobGlzdCBzdGFydCBlbmQpKQogICAgICAgICAgICAoaWYgKD0gKHBvaW50KSBvcmlnaW4p CiAgICAgICAgICAgICAgICBuaWwKICAgICAgICAgICAgICB0KSkpKSkpKQoKKGRlZnVuIHNwZWNt YW4tbWF0Y2gtbWludXMtY29tbWVudHMgKGxpbWl0KQogICJNYXRjaCBhICctLSAuLi4gRU9MJyBy ZWdpb24sIHNldHRpbmcgbWF0Y2gtZGF0YSBhbmQgcmV0dXJuaW5nIHQsIGVsc2UgbmlsLiIKICAo d2hlbiAoPCAocG9pbnQpIGxpbWl0KQogICAgKGxldCAoKHN0YXJ0CiAgICAgICAgICAgKHByb2du CiAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICAgICAgICAoc3BlY21hbi1z ZWFyY2gtZm9yd2FyZC1taW51cy1jb21tZW50IGxpbWl0KSkpCiAgICAgICAgICApCiAgICAgICh3 aGVuIHN0YXJ0CiAgICAgICAgKGdvdG8tY2hhciBzdGFydCkKICAgICAgICAobGV0ICgoZW5kCiAg ICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUpCiAgICAg ICAgICAgICAgICAgKGlmICg8IChwb2ludCkgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgIChw b2ludCkKICAgICAgICAgICAgICAgICAgIGxpbWl0KSkpCiAgICAgICAgICAgICAgKQogICAgICAg ICAgKHN0b3JlLW1hdGNoLWRhdGEgKGxpc3Qgc3RhcnQgZW5kKSkKICAgICAgICAgIHQpKSkpKQoK KGRlZnVuIHNwZWNtYW4tc2VhcmNoLWZvcndhcmQtbG9uZy1saW5lIChsaW1pdCkKICAod2hlbiAo PCBzcGVjbWFuLW1heC1saW5lLWxlbmd0aAogICAgICAgICAgIChjdXJyZW50LWNvbHVtbikpCiAg ICAoZm9yd2FyZC1saW5lKSkgOzsgc28gd2UgZG9uJ3QgcmV0dXJuIGEgdmFsdWUgc21hbGxlciB0 aGFuIHBvaW50CiAgKGxldCAoKGNvbnRpbnVlCiAgICAgICAgIHQpCiAgICAgICAgKHJldHVybi12 YWwKICAgICAgICAgbmlsKQogICAgICAgICkKICAod2hpbGUgY29udGludWUKICAgIChpZiAoPj0g KHBvaW50KSBsaW1pdCkKICAgICAgICAoc2V0cSBjb250aW51ZSBuaWwpCiAgICAgIChwcm9nbgog ICAgICAgIChlbmQtb2YtbGluZSkKICAgICAgICAoaWYgKDw9IChjdXJyZW50LWNvbHVtbikKICAg ICAgICAgICAgICAgIHNwZWNtYW4tbWF4LWxpbmUtbGVuZ3RoKQogICAgICAgICAgICAoZm9yd2Fy ZC1saW5lKQogICAgICAgICAgKHByb2duCiAgICAgICAgICAgIChzZXRxIGNvbnRpbnVlIG5pbCkK ICAgICAgICAgICAgKG1vdmUtdG8tY29sdW1uIHNwZWNtYW4tbWF4LWxpbmUtbGVuZ3RoKQogICAg ICAgICAgICAod2hlbiAoPCAocG9pbnQpIGxpbWl0KQogICAgICAgICAgICAgIChzdG9yZS1tYXRj aC1kYXRhIChsaXN0IChwb2ludCkgKHBvaW50KSkpCiAgICAgICAgICAgICAgKHNldHEgcmV0dXJu LXZhbCAocG9pbnQpKSkpKSkpKQogIHJldHVybi12YWwpKQogICAgCihkZWZ1biBzcGVjbWFuLW1h dGNoLWJleW9uZC1tYXgtbGluZS1sZW5ndGggKGxpbWl0KQogICJNYXRjaCB0ZXh0IGJleW9uZCB0 aGUgbWF4IGxpbmUgbGVuZ3RoLCBzZXR0aW5nIG1hdGNoLWRhdGEgYW5kIHJldHVybmluZyB0LCBl bHNlIG5pbC4iCiAgKHdoZW4gKGFuZCBzcGVjbWFuLWhpZ2hsaWdodC1iZXlvbmQtbWF4LWxpbmUt bGVuZ3RoCiAgICAgICAgICAgICAoPCAocG9pbnQpIGxpbWl0KSkKICAgIChsZXQgKChzdGFydAog ICAgICAgICAgIChzcGVjbWFuLXNlYXJjaC1mb3J3YXJkLWxvbmctbGluZSBsaW1pdCkpCiAgICAg ICAgICApCiAgICAgICh3aGVuIHN0YXJ0CiAgICAgICAgKGxldCAoKGVuZAogICAgICAgICAgICAg ICAocHJvZ24KICAgICAgICAgICAgICAgICAoZW5kLW9mLWxpbmUpCiAgICAgICAgICAgICAgICAg KGlmICg8IChwb2ludCkgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgIChwb2ludCkKICAgICAg ICAgICAgICAgICAgIGxpbWl0KSkpCiAgICAgICAgICAgICAgKQogICAgICAgICAgKGZvcndhcmQt bGluZSkKICAgICAgICAgIChzdG9yZS1tYXRjaC1kYXRhIChsaXN0IHN0YXJ0IGVuZCkpCiAgICAg ICAgICB0KSkpKSkKCgo7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Cjs7IFNQRUNNQU4gSGlkZS9zaG93IGNvbW1lbnRzCjs7ID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KOzsgc2VlbXMgdG8gYWZmZWN0IG9u bHkgZXgtY29kZSByZWdpb25zLgo7OyBUT0RPOiBjYW4gdGhpcyBiZSBtYWRlIHRvIHdvcms/Cgo7 OyAocmVxdWlyZSAnaGlkZWlmKQo7OyAoZGVmdmFyIHNwZWNtYW4tY29tbWVudC1oaWRpbmcgbmls ICJOb24tbmlsIHdoZW4gdGV4dCBtYXkgYmUgaGlkZGVuLiIpCgo7OyAoZGVmdW4gc3BlY21hbi10 b2dnbGUtaGlkZS1jb21tZW50cyAoKQo7OyAgICJUb2dnbGUgdGhlIGhpZGluZyBvZiBjb21tZW50 cyBpbiBTcGVjbWFuIG1vZGUiCjs7ICAgKGludGVyYWN0aXZlKQogIAo7OyAgIChzcGVjbWFuLW91 dGxpbmUtY29tbWVudHMgKG5vdCBzcGVjbWFuLWNvbW1lbnQtaGlkaW5nKSkpCgo7OyAoZGVmdW4g c3BlY21hbi1vdXRsaW5lLWNvbW1lbnRzIChmbGFnKQo7OyAgICJIaWRlL29yIHNob3cgYmxvY2sg Y29tbWVudHMiCjs7ICAgKGludGVyYWN0aXZlKQogIAo7OyAgIChsZXQgKChoaWYtb3V0c2lkZS1y ZWFkLW9ubHkgYnVmZmVyLXJlYWQtb25seSkKOzsgICAgICAgICAoaW5oaWJpdC1yZWFkLW9ubHkg dCkKOzsgICAgICAgICApCjs7ICAgICAoc2V0cSBzZWxlY3RpdmUtZGlzcGxheSB0KQo7OyAgICAg KHNldHEgaGlkZS1pZmRlZi1oaWRpbmcgdCkKOzsgICAgIChoaWRlLWlmZGVmLWd1dHMpKQogIAo7 OyAgICAgKHNldHEgc2VsZWN0aXZlLWRpc3BsYXkgdCkKOzsgICAgIChzZXRxIHNwZWNtYW4tY29t bWVudC1oaWRpbmcgKGlmIGZsYWcgdCBuaWwpKQogICAgCjs7ICAgICAoc2F2ZS1leGN1cnNpb24K OzsgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKOzsgICAgICAgKGxldCAoKGUgKHBvaW50 LW1heCkpCjs7ICAgICAgICAgICAgICkKOzsgICAgICAgICAod2hpbGUgKGFuZAo7OyAgICAgICAg ICAgICAgICAgKDwgKHBvaW50KSBlKQo7OyAgICAgICAgICAgICAgICAgKHNwZWNtYW4tbWF0Y2gt ZXgtY29kZS1yZWdpb25zIGUpKQo7OyAgICAgICAgICAgKGlmIGZsYWcKOzsgICAgICAgICAgICAg ICAoaGlkZS1pZmRlZi1yZWdpb24gKG1hdGNoLWJlZ2lubmluZyAwKQo7OyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobWF0Y2gtZW5kIDApKQo7OyAgICAgICAgICAgICAoaGlmLXNo b3ctaWZkZWYtcmVnaW9uIChtYXRjaC1iZWdpbm5pbmcgMCkKOzsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobWF0Y2gtZW5kIDApKSkpKSkpCgoKOzsgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo7OyBTUEVDTUFOIE1lbnVzCjs7ID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKGRlZnZhciBz cGVjbWFuLXhlbWFjcy1tZW51CiAgJygiU3BlY21hbiIKICAgICgiTW92ZSIKICAgICBbIkJlZ2lu bmluZyBvZiBzcGVjaWZpY2F0aW9uIgkgICAgICAgICAgICAgICAgc3BlY21hbi1iZWctb2YtZGVm dW4gdF0KICAgICBbIkVuZCBvZiBzcGVjaWZpY2F0aW9uIgkgICAgICAgICAgICAgICAgICAgICAg IAlzcGVjbWFuLWVuZC1vZi1kZWZ1biB0XQogICAgICkKICAgICItLS0tIgogICAgKCJDb21tZW50 cyIKICAgICBbIlJlZG8vaW5zZXJ0IGNvbW1lbnRzIG9uIGV2ZXJ5IH07IiAgICAgICAgICAgICAg ICBzcGVjbWFuLXJlZG8tZW5kY29tbWVudHMgdF0KICAgICBbIlJlZG8vaW5zZXJ0IGNvbW1lbnRz IG9uIGN1cnJlbnQgbGluZSIgICAgICAgICAgICBzcGVjbWFuLWluc2VydC1hdXRvLWVuZGNvbW1l bnQgdF0KICAgICBbIkluc2VydCAtLSBjb21tZW50IiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzcGVjbWFuLWluc2VydC1taW51cy1jb21tZW50IHRdCiAgICAgWyJJbnNlcnQgLy8gY29t bWVudCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY21hbi1pbnNlcnQtc2xhc2gt Y29tbWVudCB0XQogICAgIFsiQ29tbWVudCByZWdpb24iICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbW1lbnQtcmVnaW9uIHRdCiAgICAgWyJVbkNvbW1lbnQgcmVnaW9uIiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY21hbi11bmNvbW1lbnQtcmVnaW9uIHRdCiAg ICAgWyJFeGNsdWRlIGNvZGUgcmVnaW9uIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bl Y21hbi1leGNsdWRlLWNvZGUtcmVnaW9uIHRdCiAgICAgOztbIlRvZ2dsZSBoaWRpbmcgY29tbWVu dCBibG9ja3MiICAgICAgICAgICAgICAgICAgICBzcGVjbWFuLXRvZ2dsZS1oaWRlLWNvbW1lbnRz IHRdCiAgICAgWyJSZWFsaWduIGNvbW1lbnQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3BlY21hbi1yZWFsaWduLWNvbW1lbnQgdF0KICAgICApCiAgICAoIkZvcm1hdHRpbmciCiAg ICAgWyJNaW5vciBjb21tZW50IHNlcGFyYXRvciIgICAgICAgICAgICAgICAgICAgICAgICAgc3Bl Y21hbi1taW5vci1jb21tZW50LXNlcGFyYXRvciB0XQogICAgIFsiTWFqb3IgY29tbWVudCBzZXBh cmF0b3IiICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNtYW4tbWFqb3ItY29tbWVudC1zZXBh cmF0b3IgdF0KICAgICBbIkluc2VydCBzdGFuZGFyZCBmaWxlIGhlYWRlciIgICAgICAgICAgICAg ICAgICAgICBzcGVjbWFuLWhlYWRlciB0XQogICAgIFsiSW5zZXJ0IFImRCBmaWxlIGhlYWRlciIg ICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNtYW4tZGV2ZWxvcG1lbnQtZmlsZS1oZWFkZXIg dF0KICAgICBbIkluc2VydCBzdHJ1Y3QvZGVmaW5lIGhlYWRlciIgICAgICAgICAgICAgICAgICAg ICBzcGVjbWFuLXN0cnVjdC1hbmQtZGVmaW5lLWhlYWRlci1jb21wYWN0IHRdCiAgICAgWyJJbnNl cnQgZGV0YWlsZWQgc3RydWN0L2RlZmluZSBoZWFkZXIiICAgICAgICAgICAgc3BlY21hbi1zdHJ1 Y3QtYW5kLWRlZmluZS1oZWFkZXItZnVsbCB0XQogICAgIFsiSW5zZXJ0IG1ldGhvZCBoZWFkZXIi ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNtYW4tbWV0aG9kLWhlYWRlci1jb21wYWN0 IHRdCiAgICAgWyJJbnNlcnQgZGV0YWlsZWQgbWV0aG9kIGhlYWRlciIgICAgICAgICAgICAgICAg ICAgc3BlY21hbi1tZXRob2QtaGVhZGVyLWZ1bGwgdF0KICAgICBbIkluc2VydCBoZWFkZXJzIGZv ciBhbGwgc3RydWN0cy9kZWZpbmVzL21ldGhvZHMiICBzcGVjbWFuLWFkZC1zdHJ1Y3QtYW5kLW1l dGhvZC1oZWFkZXJzIHRdCiAgICAgWyJJbnNlcnQgZS1jb2RlIHNlY3Rpb24iICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3BlY21hbi1vcGVuLWUtY29kZS1zZWN0aW9uIHRdCiAgICAgWyJJbnNl cnQgZS1jb2RlIGJsb2NrIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY21hbi1vcGVu LWUtY29kZS1ibG9jayB0XQogICAgICkKICAgICItLS0tIgogICAgWyJTcGVjbWFuIGNvbXBpbGUi ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNtYW4tY29tcGlsZSB0XQogICAg WyJNYWtlIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNt YW4tbWFrZSB0XQogICAgIi0tLS0iCiAgICBbIkRlc2NyaWJlIGN1cnNvciBjb250ZXh0IiAgICAg ICAgICAgICAgICAgICAgICAgICAgc3BlY21hbi1kZXNjcmliZS1jb250ZXh0IHRdCiAgICAiLS0t LSIKICAgIFsiU3VibWl0IGJ1ZyByZXBvcnQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzcGVjbWFuLXN1Ym1pdC1idWctcmVwb3J0IHRdCiAgICBbIkN1c3RvbWl6ZSBTcGVjbWFuIE1v ZGUuLi4iICAgICAgICAgICAgICAgICAgICAgICAgc3BlY21hbi1jdXN0b21pemUgdF0KICAgIFsi Q3VzdG9taXplIFNwZWNtYW4gRm9udHMgJiBDb2xvcnMiICAgICAgICAgICAgICAgICBzcGVjbWFu LWZvbnQtY3VzdG9taXplIHRdCiAgICApCiAgIkVtYWNzIG1lbnUgZm9yIFNQRUNNQU4gbW9kZS4i CiAgKQoKKHVubGVzcyAoc3RyaW5nLW1hdGNoICJYRW1hY3MiIGVtYWNzLXZlcnNpb24pCiAgKGVh c3ktbWVudS1kZWZpbmUKICAgIHNwZWNtYW4tbWVudQogICAgc3BlY21hbi1tb2RlLW1hcAogICAg Ik1lbnUgZm9yIFNwZWNtYW4gbW9kZSIKICAgIHNwZWNtYW4teGVtYWNzLW1lbnUpKQoKKGRlZnVu IHNwZWNtYW4tY3VzdG9taXplICgpCiAgIkxpbmsgdG8gY3VzdG9taXplIHNjcmVlbiBmb3IgU3Bl Y21hbiIKICAoaW50ZXJhY3RpdmUpCiAgKGN1c3RvbWl6ZS1ncm91cCAnc3BlY21hbi1tb2RlKQog ICkKCihkZWZ1biBzcGVjbWFuLWZvbnQtY3VzdG9taXplICgpCiAgIkxpbmsgdG8gY3VzdG9taXpl IGZvbnRzIHVzZWQgZm9yIFNwZWNtYW4iCiAgKGludGVyYWN0aXZlKQogIChjdXN0b21pemUtYXBy b3BvcyAiZm9udC1sb2NrLSoiICdmYWNlcykKICApCgooZGVmdW4gc3BlY21hbi1jb21waWxlICgp CiAgIkludm9rZSBjb21waWxlLCBjdXN0b21pemVkIGZvciBzcGVjbWFuIgogIChpbnRlcmFjdGl2 ZSkKICAobGV0ICgoY29tcGlsZS1jb21tYW5kCiAgICAgICAgIChjb25jYXQgc3BlY21hbi1jb21w aWxlLWNvbW1hbmQKICAgICAgICAgICAgICAgICBidWZmZXItZmlsZS1uYW1lKSkKICAgICAgICAo Y29tcGlsYXRpb24tcmVhZC1jb21tYW5kCiAgICAgICAgIHQpCiAgICAgICAgKQogICAgKGNhbGwt aW50ZXJhY3RpdmVseSAnY29tcGlsZSBjb21waWxlLWNvbW1hbmQpCiAgICApCiAgKQoKKGRlZnVu IHNwZWNtYW4tbWFrZSAoKQogICJJbnZva2UgbWFrZSwgY3VzdG9taXplZCBmb3Igc3BlY21hbiIK ICAoaW50ZXJhY3RpdmUpCiAgKGxldCAoKGNvbXBpbGUtY29tbWFuZAogICAgICAgICBzcGVjbWFu LW1ha2UtY29tbWFuZCkKICAgICAgICAoY29tcGlsYXRpb24tcmVhZC1jb21tYW5kCiAgICAgICAg IHQpCiAgICAgICAgKQogICAgKGNhbGwtaW50ZXJhY3RpdmVseSAnY29tcGlsZSBjb21waWxlLWNv bW1hbmQpCiAgICApCiAgKQoKKGRlZmNvbnN0IHNwZWNtYW4tYmVnLW9mLWRlZnVuLXF1ZXJ5LXJl Z2V4cAogIChjb25jYXQKICAgIl4iCiAgICJcXCg/OiIKICAgIlxcKDwnXFwpIgogICAiXFx8Igog ICBzcGVjbWFuLXRvcC1sZXZlbC1jb250YWluZXItZGVmaW5pdGlvbi1yZWdleHAKICAgIlxcKSIK ICAgKQogICJJbnRlcm5hbCAtIHJlZ2V4cCB1c2VkIHRvIGZpbmQgdG9wIGxldmVsIGNvbnRhaW50 ZXIgZGVmaW5pdGlvbnMuIikKCihkZWZ1biBzcGVjbWFuLWJlZy1vZi1kZWZ1biAoJm9wdGlvbmFs IHdpdGhpbi1jb2RlLXJlZ2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuby11cC1zY29wZS1jYWxsKQogICJNb3ZlIGJhY2t3YXJkIHRvIHRoZSBiZWdpbm5pbmcgb2Yg dGhlIGN1cnJlbnQgc3RydWN0IG9yIHByb2NlZHVyZSwKICAgb3IgZmFpbGluZyB0aGF0IC0gdG8g dGhlIGJlZ2lubmluZyBvZiB0aGUgZS1jb2RlIHNlY3Rpb24gaW4gdGhlIGZpbGUuIgogIChpbnRl cmFjdGl2ZSkKICAKICA7OyBuby11cC1zY29wZS1jYWxsIC0gb25seSB0byBiZSB1c2VkIGZyb20g d2l0aGluIHNwZWNtYW4tdXAtc2NvcGUgdG8gcHJldmVudCByZWN1cnNpb24uCiAgOzsgbm9ybWFs bHkgdGhpcyBzaG91bGQgc3RpbGwgZ2l2ZSB0aGUgc2FtZSByZXN1bHQgKG1heWJlIGEgbGl0dGxl IHNsb3dlciksIGV4Y2VwdAogIDs7IHdpdGhpbiBtYWNyb3MuCiAgKHVubGVzcyBuby11cC1zY29w ZS1jYWxsCiAgICAoc3BlY21hbi11cC1zY29wZSB3aXRoaW4tY29kZS1yZWdpb24pKQogIAogIDs7 IGEgZmFpcmx5IGRlY2VudCBhcHByb3hpbWF0ZSBpbXBsZW1lbnRhdGlvbi4gYXNzdW1lcyB0aGF0 IG1ham9yIGRlZmluaXRpb25zCiAgOzsgYXJlIHByb3Blcmx5IGluZGVudGVkIHRvIHRoZSBiZWdp bm5pbmcgYSBsaW5lLCBzbyB2ZXJ5IGxpdHRsZSBjb21tZW50CiAgOzsgY2hlY2tpbmcgaXMgbmVl ZGVkLgogIDs7CiAgOzsgVE9ETzogdGhlIHdheSB0aGlzIHNob3VsZCByZWFsbHkgYmUgZG9uZSBp cyBieSBmaW5kaW5nIHRoZQogIDs7IHRvcC1tb3N0IGNvbnRhaW5lciAtIGkuZS4gdGhlIG9uZSB0 aGF0IGNhbGxpbmcgc3BlY21hbi11cC1zY29wZQogIDs7IGZyb20gcmVhY2hlcyBwb2ludC1taW4u ICB0aGlzIGlzIHZlcnkgZXhwZW5zaXZlIGluIHRlcm1zIG9mCiAgOzsgcGVyZm9ybWFuY2UgY3Vy cmVudGx5LCBidXQgY2FuIGJlIHNvbHZlZCBieSBoYW5kbGluZyB1c2luZyB0aGUKICA7OyBnbG9i YWwtc2NvcGUtaW5kZXggbWVjaGFuaXNtLiAgc3BlY21hbi1zY29wZS1pbmRleC10b3Atc2NvcGUg d2FzCiAgOzsgYW4gYXR0ZW1wdCB0byBkbyB0aGF0LCBidXQgaXQncyBub3QgbWF0dXJlIHlldC4K ICAod2hpbGUgKGFuZAogICAgICAgICAgOzsgZmFpbHVyZSBtZWFucyB0aGUgYmVnaW5uaW5nIG9m IHRoZSBidWZmZXIgd2FzIHJlYWNoZWQKICAgICAgICAgIChyZS1zZWFyY2gtYmFja3dhcmQgc3Bl Y21hbi1iZWctb2YtZGVmdW4tcXVlcnktcmVnZXhwIG5pbCB0KQogICAgICAgICAgOzsgZmFpbHVy ZSBtZWFucyBhIG1ham9yIGRlZmluaXRpb24gd2FzIG1hdGNoZWQgKGkuZS4gKG1hdGNoLWJlZ2lu bmluZyAyKSBpcyB0cnVlKQogICAgICAgICAgKG1hdGNoLWJlZ2lubmluZyAxKQogICAgICAgICAg OzsgZmFpbHVyZSBtZWFucyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBidWZmZXIgd2FzIHJlYWNoZWQg LSBzdWNjZXNzIHJlcGVhdHMgdGhlIHNlYXJjaAogICAgICAgICAgKHJlLXNlYXJjaC1iYWNrd2Fy ZCAiXic+IiBuaWwgdCkpKQogIChwb2ludCkKICApCgooZGVmdW4gc3BlY21hbi1lbmQtb2YtZS1j b2RlICgpCiAgICJNb3ZlIHRvIHRoZSBlbmQgb2YgdGhlIGUtY29kZSBpbiB0aGlzIGZpbGUuIgog ICAoaW50ZXJhY3RpdmUpCiAgIAogICAoZ290by1jaGFyIChwb2ludC1tYXgpKQogICAocmUtc2Vh cmNoLWJhY2t3YXJkICJcXCheJz5cXCkiIG5pbCB0KQogICApCgooZGVmdW4gc3BlY21hbi1lbmQt b2YtZGVmdW4gKCkKICAiTW92ZSBmb3J3YXJkIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3Ry dWN0IG9yIHByb2NlZHVyZSwKICAgb3IgZmFpbGluZyB0aGF0IC0gdG8gdGhlIGVuZCBvZiB0aGUg ZS1jb2RlIHNlY3Rpb24gaW4gdGhlIGZpbGUuIgogIChpbnRlcmFjdGl2ZSkKCiAgKHNwZWNtYW4t YmVnLW9mLWRlZnVuKQogIChpZiAobG9va2luZy1hdCAiPCciKQogICAgICAoc3BlY21hbi1lbmQt b2YtZS1jb2RlKQogICAgKHByb2duCiAgICAgIChzcGVjbWFuLXJlLXNlYXJjaC1mb3J3YXJkICJ7 IiAocG9pbnQtbWF4KSB0KQogICAgICAoc3BlY21hbi1kb3duLXNjb3BlKSkKICAgICkKICApCgo7 OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgoocHV0 ICdzcGVjbWFuLW1vZGUgJ2ZvbnQtbG9jay1kZWZhdWx0cwogICAgICcoKHNwZWNtYW4tZm9udC1s b2NrLWtleXdvcmRzIAogICAgICAgIHNwZWNtYW4tZm9udC1sb2NrLWtleXdvcmRzLTEKICAgICAg ICBzcGVjbWFuLWZvbnQtbG9jay1rZXl3b3Jkcy0yCiAgICAgICAgc3BlY21hbi1mb250LWxvY2st a2V5d29yZHMtMykKICAgICAgIG5pbCA7OyBuaWwgbWVhbnMgaGlnaGxpZ2h0IHN0cmluZ3MgJiBj b21tZW50cyBhcyB3ZWxsIGFzIGtleXdvcmRzCiAgICAgICBuaWwgOzsgbmlsIG1lYW5zIGtleXdv cmRzIG11c3QgbWF0Y2ggY2FzZQogICAgICAgbmlsIDs7IHN5bnRheCB0YWJsZSBoYW5kbGVkIGVs c2V3aGVyZQogICAgICAgc3BlY21hbi1iZWctb2YtZGVmdW4gOzsgZnVuY3Rpb24gdG8gbW92ZSB0 byBiZWdpbm5pbmcgb2YgcmVhc29uYWJsZSByZWdpb24gdG8gaGlnaGxpZ2h0CiAgICAgICApKQoK Ozs7IEhhY2tzIGZvciBGU0YKKHJlcXVpcmUgJ2ZvbnQtbG9jaykKKGRlZnZhciBzcGVjbWFuLW5l ZWQtZmxkIDEpCihkZWZ2YXIgZm9udC1sb2NrLWRlZmF1bHRzLWFsaXN0IG5pbCkJO0luIGNhc2Ug d2UgYXJlIFhFbWFjcwooaWYgc3BlY21hbi1uZWVkLWZsZAogICAgKGxldCAoKHNwZWNtYW4tbW9k ZS1kZWZhdWx0cwoJICAgJygoc3BlY21hbi1mb250LWxvY2sta2V5d29yZHMgCgkgICAgICBzcGVj bWFuLWZvbnQtbG9jay1rZXl3b3Jkcy0xCgkgICAgICBzcGVjbWFuLWZvbnQtbG9jay1rZXl3b3Jk cy0yCgkgICAgICBzcGVjbWFuLWZvbnQtbG9jay1rZXl3b3Jkcy0zKQoJICAgICBuaWwgOzsgbmls IG1lYW5zIGhpZ2hsaWdodCBzdHJpbmdzICYgY29tbWVudHMgYXMgd2VsbCBhcyBrZXl3b3JkcwoJ ICAgICBuaWwgOzsgbmlsIG1lYW5zIGtleXdvcmRzIG11c3QgbWF0Y2ggY2FzZQoJICAgICBuaWwg Ozsgc3ludGF4IHRhYmxlIGhhbmRsZWQgZWxzZXdoZXJlCgkgICAgIHNwZWNtYW4tYmVnLW9mLWRl ZnVuIDs7IGZ1bmN0aW9uIHRvIG1vdmUgdG8gYmVnaW5uaW5nIG9mIHJlYXNvbmFibGUgcmVnaW9u IHRvIGhpZ2hsaWdodAoJICAgICApKSkKICAgICAgKHNldHEgZm9udC1sb2NrLWRlZmF1bHRzLWFs aXN0CgkgICAgKGFwcGVuZAoJICAgICBmb250LWxvY2stZGVmYXVsdHMtYWxpc3QKCSAgICAgKGxp c3QgKGNvbnMgJ3NwZWNtYW4tbW9kZSAgc3BlY21hbi1tb2RlLWRlZmF1bHRzKSkpCgkgICAgKQog ICAgICAoc2V0cSBzcGVjbWFuLW5lZWQtZmxkIDApKSkKCjs7ID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KOzsgU1BFQ01BTiBNT0RFIC0gTUFJTiBGVU5D VElPTgo7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CgooZGVmdmFyIHNwZWNtYW4tbW9kZS1hYmJyZXYtdGFibGUgbmlsCiAgIkFiYnJldiB0YWJsZSBp biB1c2UgaW4gU3BlY21hbi1tb2RlIGJ1ZmZlcnMuIgogICkKKGRlZmluZS1hYmJyZXYtdGFibGUg J3NwZWNtYW4tbW9kZS1hYmJyZXYtdGFibGUgKCkpCgooZGVmdW4gc3BlY21hbi1tb2RlICgpCiAg Ik1ham9yIG1vZGUgZm9yIGVkaXRpbmcgU3BlY21hbiBjb2RlLgoKQXV0b21hdGljYWxseSBpbmRl bnRzIGFuZCBjb2xvcml6ZXMgRSBjb2RlLgoKVG8gc3VibWl0IGEgcHJvYmxlbSByZXBvcnQsIGVu dGVyIFxcW3NwZWNtYW4tc3VibWl0LWJ1Zy1yZXBvcnRdIGZyb20gYQpzcGVjbWFuIG1vZGUgYnVm ZmVyLiBUaGlzIGF1dG9tYXRpY2FsbHkgc2V0cyB1cCBhIG1haWwgYnVmZmVyIHdpdGgKdmVyc2lv biBpbmZvcm1hdGlvbiBhbHJlYWR5IGFkZGVkLiBZb3UganVzdCBuZWVkIHRvIGFkZCBhIGRlc2Ny aXB0aW9uCm9mIHRoZSBwcm9ibGVtLCBpbmNsdWRpbmcgYSByZXByb2R1Y2libGUgdGVzdCBjYXNl LCBhbmQgc2VuZCB0aGUKbWVzc2FnZS4KClRvIHR1bmUgdGhlIGZvbnRzIGFuZCBjb2xvcnMgdG8g eW91ciBwcmVmZXJlbmNlLCBlbnRlcgpcXFtzcGVjbWFuLWZvbnQtY3VzdG9taXplXS4KClRvIHR1 bmUgb3RoZXIgdXNlciB0dW5hYmxlIG9wdGlvbnMsIGVudGVyClxcW3NwZWNtYW4tY3VzdG9taXpl XS4KCktleSBCaW5kaW5nczoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Clxce3Nw ZWNtYW4tbW9kZS1tYXB9IgogIChpbnRlcmFjdGl2ZSkKICAKICAoa2lsbC1hbGwtbG9jYWwtdmFy aWFibGVzKQogICh1c2UtbG9jYWwtbWFwIHNwZWNtYW4tbW9kZS1tYXApCiAgKHNldHEgbWFqb3It bW9kZSAnc3BlY21hbi1tb2RlKQogIChzZXRxIG1vZGUtbmFtZSAiU3BlY21hbiIpCiAgKHNldHEg d3JpdGUtZmlsZS1ob29rcyBuaWwpCiAgKHNldHEgbG9jYWwtYWJicmV2LXRhYmxlIHNwZWNtYW4t bW9kZS1hYmJyZXYtdGFibGUpCiAgKHNldHEgc3BlY21hbi1tb2RlLXN5bnRheC10YWJsZSAobWFr ZS1zeW50YXgtdGFibGUpKQogIChzcGVjbWFuLXBvcHVsYXRlLXN5bnRheC10YWJsZSBzcGVjbWFu LW1vZGUtc3ludGF4LXRhYmxlKQoKICA7OyBhZGQgZXh0cmEgY29tbWVudCBzeW50YXgKICAoc3Bl Y21hbi1zZXR1cC1kdWFsLWNvbW1lbnRzIHNwZWNtYW4tbW9kZS1zeW50YXgtdGFibGUpCiAgKHNl dC1zeW50YXgtdGFibGUgc3BlY21hbi1tb2RlLXN5bnRheC10YWJsZSkKCiAgOzsgaW5pdGlhbGl6 YXRpb25zCiAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ3BhcnNlLXNleHAtaWdub3JlLWNvbW1lbnRz KQogIChzZXRxIHBhcnNlLXNleHAtaWdub3JlLWNvbW1lbnRzIHQpCiAgKG1ha2UtbG9jYWwtdmFy aWFibGUgJ2luZGVudC1saW5lLWZ1bmN0aW9uKQogIChzZXRxIGluZGVudC1saW5lLWZ1bmN0aW9u ICdzcGVjbWFuLWluZGVudC1saW5lKQogIAogIChtYWtlLWxvY2FsLXZhcmlhYmxlICdjb21tZW50 LXN0YXJ0KQogIChtYWtlLWxvY2FsLXZhcmlhYmxlICdjb21tZW50LWVuZCkKICAobWFrZS1sb2Nh bC12YXJpYWJsZSAnYmxvY2stY29tbWVudC1zdGFydCkKICAobWFrZS1sb2NhbC12YXJpYWJsZSAn YmxvY2stY29tbWVudC1lbmQpCiAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2NvbW1lbnQtbXVsdGkt bGluZSkKICAobWFrZS1sb2NhbC12YXJpYWJsZSAnY29tbWVudC1zdGFydC1za2lwKQogIChtYWtl LWxvY2FsLXZhcmlhYmxlICdjb21tZW50LWNvbHVtbikKICAobWFrZS1sb2NhbC12YXJpYWJsZSAn bm9ybWFsLWF1dG8tZmlsbC1mdW5jdGlvbikKICAobWFrZS1sb2NhbC12YXJpYWJsZSAnaW5kZW50 LXJlZ2lvbi1mdW5jdGlvbikKICAobWFrZS1sb2NhbC12YXJpYWJsZSAnY29tbWVudC1pbmRlbnQt ZnVuY3Rpb24pCiAgKHNldHEgY29tbWVudC1pbmRlbnQtZnVuY3Rpb24gJ3NwZWNtYW4tY29tbWVu dC1pbmRlbnQpCiAgKHNldHEgY29tbWVudC1zdGFydCAiLy8gIgogICAgICAgIGNvbW1lbnQtZW5k ICIiCiAgICAgICAgY29tbWVudC1zdGFydC1za2lwICJcXChcXChcXCgvL1xcKVxcfFxcKC0tXFwp XFx8XFwoL1xcKlxcKVxcKVsgXHRdKlxcKSIKICAgICAgICBjb21tZW50LWNvbHVtbiA0OAogICAg ICAgIGNvbW1lbnQtbXVsdGktbGluZSB0CiAgICAgICAgOztub3JtYWwtYXV0by1maWxsLWZ1bmN0 aW9uICdzcGVjbWFuLWRvLWF1dG8tZmlsbCA7OyBUT0RPOiBzb21lZGF5Li4uCiAgICAgICAgaW5k ZW50LXJlZ2lvbi1mdW5jdGlvbiAnc3BlY21hbi1pbmRlbnQtcmVnaW9uKQoKICAobWFrZS1sb2Nh bC12YXJpYWJsZSAnY2FzZS1mb2xkLXNlYXJjaCkKICAobWFrZS1sb2NhbC12YXJpYWJsZSAnaW5k ZW50LXJlZ2lvbi1mdW5jdGlvbikKICAoc2V0cSBpbmRlbnQtcmVnaW9uLWZ1bmN0aW9uICdzcGVj bWFuLWluZGVudC1yZWdpb24pCiAgKHNldHEgY2FzZS1mb2xkLXNlYXJjaCB0KQoKICAoc2V0cSBl Y29tLXN5bnRheC1oaWdobGlnaHQKICAgICAgICAoc3RyaW5nLW1hdGNoICJcXC5lY29tXFwnIgog ICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1maWxlLW5hbWUpKSkKCiAgOzsgc2V0dXAgdGhl IGNvbW1lbnQgaW5kZW50IHZhcmlhYmxlIGluIGEgRW1hY3MgdmVyc2lvbiBwb3J0YWJsZSB3YXkK ICA7OyBpZ25vcmUgYW55IGJ5dGUgY29tcGlsZXIgd2FybmluZ3MgeW91IG1pZ2h0IGdldCBoZXJl CiAgKGlmIChib3VuZHAgJ2NvbW1lbnQtaW5kZW50LWZ1bmN0aW9uKQogICAgICAocHJvZ24KCSht YWtlLWxvY2FsLXZhcmlhYmxlICdjb21tZW50LWluZGVudC1mdW5jdGlvbikKCShzZXRxIGNvbW1l bnQtaW5kZW50LWZ1bmN0aW9uICdzcGVjbWFuLWNvbW1lbnQtaW5kZW50KSkKICAgIChtYWtlLWxv Y2FsLXZhcmlhYmxlICdjb21tZW50LWluZGVudC1mdW5jdGlvbikKICAgIChzZXRxIGNvbW1lbnQt aW5kZW50LWZ1bmN0aW9uICdzcGVjbWFuLWNvbW1lbnQtaW5kZW50KSkKICAKICA7OyBNYWtlIGEg bWVudSBiYXIKICAoaWYgKHN0cmluZy1tYXRjaCAiWEVtYWNzIiBlbWFjcy12ZXJzaW9uKQogICAg ICAocHJvZ24KICAgICAgICAoaWYgKGFuZCBjdXJyZW50LW1lbnViYXIKICAgICAgICAgICAgICAg ICAobm90IChhc3NvYyAiU3BlY21hbiIgY3VycmVudC1tZW51YmFyKSkpCiAgICAgICAgICAgIChw cm9nbgogICAgICAgICAgICAgIChzZXQtYnVmZmVyLW1lbnViYXIgKGNvcHktc2VxdWVuY2UgY3Vy cmVudC1tZW51YmFyKSkKICAgICAgICAgICAgICAoYWRkLXN1Ym1lbnUgbmlsIHNwZWNtYW4teGVt YWNzLW1lbnUpKSkgKSkKICAKICA7OyBpbWVudSBzZXR1cCAtIHNldHVwIHRoZSBmdW5jdGlvbiB0 aGF0IGNyZWF0ZXMgdGhlIHNwZWNtYW4gaW5kZXgKICAod2hlbiBzcGVjbWFuLWluZGV4LW1lbnUt YWN0aXZlCiAgICAoc2V0cSBpbWVudS0tc3BsaXQtc3VibWVudXMtZW5hYmxlIG5pbCkKICAgIChz ZXRxIGltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlvbiAnc3BlY21hbi1pbWVudS1jcmVhdGUtbWVu dSkKICAgIChpbWVudS1hZGQtdG8tbWVudWJhciAiU3BlY21hbi1JbmRleCIpCiAgICApCiAgCiAg KHJ1bi1ob29rcyAnc3BlY21hbi1tb2RlLWhvb2spCiAgKQoKOzsgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo7OyBTUEVDTUFOIElOREVOVEFUSU9OCjs7 ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCihkZWZ1 biBzcGVjbWFuLWNvbW1lbnQtaW5kZW50ICgmb3B0aW9uYWwgYXJnKQogICJyZXR1cm4gdGhlIGNv bHVtbiBudW1iZXIgdGhlIGxpbmUgc2hvdWxkIGJlIGluZGVudGVkIHRvLiIKICAoY29uZAogICAo KHNwZWNtYW4td2l0aGluLWxpbmUtY29tbWVudC1wKQogICAgCiAgICAoc2F2ZS1leGN1cnNpb24K ICAgICAgKHJlLXNlYXJjaC1iYWNrd2FyZCBjb21tZW50LXN0YXJ0LXNraXAgbmlsIHQpCiAgICAg IChjdXJyZW50LWNvbHVtbikpCiAgICApCiAgIChjb21tZW50LWNvbHVtbgogICAgCiAgICBjb21t ZW50LWNvbHVtbgogICAgKQogICAodAogICAgCiAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgKHJl LXNlYXJjaC1iYWNrd2FyZCBjb21tZW50LXN0YXJ0LXNraXAgbmlsIHQpCiAgICAgIChjdXJyZW50 LWNvbHVtbikpCiAgICApCiAgICkKICApCgooZGVmdW4gc3BlY21hbi1pbmRlbnQtbGluZS1rZWVw LXBvcyAoKQogICJNYWluIGluZGVudCBmdW5jdGlvbiBmb3Igc3BlY21hbi1tb2RlIgogIChsZXQg KChzdGFydC1wb3MgIChzcGVjbWFuLWluZGVudC1jb2wpKQogICAgICAgIChjdXJyLXBvcyAgIChj dXJyZW50LWNvbHVtbikpCiAgICAgICAgb2Zmc2V0CiAgICAgICAgKQogICAgCiAgICAoc2V0cSBv ZmZzZXQgKC0gY3Vyci1wb3Mgc3RhcnQtcG9zKSkKICAgIChzcGVjbWFuLWluZGVudC1saW5lKQog ICAgKG1vdmUtdG8tY29sdW1uICgrIChzcGVjbWFuLWluZGVudC1jb2wpCiAgICAgICAgICAgICAg ICAgICAgICAgb2Zmc2V0KSkKICAgICkKICApCgooZGVmdW4gc3BlY21hbi1pbmRlbnQtcmVnaW9u IChiZWctcmVnaW9uIGVuZC1yZWdpb24pCiAgIkluZGVudCByZWdpb24gZm9yIHNwZWNtYW4uIgog IChpbnRlcmFjdGl2ZSkKICAKICAobWVzc2FnZSAiV2FpdCB3aGlsZSBpbmRlbnRpbmcgLi4uLiAi KQogIAogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGdvdG8tY2hhciBiZWctcmVnaW9uKQogICAgCiAg ICAod2hlbiAoYW5kIGJlZy1yZWdpb24KICAgICAgICAgICAgICAgZW5kLXJlZ2lvbikKICAgICAg CiAgICAgIChsZXQgKChjdXJyLWxpbmUKICAgICAgICAgICAgIDApCiAgICAgICAgICAgIChudW0t bGluZXMKICAgICAgICAgICAgIDEpCiAgICAgICAgICAgIChzdGFydC1saW5lLXBvaW50CiAgICAg ICAgICAgICAwKQogICAgICAgICAgICAobGluZS1jb21tZW50LWluZGVudAogICAgICAgICAgICAg bmlsKQogICAgICAgICAgICApCgogICAgICAgIChzcGVjbWFuLWNyZWF0ZS1nbG9iYWwtc2NvcGUt aW5kZXgpCiAgICAgICAgCgkoZ290by1jaGFyIGJlZy1yZWdpb24pCgkoYmVnaW5uaW5nLW9mLWxp bmUpCgkoc2V0cSBzdGFydC1saW5lLXBvaW50IChwb2ludCkpCiAgICAgICAgCiAgICAgICAgKGdv dG8tY2hhciBlbmQtcmVnaW9uKQogICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKICAgICAgICAo c2V0cSBudW0tbGluZXMKICAgICAgICAgICAgICAoKyAoY291bnQtbGluZXMgc3RhcnQtbGluZS1w b2ludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKQogICAgICAgICAgICAg ICAgIDEpKQogICAgICAgIAogICAgICAgIChnb3RvLWNoYXIgc3RhcnQtbGluZS1wb2ludCkKCiAg ICAgICAgOzsgc2tpcCBhbnkgcmVnaW9uIGNvbW1lbnQgaW4gdGhlIGJlZ2lubmluZyBvZiB0aGUg cmVnaW9uLAogICAgICAgIDs7IHdpdGggcHJvZ3Jlc3MgbWVzc2FnZS4KICAgICAgICA7OyBUT0RP OiBpbmVmZmljaWVudCAtIGp1bXAgdG8gdGhlIGVuZCBpbW1lZGlhdGVseSBhbmQgY291bnQKICAg ICAgICA7OyAgICAgICBsaW5lcyBzb21lIG90aGVyIHdheS4KICAgICAgICAod2hlbiAoc3BlY21h bi13aXRoaW4tcmVnaW9uLWNvbW1lbnQtcCkKICAgICAgICAgICh3aGlsZSAoYW5kIChzcGVjbWFu LXdpdGhpbi1yZWdpb24tY29tbWVudC1wKQogICAgICAgICAgICAgICAgICAgICAgKDwgY3Vyci1s aW5lCiAgICAgICAgICAgICAgICAgICAgICAgICBudW0tbGluZXMpKQogICAgICAgICAgICAoc2V0 cSBjdXJyLWxpbmUgKCsgY3Vyci1saW5lIDEpKQogICAgICAgICAgICAod2hlbiAoPSAwICglIGN1 cnItbGluZSAxMCkpCiAgICAgICAgICAgICAgKG1lc3NhZ2UgImluZGVudGVkICVkLyVkIGxpbmVz IC4uLiIgY3Vyci1saW5lIG51bS1saW5lcykpCiAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgMSkp CiAgICAgICAgICApCgogICAgICAgIDs7IGluZGVudCBsaW5lIChzcGVjaWFsIGNhc2UgZm9yIGZ1 bGwgbGluZSBjb21tZW50cykKCSh3aGlsZSAoPCBjdXJyLWxpbmUKICAgICAgICAgICAgICAgICAg bnVtLWxpbmVzKQogICAgICAgICAgCgkgICh1bmxlc3MgKG9yIChsb29raW5nLWF0ICJeWyBcdF0q JCIpIDs7IGRvIG5vdGhpbmcgZm9yIGFuIGVtcHR5IGxpbmUKICAgICAgICAgICAgICAgICAgICAg IChzcGVjbWFuLWxpbmUtd2l0aGluLXN0YXItY29tbWVudC1vci1zdHJpbmctcCkpCiAgICAgICAg ICAgIChpZiAoc3BlY21hbi1saW5lLXdpdGhpbi1jb21tZW50LXApCiAgICAgICAgICAgICAgICA7 OyB1c2UgdGhlIHNhbWUgaW5kZW50IGZvciBzZXF1ZW5jZXMgb2YgbGluZS1jb21tZW50cwogICAg ICAgICAgICAgICAgKGlmIGxpbmUtY29tbWVudC1pbmRlbnQKICAgICAgICAgICAgICAgICAgICAo aW5kZW50LWxpbmUtdG8gbGluZS1jb21tZW50LWluZGVudCkKICAgICAgICAgICAgICAgICAgKHNl dHEgbGluZS1jb21tZW50LWluZGVudCAoc3BlY21hbi1pbmRlbnQtbGluZSB0KSkpCiAgICAgICAg ICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICh3aGVuIGxpbmUtY29tbWVudC1pbmRlbnQK ICAgICAgICAgICAgICAgICAgIChzZXRxIGxpbmUtY29tbWVudC1pbmRlbnQgbmlsKSkKICAgICAg ICAgICAgICAgICAoc3BlY21hbi1pbmRlbnQtbGluZSB0KQogICAgICAgICAgICAgICAgICkKICAg ICAgICAgICAgICAgKQogICAgICAgICAgICApCgogICAgICAgICAgOzsgcHJpbnQgcHJvZ3Jlc3Mg bWVzc2FnZQoJICAoc2V0cSBjdXJyLWxpbmUgKCsgY3Vyci1saW5lIDEpKQogICAgICAgICAgKHdo ZW4gKD0gMCAoJSBjdXJyLWxpbmUgMTApKQogICAgICAgICAgICAobWVzc2FnZSAiaW5kZW50ZWQg JWQvJWQgbGluZXMgLi4uIiBjdXJyLWxpbmUgbnVtLWxpbmVzKSkKICAgICAgICAgIAogICAgICAg ICAgKGZvcndhcmQtbGluZSAxKQogICAgICAgICAgCiAgICAgICAgICA7OyBza2lwIGV4LWNvZGUg cmVnaW9ucyB3aXRoIHByb2dyZXNzIG1lc3NhZ2UKICAgICAgICAgIDs7IFRPRE86IGhhdmUgdGhp cyB3b3JrIGxpa2UgdGhlIHRoZSByZWdpb24gY29tbWVudCBza2lwcGluZwogICAgICAgICAgOzsg ICAgICAgc2VjdGlvbiBhdCB0aGUgYmVnaW5uaW5nLiAgYmV0dGVyIGZvcm0gYW5kIGFsc28gZG9l cwogICAgICAgICAgOzsgICAgICAgc3RhciBjb21tZW50cyAob3IgYXQgbGVhc3Qgd2lsbCBiZSwg YWZ0ZXIgdGhlIHdheSBpdAogICAgICAgICAgOzsgICAgICAgbW92ZXMgdG8gdGhlIGVuZCB3aGls ZSBjb3VudGluZyBsaW5lcyBpcyByZXdyaXR0ZW4pLgogICAgICAgICAgKHdoZW4gKGxvb2tpbmct YXQgIl4nPiIpCiAgICAgICAgICAgICh3aGlsZSAoYW5kIChub3QgKGxvb2tpbmctYXQgIl48JyIp KQogICAgICAgICAgICAgICAgICAgICAgICAoPCBjdXJyLWxpbmUKICAgICAgICAgICAgICAgICAg ICAgICAgICAgbnVtLWxpbmVzKSkKICAgICAgICAgICAgICAoc2V0cSBjdXJyLWxpbmUgKCsgY3Vy ci1saW5lIDEpKQogICAgICAgICAgICAgICh3aGVuICg9IDAgKCUgY3Vyci1saW5lIDEwKSkKICAg ICAgICAgICAgICAgIChtZXNzYWdlICJpbmRlbnRlZCAlZC8lZCBsaW5lcyAuLi4iIGN1cnItbGlu ZSBudW0tbGluZXMpKQogICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgMSkpCiAgICAgICAgICAg IChmb3J3YXJkLWxpbmUgMSkpCiAgICAgICAgICApCgogICAgICAgIChzcGVjbWFuLWNsZWFyLWds b2JhbC1zY29wZS1pbmRleCkKICAgICAgICAKCShnb3RvLWNoYXIgc3RhcnQtbGluZS1wb2ludCkK ICAgICAgICApKQogICAgKQogIAogIChtZXNzYWdlIG5pbCkKICApCgooZGVmdW4gc3BlY21hbi1i ZWctb2Ytc3RhdGVtZW50ICgmb3B0aW9uYWwgd2l0aGluLWNvZGUtcmVnaW9uKQogICJNb3ZlIHRv IHN0YXJ0IG9mIHN0YXRlbWVudCBhbmQgcmV0dXJuIHBvaW50IgogIChsZXQqICgobGltCiAgICAg ICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgKHNwZWNtYW4tdXAtc2NvcGUgd2l0aGlu LWNvZGUtcmVnaW9uKSkKICAgICAgICAgICkKICAgICAgICAgKGZvdW5kLXN0YXRlbWVudC1jbG9z ZXIKICAgICAgICAgIG5pbAogICAgICAgICAgKQogICAgICAgICAobGFzdAogICAgICAgICAgKHNh dmUtZXhjdXJzaW9uCiAgICAgICAgICAgIDs7IGhhdmUgdG8gYmUgY2FyZWZ1bCBoZXJlIHRvIHBy ZXZlbnQgZmluZGluZyB0aGUgZW5kIG9mIHRoZSBjdXJyZW50CiAgICAgICAgICAgIDs7IHN0YXRl bWVudC9hY3Rpb24gYnV0IHN0aWxsIG5vdCBlbnRlcmluZyBhbnkgbmV3IHNjb3BlIHdoaWxlIGNo ZWNraW5nIHRoYXQuCiAgICAgICAgICAgIChzcGVjbWFuLXJlLXNlYXJjaC1iYWNrd2FyZCAiWzsp fV0iIChzcGVjbWFuLWJlZy1vZi1saW5lLXBvcykgdCB3aXRoaW4tY29kZS1yZWdpb24pCiAgICAg ICAgICAgIAogICAgICAgICAgICAodW5sZXNzIChsb29raW5nLWF0ICI7IikKICAgICAgICAgICAg ICAoZm9yd2FyZC1jaGFyKSkKICAgICAgICAgICAgCiAgICAgICAgICAgIChpZiAoYW5kICg+IChw b2ludCkgbGltKQogICAgICAgICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgICAg ICAgICA7OyBsb29rIGZvciBhIHRlcm1pbmF0aW5nICc7JyBpbiB0aGUgY3VycmVudCBzY29wZQog ICAgICAgICAgICAgICAgICAgICAgICh3aGlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAo YW5kIChzcGVjbWFuLXJlLXNlYXJjaC1iYWNrd2FyZCAiXFwoO1xcKVxcfFxcKFx9XFwpXFx8XFwo XClcXCkiIGxpbSB0IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgZm91bmQgYSBzdGF0ZW1lbnQvYWN0aW9u IHRlcm1pbmF0aW9uIC0gc3RvcCB3aXRoIHN1Y2Nlc3MKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKChtYXRjaC1iZWdpbm5pbmcgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBm b3VuZC1zdGF0ZW1lbnQtY2xvc2VyIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5pbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGZvdW5kIGEgc2Nv cGUgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2gtYmVnaW5uaW5n IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3BlY21hbi11cC1zY29wZSB0 KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgZm91bmQgYSBwYXJlbnMgY2xv c2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2gtYmVnaW5uaW5nIDMp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3BlY21hbi11cC1saXN0IHQpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKSkKICAgICAgICAgICAgICAgICAgICAg ICBmb3VuZC1zdGF0ZW1lbnQtY2xvc2VyKSkKICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAg ICAgICAgICAgICAoZm9yd2FyZC10by1pbmRlbnRhdGlvbiAxKQogICAgICAgICAgICAgICAgICAo c3BlY21hbi1mb3J3YXJkLXdzKQogICAgICAgICAgICAgICAgICAocG9pbnQpKQogICAgICAgICAg ICAgIChwcm9nbgogICAgICAgICAgICAgICAgKGdvdG8tY2hhciBsaW0pCiAgICAgICAgICAgICAg ICAoaWYgKGVxdWFsIChwb2ludCkgOzsgZW50ZXIgdGhlIHNjb3BlCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIChwb2ludC1taW4pKQogICAgICAgICAgICAgICAgICAgIChyZS1zZWFyY2gtZm9y d2FyZCAiXjwnIikKICAgICAgICAgICAgICAgICAgKGZvcndhcmQtY2hhciAxKSkKICAgICAgICAg ICAgICAgIChzcGVjbWFuLWZvcndhcmQtd3MpCiAgICAgICAgICAgICAgICAoZm9yd2FyZC10by1p bmRlbnRhdGlvbiAwKQogICAgICAgICAgICAgICAgKHBvaW50KSkpKQogICAgICAgICAgKQogICAg ICAgICApCiAgICAKICAgIGxhc3QKICAgICkKICApCgoKOzsgVE9ETzogdGhpcywgZG93biB0byBz cGVjbWFuLWFkZC1zeW50YXgsIGRvZXNuJ3Qgc2VlbSB0byBiZSBpbiB1c2UKOzsgICAgICAgYW5k IGNhbiBwcm9iYWJseSBiZSByZW1vdmVkLgo7Owo7OyBTUEVDTUFOIC0gTUFJTiBHRVQgTElORSBU WVBFCjs7IChkZWZjb25zdCBzcGVjbWFuLW9mZnNldHMtYWxpc3QtZGVmYXVsdAo7OyAgICcoKHN0 cmluZyAgICAgICAgICAgICAgICAuIC0xMDAwKQo7OyAgICAgKGJsb2NrLW9wZW4gICAgICAgICAg ICAuIDApCjs7ICAgICAoYmxvY2stY2xvc2UgICAgICAgICAgIC4gMCkKOzsgICAgIChzdGF0ZW1l bnQgICAgICAgICAgICAgLiAwKQo7OyAgICAgKHN0YXRlbWVudC1jb250ICAgICAgICAuIHNwZWNt YW4tbGluZXVwLXN0YXRlbWVudC1jb250KQo7OyAgICAgKHN0YXRlbWVudC1ibG9jay1pbnRybyAu ICspCjs7ICAgICAoc3RhdGVtZW50LWNhc2UtaW50cm8gIC4gKykKOzsgICAgIChjYXNlLWFsdGVy bmF0aXZlICAgICAgLiArKQo7OyAgICAgKGNvbW1lbnQgICAgICAgICAgICAgICAuIHNwZWNtYW4t bGluZXVwLWNvbW1lbnQpCjs7ICAgICAoYXJnbGlzdC1pbnRybyAgICAgICAgIC4gKykKOzsgICAg IChhcmdsaXN0LWNvbnQgICAgICAgICAgLiAwKQo7OyAgICAgKGFyZ2xpc3QtY29udC1ub25lbXB0 eSAuIHNwZWNtYW4tbGluZXVwLWFyZ2xpc3QpCjs7ICAgICAoYXJnbGlzdC1jbG9zZSAgICAgICAg IC4gc3BlY21hbi1saW5ldXAtYXJnbGlzdCkKOzsgICAgIChlbnRpdHkgICAgICAgICAgICAgICAg LiAwKQo7OyAgICAgKGNvbmZpZ3VyYXRpb24gICAgICAgICAuIDApCjs7ICAgICAocGFja2FnZSAg ICAgICAgICAgICAgIC4gMCkKOzsgICAgIChhcmNoaXRlY3R1cmUgICAgICAgICAgLiAwKQo7OyAg ICAgKHBhY2thZ2UtYm9keSAgICAgICAgICAuIDApCjs7ICAgICApCjs7ICAgIkRlZmF1bHQgc2V0 dGluZ3MgZm9yIG9mZnNldHMgb2Ygc3ludGFjdGljIGVsZW1lbnRzLgo7OyBEbyBub3QgY2hhbmdl IHRoaXMgY29uc3RhbnQhICBTZWUgdGhlIHZhcmlhYmxlIGBzcGVjbWFuLW9mZnNldHMtYWxpc3Qn IGZvcgo7OyBtb3JlIGluZm9ybWF0aW9uLiIpCgo7OyAoZGVmdmFyIHNwZWNtYW4tb2Zmc2V0cy1h bGlzdCAoY29weS1hbGlzdCBzcGVjbWFuLW9mZnNldHMtYWxpc3QtZGVmYXVsdCkKOzsgICAiKkFz c29jaWF0aW9uIGxpc3Qgb2Ygc3ludGFjdGljIGVsZW1lbnQgc3ltYm9scyBhbmQgaW5kZW50YXRp b24gb2Zmc2V0cy4KOzsgRWFjaCBjb25zIGNlbGwgaW4gdGhpcyBsaXN0IGhhcyB0aGUgZm9ybToK OzsgICAgIChTWU5UQUNUSUMtU1lNQk9MIC4gT0ZGU0VUKSIpCgo7OyAoZGVmdmFyIHNwZWNtYW4t c3ludGFjdGljLWNvbnRleHQgbmlsCjs7ICAgIkJ1ZmZlciBsb2NhbCB2YXJpYWJsZSBjb250YWlu aW5nIHN5bnRhY3RpYyBhbmFseXNpcyBsaXN0LiIpCjs7IChtYWtlLXZhcmlhYmxlLWJ1ZmZlci1s b2NhbCAnc3BlY21hbi1zeW50YWN0aWMtY29udGV4dCkKCjs7IChkZWZtYWNybyBzcGVjbWFuLWFk ZC1zeW50YXggKHN5bWJvbCAmb3B0aW9uYWwgcmVscG9zKQo7OyAgICJBcHBlbmQgc3ludGF4IGlu IFNZTUJPTCB0byB0aGUgc3ludGF4IGxpc3QuIgo7OyAgIGAoc2V0cSBzcGVjbWFuLXN5bnRhY3Rp Yy1jb250ZXh0Cjs7IAkgKGNvbnMgKGNvbnMgLHN5bWJvbCAscmVscG9zKSBzcGVjbWFuLXN5bnRh Y3RpYy1jb250ZXh0KSkpCgoKKGRlZnVuIHNwZWNtYW4taW5kZW50LWxpbmUgKCZvcHRpb25hbCB3 aXRoaW4tY29kZS1yZWdpb24pCiAgIkluZGVudCB0aGUgY3VycmVudCBsaW5lIGFzIFNQRUNNQU4g Y29kZS4gIFJldHVybnMgdGhlIGFtb3VudCBvZgppbmRlbnRhdGlvbiBjaGFuZ2UuIgogIChpbnRl cmFjdGl2ZSkKCiAgKHdoZW4gKG9yIHdpdGhpbi1jb2RlLXJlZ2lvbgogICAgICAgICAgICAobm90 IChvciAoc3BlY21hbi13aXRoaW4tc3RyaW5nLXApCiAgICAgICAgICAgICAgICAgICAgIDs7IHRo ZSBjYXNlIG9mIHVuLWluZGVudGVkIHNjb3BlIG9wZW5lciwgd2hpY2ggb3RoZXJ3aXNlCiAgICAg ICAgICAgICAgICAgICAgIDs7IHdvdWxkIGJlIGNvbnNpZGVyZWQgYXMgYmVpbmcgb3V0c2lkZSBh IGNvZGUgcmVnaW9uLgogICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAg ICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICAgICAgICAgICAgICAg ICAgKGxvb2tpbmctYXQgIlsgXHRdKjwnIikpCiAgICAgICAgICAgICAgICAgICAgIChzcGVjbWFu LXdpdGhpbi1yZWdpb24tY29tbWVudC1wKSkpKQogICAgKGxldCogKChzdGFydC1wb3NpdGlvbgog ICAgICAgICAgICAoc2V0LW1hcmtlciAobWFrZS1tYXJrZXIpIChwb2ludCkpCiAgICAgICAgICAg ICkKICAgICAgICAgICAoaW5kZW50CiAgICAgICAgICAgIChzcGVjbWFuLWdldC1vZmZzZXQgd2l0 aGluLWNvZGUtcmVnaW9uIHQpCiAgICAgICAgICAgICkKICAgICAgICAgICAoc2hpZnQtYW10CiAg ICAgICAgICAgICgtIGluZGVudAogICAgICAgICAgICAgICAoY3VycmVudC1pbmRlbnRhdGlvbikp CiAgICAgICAgICAgICkKICAgICAgICAgICApCgogICAgICAodW5sZXNzICh6ZXJvcCBzaGlmdC1h bXQpCiAgICAgICAgKGRlbGV0ZS1yZWdpb24gKHNwZWNtYW4tYmVnLW9mLWxpbmUtcG9zKQogICAg ICAgICAgICAgICAgICAgICAgIChzcGVjbWFuLWluZGVudC1wb3MpKQogICAgICAgIChiZWdpbm5p bmctb2YtbGluZSkKICAgICAgICAoaW5kZW50LXRvIGluZGVudCkpCgogICAgICA7OyBUT0RPOiB0 aGlzIHNlY3Rpb24gZGVhbHMgd2l0aCBtb3ZpbmcgdGhlIHBvaW50IGZvcndhcmQgdG8gdGhlCiAg ICAgIDs7IG5ldyBpbmRlbnRhdGlvbiB3aGVuIGFwcGxpY2FibGUuICBtb3N0IG9mIHRoZSB0aW1l cyB0aGUKICAgICAgOzsgZnVuY3Rpb24gaXMgY2FsbGVkIHRoaXMgaXNuJ3QgbmVlZGVkIGFuZCBq dXN0IHdhc3RlcwogICAgICA7OyBwZXJmb3JtYW5jZS4gIGF0dGVtcHRpbmcgdG8gcmVtb3ZlIHRo aXMgZGlkbid0IHdvcmsgd2VsbCwKICAgICAgOzsgbWF5YmUgYmVjYXVzZSBpdCdzIHRoZSBpbmRl bnRhdGlvbiBmdW5jdGlvbiBmb3IgdGhlIG1vZGUuCiAgICAgIDs7ICh3aWxsIHJlcGxhY2luZyBp dCB3aXRoIHNwZWNtYW4taW5kZW50LWxpbmUta2VlcC1wb3Mgc29sdmUKICAgICAgOzsgdGhlIHBy b2JsZW0/KQogICAgICAodW5sZXNzIHdpdGhpbi1jb2RlLXJlZ2lvbgogICAgICAgIChpZiAoPCAo cG9pbnQpCiAgICAgICAgICAgICAgIChzcGVjbWFuLWluZGVudC1wb3MpKQogICAgICAgICAgICAo YmFjay10by1pbmRlbnRhdGlvbikKICAgICAgICAgIDs7IElmIGluaXRpYWwgcG9pbnQgd2FzIHdp dGhpbiBsaW5lJ3MgaW5kZW50YXRpb24sIHBvc2l0aW9uIGFmdGVyCiAgICAgICAgICA7OyB0aGUg aW5kZW50YXRpb24uICBFbHNlIHN0YXkgYXQgc2FtZSBwb2ludCBpbiB0ZXh0LgogICAgICAgICAg KHdoZW4gKDwgKHBvaW50KSBzdGFydC1wb3NpdGlvbikKICAgICAgICAgICAgKGdvdG8tY2hhciBz dGFydC1wb3NpdGlvbikpKSkKICAgICAgCiAgICAgIChzZXQtbWFya2VyIHN0YXJ0LXBvc2l0aW9u IG5pbCkKICAgICAgKHJ1bi1ob29rcyAnc3BlY21hbi1zcGVjaWFsLWluZGVudC1ob29rKQogICAg ICAKICAgICAgaW5kZW50CiAgICAgICkKICAgICkKICApCgooZGVmdW4gc3BlY21hbi1zY29wZS1v ZmZzZXQgKHBhcmVubG9jKQogICJkZXRlcm1pbmUgdGhlIGFtb3VudCB0byBpbmRlbnQgY29kZSBi YXNlZCBvbiB0aGUgZW5jbG9zaW5nIHNjb3BlLiIKICAKICAoc2F2ZS1leGN1cnNpb24KICAgIChi YWNrLXRvLWluZGVudGF0aW9uKQogICAgCiAgICAobGV0ICgoYwogICAgICAgICAgIChjaGFyLWFm dGVyKQogICAgICAgICAgICkKICAgICAgICAgIChiZWctb2YtbGluZQogICAgICAgICAgIChwb2lu dCkKICAgICAgICAgICApCiAgICAgICAgICAodW5jb250aW51ZWQtbGluZQogICAgICAgICAgIDs7 IE5PVEU6IHNvbWUgcGVvcGxlIGxpa2UgdG8gaGF2ZSAiZWxzZSB7IiBjbGF1c2VzIGFmdGVyCiAg ICAgICAgICAgOzsgImlmIHsiIHRvIGFsc28gYmUgdW4taW5kZW50ZWQuICB0aGlzIHR1cm5lZCBv dXQgdG8gYmUgYQogICAgICAgICAgIDs7IHByb2JsZW0gYmVjYXVzZSB0aGVyZSBhcmUgb3RoZXIg ImVsc2UiIHR5cGVzIGluIGUKICAgICAgICAgICA7OyAoZS5nLiBhZnRlciAiY2hlY2sgdGhhdC4u LiIpLiAgdGhlIGNoZWNrIHR1cm5zIG91dCB0byBiZQogICAgICAgICAgIDs7IHRvbyBjb21wbGV4 IHRvIGJlIGp1c3RpZmllZC4KICAgICAgICAgICAobG9va2luZy1hdCAieyIpCiAgICAgICAgICAg KQogICAgICAgICAgKQogICAgICAKICAgICAgKGdvdG8tY2hhciBwYXJlbmxvYykKICAgICAgKGNv bmQKCiAgICAgICAoOzsgT3BlbiBzY29wZSBvciBsaXN0Cgkoc2FmZS1jaGFyPSAoY2hhci1hZnRl cikgP1x7KQoKICAgICAgICAobGV0KiAoKGJlZy1hZnRlci1sYXN0LXRlcm1pbmF0aW9uCiAgICAg ICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBi ZWctb2YtbGluZSkKICAgICAgICAgICAgICAgICAgKG9yIChzcGVjbWFuLXJlLXNlYXJjaC1iYWNr d2FyZCAiOyIgcGFyZW5sb2MgdCB0KQogICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBw YXJlbmxvYykpCiAgICAgICAgICAgICAgICAgIChmb3J3YXJkLWNoYXIpCiAgICAgICAgICAgICAg ICAgIChzcGVjbWFuLWZvcndhcmQtd3MpCiAgICAgICAgICAgICAgICAgIChwb2ludCkpKQogICAg ICAgICAgICAgICAoY29udGludWluZy1saW5lLW9mZnNldAogICAgICAgICAgICAgICAgKGlmIChv ciB1bmNvbnRpbnVlZC1saW5lCiAgICAgICAgICAgICAgICAgICAgICAgICg8PSBiZWctb2YtbGlu ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnLWFmdGVyLWxhc3QtdGVybWluYXRpb24p KSA7OyBub3QgYmVmb3JlIGN1cnJlbnQKICAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOzsgbGVhdmUgYXMgaXMKICAgICAgICAgICAgICAgICAg c3BlY21hbi1jb250aW51ZWQtbGluZS1vZmZzZXQpKSAgICAgICAgOzsgaW5kZW50IGFzIG5vbi10 ZXJtaW5hdGVkCiAgICAgICAgICAgICAgICkKICAgICAgICAgIChmb3J3YXJkLWNoYXIgMSkKICAg ICAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIiBcdCIpICAgICA7OyBtb3ZlIHBvc2l0aW9uIHRv IGVuZCBvZiB3aGl0ZXNwYWNlCiAgICAgICAgICAoaWYgKG9yIChsb29raW5nLWF0ICIvL1xcfC0t IikgOzsgZWl0aGVyIGNvbW1lbnQKICAgICAgICAgICAgICAgICAgKGVvbHApKSAgICAgICAgICAg ICAgICA7OyBvciBlbmQtb2YtbGluZQogICAgICAgICAgICAgIChwcm9nbiAgICAgICAgICAgICAg ICAgICAgIDs7IGluZGVudCBub3JtYWxseQogICAgICAgICAgICAgICAgKGdvdG8tY2hhciBwYXJl bmxvYykKICAgICAgICAgICAgICAgIChpZiAoc2F2ZS1leGN1cnNpb24gICAgICAgICAgICAgICAg ICAgICAgICA7OyBzcGVjaWFsIGNhc2U6CiAgICAgICAgICAgICAgICAgICAgICAoYW5kIChzcGVj bWFuLXVwLWxpc3QgdCkgICAgICAgICAgICAgOzsgc2NvcGUgd2l0aGluIGEgcGFyZW5zIGlzIGEK ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNhZmUtY2hhcj0gKGNoYXItYWZ0ZXIpID9cKCkp KSA7OyBsaXN0IGFyZ3VtZW50IHRvIGEgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAoYmFj ay10by1pbmRlbnRhdGlvbikgICAgICAgICAgICAgICAgICA7OyBzbyBpbmRlbnQgYWNjb3JkaW5n IHRvIGxhc3QgbGluZQogICAgICAgICAgICAgICAgICAoZ290by1jaGFyIChzcGVjbWFuLWJlZy1v Zi1zdGF0ZW1lbnQgdCkpKSAgOzsgbm9ybWFsbHkgaW5kZW50IHRvIHN0YXRlbWVudAogICAgICAg ICAgICAgICAgKGlmIChzYWZlLWNoYXI9IGMgP1x9KQogICAgICAgICAgICAgICAgICAgIChjdXJy ZW50LWNvbHVtbikKICAgICAgICAgICAgICAgICAgKCsgKGN1cnJlbnQtY29sdW1uKSAKICAgICAg ICAgICAgICAgICAgICAgc3BlY21hbi1iYXNpYy1vZmZzZXQKICAgICAgICAgICAgICAgICAgICAg Y29udGludWluZy1saW5lLW9mZnNldCkpKQogICAgICAgICAgICAoaWYgKHNhZmUtY2hhcj0gYyA/ XH0pICAgICAgICAgICAgOzsgbGVhdmUgYXQgc2FtZSBjb2x1bW4gYXMgbm9uLWNvbW1lbnQgY2hh cgogICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgcGFy ZW5sb2MpCiAgICAgICAgICAgICAgICAgIChjdXJyZW50LWNvbHVtbikpCiAgICAgICAgICAgICAg KCsgKGN1cnJlbnQtY29sdW1uKQogICAgICAgICAgICAgICAgIGNvbnRpbnVpbmctbGluZS1vZmZz ZXQpKSkpCiAgICAgICAgKQoKICAgICAgICg7OyBJbnNpZGUgKCApCgkoc2FmZS1jaGFyPSAoY2hh ci1hZnRlcikgP1woKQoKICAgICAgICAobGV0KiAoKGJlZy1hZnRlci1sYXN0LXRlcm1pbmF0aW9u CiAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAgKGdvdG8t Y2hhciBiZWctb2YtbGluZSkKICAgICAgICAgICAgICAgICAgKGlmIChsZXQgKChjb250aW51ZS1m bGFnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChyZXN1bHQtcG9pbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIDs7IGZp bmQgYSAnLCcgbm90IHdpdGhpbiBhbiBpbnRlcm5hbCBwYXJlbnMgKHdoaWNoIGNhbiBoYXBwZW4K ICAgICAgICAgICAgICAgICAgICAgICAgOzsgZS5nLiBpbiB0aGUgc2NvcGUgb2YgYSBsb2dpY2Fs IGNvbmRpdGlvbikuICBkb25lIHdpdGhpbgogICAgICAgICAgICAgICAgICAgICAgICA7OyBhIHNh dmUtZXhjdXJzaW9uIHNjb3BlIGJlY2F1c2Ugd2UgbWF5IG9ubHkgZmluZCBhbiBlbmRpbmcKICAg ICAgICAgICAgICAgICAgICAgICAgOzsgcGFyZW5zIGFuZCBuZXZlciBhICcsJyBhbmQgdGhlbiB3 ZSBkb24ndCB3YW50IHRvIGtlZXAgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIDs7IHBvc2l0 aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAg ICAgICAgICAgICAgICAod2hpbGUgKGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udGludWUtZmxhZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwZWNt YW4tcmUtc2VhcmNoLWJhY2t3YXJkICJcXCgsXFwpXFx8XFwoKVxcKSIgcGFyZW5sb2MgdCB0KSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAobWF0Y2gtYmVnaW5uaW5nIDIpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwZWNtYW4tdXAtbGlzdCB0KQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSBjb250aW51ZS1mbGFnIG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSByZXN1bHQtcG9pbnQgKHBvaW50KSkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAod2hlbiByZXN1bHQtcG9pbnQKICAgICAgICAgICAg ICAgICAgICAgICAgICAoZ290by1jaGFyIHJlc3VsdC1wb2ludCkpCiAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQtcG9pbnQpCiAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAg ICAgICAgICAoZm9yd2FyZC1jaGFyKQogICAgICAgICAgICAgICAgICAgICAgICAoc3BlY21hbi1m b3J3YXJkLXdzKQogICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKQogICAgICAgICAgICAg ICAgICAgIG5pbCkpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgIChjb250aW51aW5n LWxpbmUtb2Zmc2V0CiAgICAgICAgICAgICAgICAoaWYgKG9yIChub3QgYmVnLWFmdGVyLWxhc3Qt dGVybWluYXRpb24pIDs7IG5vdCBmb3VuZAogICAgICAgICAgICAgICAgICAgICAgICB1bmNvbnRp bnVlZC1saW5lCiAgICAgICAgICAgICAgICAgICAgICAgICg8PSBiZWctb2YtbGluZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgYmVnLWFmdGVyLWxhc3QtdGVybWluYXRpb24pKSA7OyBub3Qg YmVmb3JlIGN1cnJlbnQKICAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOzsgbGVhdmUgYXMgaXMKICAgICAgICAgICAgICAgICAgc3BlY21hbi1j b250aW51ZWQtbGluZS1vZmZzZXQpKSAgICAgICAgOzsgaW5kZW50IGFzIG5vbi10ZXJtaW5hdGVk CiAgICAgICAgICAgICAgICkKCiAgICAgICAgICAoKyAoaWYgKHNhZmUtY2hhcj0gYyA/XCkpICAg ICAgICAgICA7OyBhZGQgb2Zmc2V0IGZvciBub24tdGVybWluYXRlZCBsaW5lcwogICAgICAgICAg ICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgd2hpY2ggYXJlIG5vdCB0aGUg Y2xvc2luZyBwYXJlbnMgCiAgICAgICAgICAgICAgIGNvbnRpbnVpbmctbGluZS1vZmZzZXQpCiAg ICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgKGZvcndhcmQtY2hhciAxKQogICAgICAg ICAgICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgXHQiKSAgICAgOzsgbW92ZSBwb3NpdGlvbiB0 byBlbmQgb2Ygd2hpdGVzcGFjZQogICAgICAgICAgICAgICAoaWYgKG9yIChsb29raW5nLWF0ICIv L1xcfC0tIikgOzsgZWl0aGVyIGNvbW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAoZW9scCkp ICAgICAgICAgICAgICAgIDs7IG9yIGVuZC1vZi1saW5lCiAgICAgICAgICAgICAgICAgICAocHJv Z24gICAgICAgICAgICAgICAgICAgICA7OyBpbmRlbnQgbm9ybWFsbHkKICAgICAgICAgICAgICAg ICAgICAgKGJhY2stdG8taW5kZW50YXRpb24pCiAgICAgICAgICAgICAgICAgICAgICgrIChjdXJy ZW50LWNvbHVtbikKICAgICAgICAgICAgICAgICAgICAgICAgc3BlY21hbi1iYXNpYy1vZmZzZXQp KQogICAgICAgICAgICAgICAgIChpZiAoc2FmZS1jaGFyPSBjID9cKSkgICAgICAgOzsgbGVhdmUg YXQgc2FtZSBjb2x1bW4gYXMgbm9uLWNvbW1lbnQgY2hhcgogICAgICAgICAgICAgICAgICAgICAo cHJvZ24KICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHBhcmVubG9jKQogICAgICAg ICAgICAgICAgICAgICAgIChjdXJyZW50LWNvbHVtbikpCiAgICAgICAgICAgICAgICAgICAoY3Vy cmVudC1jb2x1bW4pKSkpKSkpCgogICAgICAgKDs7IEluc2lkZSBbIF0KCShzYWZlLWNoYXI9IChj aGFyLWFmdGVyKSA/XFspCiAgICAgICAgKHByb2duCiAgICAgICAgICAoZm9yd2FyZC1jaGFyIDEp CiAgICAgICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgXHQiKSAgICAgOzsgbW92ZSBwb3NpdGlv biB0byBlbmQgb2Ygd2hpdGVzcGFjZQogICAgICAgICAgKGlmIChvciAobG9va2luZy1hdCAiLy9c XHwtLSIpIDs7IGVpdGhlciBjb21tZW50CiAgICAgICAgICAgICAgICAgIChlb2xwKSkgICAgICAg ICAgICAgICAgOzsgb3IgZW5kLW9mLWxpbmUKICAgICAgICAgICAgICAocHJvZ24gICAgICAgICAg ICAgICAgICAgICA7OyBpbmRlbnQgbm9ybWFsbHkKICAgICAgICAgICAgICAgIChnb3RvLWNoYXIg KHNwZWNtYW4tYmVnLW9mLXN0YXRlbWVudCB0KSkKICAgICAgICAgICAgICAgIChpZiAoc2FmZS1j aGFyPSBjID9cXSkKICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1jb2x1bW4pCiAgICAgICAg ICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgICgrIChjdXJyZW50LWNvbHVtbikg CiAgICAgICAgICAgICAgICAgICAgICAgc3BlY21hbi1iYXNpYy1vZmZzZXQpKSkpCiAgICAgICAg ICAgIChpZiAoc2FmZS1jaGFyPSBjID9cXSkgICAgICAgOzsgbGVhdmUgYXQgc2FtZSBjb2x1bW4g YXMgbm9uLWNvbW1lbnQgY2hhcgogICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAg ICAgIChnb3RvLWNoYXIgcGFyZW5sb2MpCiAgICAgICAgICAgICAgICAgIChjdXJyZW50LWNvbHVt bikpCiAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkpKQogICAgICAgICkKCiAgICAgICAo OzsgbmV3IHN0YXRlbWVudAogICAgICAgIDs7IC0gd29ya3MgYmVjYXVzZSB0aGUgc2NvcGUgc2Vh cmNoIGFsd2F5cyBnb2VzIHRvIHRoZSBidWZmZXIKICAgICAgICA7OyAgIHN0YXJ0IGluIHRoaXMg Y2FzZQogICAgICAgIChlcXVhbCAocG9pbnQpCiAgICAgICAgICAgICAgIChwb2ludC1taW4pKQoK ICAgICAgICAobGV0KiAoKGJlZy1hZnRlci1sYXN0LXRlcm1pbmF0aW9uCiAgICAgICAgICAgICAg ICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBiZWctb2YtbGlu ZSkKICAgICAgICAgICAgICAgICAgKG9yIChzcGVjbWFuLXJlLXNlYXJjaC1iYWNrd2FyZCAiOyIg cGFyZW5sb2MgdCB0KQogICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBwYXJlbmxvYykp CiAgICAgICAgICAgICAgICAgIChlbmQtb2YtbGluZSkKICAgICAgICAgICAgICAgICAgKHNwZWNt YW4tZm9yd2FyZC13cykKICAgICAgICAgICAgICAgICAgKHBvaW50KSkpCiAgICAgICAgICAgICAg IChjb250aW51aW5nLWxpbmUtb2Zmc2V0CiAgICAgICAgICAgICAgICAoaWYgKDw9IGJlZy1vZi1s aW5lCiAgICAgICAgICAgICAgICAgICAgICAgIGJlZy1hZnRlci1sYXN0LXRlcm1pbmF0aW9uKSAg Ozsgbm90IGJlZm9yZSBjdXJyZW50CiAgICAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOzsgbGVhdmUgYXMgaXMKICAgICAgICAgICAgICAgIHNwZWNtYW4t Y29udGludWVkLWxpbmUtb2Zmc2V0KSkgICAgICA7OyBpbmRlbnQgYXMgbm9uLXRlcm1pbmF0ZWQK ICAgICAgICAgICAgICAgKQoKICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICAgKCsg KGN1cnJlbnQtY29sdW1uKQogICAgICAgICAgIGNvbnRpbnVpbmctbGluZS1vZmZzZXQpKQogICAg ICAgICkKICAgICAgIAogICAgICAgKDs7IEV2ZXJ5dGhpbmcgZWxzZQoJdAogICAgICAgIAoJKGN1 cnJlbnQtY29sdW1uKQogICAgICAgICkKICAgICAgICkKICAgICAgKQogICAgKQogICkKCihkZWZ1 biBzcGVjbWFuLWdldC1vZmZzZXQgKCZvcHRpb25hbCB3aXRoaW4tY29kZS1yZWdpb24KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dC1vZi1zdHJpbmctcXVvdGVzKQogIChs ZXQgKHBvcwogICAgICAgICkKICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAoYmVnaW5uaW5nLW9m LWxpbmUpCiAgICAgIAogICAgICAoY29uZAogICAgICAgKDs7IGxpbmUgd2l0aGluIHN0cmluZwog ICAgICAgIDs7IC0gb3V0LW9mLXN0cmluZy1xdW90ZXMgaXMgYW4gb3B0aW1pemF0aW9uIHRvIG1h a2Ugc3VyZSB0aGF0CiAgICAgICAgOzsgICBzcGVjbWFuLWxpbmUtd2l0aGluLXN0cmluZy1wIGlz bid0IGNhbGxlZCBtb3JlIHRoYW4gb25jZSwKICAgICAgICA7OyAgIGFzIGl0IGlzIGV4cGVuc2l2 ZS4KICAgICAgICAoYW5kIChub3Qgb3V0LW9mLXN0cmluZy1xdW90ZXMpCiAgICAgICAgICAgICAo c3BlY21hbi1saW5lLXdpdGhpbi1zdHJpbmctcCkpCiAgICAgICAgCiAgICAgICAgMAogICAgICAg ICkKICAgICAgICAKICAgICAgICg7OyBzY29wZSBzdGFydGVyL2Nsb3NlcgogICAgICAgIChzYXZl LWV4Y3Vyc2lvbgogICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgICAgICAgKGxvb2tp bmctYXQgIl5bIFx0XSpcXCg/Oic+XFx8PCdcXCkiKSkKCiAgICAgICAgMAogICAgICAgICkKCiAg ICAgICAoOzsgc2VhcmNoIGZvciByZWxldmFudCBzY29wZQogICAgICAgIChzYXZlLWV4Y3Vyc2lv bgogICAgICAgICAgKHNwZWNtYW4tcmUtc2VhcmNoLWJhY2t3YXJkICJcXChcXFtcXClcXHxcXChb XSgpe31dXFwpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYXZlLWV4 Y3Vyc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwZWNtYW4t YmVnLW9mLWRlZnVuIHdpdGhpbi1jb2RlLXJlZ2lvbikpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp dGhpbi1jb2RlLXJlZ2lvbikpCgogICAgICAgIChjb25kCiAgICAgICAgICg7OyB3aXRoaW4gc3F1 YXJlIGJyYWNrZXRzCiAgICAgICAgICAobWF0Y2gtYmVnaW5uaW5nIDEpCiAgICAgICAgICAKICAg ICAgICAgIChzcGVjbWFuLXNjb3BlLW9mZnNldCAobWF0Y2gtYmVnaW5uaW5nIDEpKQogICAgICAg ICAgKQogICAgICAgICAKICAgICAgICAgKDs7IGNoZWNrIGlmIHdpdGhpbiBwYXJlbgogICAgICAg ICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAgIChzZXRxIHBvcyAoc3BlY21hbi11cC1saXN0 IHdpdGhpbi1jb2RlLXJlZ2lvbikpKQogICAgICAgICAgCiAgICAgICAgICAoc3BlY21hbi1zY29w ZS1vZmZzZXQgcG9zKQogICAgICAgICAgKQogICAgICAgICAKICAgICAgICAgKDs7IGZpbmQgc2Nv cGUgc3RhcnQgLSBjb21tb24gY2FzZS4KICAgICAgICAgIDs7IGFsd2F5cyBtYXRjaGVzIGJlY2F1 c2Ugc3BlY21hbi11cC1zY29wZSBuZXZlciByZXR1cm5zIG5pbAogICAgICAgICAgKHNhdmUtZXhj dXJzaW9uCiAgICAgICAgICAgIChzZXRxIHBvcyAoc3BlY21hbi11cC1zY29wZSB3aXRoaW4tY29k ZS1yZWdpb24pKSkKICAgICAgICAKICAgICAgICAgIChzcGVjbWFuLXNjb3BlLW9mZnNldCBwb3Mp CiAgICAgICAgICApCiAgICAgICAgICkKICAgICAgICApCgogICAgICAgKDs7IGNvcm5lciBjYXNl IC0gbm90IHdpdGhpbiBhbnkgc2NvcGUKICAgICAgICB0CgogICAgICAgIDAKICAgICAgICApCiAg ICAgICApCiAgICAgICkKICAgICkKICApCiAgICAgICAKCjs7ID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KOzsgU1BFQ01BTiAtIEFVVE8gRU5EQ09NTUVO VFMKOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoK KGRlZnVuIHNwZWNtYW4tcmVtb3ZlLWVuY2Fwc3VsYXRpb24gKHN0cikKICAiUmVtb3ZlIGVuY2Fw c3VsYXRpb24ga2V5d29yZCBmcm9tIHN0YXJ0IG9mIHN0cmluZyIKICAoaWYgKHN0cmluZy1tYXRj aCAiXlsgXHRcbl0qXFwocHJpdmF0ZVxcfHBhY2thZ2VcXHxwcm90ZWN0ZWRcXClbIFx0XG5dKyIg c3RyKQoJICAocmVwbGFjZS1tYXRjaCAiIiB0IHQgc3RyIG5pbCkKCXN0cikKICApCgo7OyBDYWxs IHRoaXMgb25seSBhZnRlciBjYWxsaW5nIHNwZWNtYW4tcmVtb3ZlLWVuY2Fwc3VsYXRpb24oKQoo ZGVmdW4gc3BlY21hbi1mb3JtYXQtbWV0aG9kLWNvbW1lbnQgKHN0cikKICAiRm9ybWF0IG1ldGhv ZCBjb21tZW50IC0gcmVtb3ZlIHBhcmFtZXRlciBsaXN0IGFuZCBsb25lbHkgaXMiCiAgKGxldCAo bWV0aG9kLW5hbWUKCQkoaXMtcGFydC1yZWdleHAgIlxcKGlzXFwoPzpbIFx0XG5dK1xcKGFsc29c XHxvbmx5XFx8Zmlyc3RcXHxpbmxpbmVbIFx0XG5dK29ubHlcXHxpbmxpbmVcXClcXCk/XFwpIikK CQlpcy13aGF0KQoJKHN0cmluZy1tYXRjaCAoY29uY2F0ICJcXChbYS16QS1aMC05X10rXFwpLioi IGlzLXBhcnQtcmVnZXhwKSBzdHIpCgkoc2V0cSAKCSBtZXRob2QtbmFtZSAoY29uY2F0IChtYXRj aC1zdHJpbmcgMSBzdHIpICIoKSIpCgkgaXMtd2hhdCAobWF0Y2gtc3RyaW5nIDMgc3RyKSkKCgko aWYgaXMtd2hhdAoJCShjb25jYXQgbWV0aG9kLW5hbWUgIiBpcyAiIGlzLXdoYXQpCgkgIG1ldGhv ZC1uYW1lKSkKICApCgooZGVmdW4gc3BlY21hbi1raWxsLWxpbmUtY29tbWVudCAoKQogICJLaWxs IGxpbmUgY29tbWVudCAoLy98LS0pIG9uIHRoaXMgbGluZSwgZWxzZSByZXR1cm4gbmlsLiIKICAo c2F2ZS1leGN1cnNpb24KICAgIChlbmQtb2YtbGluZSkKICAgIChsZXQgKChjb21tZW50LXN0YXJ0 CiAgICAgICAgICAgKHNwZWNtYW4td2l0aGluLWxpbmUtY29tbWVudC1wKSkKICAgICAgICAgICkK ICAgICAgKHdoZW4gY29tbWVudC1zdGFydAogICAgICAgIChnb3RvLWNoYXIgY29tbWVudC1zdGFy dCkKICAgICAgICAoZGVsZXRlLXJlZ2lvbiBjb21tZW50LXN0YXJ0IChzcGVjbWFuLWVuZC1vZi1s aW5lLXBvcykpCiAgICAgICAgKGRlbGV0ZS1ob3Jpem9udGFsLXNwYWNlKQogICAgICAgIHQpKSkp CgooZGVmdW4gc3BlY21hbi1pbnNlcnQtYXV0by1lbmRjb21tZW50ICgmb3B0aW9uYWwga2lsbC1l eGlzdGluZy1jb21tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBza2lwLXNjb3BlLWNsb3Nlci1jaGVjaykKICAiQWRkIGVuZGluZyBjb21tZW50IGFm dGVyIGEgfTsgaW5kaWNhdGluZyB3aGF0IGJsb2NrIGlzIHRoZXJlYnkgY2xvc2VkLgotIFdpdGgg S0lMTC1FWElTVElORy1DT01NRU5ULCByZW1vdmUgd2hhdCB3YXMgdGhlcmUgYmVmb3JlLgotIFdp dGggU0tJUC1TQ09QRS1DTE9TRVItQ0hFQ0ssIHNraXAgdGhlIGNoZWNrLiIKICAoaW50ZXJhY3Rp dmUpCgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKHdoZW4gKGFuZCAob3Igc2tpcC1zY29wZS1jbG9z ZXItY2hlY2sKICAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgICAo YmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICAgICAgICAgICAgICAgIChzcGVjbWFuLXJlLXNlYXJj aC1mb3J3YXJkICJ9OyIgKHNwZWNtYW4tZW5kLW9mLWxpbmUtcG9zKSB0KSkpCiAgICAgICAgICAg ICAgIChvciBraWxsLWV4aXN0aW5nLWNvbW1lbnQKICAgICAgICAgICAgICAgICAgIChzYXZlLWV4 Y3Vyc2lvbgogICAgICAgICAgICAgICAgICAgICAoZW5kLW9mLWxpbmUpCiAgICAgICAgICAgICAg ICAgICAgIChub3QgKHNwZWNtYW4td2l0aGluLWNvbW1lbnQtcCkpKSkpCiAgICAgIAogICAgICAo bGV0ICgoY29udGFpbmVyLW5hbWUtcmVnZXhwCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHNw ZWNtYW4tY29udGFpbmVyLXNjb3BlLWRlZmluaXRpb24tcmVnZXhwCiAgICAgICAgICAgICApCiAg ICAgICAgICAgIChza2lwCiAgICAgICAgICAgICAKICAgICAgICAgICAgIG5pbAogICAgICAgICAg ICAgKQogICAgICAgICAgICBzdHIKICAgICAgICAgICAgc2NvcGUtc3RhcnQKICAgICAgICAgICAg Y29uc3RydWN0LXR5cGUKCQkJKQogICAgICAgIAogICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAg ICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgICAgICAgKHNwZWNtYW4tdXAtc2NvcGUpCiAg ICAgICAgICAoc2V0cSBzY29wZS1zdGFydCAocG9pbnQpKQogICAgICAgICAgKGdvdG8tY2hhciAo c3BlY21hbi1iZWctb2Ytc3RhdGVtZW50KSkKCiAgICAgICAgICAoc2V0cSBzdHIKICAgICAgICAg ICAgICAgIChjb25kIAogICAgICAgICAgICAgICAgICg7OyBtZXRob2QKICAgICAgICAgICAgICAg ICAgKGxvb2tpbmctYXQgc3BlY21hbi1tZXRob2QtZGVmaW5pdGlvbi1yZWdleHApCiAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAobGV0ICgoYmVnIChtYXRjaC1iZWdpbm5pbmcg MCkpCiAgICAgICAgICAgICAgICAgICAgICAgIChlbmQgKG1hdGNoLWVuZCAwKSkKICAgICAgICAg ICAgICAgICAgICAgICAgKQoJCQkJCShzZXRxIGNvbnN0cnVjdC10eXBlICJtZXRob2QiKQogICAg ICAgICAgICAgICAgICAgIChzcGVjbWFuLXByZXBhcmVkLWJ1ZmZlci1zdWJzdHJpbmcgYmVnIGVu ZCkpCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAoOzsgb24gZXZlbnQKCQkJ CSAgKGxvb2tpbmctYXQgc3BlY21hbi1vbi1ldmVudC1tZXRob2QtZGVmaW5pdGlvbi1yZWdleHAp CiAgICAgICAgICAgICAgICAgIChsZXQgKChiZWcgKG1hdGNoLWJlZ2lubmluZyAwKSkKICAgICAg ICAgICAgICAgICAgICAgICAgKGVuZCAobWF0Y2gtZW5kIDApKQogICAgICAgICAgICAgICAgICAg ICAgICApCgkJCQkJKHNldHEgY29uc3RydWN0LXR5cGUgImV2ZW50IikKICAgICAgICAgICAgICAg ICAgICAoc3BlY21hbi1wcmVwYXJlZC1idWZmZXItc3Vic3RyaW5nIGJlZyBlbmQpKQoJCQkJICAp CgoJCQkJICg7OyBzdHJ1Y3QsIGV4dGVuZCwgdW5pdCwgZGVmaW5lCiAgICAgICAgICAgICAgICAg IChsb29raW5nLWF0IGNvbnRhaW5lci1uYW1lLXJlZ2V4cCkKICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgIChsZXQgKChiZWcgKG1hdGNoLWJlZ2lubmluZyAwKSkKICAgICAgICAg ICAgICAgICAgICAgICAgKGVuZCAobWF0Y2gtZW5kIDApKQogICAgICAgICAgICAgICAgICAgICAg ICApCgkJCQkJKHNldHEgY29uc3RydWN0LXR5cGUgImNvbnRhaW5lciIpCiAgICAgICAgICAgICAg ICAgICAgKHNwZWNtYW4tcHJlcGFyZWQtYnVmZmVyLXN1YnN0cmluZyBiZWcgZW5kKSkKICAgICAg ICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICg7OyBzdG9wIGlmIG1ham9yIHNjb3BlcyBv bmx5CiAgICAgICAgICAgICAgICAgIHNwZWNtYW4tYXV0by1lbmRjb21tZW50cy1mb3ItbWFqb3It c2NvcGVzLW9ubHkKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIChzZXRxIHNr aXAgdCkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICg7OyBlbHNlIGNsYXVz ZQogICAgICAgICAgICAgICAgICAobG9va2luZy1hdCAifVsgXHRcbl0qZWxzZSIpCiAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgICAgICAo Z290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMCkpCiAgICAgICAgICAgICAgICAgICAgKHNwZWNt YW4tdXAtc2NvcGUgdCkKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAo bGV0ICgoZGVmaW5lLWVuZC1wb2ludCAocG9pbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICkKICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHNwZWNtYW4tYmVnLW9mLXN0YXRl bWVudCkpCiAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICIhICIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHNwZWNtYW4tcHJlcGFyZWQtYnVmZmVyLXN1YnN0cmluZyAocG9pbnQp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGVmaW5lLWVuZC1wb2ludCkpKSkKICAgICAgICAgICAgICAgICAgKQogICAgICAg ICAgICAgICAgICg7OyBhbnkgc2NvcGUKICAgICAgICAgICAgICAgICAgdAogICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgKHNwZWNtYW4tcHJlcGFyZWQtYnVmZmVyLXN1YnN0cmlu ZyAocG9pbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2NvcGUtc3RhcnQpCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAp CiAgICAgICAgICAgICAgICApKQogICAgICAgIAoJCSh1bmxlc3Mgc2tpcAoJCSAgKGlmIGNvbnN0 cnVjdC10eXBlCgkJCSAgKHNldHEgc3RyIChzcGVjbWFuLXJlbW92ZS1lbmNhcHN1bGF0aW9uIHN0 cikpKQoJCSAgKGlmIChzdHJpbmc9IGNvbnN0cnVjdC10eXBlICJtZXRob2QiKQoJCQkgIChzZXRx IHN0ciAoc3BlY21hbi1mb3JtYXQtbWV0aG9kLWNvbW1lbnQgc3RyKSkpCgkJICAoZW5kLW9mLWxp bmUpCiAgICAgICAgICAod2hlbiBraWxsLWV4aXN0aW5nLWNvbW1lbnQKICAgICAgICAgICAgKHNw ZWNtYW4ta2lsbC1saW5lLWNvbW1lbnQpKQoJCSAgOyhtZXNzYWdlICJzdHIgPSBcIiVzXCIiIHN0 cikKICAgICAgICAgIChpbnNlcnQgKGNvbmNhdAogICAgICAgICAgICAgICAgICAgIiAtLSAiCiAg ICAgICAgICAgICAgICAgICAoaWYgKD4gKGxlbmd0aCBzdHIpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgMzApCiAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAoc3Vic3RyaW5nIHN0ciAw IDMwICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuLi4iICkKICAgICAgICAgICAg ICAgICAgICAgc3RyKSkpKQogICAgICAgICkpKSkKCihkZWZ1biBzcGVjbWFuLWVsZWN0cmljLXNl bWljb2xvbiAoKQogICJJbnNlcnQgYDsnIGNoYXJhY3RlciBhbmQgcmVpbmRlbnQgdGhlIGxpbmUg KHVzaW5nIGxhc3QtY29tbWFuZC1jaGFyIC0KIHRoZSBhY3RpdmF0aW5nIGtleSwgYDsnIGluIHRo aXMgY2FzZSkuIgogIChpbnRlcmFjdGl2ZSkKCiAgKGxldCAoKGxhc3QtY2hhciAoY2hhci1iZWZv cmUpKSkKCShpbnNlcnQgIjsiKSA7IERvbid0IHVzZSBsYXN0LWNvbW1hbmQtY2hhciwgY2F1c2Ug dGhpcyBmdW5jdGlvbiBtYXkgYmUgY2FsbGVkIGZyb20gYW5vdGhlciBmdW5jdGlvbgogIAkod2hl biAoYW5kIHNwZWNtYW4tYXV0by1lbmRjb21tZW50cwoJCQkgICAoc2FmZS1jaGFyPSBsYXN0LWNo YXIgP1x9ICkKCQkJICAgKG5vdCAoc3BlY21hbi13aXRoaW4tc3RyaW5nLXApKQoJCQkgICAobm90 IChzcGVjbWFuLXdpdGhpbi1jb21tZW50LXApKSkKCSAgCgkgIChzcGVjbWFuLWluc2VydC1hdXRv LWVuZGNvbW1lbnQgdCB0KSkKCSkgOyBsZXQKCiAgOzsgVE9ETzogaXMgdGhpcyB3cm9uZyB3aGVu IGluc2lkZSBhIGNvbW1lbnQ/CiAgKHNwZWNtYW4taW5kZW50LWxpbmUpCiAgKGVuZC1vZi1saW5l KQogICh3aGVuIHNwZWNtYW4tYXV0by1uZXdsaW5lCiAgICAoZGVsZXRlLWhvcml6b250YWwtc3Bh Y2UpCiAgICAobmV3bGluZS1hbmQtaW5kZW50KSkpCgooZGVmdW4gc3BlY21hbi1yZWRvLWVuZGNv bW1lbnRzICgpCiAgIlJlbGFiZWwgYWxsICd9OycgdG9rZW5zIGluIHRoZSBidWZmZXIgd2l0aCB0 aGUgcmVhc29uIGZvciB0aGUgc2NvcGUuIgogIChpbnRlcmFjdGl2ZSkKICAKICAoc3BlY21hbi1y ZWRvLWVuZGNvbW1lbnRzLWludGVybmFsIChwb2ludC1taW4tbWFya2VyKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50LW1heC1tYXJrZXIpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzcGVjbWFuLWF1dG8tZW5kY29tbWVudHMta2lsbC1leGlz dGluZy1jb21tZW50KSkKCihkZWZ1biBzcGVjbWFuLXJlZG8tZW5kY29tbWVudHMtZm9yLXJlZ2lv biAoYmVnIGVuZCkKICAiUmVsYWJlbCBhbGwgJ307JyB0b2tlbnMgaW4gdGhlIGdpdmVuIHJlZ2lv biB3aXRoIHRoZSByZWFzb24gZm9yIHRoZSBzY29wZS4iCiAgKGludGVyYWN0aXZlICJyIikKICAK ICAoc3BlY21hbi1yZWRvLWVuZGNvbW1lbnRzLWludGVybmFsIGJlZwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzcGVjbWFuLWF1dG8tZW5kY29tbWVudHMta2lsbC1leGlzdGluZy1jb21tZW50KSkKCihk ZWZ1biBzcGVjbWFuLXJlZG8tZW5kY29tbWVudHMtaW50ZXJuYWwgKGJlZwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJm9wdGlvbmFsIGtpbGwtZXhpc3RpbmctZW5kLWNvbW1lbnQpCiAg IlJlbGFiZWwgYWxsICd9OycgdG9rZW5zIGluIHRoZSByZWdpb24gd2l0aCB0aGUgcmVhc29uIGZv ciB0aGUgc2NvcGUuCldpdGggS0lMTC1FWElTVElORy1FTkQtQ09NTUVOVCwgZmlyc3Qga2lsbCBh bnkgZXhpc3RpbmcgbGFiZWxzLiIKCiAgKGxldCAoKGNvdW50ZXIKICAgICAgICAgMCkKICAgICAg ICAKICAgICAgICAob2xkcG9zCiAgICAgICAgIChwb2ludCkpCiAgICAgICAgKQogICAgCiAgICAo Z290by1jaGFyIGJlZykKICAgIAogICAgKGlmICg+ICgtIGVuZCBiZWcpCiAgICAgICAgICAgMjAw KQogICAgICAgIChtZXNzYWdlICJSZWRvaW5nIGVuZC1jb21tZW50cyIpKQoKICAgIChzcGVjbWFu LXNraXAtZm9yd2FyZC1jb21tZW50LW9yLXN0cmluZykKICAgIChzZXRxIGNvdW50ZXIKICAgICAg ICAgIChjb3VudC1saW5lcyBiZWcgKHBvaW50KSkpCiAgICAKICAgICh3aGlsZSAoYW5kICg+IGVu ZCAocG9pbnQpKQogICAgICAgICAgICAgICAgKHNwZWNtYW4tcmUtc2VhcmNoLWZvcndhcmQgIn07 IiBuaWwgdCB0KSkKICAgICAgKHNwZWNtYW4taW5zZXJ0LWF1dG8tZW5kY29tbWVudCBraWxsLWV4 aXN0aW5nLWVuZC1jb21tZW50KQogICAgICAoc2V0cSBjb3VudGVyICgxKyBjb3VudGVyKSkKICAg ICAgKGlmICg9IDAgKCUgY291bnRlciAxMCkpCiAgICAgICAgICAobWVzc2FnZSAiJWQgbGluZXMg YXV0b2NvbW1lbnRlZCIgY291bnRlcikpKQogICAgCiAgICAoZ290by1jaGFyIG9sZHBvcykKICAg IAogICAgKG1lc3NhZ2UgICIlZCBsaW5lcyBhdXRvY29tbWVudGVkIiBjb3VudGVyKQogICAgKSkK Cjs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KOzsg U1BFQ01BTiAtIElOU0VSVCBTUEVDSUFMIENIQVJTCjs7ID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KCihkZWZ1biBzcGVjbWFuLWluc2VydC1uZXdsaW5l ICgpCiAgIkluc2VydCBuZXdsaW5lIGFuZCBpbmRlbnQuIgogIChpbnRlcmFjdGl2ZSkKICAobmV3 bGluZSkKICAoc3BlY21hbi1pbmRlbnQtbGluZSkpCgooZGVmdW4gc3BlY21hbi1hY3RpdmF0ZS1p bmRlbnQgKCkKICAiSnVzdCBpbmRlbnQgbGluZSBhbmQgZ28gdG8gaXRzIGJlZ2lubmluZy4iCiAg KGludGVyYWN0aXZlKQogIChzcGVjbWFuLWluZGVudC1saW5lKQogIChiYWNrLXRvLWluZGVudGF0 aW9uKSkKCihkZWZ1biBzcGVjbWFuLWluc2VydC1jdXJseS1vcGVuZXIgKCkKICAiSW5zZXJ0IHsg YW5kIGluZGVudC4iCiAgKGludGVyYWN0aXZlKQogIChpbnNlcnQgInsiKQogIChzcGVjbWFuLWlu ZGVudC1saW5lLWtlZXAtcG9zKQogICkKCihkZWZ1biBzcGVjbWFuLWluc2VydC1jdXJseS1jbG9z ZXIgKCkKICAiSW5zZXJ0IH0gYW5kIGluZGVudC4iCiAgKGludGVyYWN0aXZlKQogIChpbnNlcnQg In0iKQogIChzcGVjbWFuLWluZGVudC1saW5lLWtlZXAtcG9zKQogICkKCihkZWZ1biBzcGVjbWFu LWluc2VydC1taW51cyAoKQogICJJbnNlcnQgLSBhbmQgaW5kZW50LiIKICAoaW50ZXJhY3RpdmUp CiAgKGluc2VydCAiLSIpCiAgKHNwZWNtYW4taW5kZW50LWxpbmUta2VlcC1wb3MpCiAgKQoKKGRl ZnVuIHNwZWNtYW4taW5zZXJ0LXNsYXNoICgpCiAgIkluc2VydCAvIGFuZCBpbmRlbnQuIgogIChp bnRlcmFjdGl2ZSkKICAoaW5zZXJ0ICIvIikKICAoc3BlY21hbi1pbmRlbnQtbGluZS1rZWVwLXBv cykKICApCgooZGVmdW4gc3BlY21hbi1pbnNlcnQtcGFyZW5zLW9wZW5lciAoKQogICJJbnNlcnQg KCBhbmQgaW5kZW50LiIKICAoaW50ZXJhY3RpdmUpCiAgKGluc2VydCAiKCIpCiAgKHNwZWNtYW4t aW5kZW50LWxpbmUta2VlcC1wb3MpCiAgKQoKKGRlZnVuIHNwZWNtYW4taW5zZXJ0LXBhcmVucy1j bG9zZXIgKCkKICAiSW5zZXJ0ICkgYW5kIGluZGVudC4iCiAgKGludGVyYWN0aXZlKQogIChpbnNl cnQgIikiKQogIChzcGVjbWFuLWluZGVudC1saW5lLWtlZXAtcG9zKQogICkKCihkZWZ1biBzcGVj bWFuLWluc2VydC1icmFja2V0LW9wZW5lciAoKQogICJJbnNlcnQgWyBhbmQgaW5kZW50LiIKICAo aW50ZXJhY3RpdmUpCiAgKGluc2VydCAiWyIpCiAgKHNwZWNtYW4taW5kZW50LWxpbmUta2VlcC1w b3MpCiAgKQoKKGRlZnVuIHNwZWNtYW4taW5zZXJ0LWJyYWNrZXQtY2xvc2VyICgpCiAgIkluc2Vy dCBdIGFuZCBpbmRlbnQuIgogIChpbnRlcmFjdGl2ZSkKICAoaW5zZXJ0ICJdIikKICAoc3BlY21h bi1pbmRlbnQtbGluZS1rZWVwLXBvcykKICApCgooZGVmdW4gc3BlY21hbi1pbnNlcnQtdGljayAo KQogICJJbnNlcnQgJyBhbmQgaW5kZW50LiIKICAoaW50ZXJhY3RpdmUpCiAgKGluc2VydCAiJyIp CiAgKHNwZWNtYW4taW5kZW50LWxpbmUta2VlcC1wb3MpCiAgKQoKKGRlZnVuIHNwZWNtYW4taW5z ZXJ0LWx0ICgpCiAgIkluc2VydCA8IGFuZCBpbmRlbnQuIgogIChpbnRlcmFjdGl2ZSkKICAoaW5z ZXJ0ICI8IikKICAoc3BlY21hbi1pbmRlbnQtbGluZS1rZWVwLXBvcykKICApCgooZGVmdW4gc3Bl Y21hbi1pbnNlcnQtZ3QgKCkKICAiSW5zZXJ0ID4gYW5kIGluZGVudC4iCiAgKGludGVyYWN0aXZl KQogIChpbnNlcnQgIj4iKQogIChzcGVjbWFuLWluZGVudC1saW5lLWtlZXAtcG9zKQogICkKCihk ZWZ1biBzcGVjbWFuLXlhbmsgKCkKICAiWWFuayAocGFzdGUpIGFuZCBpbmRlbnQiCiAgKGludGVy YWN0aXZlKQogIDs7IE5lZWQgdGhpcyBiZWNhdXNlIG9mIGJ1ZyBpbiBlbWFjczogd2hlbiBhbm90 aGVyIGZ1bmN0aW9uIGNhbGxzCiAgOzsgeWFuay1jbGlwYm9hcmQtc2VsZWN0aW9uIGl0IGRvZXMg bm90IG92ZXJ3cml0ZSBzZWxlY3RlZCB0ZXh0LCBidXQgd2hlbiBpdAogIDs7IGlzIGludm9rZWQg YnkgYSBrZXkgY29tbWFuZCBpdCBkb2VzLgogIChpZiAoc2VsZWN0aW9uLW93bmVyLXApCgkgIChk ZWxldGUtcHJpbWFyeS1zZWxlY3Rpb24pKQoKICAoc2V0cSBzdGFydCAobGluZS1udW1iZXIpKQog ICh5YW5rLWNsaXBib2FyZC1zZWxlY3Rpb24pCiAgKHNldHEgZW5kIChsaW5lLW51bWJlcikpCiAg KHNhdmUtZXhjdXJzaW9uCgkoZ290by1saW5lIHN0YXJ0KQoJKHdoaWxlICg8PSAobGluZS1udW1i ZXIpIGVuZCkKCSAgKHNwZWNtYW4tYWN0aXZhdGUtaW5kZW50KQoJICAoZm9yd2FyZC1saW5lIDEp KQoJKQogICkKCgo7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo7OyAgU2NvcGUgUXVlcmllcwo7OyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQooZGVmdW4gc3BlY21hbi1kZXNjcmliZS1jb250ZXh0ICgpCiAg IlNob3cgdGhlIHN0cnVjdCBhbmQgbWV0aG9kIHNjb3BlIChhcyBhcHBsaWNhYmxlKSBvZiB0aGUg Y3VycmVudCBjdXJzb3IKIHBvc2l0aW9uIgogIChpbnRlcmFjdGl2ZSkKCiAgKGxldCAoKG1ldGhv ZC1uYW1lLXJlZ2V4cAogICAgICAgICAoY29uY2F0ICJcXCg/OiIKICAgICAgICAgICAgICAgICBz cGVjbWFuLW1ldGhvZC1kZWZpbml0aW9uLXJlZ2V4cAogICAgICAgICAgICAgICAgICJcXHwiCiAg ICAgICAgICAgICAgICAgc3BlY21hbi1vbi1ldmVudC1tZXRob2QtZGVmaW5pdGlvbi1yZWdleHAK ICAgICAgICAgICAgICAgICAiXFwpIikpCiAgICAgICAgKGNvbnRhaW5lci1uYW1lLXJlZ2V4cAog ICAgICAgICBzcGVjbWFuLWNvbnRhaW5lci1zY29wZS1kZWZpbml0aW9uLXJlZ2V4cCkKICAgICAg ICAoZGVzY3JpcHRpb24tbGlzdAogICAgICAgICBuaWwpCiAgICAgICAgKQoKICAgIChzYXZlLWV4 Y3Vyc2lvbgogICAgICAoc3BlY21hbi11cC1zY29wZSkKICAgICAgCiAgICAgICh3aGlsZSAoPiAo cG9pbnQpIChwb2ludC1taW4pKQogICAgICAgIAogICAgICAgIChnb3RvLWNoYXIgKHNwZWNtYW4t YmVnLW9mLXN0YXRlbWVudCB0KSkKICAgICAgICAKICAgICAgICAoY29uZAogICAgICAgICAoKGxv b2tpbmctYXQgY29udGFpbmVyLW5hbWUtcmVnZXhwKQogICAgICAgICAgCiAgICAgICAgICAocHVz aCAoc3BlY21hbi1wcmVwYXJlZC1idWZmZXItc3Vic3RyaW5nIChtYXRjaC1iZWdpbm5pbmcgMSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNo LWVuZCAxKSkKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLWxpc3QpCiAgICAgICAgICApCiAg ICAgICAgICgobG9va2luZy1hdCBtZXRob2QtbmFtZS1yZWdleHApCiAgICAgICAgICAKICAgICAg ICAgIChpZiAobG9va2luZy1hdCBzcGVjbWFuLW1ldGhvZC1kZWZpbml0aW9uLXJlZ2V4cCkKICAg ICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgIChiYWNrLXRvLWluZGVudGF0aW9uKQog ICAgICAgICAgICAgICAgKHB1c2ggKGNvbmNhdAogICAgICAgICAgICAgICAgICAgICAgICJtZXRo b2QgIgogICAgICAgICAgICAgICAgICAgICAgIChzcGVjbWFuLXByZXBhcmVkLWJ1ZmZlci1zdWJz dHJpbmcgKG1hdGNoLWJlZ2lubmluZyAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWVuZCAxKSkpCiAgICAgICAgICAgICAg ICAgICAgICBkZXNjcmlwdGlvbi1saXN0KSkKICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAg IChiYWNrLXRvLWluZGVudGF0aW9uKQogICAgICAgICAgICAoYXNzZXJ0IChsb29raW5nLWF0IHNw ZWNtYW4tb24tZXZlbnQtbWV0aG9kLWRlZmluaXRpb24tcmVnZXhwKSkKICAgICAgICAgICAgKHB1 c2ggKHNwZWNtYW4tcHJlcGFyZWQtYnVmZmVyLXN1YnN0cmluZyAobWF0Y2gtYmVnaW5uaW5nIDEp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1h dGNoLWVuZCAxKSkKICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24tbGlzdCkpKQogICAgICAg ICAgKQogICAgICAgICApCiAgICAgICAgKHNwZWNtYW4tdXAtc2NvcGUgdCkKICAgICAgICApCiAg ICAgIAogICAgICAoaWYgZGVzY3JpcHRpb24tbGlzdAogICAgICAgICAgKG1lc3NhZ2UgKG1hcGNv bmNhdCAnaWRlbnRpdHkgZGVzY3JpcHRpb24tbGlzdCAiIC8gIikpCiAgICAgICAgKG1lc3NhZ2Ug Ik5vdCB3aXRoaW4gYW55IHJlbGV2YW50IHNjb3BlIikpCiAgICAgICkpKQoKCjstLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0tLQo7OyAgQ29kZSBGb3JtYXR0aW5nCjstLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0t LQoKOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKGRlZnVuIHNwZWNtYW4tY29tbWVudC1saW5lLXct bWludXMgKCkKICAiSW5zZXJ0IGEgLS0gY29tbWVudCBiZWZvcmUgdGhlIGN1cnJlbnQgbGluZSBh bmQgcmVpbmRlbnQgaXQuIgogIChpbnRlcmFjdGl2ZSkKCiAgKGluZGVudC1hY2NvcmRpbmctdG8t bW9kZSkKICAoYmFjay10by1pbmRlbnRhdGlvbikKICAoaW5zZXJ0ICItLSAgIikpCgo7OyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQooZGVmdW4gc3BlY21hbi1jb21tZW50LWxpbmUtdy1zbGFzaCAoKQog ICJJbnNlcnQgYSAvLyBjb21tZW50IGJlZm9yZSB0aGUgY3VycmVudCBsaW5lIGFuZCByZWluZGVu dCBpdC4iCiAgKGludGVyYWN0aXZlKQoKICAoaW5kZW50LWFjY29yZGluZy10by1tb2RlKQogIChi YWNrLXRvLWluZGVudGF0aW9uKQogIChpbnNlcnQgIi8vICAiKSkKCjs7IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCihkZWZ1biBzcGVjbWFuLWV4Y2x1ZGUtY29kZS1yZWdpb24gKGJlZyBlbmQpCiAgIkNv bW1lbnQgYSBjb2RlIHNlY3Rpb24gYnkgZXhjbHVkaW5nIGl0IHVzaW5nIFNwZWNtYW4gY29kZSBi cmFja2V0cyA8Jyc+LiIKICAoaW50ZXJhY3RpdmUgInIiKQoKICAoZ290by1jaGFyIGJlZykKICAo YmVnaW5uaW5nLW9mLWxpbmUpCiAgKGluc2VydCAiJz5cbiIpCiAgKGdvdG8tY2hhciBlbmQpCiAg KGZvcndhcmQtbGluZSAxKQogIChiZWdpbm5pbmctb2YtbGluZSkKICAoaW5zZXJ0ICI8J1xuIikp Cgo7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQooZGVmdW4gc3BlY21hbi11bmNvbW1lbnQtcmVnaW9u IChiZWcgZW5kKQogICJVbmNvbW1lbnQgdGhlIGdpdmVuIHJlZ2lvbiBieSByZW1vdmluZyB0aGUg Zmlyc3QgMiBjaGFycyBvZiBldmVyeSBsaW5lLiIKICAoaW50ZXJhY3RpdmUgInIiKQoKICA7OyBv cmlnaW5hbCBpbXBsZW1lbnRhdGlvbiAtIHNpbXBsZSBidXQgZHVtYgogIDs7KGNvbW1lbnQtcmVn aW9uIGJlZyBlbmQgJy0yKQogIDs7KGluZGVudC1yZWdpb24gYmVnIGVuZCBuaWwpKQogIAogIChs ZXQgKChlbmQtbWFya2VyCiAgICAgICAgIChzZXQtbWFya2VyIChtYWtlLW1hcmtlcikgZW5kKSkK ICAgICAgICApCiAgICAoZ290by1jaGFyIGJlZykKICAKICAgICh3aGlsZSAoPCAocG9pbnQpCiAg ICAgICAgICAgICAgZW5kLW1hcmtlcikKICAgICh3aGVuIChzcGVjbWFuLWxpbmUtd2l0aGluLWNv bW1lbnQtcCkKICAgICAgKGNvbW1lbnQtcmVnaW9uIChzcGVjbWFuLWJlZy1vZi1saW5lLXBvcykK ICAgICAgICAgICAgICAgICAgICAgIChzcGVjbWFuLWVuZC1vZi1saW5lLXBvcykKICAgICAgICAg ICAgICAgICAgICAgIC0yKSkKICAgIChzcGVjbWFuLWluZGVudC1saW5lKQogICAgKGZvcndhcmQt bGluZSAxKSkKICAKICAgIChzZXQtbWFya2VyIGVuZC1tYXJrZXIgbmlsKSkpCgo7OyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQooZGVmdW4gc3BlY21hbi1taW5vci1jb21tZW50LXNlcGFyYXRvciAoKQog ICJJbnNlcnQgbWludXNlcyBmcm9tIHRoZSBjdXJzb3IgdG8gdGhlIG1heGltdW0gbGluZSBsZW5n dGgsCm5ldmVyIGxlc3MgdGhhbiAyIGNoYXJhY3RlcnMuIgogIChpbnRlcmFjdGl2ZSkKCiAgKGxl dCAoKGN1ci1jb2wKICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkKICAgICAgICAoY291bnRlcgog ICAgICAgICAoLSBzcGVjbWFuLW1heC1saW5lLWxlbmd0aCAoY3VycmVudC1jb2x1bW4pKSkKICAg ICAgICApCiAgICAod2hlbiAoPD0gY3VyLWNvbAogICAgICAgICAgICAoLSBzcGVjbWFuLW1heC1s aW5lLWxlbmd0aCAyKSkKICAgICAgICAod2hpbGUgKD4gY291bnRlciAwKQogICAgICAgICAgKHBy b2duCiAgICAgICAgICAgIChpbnNlcnQgIi0iKQogICAgICAgICAgICAoc2V0cSBjb3VudGVyICgt IGNvdW50ZXIgMSkpKSkpCiAgICAobmV3bGluZSkKICAgIChpbmRlbnQtdG8tbGVmdC1tYXJnaW4p CiAgICAoaW5kZW50LXRvIGN1ci1jb2wpKSkKCjs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCihkZWZ1 biBzcGVjbWFuLW1ham9yLWNvbW1lbnQtc2VwYXJhdG9yICgpCiAgIkluc2VydCBhIGNvbW1lbnQg bGluZSBvZiAnPScsIHByZWZpeGVkIGFuZCBzdWZmaXhlZCBieSAnLS0nLApuZXZlciBsZXNzIHRo YW4gNCBjaGFyYWN0ZXJzLiIKICAoaW50ZXJhY3RpdmUpCgogIChsZXQgKChjdXItY29sCiAgICAg ICAgIChjdXJyZW50LWNvbHVtbikpCiAgICAgICAgKGNvdW50ZXIKICAgICAgICAgKC0gc3BlY21h bi1tYXgtbGluZS1sZW5ndGggKGN1cnJlbnQtY29sdW1uKSA0KSkKICAgICAgICkKICAgICh3aGVu ICg8PSBjdXItY29sCiAgICAgICAgICAgICAgKC0gc3BlY21hbi1tYXgtbGluZS1sZW5ndGggNCkp CiAgICAgICAgKHByb2duCiAgICAgICAgICAoaW5zZXJ0ICItLSIpCiAgICAgICAgICAod2hpbGUg KD4gY291bnRlciAwKQogICAgICAgICAgICAoaW5zZXJ0ICI9IikKICAgICAgICAgICAgKHNldHEg Y291bnRlciAoLSBjb3VudGVyIDEpKSkKICAgICAgICAgIChpbnNlcnQgIi0tIikpKQogICAgKG5l d2xpbmUpCiAgICAoaW5kZW50LXRvLWxlZnQtbWFyZ2luKQogICAgKGluZGVudC10byBjdXItY29s KSkpCgo7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQooZGVmdW4gc3BlY21hbi1kZXZlbG9wbWVudC1m aWxlLWhlYWRlciAoKQogICJJbnNlcnQgYSBTcGVjbWFuIFImRCBmaWxlIGhlYWRlci4iCiAgKGlu dGVyYWN0aXZlKQogIAogIChnb3RvLWNoYXIgMCkKICAoaW5zZXJ0ICJcCgotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogIENvcHlyaWdodCAoYykgPHllYXI+IGJ5IENhZGVuY2UuIFRoaXMgbW9kZWwg aXMgdGhlIGNvbmZpZGVudGlhbCBhbmQKICBwcm9wcmlldGFyeSBwcm9wZXJ0eSBvZiBDYWRlbmNl IGFuZCB0aGUgcG9zc2Vzc2lvbiBvciB1c2Ugb2YgdGhpcyBmaWxlCiAgcmVxdWlyZXMgYSB3cml0 dGVuIGxpY2Vuc2UgZnJvbSBDYWRlbmNlLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi0tPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PS0tCiAgVGl0bGUgOiAgPHRpdGxlPgogIFRlYW0gIDogIDx0ZWFtPgoK ICBGaWxlICA6ICA8ZmlsZW5hbWU+Ci0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tCiAgRGVzY3JpcHRp b246CiAgPGRlc2NyaXB0aW9uPgotLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0tLQoKCiAgIikKICAKICAo aW5kZW50LWFjY29yZGluZy10by1tb2RlKQogIChnb3RvLWNoYXIgMCkKICAoc2VhcmNoLWZvcndh cmQgIjx5ZWFyPiIpCiAgKHJlcGxhY2UtbWF0Y2ggIiIgdCB0KQogIChzcGVjbWFuLWluc2VydC15 ZWFyKQogIChsZXQgKHN0cmluZykKICAgIChzZXRxIHN0cmluZyAocmVhZC1zdHJpbmcgInRpdGxl OiAiKSkKICAgIChzZWFyY2gtZm9yd2FyZCAiPHRpdGxlPiIpCiAgICAocmVwbGFjZS1tYXRjaCBz dHJpbmcgdCB0KQogICAgKHNldHEgc3RyaW5nIChyZWFkLXN0cmluZyAidGVhbTogIikpCiAgICAo c2VhcmNoLWZvcndhcmQgIjx0ZWFtPiIpCiAgICAocmVwbGFjZS1tYXRjaCBzdHJpbmcgdCB0KQog ICAgKHNlYXJjaC1mb3J3YXJkICI8ZmlsZW5hbWU+IikKICAgIChyZXBsYWNlLW1hdGNoIChmaWxl LW5hbWUtbm9uZGlyZWN0b3J5IChidWZmZXItZmlsZS1uYW1lKSkgdCB0KQogICAgKHNlYXJjaC1m b3J3YXJkICI8ZGVzY3JpcHRpb24+IikKICAgIChyZXBsYWNlLW1hdGNoICIiIHQgdCkpKQoKOzsg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKGRlZnVuIHNwZWNtYW4tc3RydWN0LWFuZC1kZWZpbmUtaGVh ZGVyLWNvbXBhY3QgKCkKICAiQ3JlYXRlIGEgY29tcGFjdCBzdHJ1Y3QvZGVmaW5lIGhlYWRlci4i CiAgKGludGVyYWN0aXZlKQogIChzcGVjbWFuLXN0cnVjdC1hbmQtZGVmaW5lLWhlYWRlci1pbnRl cm5hbCBuaWwgdCkpCgooZGVmdW4gc3BlY21hbi1zdHJ1Y3QtYW5kLWRlZmluZS1oZWFkZXItZnVs bCAoKQogICJDcmVhdGUgYSBkb2N1bWVudGVkIHN0cnVjdC9kZWZpbmUgaGVhZGVyLiIKICAoaW50 ZXJhY3RpdmUpCiAgKHNwZWNtYW4tc3RydWN0LWFuZC1kZWZpbmUtaGVhZGVyLWludGVybmFsIG5p bCBuaWwpKQoKKGRlZnVuIHNwZWNtYW4tc3RydWN0LWFuZC1kZWZpbmUtaGVhZGVyLWludGVybmFs IChjdXJyZW50LWxpbmUgY29tcGFjdC1oZWFkZXIpCiAgIkNyZWF0ZSBhIHN0cnVjdC9kZWZpbmUg aGVhZGVyIGFib3ZlIHRoZSBjdXJyZW50IGxpbmUuICBjb21wYWN0LWhlYWRlciBpbmNsdWRlcwp0 aGUgc3RydWN0L2RlZmluZSBuYW1lIG9ubHksIG90aGVyd2lzZSBhIGZ1bGwgaGVhZGVyIHdpdGgg Y29tbWVudHMuIgoKICAoaWYgKG5vdCAob3IgKGFuZCBjdXJyZW50LWxpbmUgIDs7IGJldHRlciBw ZXJmb3JtYW5jZSB3aXRob3V0IHNlYXJjaAogICAgICAgICAgICAgICAgICAgIChwcm9nbgogICAg ICAgICAgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgICAgICAgICAgICAgICAg ICAgdCkpCiAgICAgICAgICAgICAgIChhbmQgKGZvcndhcmQtbGluZSkgOzsgc28gYXMgdG8gY2hl Y2sgYWxzbyBjdXJyZW50IGxpbmUKICAgICAgICAgICAgICAgICAgICAoc3BlY21hbi1yZS1zZWFy Y2gtYmFja3dhcmQgKGNvbmNhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIl5bIFx0XSpcXCgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJcXCgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzcGVjbWFuLWNsYXNzLWRlZmluaXRpb24tcmVnZXhwCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFwpXFx8XFwoIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY21hbi1kZWZpbmUtcmVnZXhw CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFwpIgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFwpIikKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQpKSkpCiAgICAgICAgICAKICAgICAg KG1lc3NhZ2UgIk5vIHN0cnVjdC9kZWZpbmUgZGVmaW5pdGlvbiBmb3VuZCBhYm92ZSBjdXJyZW50 IHBvc2l0aW9uIC4uLiIpCiAgICAKICAgIChsZXQgKChzdHJ1Y3QtbmFtZQogICAgICAgICAgIChj b25kCiAgICAgICAgICAgICgobG9va2luZy1hdCBzcGVjbWFuLWNsYXNzLWRlZmluaXRpb24tcmVn ZXhwLWZ1bGwpCiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgKHNwZWNtYW4tcHJlcGFyZWQt YnVmZmVyLXN1YnN0cmluZyAobWF0Y2gtYmVnaW5uaW5nIDEpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1lbmQgMSkpCiAgICAgICAgICAgICAp CiAgICAgICAgICAgICgobG9va2luZy1hdCBzcGVjbWFuLWRlZmluZS1yZWdleHAtZnVsbCkKICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAoc3BlY21hbi1wcmVwYXJlZC1idWZmZXItc3Vic3Ry aW5nIChtYXRjaC1iZWdpbm5pbmcgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG1hdGNoLWVuZCAxKSkKICAgICAgICAgICAgICkKICAgICAgICAgICAg KHQKICAgICAgICAgICAgIChlcnJvciAiU3RydWN0L0RlZmluZSBkZWZpbml0aW9uIG1hdGNoIGZh aWxlZCAuLi4iKQogICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgICAgKQogICAg ICAgICAgKGhlYWRlci1pbmRlbnQKICAgICAgICAgICAwKQogICAgICAgICAgKQoKICAgICAgOzsg Z28gYmFja3dhcmQgb3ZlciBhbnkgY29tbWVudHMgYW5kIGFkZCBhIG5ld2xpbmUgaWYgdGhlcmUg aXMgbm8gZW1wdHkKICAgICAgOzsgbGluZSB0aGVyZS4KICAgICAgKGZvcndhcmQtbGluZSAtMSkK ICAgICAgKGJhY2stdG8taW5kZW50YXRpb24pCiAgICAgICh3aGlsZSAobG9va2luZy1hdCAiLy9c XHwtLSIpCiAgICAgICAgKGZvcndhcmQtbGluZSAtMSkKICAgICAgICAoYmFjay10by1pbmRlbnRh dGlvbikpCiAgICAgICh3aGVuIChub3QgKGxvb2tpbmctYXQgIlsgXHRdKiQiKSkKICAgICAgICAo ZW5kLW9mLWxpbmUpCiAgICAgICAgKHNwZWNtYW4taW5zZXJ0LW5ld2xpbmUpKQogICAgICAoZm9y d2FyZC1saW5lIDEpCiAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKCiAgICAgIChpZiAobG9va2lu Zy1hdCAiXlsgXHRdKi0tPSotLVxcKFxuWyBcdF0qLS1bXlxuXSpcXCkrXG5bIFx0XSotLT0qLS0i KQogICAgICAgICAgKG1lc3NhZ2UgKGZvcm1hdCAiU2tpcHBpbmcgZGVmaW5pdGlvbiBvZiBcIiVz XCIgLSBpdCBhbHJlYWR5IGhhcyBhIGhlYWRlci4iIHN0cnVjdC1uYW1lKSkKICAgICAgICAocHJv Z24KICAgICAgICAgIDs7IGFkZCB0aGUgaGVhZGVyCiAgICAgICAgICAoaW5kZW50LWFjY29yZGlu Zy10by1tb2RlKQogICAgICAgICAgKHNldHEgaGVhZGVyLWluZGVudCAoY3VycmVudC1jb2x1bW4p KQogICAgICAgICAgKHNwZWNtYW4tbWFqb3ItY29tbWVudC1zZXBhcmF0b3IpCiAgICAgICAgICAo bGV0ICgoc3RhcnQKICAgICAgICAgICAgICAgICAocG9pbnQpKQogICAgICAgICAgICAgICAgKQog ICAgICAgICAgICAoaWYgY29tcGFjdC1oZWFkZXIKICAgICAgICAgICAgICAgIChwcm9nbgogICAg ICAgICAgICAgICAgICAoaW5kZW50LXRvLWxlZnQtbWFyZ2luKQogICAgICAgICAgICAgICAgICAo aW5zZXJ0ICJcCi0tICA8c3RydWN0PgoiKQoKICAgICAgICAgICAgICAgICAgKGZvcndhcmQtbGlu ZSAtMikKICAgICAgICAgICAgICAgICAgKGZvciBpIGZyb20gMSB0byAyIGRvIChwcm9nbgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5kZW50LXRvIGhlYWRlci1p bmRlbnQpKSkKICAgICAgICAgICAgICAgICAgKHNwZWNtYW4tbWFqb3ItY29tbWVudC1zZXBhcmF0 b3IpCiAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgc3RhcnQpCiAgICAgICAgICAgICAgICAg IChzZWFyY2gtZm9yd2FyZCAiPHN0cnVjdD4iKQogICAgICAgICAgICAgICAgICAocmVwbGFjZS1t YXRjaCBzdHJ1Y3QtbmFtZSB0IHQpCiAgICAgICAgICAgICAgICAgIChlbmQtb2YtbGluZSkpCiAg ICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgKGluZGVudC10by1sZWZ0LW1hcmdpbikK ICAgICAgICAgICAgICAoaW5zZXJ0ICJcCi0tICBTdHJ1Y3QgICAgICA6ICA8c3RydWN0PgotLSAg RGVzY3JpcHRpb24gOiAgPGRlc2NyaXB0aW9uPgotLSAgTm90ZSAgICAgICAgOiAgPG5vdGU+CiIp CiAgICAgICAgICAgICAgKGZvcndhcmQtbGluZSAtNCkKICAgICAgICAgICAgICAoZm9yIGkgZnJv bSAxIHRvIDQgZG8gKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGZvcndhcmQtbGluZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5k ZW50LXRvIGhlYWRlci1pbmRlbnQpKSkKICAgICAgICAgICAgICAoc3BlY21hbi1tYWpvci1jb21t ZW50LXNlcGFyYXRvcikKICAgICAgICAgICAgICAoZ290by1jaGFyIHN0YXJ0KQogICAgICAgICAg ICAgIChzZWFyY2gtZm9yd2FyZCAiPHN0cnVjdD4iKQogICAgICAgICAgICAgIChyZXBsYWNlLW1h dGNoIHN0cnVjdC1uYW1lIHQgdCkKICAgICAgICAKICAgICAgICAgICAgICAobGV0ICgoaW5kZW50 CiAgICAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgICAgICAgICAg ICAgIChmb3J3YXJkLWxpbmUgMSkKICAgICAgICAgICAgICAgICAgICAgICAoYmFjay10by1pbmRl bnRhdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1jb2x1bW4pKSkKICAgICAg ICAgICAgICAgICAgICAoc3BlY21hbi1idWZmZXIKICAgICAgICAgICAgICAgICAgICAgKGN1cnJl bnQtYnVmZmVyKSkKICAgICAgICAgICAgICAgICAgICBuZXh0LWJ1ZmZlcgogICAgICAgICAgICAg ICAgICAgICkKICAgICAgICAgICAgICAgIChzZWFyY2gtZm9yd2FyZCAiPG5vdGU+IikKICAgICAg ICAgICAgICAgIChzcGVjbWFuLWNvbW1lbnQtc3RhcnQtZW50cnkgIk5vdGUiCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8Tm90ZT4gIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS0gICAgICAgICAgICAgIDogICIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQtbWFya2VyIChtYWtlLW1h cmtlcikgKG1hdGNoLWJlZ2lubmluZyAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzcGVjbWFuLWJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHNldC1tYXJrZXIgKG1ha2UtbWFya2VyKSAobWF0Y2gtZW5kIDApKSkKICAgICAgICAgICAgICAg IChzZXRxIG5leHQtYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpCiAgICAgICAgICAgICAgICAoc3dp dGNoLXRvLWJ1ZmZlci1vdGhlci13aW5kb3cgc3BlY21hbi1idWZmZXIpCiAgICAgICAgICAgICAg ICAoZ290by1jaGFyIHN0YXJ0KQogICAgICAgICAgICAgICAgKHNlYXJjaC1mb3J3YXJkICI8ZGVz Y3JpcHRpb24+IikKICAgICAgICAgICAgICAgIChzcGVjbWFuLWNvbW1lbnQtc3RhcnQtZW50cnkg IkRlc2NyaXB0aW9uIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiPERlc2NyaXB0aW9uPiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICItLSAgICAgICAgICAgICAgOiAgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbmRlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHNldC1tYXJrZXIgKG1ha2UtbWFya2VyKSAobWF0Y2gtYmVnaW5uaW5nIDAp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQtYnVmZmVyCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1tYXJrZXIgKG1ha2UtbWFya2VyKSAobWF0 Y2gtZW5kIDApKSkpCiAgICAgICAgICAgICAgKSkpKSkpKSkKCjs7IC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCihkZWZ1biBzcGVjbWFuLW1ldGhvZC1oZWFkZXItY29tcGFjdCAoKQogICJDcmVhdGUgYSBj b21wYWN0IG1ldGhvZCBoZWFkZXIuIgogIChpbnRlcmFjdGl2ZSkKICAoc3BlY21hbi1tZXRob2Qt aGVhZGVyLWludGVybmFsIG5pbCB0KSkKCihkZWZ1biBzcGVjbWFuLW1ldGhvZC1oZWFkZXItZnVs bCAoKQogICJDcmVhdGUgYSBkb2N1bWVudGVkIG1ldGhvZCBoZWFkZXIuIgogIChpbnRlcmFjdGl2 ZSkKICAoc3BlY21hbi1tZXRob2QtaGVhZGVyLWludGVybmFsIG5pbCBuaWwpKQoKKGRlZnVuIHNw ZWNtYW4tbWV0aG9kLWhlYWRlci1pbnRlcm5hbCAoY3VycmVudC1saW5lIGNvbXBhY3QtaGVhZGVy KQogICJDcmVhdGUgYSBtZXRob2QgaGVhZGVyIGFib3ZlIHRoZSBjdXJyZW50IGxpbmUuICBjb21w YWN0LWhlYWRlciBpbmNsdWRlcyB0aGUKbWV0aG9kIG5hbWUgb25seSwgb3RoZXJ3aXNlIGEgZnVs bCBoZWFkZXIgd2l0aCBjb21tZW50cy4iCgogIChpZiAobm90IChvciAoYW5kIGN1cnJlbnQtbGlu ZSAgOzsgYmV0dGVyIHBlcmZvcm1hbmNlIHdpdGhvdXQgc2VhcmNoCiAgICAgICAgICAgICAgICAg ICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAg ICAgICAgICAgICAgICAgICB0KSkKICAgICAgICAgICAgICAgKGFuZCAoZm9yd2FyZC1saW5lKSA7 OyBzbyBhcyB0byBjaGVjayBhbHNvIGN1cnJlbnQgbGluZQogICAgICAgICAgICAgICAgICAgIChz cGVjbWFuLXJlLXNlYXJjaC1iYWNrd2FyZCAoY29uY2F0CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiXlsgXHRdKlxcKCIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIlxcKCIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNwZWNtYW4tbWV0aG9kLWRlZmluaXRpb24tcmVnZXhwCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFwpXFx8XFwo IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY21h bi1vbi1ldmVudC1tZXRob2QtZGVmaW5pdGlvbi1yZWdleHAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXCkiCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJcXCkiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdCkpKSkKICAgICAgCiAgICAgIChtZXNzYWdlICJObyBtZXRob2QgZGVmaW5p dGlvbiBmb3VuZCBhYm92ZSBjdXJyZW50IHBvc2l0aW9uIC4uLiIpCiAgICAgICAgCiAgICAobGV0 ICgobWV0aG9kLW5hbWUKICAgICAgICAgICAoY29uZAogICAgICAgICAgICAoKGxvb2tpbmctYXQg c3BlY21hbi1tZXRob2QtZGVmaW5pdGlvbi1yZWdleHAtZnVsbCkKICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAoc3BlY21hbi1wcmVwYXJlZC1idWZmZXItc3Vic3RyaW5nIChtYXRjaC1iZWdp bm5pbmcgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG1hdGNoLWVuZCAxKSkKICAgICAgICAgICAgICkKICAgICAgICAgICAgKChsb29raW5nLWF0IHNw ZWNtYW4tb24tZXZlbnQtbWV0aG9kLWRlZmluaXRpb24tcmVnZXhwLWZ1bGwpCiAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgKHNwZWNtYW4tcHJlcGFyZWQtYnVmZmVyLXN1YnN0cmluZyAobWF0 Y2gtYmVnaW5uaW5nIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChtYXRjaC1lbmQgMSkpCiAgICAgICAgICAgICApCiAgICAgICAgICAgICh0CiAgICAg ICAgICAgICAoZXJyb3IgIk1ldGhvZCBkZWZpbml0aW9uIG1hdGNoIGZhaWxlZCAuLi4iKQogICAg ICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgICAgKQogICAgICAgICAgKGhlYWRlci1p bmRlbnQKICAgICAgICAgICAwKQogICAgICAgICAgKQoKICAgICAgOzsgZ28gYmFja3dhcmQgb3Zl ciBhbnkgY29tbWVudHMgYW5kIGFkZCBhIG5ld2xpbmUgaWYgdGhlcmUgaXMgbm8gZW1wdHkKICAg ICAgOzsgbGluZSB0aGVyZS4KICAgICAgKGZvcndhcmQtbGluZSAtMSkKICAgICAgKGJhY2stdG8t aW5kZW50YXRpb24pCiAgICAgICh3aGlsZSAobG9va2luZy1hdCAiLy9cXHwtLSIpCiAgICAgICAg KGZvcndhcmQtbGluZSAtMSkKICAgICAgICAoYmFjay10by1pbmRlbnRhdGlvbikpCiAgICAgICh3 aGVuIChub3QgKGxvb2tpbmctYXQgIlsgXHRdKiQiKSkKICAgICAgICAoZW5kLW9mLWxpbmUpCiAg ICAgICAgKHNwZWNtYW4taW5zZXJ0LW5ld2xpbmUpKQogICAgICAoZm9yd2FyZC1saW5lIDEpCiAg ICAgIChiZWdpbm5pbmctb2YtbGluZSkKCiAgICAgIChpZiAobG9va2luZy1hdCAiXlsgXHRdKi0t K1xcKFxuWyBcdF0qLS1bXlxuXSpcXCkrXG5bIFx0XSotLSsiKQogICAgICAgICAgKG1lc3NhZ2Ug KGZvcm1hdCAiU2tpcHBpbmcgbWV0aG9kIFwiJXNcIiAtIGl0IGFscmVhZHkgaGFzIGEgaGVhZGVy LiIgbWV0aG9kLW5hbWUpKQogICAgICAgIChwcm9nbgogICAgICAgICAgOzsgYWRkIHRoZSBoZWFk ZXIKICAgICAgICAgIChpbmRlbnQtYWNjb3JkaW5nLXRvLW1vZGUpCiAgICAgICAgICAoc2V0cSBo ZWFkZXItaW5kZW50IChjdXJyZW50LWNvbHVtbikpCiAgICAgICAgICAoc3BlY21hbi1taW5vci1j b21tZW50LXNlcGFyYXRvcikKICAgICAgICAgIChsZXQgKChzdGFydAogICAgICAgICAgICAgICAg IChwb2ludCkpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIChpZiBjb21wYWN0LWhlYWRl cgogICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgIChpbmRlbnQtdG8tbGVm dC1tYXJnaW4pCiAgICAgICAgICAgICAgICAgIChpbnNlcnQgIlwKLS0gIDxtZXRob2Q+CiIpCiAg ICAgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgLTIpCiAgICAgICAgICAgICAgICAgIChmb3Ig aSBmcm9tIDEgdG8gMiBkbyAocHJvZ24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGZvcndhcmQtbGluZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoaW5kZW50LXRvIGhlYWRlci1pbmRlbnQpKSkKICAgICAgICAgICAgICAgICAgKHNwZWNt YW4tbWlub3ItY29tbWVudC1zZXBhcmF0b3IpCiAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIg c3RhcnQpCiAgICAgICAgICAgICAgICAgIChzZWFyY2gtZm9yd2FyZCAiPG1ldGhvZD4iKQogICAg ICAgICAgICAgICAgICAocmVwbGFjZS1tYXRjaCBtZXRob2QtbmFtZSB0IHQpCiAgICAgICAgICAg ICAgICAgIChlbmQtb2YtbGluZSkpCiAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAg ICAoaW5kZW50LXRvLWxlZnQtbWFyZ2luKQogICAgICAgICAgICAgICAgKGluc2VydCAiXAotLSAg TWV0aG9kICAgICAgOiAgPG1ldGhvZD4KLS0gIERlc2NyaXB0aW9uIDogIDxkZXNjcmlwdGlvbj4K LS0gIFBhcmFtZXRlcnMgIDogIDxwYXJhbWV0ZXJzPgotLSAgUmV0dXJuIFZhbCAgOiAgPHJldHVy biB2YWw+Ci0tICBOb3RlICAgICAgICA6ICA8bm90ZT4KIikKICAgICAgICAgICAgICAgIChmb3J3 YXJkLWxpbmUgLTYpCiAgICAgICAgICAgICAgICAoZm9yIGkgZnJvbSAxIHRvIDYgZG8gKHByb2du CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZGVudC10byBoZWFkZXIt aW5kZW50KSkpCiAgICAgICAgICAgICAgICAoc3BlY21hbi1taW5vci1jb21tZW50LXNlcGFyYXRv cikKICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgc3RhcnQpCiAgICAgICAgICAgICAgICAoc2Vh cmNoLWZvcndhcmQgIjxtZXRob2Q+IikKICAgICAgICAgICAgICAgIChyZXBsYWNlLW1hdGNoIG1l dGhvZC1uYW1lIHQgdCkKCiAgICAgICAgICAgICAgICAobGV0ICgoaW5kZW50CiAgICAgICAgICAg ICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAoZm9y d2FyZC1saW5lIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAoYmFjay10by1pbmRlbnRhdGlv bikKICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWNvbHVtbikpKQogICAgICAgICAg ICAgICAgICAgICAgKHNwZWNtYW4tYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJl bnQtYnVmZmVyKSkKICAgICAgICAgICAgICAgICAgICAgIG5leHQtYnVmZmVyCiAgICAgICAgICAg ICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgIChzZWFyY2gtZm9yd2FyZCAiPG5vdGU+IikK ICAgICAgICAgICAgICAgICAgKHNwZWNtYW4tY29tbWVudC1zdGFydC1lbnRyeSAiTm90ZSIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPE5vdGU+ICIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS0gICAgICAgICAg ICAgIDogICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bmRlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 LW1hcmtlciAobWFrZS1tYXJrZXIpIChtYXRjaC1iZWdpbm5pbmcgMCkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNtYW4tYnVmZmVyCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1tYXJrZXIgKG1ha2UtbWFya2VyKSAobWF0Y2gt ZW5kIDApKSkKICAgICAgICAgICAgICAgICAgKHNldHEgbmV4dC1idWZmZXIgKGN1cnJlbnQtYnVm ZmVyKSkKICAgICAgICAgICAgICAgICAgKHN3aXRjaC10by1idWZmZXItb3RoZXItd2luZG93IHNw ZWNtYW4tYnVmZmVyKQogICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHN0YXJ0KQogICAgICAg ICAgICAgICAgICAoc2VhcmNoLWZvcndhcmQgIjxyZXR1cm4gdmFsPiIpCiAgICAgICAgICAgICAg ICAgIChzcGVjbWFuLWNvbW1lbnQtc3RhcnQtZW50cnkgIlJldHVybi1WYWwiCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxSZXR1cm4gVmFsPiAiCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tICAgICAgICAgICAg ICA6ICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5k ZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1t YXJrZXIgKG1ha2UtbWFya2VyKSAobWF0Y2gtYmVnaW5uaW5nIDApKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBuZXh0LWJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoc2V0LW1hcmtlciAobWFrZS1tYXJrZXIpIChtYXRjaC1lbmQgMCkp KQogICAgICAgICAgICAgICAgICAoc2V0cSBuZXh0LWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKQog ICAgICAgICAgICAgICAgICAoc3dpdGNoLXRvLWJ1ZmZlci1vdGhlci13aW5kb3cgc3BlY21hbi1i dWZmZXIpCiAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgc3RhcnQpCiAgICAgICAgICAgICAg ICAgIChzZWFyY2gtZm9yd2FyZCAiPHBhcmFtZXRlcnM+IikKICAgICAgICAgICAgICAgICAgKHNw ZWNtYW4tY29tbWVudC1zdGFydC1lbnRyeSAiUGFyYW1ldGVycyIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPFBhcmFtZXRlcnM+ICIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS0gICAgICAgICAgICAgIDogICIK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0LW1hcmtlciAo bWFrZS1tYXJrZXIpIChtYXRjaC1iZWdpbm5pbmcgMCkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5leHQtYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzZXQtbWFya2VyIChtYWtlLW1hcmtlcikgKG1hdGNoLWVuZCAwKSkpCiAgICAg ICAgICAgICAgICAgIChzZXRxIG5leHQtYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpCiAgICAgICAg ICAgICAgICAgIChzd2l0Y2gtdG8tYnVmZmVyLW90aGVyLXdpbmRvdyBzcGVjbWFuLWJ1ZmZlcikK ICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBzdGFydCkKICAgICAgICAgICAgICAgICAgKHNl YXJjaC1mb3J3YXJkICI8ZGVzY3JpcHRpb24+IikKICAgICAgICAgICAgICAgICAgKHNwZWNtYW4t Y29tbWVudC1zdGFydC1lbnRyeSAiRGVzY3JpcHRpb24iCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIjxEZXNjcmlwdGlvbj4gIgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLSAgICAgICAgICAgICAgOiAgIgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQtbWFya2VyIChtYWtl LW1hcmtlcikgKG1hdGNoLWJlZ2lubmluZyAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmV4dC1idWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHNldC1tYXJrZXIgKG1ha2UtbWFya2VyKSAobWF0Y2gtZW5kIDApKSkKICAgICAgICAg ICAgICAgICAgKSkpKSkpKSkpCgo7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQooZGVmdW4gc3BlY21h bi1hZGQtc3RydWN0LWFuZC1tZXRob2QtaGVhZGVycyAoKQogICJPcGVuIHN0cnVjdCBhbmQgbWV0 aG9kIGhlYWRlcnMgZm9yIHRoZSBlbnRpcmUgYnVmZmVyLiIKICAoaW50ZXJhY3RpdmUpCgogIChs ZXQgKChtYWluLXJlZ2V4cAogICAgICAgICAoY29uY2F0CiAgICAgICAgICAiXlsgXHRdKlxcKCIK ICAgICAgICAgIAogICAgICAgICAgIlxcKCIKICAgICAgICAgIHNwZWNtYW4tY2xhc3MtZGVmaW5p dGlvbi1yZWdleHAKICAgICAgICAgICJcXClcXHxcXCgiCiAgICAgICAgICBzcGVjbWFuLWRlZmlu ZS1yZWdleHAKICAgICAgICAgICJcXClcXHxcXCgiCiAgICAgICAgICBzcGVjbWFuLW1ldGhvZC1k ZWZpbml0aW9uLXJlZ2V4cAogICAgICAgICAgIlxcKVxcfFxcKCIKICAgICAgICAgIHNwZWNtYW4t b24tZXZlbnQtbWV0aG9kLWRlZmluaXRpb24tcmVnZXhwCiAgICAgICAgICAiXFwpIgogICAgICAg ICAgCiAgICAgICAgICAiXFwpIikpCiAgICAgICAgKGNvdW50ZXIKICAgICAgICAgMCkKICAgICAg ICApCiAgICAKICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAoZ290by1jaGFyIChwb2ludC1tYXgp KQogICAgICAoc3BlY21hbi1za2lwLWJhY2t3YXJkLWNvbW1lbnQtb3Itc3RyaW5nKQogICAgICAo d2hpbGUgKHNwZWNtYW4tcmUtc2VhcmNoLWJhY2t3YXJkIG1haW4tcmVnZXhwIG5pbCB0IHQpCiAg ICAgICAgKHNldHEgY291bnRlciAoMSsgY291bnRlcikpCiAgICAgICAgKHdoZW4gKD0gMCAoJSBj b3VudGVyIDEwKSkKICAgICAgICAgIChtZXNzYWdlICIlZCBoZWFkZXJzIC4uLiIgY291bnRlcikp CiAgICAgICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAoaWYgKG9yIChsb29raW5nLWF0IHNw ZWNtYW4tY2xhc3MtZGVmaW5pdGlvbi1yZWdleHAtZnVsbCkKICAgICAgICAgICAgICAgICAgKGxv b2tpbmctYXQgc3BlY21hbi1kZWZpbmUtcmVnZXhwLWZ1bGwpKQogICAgICAgICAgICAgIChzcGVj bWFuLXN0cnVjdC1hbmQtZGVmaW5lLWhlYWRlci1pbnRlcm5hbCB0IHQpCiAgICAgICAgICAgICAg KHNwZWNtYW4tbWV0aG9kLWhlYWRlci1pbnRlcm5hbCB0IHQpKSkpCiAgICAgICkKICAgIChtZXNz YWdlICIlZCBoZWFkZXJzIHByb2Nlc3NlZCIgY291bnRlcikKICAgICkKICApCgoKOzsgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKGRlZnVuIHNwZWNtYW4tb3Blbi1lLWNvZGUtc2VjdGlvbiAoKQogICJP cGVuIGEgbmV3IGUtY29kZSBzZWN0aW9uLiAgSWYgYWxyZWFkeSBpbiBhIGNvZGUgc2VjdGlvbiwg c3RhcnQgYSBuZXcgb25lLiIKICAoaW50ZXJhY3RpdmUpCgogIChpZiAobm90IChzcGVjbWFuLXdp dGhpbi1leC1jb2RlLXBvaW50KSkKICAgICAgCiAgICAgIDs7IGFscmVhZHkgaW4gY29kZSByZWdp b24gLSBmaW5kIHRoZSBlbmQsIGNyZWF0aW5nIGl0IGlmIG5lY2Vzc2FyeQogICAgICAocHJvZ24K ICAgICAgICAodW5sZXNzIChyZS1zZWFyY2gtZm9yd2FyZCAiXic+JCIgbmlsIHQpCiAgICAgICAg ICAoZ290by1jaGFyIChwb2ludC1tYXgpKQogICAgICAgICAgKG5ld2xpbmUpCiAgICAgICAgICAo aW5zZXJ0ICInPiIpKQogICAgICAgIChuZXdsaW5lKQogICAgICAgIChuZXdsaW5lKSkKCiAgICAo cHJvZ24KICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgICAKICAgICAgKGNvbmQgKDs7IHdh cyBvbiB0aGUgY2xvc2VyLCBqdW1wIHRvIHRoZSBuZXh0IGxpbmUKICAgICAgICAgICAgIChsb29r aW5nLWF0ICInPiIpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIChlbmQtb2YtbGluZSkKICAg ICAgICAgICAgIChuZXdsaW5lKQogICAgICAgICAgICAgKQogICAgICAgICAgICAoOzsgbm90IG9u IGFuIGVtcHR5IGxpbmUsIG1vdmUgaXQgZG93bgogICAgICAgICAgICAgKGxvb2tpbmctYXQgIi4q W14gXHRdKyIpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIChuZXdsaW5lKQogICAgICAgICAg ICAgKHByZXZpb3VzLWxpbmUgMSkKICAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAK ICAgICAgKG5ld2xpbmUpCiAgICAgIChwcmV2aW91cy1saW5lIDEpKSkKCjsgIChpbnNlcnQgIjwn IikgKGluZGVudC1hY2NvcmRpbmctdG8tbW9kZSkKOyAgKGVuZC1vZi1saW5lKSAobmV3bGluZSkK OyAgKGluc2VydCAiJz4iKSAoaW5kZW50LWFjY29yZGluZy10by1tb2RlKQo7ICAocHJldmlvdXMt bGluZSAxKSAoZW5kLW9mLWxpbmUpCjsgIChzcGVjbWFuLWluc2VydC1uZXdsaW5lKQoKICAoaW5z ZXJ0ICI8JyIpIChuZXdsaW5lIDQpCiAgKGluc2VydCAiJz4iKQogIChwcmV2aW91cy1saW5lIDIp CiAgKQoKOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKGRlZnVuIHNwZWNtYW4tb3Blbi1lLWNvZGUt YmxvY2sgKCkKICAiT3BlbiBjb2RlIGJsb2NrIgogIChpbnRlcmFjdGl2ZSkKCiAgOzsgYWRkIGEg c3BhY2UgYmV0d2VlbiB0aGUgb3BlbmluZyBwYXJlbnMgYW5kIHRoZSBsYXN0CiAgOzsgd29yZCwg aWYgbmVlZGVkLgogICh3aGVuIChub3QgKG9yIChlcXVhbCAoY2hhci1iZWZvcmUpID8gKQogICAg ICAgICAgICAgICAgIChlcXVhbCAoY2hhci1iZWZvcmUpID9cdCkpKQogICAgKGluc2VydCAiICIp KQogIAogIChpbnNlcnQgInsiKSAoaW5kZW50LWFjY29yZGluZy10by1tb2RlKQogIChlbmQtb2Yt bGluZSkgKG5ld2xpbmUpCiAgKGluc2VydCAifSIpIAogIChzcGVjbWFuLWVsZWN0cmljLXNlbWlj b2xvbikKICAoaW5kZW50LWFjY29yZGluZy10by1tb2RlKQogIChwcmV2aW91cy1saW5lIDEpIChl bmQtb2YtbGluZSkKICAoc3BlY21hbi1pbnNlcnQtbmV3bGluZSkpCgo7OyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQooZGVmdW4geW9vay1zcGVjbWFuLW9wZW4tZS1jb2RlLWJsb2NrICgpCiAgIk9wZW4g Y29kZSBibG9jayBhbmQgc29tZXRpbWVzIGEgY29tbWVudCBhZnRlciBpdChub3QgaW1wbGVtZW50 ZWQgeWV0KSIKICAoaW50ZXJhY3RpdmUpCiAgCiAgOzsgYWRkIGEgc3BhY2UgYmV0d2VlbiB0aGUg b3BlbmluZyBwYXJlbnMgYW5kIHRoZSBsYXN0CiAgOzsgd29yZCwgaWYgbmVlZGVkLgogICh3aGVu IChub3QgKG9yIChlcXVhbCAoY2hhci1iZWZvcmUpID8gKQoJCQkJIChlcXVhbCAoY2hhci1iZWZv cmUpID9cdCkpKQogICAgKGluc2VydCAiICIpKQogIAogIChpbnNlcnQgInsiKSAoaW5kZW50LWFj Y29yZGluZy10by1tb2RlKQogIChlbmQtb2YtbGluZSkgKG5ld2xpbmUpCiAgKGluc2VydCAifTsi KSAoaW5kZW50LWFjY29yZGluZy10by1tb2RlKQogIChwcmV2aW91cy1saW5lIDEpIChlbmQtb2Yt bGluZSkKICAoc3BlY21hbi1pbnNlcnQtbmV3bGluZSkpCgoKOzsgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKGRlZnVuIHNwZWNtYW4tcmVhbGlnbi1jb21tZW50ICgpCiAgIklmIHRoZSBjb21tZW50IGlu IHRoZSBjdXJyZW50IGxpbmUgaXMgbG9uZ2VyIHRoYW4gc3BlY21hbi1tYXgtbGluZS1sZW5ndGgs CmJyZWFrIGl0IGludG8gc2V2ZXJhbCBsaW5lcywgc28gdGhhdCBzcGVjbWFuLW1heC1saW5lLWxl bmd0aCBpcyByZXNwZWN0ZWQKYXMgbXVjaCBhcyBwb3NzaWJsZS4gIGNvbW1lbnQgc3R5bGUgaXMg cHJlc2VydmVkLiIKICAoaW50ZXJhY3RpdmUpCgogIChpZiAoc2F2ZS1leGN1cnNpb24KICAgICAg ICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICAgKG5vdCAocmUtc2VhcmNoLWZvcndhcmQgIlte IFx0XSIgKHNwZWNtYW4tZW5kLW9mLWxpbmUtcG9zKSB0KSkpCgogICAgICA7OyB3YXJuIGlmIGVt cHR5IGxpbmUKICAgICAgKG1lc3NhZ2UgInJlYWxpZ24tY29tbWVudCBkb2Vzbid0IHdvcmsgb24g ZW1wdHkgbGluZXMuIikKCiAgICA7OyBvdGhlcndpc2UgcmVhbGlnbi1jb21tZW50CiAgICAobGV0 KiAoKGNvbW1lbnQtcHJlZml4CiAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgIChiZWdp bm5pbmctb2YtbGluZSkKICAgICAgICAgICAgICAob3IgKHJlLXNlYXJjaC1mb3J3YXJkICJcXChc L1wvK1sgXHRdKlxcfFwtXC0rWyBcdF0qXFwpW14gXHRdIgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHNwZWNtYW4tZW5kLW9mLWxpbmUtcG9zKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdCkKICAgICAgICAgICAgICAgICAgKHJlLXNlYXJjaC1mb3J3 YXJkICJcXChcXClbXiBcdF0iIDs7IHRoZSBlbXB0eSBtYXRjaCBpcyBmb3IgYnVmZmVyLXN1YnN0 cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwZWNtYW4tZW5kLW9m LWxpbmUtcG9zKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCkpCiAgICAg ICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmcgKG1hdGNoLWJlZ2lubmluZyAxKSAobWF0Y2gtZW5k IDEpKSkKICAgICAgICAgICAgKQogICAgICAgICAgIChjb21tZW50LWNvbHVtbgogICAgICAgICAg ICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5p bmcgMSkpCiAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkKICAgICAgICAgICAgKQogICAg ICAgICAgICkKICAgICAgCiAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIl4gXHRcbiIpIDs7IGVu ZCBvZiBmaXJzdCB3b3JkIGluIGNvbW1lbnQgbGluZQogICAgICAKICAgICAgKHdoaWxlIChub3Qg KGxvb2tpbmctYXQgIlsgXHRdKiQiKSkKICAgICAgICAoaWYgKHNhdmUtZXhjdXJzaW9uCiAgICAg ICAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0IikKICAgICAgICAgICAgICAoc2tpcC1j aGFycy1mb3J3YXJkICJeIFx0XG4iKQogICAgICAgICAgICAgICg+IChjdXJyZW50LWNvbHVtbikK ICAgICAgICAgICAgICAgICBzcGVjbWFuLW1heC1saW5lLWxlbmd0aCkpCiAgICAgICAgICAgIChw cm9nbgogICAgICAgICAgICAgIChuZXdsaW5lKQogICAgICAgICAgICAgIChpbnNlcnQgKG1ha2Ut c3RyaW5nIGNvbW1lbnQtY29sdW1uID9cICkpCiAgICAgICAgICAgICAgKGluc2VydCBjb21tZW50 LXByZWZpeCkKICAgICAgICAgICAgICAocmUtc2VhcmNoLWZvcndhcmQgIlsgXHRdKiIpCiAgICAg ICAgICAgICAgKHJlcGxhY2UtbWF0Y2ggIiIgdCkpKQogICAgICAgIChza2lwLWNoYXJzLWZvcndh cmQgIiBcdCIpCiAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiXiBcdFxuIikpIDs7IGVuZCBv ZiBmaXJzdCB3b3JkIGluIGNvbW1lbnQgbGluZQogICAgICAKICAgICAgKGlmIChub3QgKGVvbHAp KQogICAgICAgICAgKHByb2duCiAgICAgICAgICAgIChraWxsLWxpbmUpCiAgICAgICAgICAgIChu ZXdsaW5lKQogICAgICAgICAgICAocHJldmlvdXMtbGluZSAxKQogICAgICAgICAgICAoZW5kLW9m LWxpbmUpKSkKICAgICAgKSkpCgo7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQooZGVmdW4gc3BlY21h bi1pbnNlcnQtY29tbWVudCAocHJlZml4KQogICJJbnNlcnQgYSBjb21tZW50IGluIHRoZSBjdXJy ZW50IGxvY2F0aW9uLiAgQSBjb21tZW50IGJ1ZmZlciBpcyBvcGVuZWQgZm9yCiAgIHRleHQgZWRp dGluZyB3aXRoIGF1dG8tZmlsbCBtb2RlIChsaW5lIGxlbmd0aCBiZWluZyBoYW5kbGVkIGF1dG9t YXRpY2FsbHkpLgogICBUaGUgY29tbWVudCBzdHlsZSBpcyBwcmVzZXJ2ZWQgaWYgYWxyZWFkeSBl bnRlcmVkLiIKCiAgKHNwZWNtYW4tY29tbWVudC1zdGFydC1lbnRyeSAiRW50cnkiCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiPENvbW1lbnQgRW50cnk+ICIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHByZWZpeAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1 cnJlbnQtY29sdW1uKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1tYXJrZXIg KG1ha2UtbWFya2VyKSAocG9pbnQpKSkpCgooZGVmdW4gc3BlY21hbi1pbnNlcnQtbWludXMtY29t bWVudCAoKQogICJTdGFydCBlbnRyeSBvZiBhIC0tIGNvbW1lbnQsIG9yIGlmIGN1cnJlbnRseSBp bnNpZGUgYSBjb21tZW50IC0gZWRpdCBpdC4iCiAgKGludGVyYWN0aXZlKQogIChpZiAoc3BlY21h bi13aXRoaW4tY29tbWVudC1wKQogICAgICAoc3BlY21hbi1yZWVkaXQtY29tbWVudCkKICAgIChz cGVjbWFuLWluc2VydC1jb21tZW50ICItLSAgIikpKQoKKGRlZnVuIHNwZWNtYW4taW5zZXJ0LXNs YXNoLWNvbW1lbnQgKCkKICAiU3RhcnQgZW50cnkgb2YgYSAvLyBjb21tZW50LCBvciBpZiBjdXJy ZW50bHkgaW5zaWRlIGEgY29tbWVudCAtIGVkaXQgaXQuIgogIChpbnRlcmFjdGl2ZSkKICAoaWYg KHNwZWNtYW4td2l0aGluLWNvbW1lbnQtcCkKICAgICAgKHNwZWNtYW4tcmVlZGl0LWNvbW1lbnQp CiAgICAoc3BlY21hbi1pbnNlcnQtY29tbWVudCAiLy8gICIpKSkKCjs7IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCihkZWZ1biBzcGVjbWFuLWludGVybmFsLWlzLW1hdGNoaW5nLWNvbW1lbnQtbGluZSAo Y29tbWVudC1jb2x1bW4gY29tbWVudC1wcmVmaXgpCiAgInVzZWQgaW4gc3BlY21hbi1yZWVkaXQt Y29tbWVudCB0byBmaW5kIGFsbCBsaW5lcyBtYXRjaGluZyB0aGUgY3VycmVudCBjb21tZW50CnN0 eWxlLiAgcmV0dXJuczoKLSBuaWwgICAtIG1hdGNoIGZhaWxlZC4KLSBjbGVhbiAtIGEgbGluZSB3 aXRoIGEgbWF0Y2hpbmcgY29tbWVudCBvbmx5LgotIGZpcnN0IC0gYSBsaW5lIHdpdGggdGV4dCB0 aGF0IGVuZHMgd2l0aCBhIG1hdGNoaW5nIGNvbW1lbnQsIHNvIGEgZmlyc3QgbGluZS4iCiAgKHNh dmUtZXhjdXJzaW9uCiAgICAoZW5kLW9mLWxpbmUpCiAgICAoaWYgKD4gY29tbWVudC1jb2x1bW4K ICAgICAgICAgICAoY3VycmVudC1jb2x1bW4pKQogICAgICAgIG5pbAogICAgICAocHJvZ24KICAg ICAgICAoZm9yd2FyZC1jaGFyICgtIGNvbW1lbnQtY29sdW1uCiAgICAgICAgICAgICAgICAgICAg ICAgICAoY3VycmVudC1jb2x1bW4pKSkKICAgICAgICAoYW5kIChsb29raW5nLWF0IGNvbW1lbnQt cHJlZml4KQogICAgICAgICAgICAgKGlmIChyZS1zZWFyY2gtYmFja3dhcmQgIlteIFx0XSIgKHNw ZWNtYW4tYmVnLW9mLWxpbmUtcG9zKSB0KQogICAgICAgICAgICAgICAgICdmaXJzdAogICAgICAg ICAgICAgICAnY2xlYW4pKSkpKSkKCihkZWZ1biBzcGVjbWFuLXJlZWRpdC1jb21tZW50ICgpCgog IChsZXQgKGNvbW1lbnQtdGV4dAogICAgICAgIGNvbW1lbnQtcHJlZml4CiAgICAgICAgY29tbWVu dC1jb2x1bW4KICAgICAgICAoYmVnLW1hcmtlciAobWFrZS1tYXJrZXIpKQogICAgICAgIChlbmQt bWFya2VyIChtYWtlLW1hcmtlcikpCiAgICAgICAgKQogICAgKG9yCiAgICAgOzsgYW4gZXgtY29k ZSByZWdpb24gY29tbWVudAogICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgKGFuZCAoaWYgKHJl LXNlYXJjaC1iYWNrd2FyZCAiXlxcKD86XFwoJz5cXClcXHxcXCg8J1xcKVxcKSIgbmlsIHQpCiAg ICAgICAgICAgICAgICAobWF0Y2gtYmVnaW5uaW5nIDEpCiAgICAgICAgICAgICAgKGdvdG8tY2hh ciAocG9pbnQtbWluKSkpCiAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgIChpZiAobG9v a2luZy1hdCAiJz4iKQogICAgICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lKSkKICAgICAgICAg ICAgICAoc2V0LW1hcmtlciBiZWctbWFya2VyIChwb2ludCkpCiAgICAgICAgICAgICAgKG9yIChh bmQgKHJlLXNlYXJjaC1mb3J3YXJkICJePCciIG5pbCB0KQogICAgICAgICAgICAgICAgICAgICAg IChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAwKSkpCiAgICAgICAgICAgICAgICAgIChnb3Rv LWNoYXIgKHBvaW50LW1heCkpKQogICAgICAgICAgICAgIChzZXQtbWFya2VyIGVuZC1tYXJrZXIg KHBvaW50KSkKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIChzZXRxIGNvbW1lbnQtdGV4 dCAoYnVmZmVyLXN1YnN0cmluZyBiZWctbWFya2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVuZC1tYXJrZXIpKQogICAgICAgICAgICAgIChzZXRx IGNvbW1lbnQtcHJlZml4ICIiKQogICAgICAgICAgICAgIChzZXRxIGNvbW1lbnQtY29sdW1uIDAp CiAgICAgICAgICAgICAgKSkpCiAgICAgOzsgbm9ybWFsIGNvbW1lbnQKICAgICAocHJvZ24KICAg ICAgIDs7IGNvbW1lbnQgcHJlZml4CiAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICA7 OyhyZS1zZWFyY2gtZm9yd2FyZCAiXFwoXC9cLytbIFx0XSpcXHxcLVwtK1sgXHRdKlxcKVteIFx0 XSIKICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiXFwoXC9cLytbIFx0XSpcXHxcLVwtK1sgXHRd KlxcKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAoc3BlY21hbi1lbmQtb2YtbGluZS1wb3Mp CiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsKQogICAgICAgKHNldHEgY29tbWVudC1wcmVm aXggKGJ1ZmZlci1zdWJzdHJpbmcgKG1hdGNoLWJlZ2lubmluZyAxKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtZW5kIDEpKSkKICAgICAgIDs7 IGNvbW1lbnQgY29sdW1uCiAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgKGdvdG8tY2hh ciAobWF0Y2gtYmVnaW5uaW5nIDEpKQogICAgICAgICAoc2V0cSBjb21tZW50LWNvbHVtbiAoY3Vy cmVudC1jb2x1bW4pKSkKICAgICAgIDs7IG1hcmsgY29tbWVudCByZWdpb24KICAgICAgICh3aGls ZSAoc3BlY21hbi1pbnRlcm5hbC1pcy1tYXRjaGluZy1jb21tZW50LWxpbmUgY29tbWVudC1jb2x1 bW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29tbWVudC1wcmVmaXgpCiAgICAgICAgIChmb3J3YXJkLWxpbmUgLTEpKQogICAgICAgKGZv cndhcmQtbGluZSkKICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCBjb21tZW50LXByZWZpeCAoc3Bl Y21hbi1lbmQtb2YtbGluZS1wb3MpIG5pbCkKICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lu bmluZyAwKSkKICAgICAgICAgCiAgICAgICAoc2V0LW1hcmtlciBiZWctbWFya2VyIChwb2ludCkp CiAgICAgICAoc2V0cSBjb21tZW50LXRleHQgKGJ1ZmZlci1zdWJzdHJpbmcgKG1hdGNoLWVuZCAw KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzcGVjbWFuLWVu ZC1vZi1saW5lLXBvcykpKQogICAgICAgKGVuZC1vZi1saW5lKQogICAgICAgKHNldC1tYXJrZXIg ZW5kLW1hcmtlciAocG9pbnQpKQogICAgICAgICAKICAgICAgIChmb3J3YXJkLWxpbmUpCiAgICAg ICAod2hpbGUKICAgICAgICAgICAoZXF1YWwgKHNwZWNtYW4taW50ZXJuYWwtaXMtbWF0Y2hpbmct Y29tbWVudC1saW5lIGNvbW1lbnQtY29sdW1uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50LXByZWZpeCkKICAgICAgICAg ICAgICAgICAgJ2NsZWFuKQogICAgICAgICAocmUtc2VhcmNoLWZvcndhcmQgY29tbWVudC1wcmVm aXggKHNwZWNtYW4tZW5kLW9mLWxpbmUtcG9zKSBuaWwpCiAgICAgICAgIChzZXRxIGNvbW1lbnQt dGV4dAogICAgICAgICAgICAgICAoY29uY2F0IGNvbW1lbnQtdGV4dAogICAgICAgICAgICAgICAg ICAgICAgICJcbiIKICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZyAobWF0 Y2gtZW5kIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwZWNt YW4tZW5kLW9mLWxpbmUtcG9zKSkpKQogICAgICAgICAoc2V0LW1hcmtlciBlbmQtbWFya2VyIChz cGVjbWFuLWVuZC1vZi1saW5lLXBvcykpCiAgICAgICAgIChmb3J3YXJkLWxpbmUpKQogICAgICAg KQogICAgICkKCiAgICAoc3BlY21hbi1jb21tZW50LXN0YXJ0LWVudHJ5ICJDb21tZW50LUVkaXQi CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8Q29tbWVudCBFZGl0PiAiCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQtcHJlZml4CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbW1lbnQtY29sdW1uCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJlZy1tYXJrZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmls CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWJ1ZmZlcikKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVuZC1tYXJrZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVu dC10ZXh0KQogICAgKSkKICAKCjs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjs7IHByb3ZpZGUgYSBz cGVjbWFuLWhlYWRlciBmdW5jdGlvbi4KOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgooZGVmdW4g c3BlY21hbi1oZWFkZXIgKCkKICAiSW5zZXJ0IGEgc3RhbmRhcmQgU3BlY21hbiBmaWxlIGhlYWRl ci4iCiAgKGludGVyYWN0aXZlKQogIChsZXQgKChzdGFydCAocG9pbnQpKSkKICAoaW5zZXJ0ICJc Ci8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gVGl0bGUgICAgICAgICA6IDx0aXRsZT4KLy8gUHJv amVjdCAgICAgICA6IDxwcm9qZWN0PgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEZpbGUgICAg ICAgICAgOiA8ZmlsZW5hbWU+Ci8vIEF1dGhvciAgICAgICAgOiA8YXV0aG9yPgovLyBDcmVhdGVk ICAgICAgIDogPGNyZWRhdGU+Ci8vIExhc3QgbW9kaWZpZWQgOiA8bW9kZGF0ZT4KLy8tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQovLyBEZXNjcmlwdGlvbiA6Ci8vIDxkZXNjcmlwdGlvbj4KLy8tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQovLyBDb3B5cmlnaHQgKGMpIDxjb3B5ZGF0ZT4gYnkgPGNvbXBhbnk+LiBU aGlzIG1vZGVsIGlzIHRoZSBjb25maWRlbnRpYWwgYW5kCi8vIHByb3ByaWV0YXJ5IHByb3BlcnR5 IG9mIDxjb21wYW55PiBhbmQgdGhlIHBvc3Nlc3Npb24gb3IgdXNlIG9mIHRoaXMKLy8gZmlsZSBy ZXF1aXJlcyBhIHdyaXR0ZW4gbGljZW5zZSBmcm9tIDxjb21wYW55Pi4KLy8tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLy8gTW9kaWZpY2F0aW9uIGhpc3RvcnkgOgovLyA8bW9kaGlzdD4KLy8tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQoKIikKICAgIChnb3RvLWNoYXIgc3RhcnQpCiAgICAoc2VhcmNoLWZvcndh cmQgIjxmaWxlbmFtZT4iKQogICAgKHJlcGxhY2UtbWF0Y2ggKGJ1ZmZlci1uYW1lKSB0IHQpCiAg ICAoc2VhcmNoLWZvcndhcmQgIjxhdXRob3I+IikgKHJlcGxhY2UtbWF0Y2ggIiIgdCB0KQogICAg KGluc2VydCAodXNlci1mdWxsLW5hbWUpKQogICAgKGluc2VydCAiICA8IiAodXNlci1sb2dpbi1u YW1lKSAiQCIgKHN5c3RlbS1uYW1lKSAiPiIpCiAgICAoc2VhcmNoLWZvcndhcmQgIjxjcmVkYXRl PiIpIChyZXBsYWNlLW1hdGNoICIiIHQgdCkKICAgIChzcGVjbWFuLWluc2VydC1kYXRlKQogICAg KHNlYXJjaC1mb3J3YXJkICI8bW9kZGF0ZT4iKSAocmVwbGFjZS1tYXRjaCAiIiB0IHQpCiAgICAo c3BlY21hbi1pbnNlcnQtZGF0ZSkKICAgIChzZWFyY2gtZm9yd2FyZCAiPGNvcHlkYXRlPiIpIChy ZXBsYWNlLW1hdGNoICIiIHQgdCkKICAgIChzcGVjbWFuLWluc2VydC15ZWFyKQogICAgKHNlYXJj aC1mb3J3YXJkICI8bW9kaGlzdD4iKSAocmVwbGFjZS1tYXRjaCAiIiB0IHQpCiAgICAoc3BlY21h bi1pbnNlcnQtZGF0ZSkKICAgIChpbnNlcnQgIiA6IGNyZWF0ZWQiKQogICAgKGdvdG8tY2hhciBz dGFydCkKICAgIChsZXQgKHN0cmluZykKICAgICAgKHNldHEgc3RyaW5nIChyZWFkLXN0cmluZyAi dGl0bGU6ICIpKQogICAgICAoc2VhcmNoLWZvcndhcmQgIjx0aXRsZT4iKQogICAgICAocmVwbGFj ZS1tYXRjaCBzdHJpbmcgdCB0KQogICAgICAoc2V0cSBzdHJpbmcgKHJlYWQtc3RyaW5nICJwcm9q ZWN0OiAiIHNwZWNtYW4tcHJvamVjdCkpCiAgICAgIChtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2Nh bCAnc3BlY21hbi1wcm9qZWN0KQogICAgICAoc2V0cSBzcGVjbWFuLXByb2plY3Qgc3RyaW5nKQog ICAgICAoc2VhcmNoLWZvcndhcmQgIjxwcm9qZWN0PiIpCiAgICAgIChyZXBsYWNlLW1hdGNoIHN0 cmluZyB0IHQpCiAgICAgIChzZXRxIHN0cmluZyAocmVhZC1zdHJpbmcgIkNvbXBhbnk6ICIgc3Bl Y21hbi1jb21wYW55KSkKICAgICAgKG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdzcGVjbWFu LWNvbXBhbnkpCiAgICAgIChzZXRxIHNwZWNtYW4tY29tcGFueSBzdHJpbmcpCiAgICAgIChzZWFy Y2gtZm9yd2FyZCAiPGNvbXBhbnk+IikKICAgICAgKHJlcGxhY2UtbWF0Y2ggc3RyaW5nIHQgdCkK ICAgICAgKHNlYXJjaC1mb3J3YXJkICI8Y29tcGFueT4iKQogICAgICAocmVwbGFjZS1tYXRjaCBz dHJpbmcgdCB0KQogICAgICAoc2VhcmNoLWZvcndhcmQgIjxjb21wYW55PiIpCiAgICAgIChyZXBs YWNlLW1hdGNoIHN0cmluZyB0IHQpCiAgICAgIChzZWFyY2gtYmFja3dhcmQgIjxkZXNjcmlwdGlv bj4iKQogICAgICAocmVwbGFjZS1tYXRjaCAiIiB0IHQpCiAgKSkpCgo7OyBzcGVjbWFuLWhlYWRl ciBVc2VzIHRoZSBzcGVjbWFuLWluc2VydC1kYXRlIGZ1bmN0aW9uCgooZGVmdW4gc3BlY21hbi1p bnNlcnQtZGF0ZSAoKQogICJJbnNlcnQgZGF0ZSBmcm9tIHRoZSBzeXN0ZW0uIgogIChpbnRlcmFj dGl2ZSkKICAobGV0ICgodGltcG9zKQogICAgICAgICkKICAgIChzZXRxIHRpbXBvcyAocG9pbnQp KQogICAgKGlmIHNwZWNtYW4tZGF0ZS1zY2llbnRpZmljLWZvcm1hdAoJKHNoZWxsLWNvbW1hbmQg ICJkYXRlIFwiK0AlWS8lbS8lZFwiIiB0KQogICAgICAoc2hlbGwtY29tbWFuZCAgImRhdGUgXCIr QCVkLiVtLiVZXCIiIHQpKQogICAgKHNlYXJjaC1mb3J3YXJkICJAIikKICAgIChkZWxldGUtcmVn aW9uIHRpbXBvcyAocG9pbnQpKQogICAgKGVuZC1vZi1saW5lKSkKICAoZGVsZXRlLWNoYXIgMSkp CgooZGVmdW4gc3BlY21hbi1pbnNlcnQteWVhciAoKQogICJJbnNlcnQgeWVhciBmcm9tIHRoZSBz eXN0ZW0uIgogIChpbnRlcmFjdGl2ZSkKICAobGV0ICgodGltcG9zKQogICAgICAgICkKICAgIChz ZXRxIHRpbXBvcyAocG9pbnQpKQogICAgKHNoZWxsLWNvbW1hbmQgICJkYXRlIFwiK0AlWVwiIiB0 KQogICAgKHNlYXJjaC1mb3J3YXJkICJAIikKICAgIChkZWxldGUtcmVnaW9uIHRpbXBvcyAocG9p bnQpKQogICAgKGVuZC1vZi1saW5lKSkKICAoZGVsZXRlLWNoYXIgMSkpCgoKOy0tPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PS0tCjs7IEJ1ZyByZXBvcnRpbmcKOy0tPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tCgoo cmVxdWlyZSAncmVwb3J0ZXIpCgooZGVmdW4gc3BlY21hbi1zdWJtaXQtYnVnLXJlcG9ydCAoKQog ICJTdWJtaXQgdmlhIG1haWwgYSBidWcgcmVwb3J0IG9uIHNwZWNtYW4tbW9kZS5lbCIKICAoaW50 ZXJhY3RpdmUpCiAgKGxldCAoKHJlcG9ydGVyLXByb21wdC1mb3Itc3VtbWFyeS1wIHQpKQogICAg KHJlcG9ydGVyLXN1Ym1pdC1idWctcmVwb3J0CiAgICAgInN1cHBvcnRAY2FkZW5jZS5jb20iCiAg ICAgKGNvbmNhdCAic3BlY21hbi1tb2RlIHYiIChzdWJzdHJpbmcgc3BlY21hbi1tb2RlLXZlcnNp b24gMTIgLTMpKQogICAgICcoCiAgICAgICBzcGVjbWFuLWJhc2ljLW9mZnNldAogICAgICAgc3Bl Y21hbi1jb250aW51ZWQtbGluZS1vZmZzZXQKICAgICAgIHNwZWNtYW4tbGluZS11cC1icmFja2V0 CiAgICAgICBzcGVjbWFuLWxpbmUtdXAtcGFyZW4KICAgICAgIHNwZWNtYW4tYXV0by1uZXdsaW5l CiAgICAgICBzcGVjbWFuLXRhYi13aWR0aAogICAgICAgc3BlY21hbi1kYXRlLXNjaWVudGlmaWMt Zm9ybWF0CiAgICAgICBzcGVjbWFuLWNvbXBhbnkKICAgICAgIHNwZWNtYW4tcHJvamVjdAogICAg ICAgKQogICAgIG5pbCBuaWwKICAgICAoY29uY2F0ICJIZWxsbywKCkkgd2FudCB0byByZXBvcnQg YSBidWcuICBJJ3ZlIHJlYWQgdGhlIGBCdWdzJyBzZWN0aW9uIG9mIGBJbmZvJyBvbgpFbWFjcywg c28gSSBrbm93IGhvdyB0byBtYWtlIGEgY2xlYXIgYW5kIHVuYW1iaWd1b3VzIHJlcG9ydC4gIFRv IGdldAp0byB0aGF0IEluZm8gc2VjdGlvbiwgSSB0eXBlZAoKTS14IGluZm8gUkVUIG0gIiBpbnZv Y2F0aW9uLW5hbWUgIiBSRVQgbSBidWdzIFJFVAoKQmVmb3JlIEkgZ28gZnVydGhlciwgSSB3YW50 IHRvIHNheSB0aGF0IFNwZWNtYW4gbW9kZSBoYXMgY2hhbmdlZCBteQpsaWZlLiAgSSBzYXZlIHNv IG11Y2ggdGltZSwgbXkgZmlsZXMgYXJlIGNvbG9yZWQgbmljZWx5LCBteSBjbyB3b3JrZXJzCmZp bmFsbHkgcmVzcGVjdCBteSBjb2RpbmcgYWJpbGl0eS4uLiB1bnRpbCBub3cuICBJJ2QgcmVhbGx5 IGFwcHJlY2lhdGUKYW55dGhpbmcgeW91IGNvdWxkIGRvIHRvIGhlbHAgbWUgb3V0IHdpdGggdGhp cyBleHRyZW1lbHkgbWlub3IKZGVmaWNpZW5jeSBpbiB0aGUgcHJvZHVjdC4KClRvIHJlcHJvZHVj ZSB0aGUgYnVnLCBzdGFydCBhIGZyZXNoIEVtYWNzIHZpYSAiIGludm9jYXRpb24tbmFtZSAiCi1u by1pbml0LWZpbGUgLW5vLXNpdGUtZmlsZScuICBJbiBhIG5ldyBidWZmZXIsIGluIHNwZWNtYW4g bW9kZSwgdHlwZQp0aGUgY29kZSBpbmNsdWRlZCBiZWxvdy4KCkdpdmVuIHRob3NlIGxpbmVzLCBJ IGV4cGVjdGVkIAoKICBURUxMIE1FIFdIQVQgWU9VIEVYUEVDVEVECgp0byBoYXBwZW47CmJ1dCBp bnN0ZWFkLCAKCiAgVEVMTCBNRSBUSEUgQkFEIFRISU5HIFRIQVQgSEFQUEVORUQKCmhhcHBlbnMh LgoKICBHSVZFIE1FIENPREUgU1VGRklDSUVOVCBUTyBERU1PTlNUUkFURSBUSEUgUFJPQkxFTQoK PT0gVGhlIGNvZGU6ID09IikpKSkKCgoKOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KOzsgU1BFQ01B TiBDT01NRU5UIE1PREUKOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCjs7IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCjs7IFRoZSBtYWpvciBtb2RlIGZ1bmN0aW9uLgo7OwoKKGRlZnVuIHNwZWNtYW4tY29t bWVudC1tb2RlICgpCiAgIk1ham9yIG1vZGUgZm9yIGVkaXRpbmcgY29tbWVudHMgZm9yIFNwZWNt YW4uCgpXaGlsZSB5b3UgYXJlIGVudGVyaW5nIGEgY29tbWVudCBmb3IgYSB2ZXJzaW9uLCB0aGUg Zm9sbG93aW5nCmFkZGl0aW9uYWwgYmluZGluZ3Mgd2lsbCBiZSBpbiBlZmZlY3QuCgpcXFtzcGVj bWFuLWNvbW1lbnQtZmluaXNoXSAgICAgICAgICAgcHJvY2VlZCB3aXRoIGNoZWNrIGluLCBlbmRp bmcgY29tbWVudAoKRW50cnkgdG8gdGhlIHNwZWNtYW4tY29tbWVudC1tb2RlIGNhbGxzIHRoZSB2 YWx1ZSBvZiB0ZXh0LW1vZGUtaG9vaywgdGhlbgp0aGUgdmFsdWUgb2Ygc3BlY21hbi1jb21tZW50 LW1vZGUtaG9vay4KCkdsb2JhbCB1c2VyIG9wdGlvbnM6CiIKICAoaW50ZXJhY3RpdmUpCgogIDs7 IE1ham9yIG1vZGVzIGFyZSBzdXBwb3NlZCB0byBqdXN0IChraWxsLWFsbC1sb2NhbC12YXJpYWJs ZXMpCiAgOzsgYnV0IHdlIHJlbHkgb24gc3BlY21hbi1jb21tZW50LXBhcmVudC1idWZmZXIgYWxy ZWFkeSBoYXZpbmcgYmVlbiBzZXQKICA7OwogIDs7KGxldCAoKHBhcmVudCBzcGVjbWFuLWNvbW1l bnQtcGFyZW50LWJ1ZmZlcikpCiAgOzsgIChraWxsLWFsbC1sb2NhbC12YXJpYWJsZXMpCiAgOzsg IChzZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ3NwZWNtYW4tY29tbWVudC1wYXJlbnQtYnVmZmVy KSBwYXJlbnQpKQoKICAoc2V0cSBtYWpvci1tb2RlICdzcGVjbWFuLWNvbW1lbnQtbW9kZSkKICAo c2V0cSBtb2RlLW5hbWUgIlNwZWNtYW4vQ29tbWVudCIpCgogIChzZXQtc3ludGF4LXRhYmxlIHRl eHQtbW9kZS1zeW50YXgtdGFibGUpCiAgKHVzZS1sb2NhbC1tYXAgc3BlY21hbi1jb21tZW50LW1v ZGUtbWFwKQogIChzZXRxIGxvY2FsLWFiYnJldi10YWJsZSB0ZXh0LW1vZGUtYWJicmV2LXRhYmxl KQoKICAobWFrZS1sb2NhbC12YXJpYWJsZSAnc3BlY21hbi1jb21tZW50LW9wZXJhbmRzKQoKICAo c2V0LWJ1ZmZlci1tb2RpZmllZC1wIG5pbCkKICAoc2V0cSBidWZmZXItZmlsZS1uYW1lIG5pbCkK ICAocnVuLWhvb2tzICd0ZXh0LW1vZGUtaG9vayAnc3BlY21hbi1jb21tZW50LW1vZGUtaG9vaykp Cgo7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo7OyBUaGUga2V5bWFwLgo7OwoKKGRlZnZhciBzcGVj bWFuLWNvbW1lbnQtbW9kZS1tYXAgbmlsKQooaWYgc3BlY21hbi1jb21tZW50LW1vZGUtbWFwCiAg ICBuaWwKICAoc2V0cSBzcGVjbWFuLWNvbW1lbnQtbW9kZS1tYXAgKG1ha2Utc3BhcnNlLWtleW1h cCkpCiAgKGRlZmluZS1rZXkgc3BlY21hbi1jb21tZW50LW1vZGUtbWFwICJcQy1jXEMtYyIgJ3Nw ZWNtYW4tY29tbWVudC1maW5pc2gpKQoKOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KOzsgQ29uc3Rh bnRzLgo7OwoKOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KOzsgVmFyaWFibGVzLgo7OwoKKGRlZnZh ciBzcGVjbWFuLWNvbW1lbnQtcHJlZml4IG5pbCkKKGRlZnZhciBzcGVjbWFuLWNvbW1lbnQtaW5k ZW50IG5pbCkKKGRlZnZhciBzcGVjbWFuLWNvbW1lbnQtaWdub3JlLWZpcnN0LWxpbmUtcHJlZml4 IG5pbCkKKGRlZnZhciBzcGVjbWFuLWNvbW1lbnQtd2luZG93LWNvbmZpZyBuaWwpCihkZWZ2YXIg c3BlY21hbi1jb21tZW50LWNoYWluZWQtY29tbWVudCBuaWwpCgooZGVmdmFyIHNwZWNtYW4tY29t bWVudC1iZWdpbi1tYXJrIG5pbCkKKGRlZnZhciBzcGVjbWFuLWNvbW1lbnQtZW5kLW1hcmsgbmls KQoKOzsgSW4gc2V2ZXJhbCBjb250ZXh0cywgdGhpcyBpcyBhIGxvY2FsIHZhcmlhYmxlIHRoYXQg cG9pbnRzIHRvIHRoZSBidWZmZXIgZm9yCjs7IHdoaWNoIGl0IHdhcyBtYWRlIChlaXRoZXIgYSBm aWxlLCBvciBhIFNwZWNtYW4gZGlyZWQgYnVmZmVyKS4KOzsKKGRlZnZhciBzcGVjbWFuLWNvbW1l bnQtcGFyZW50LWJ1ZmZlciBuaWwpCgoobWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwgJ3NwZWNt YW4tY29tbWVudC1wcmVmaXgpCihtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAnc3BlY21hbi1j b21tZW50LWluZGVudCkKKG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdzcGVjbWFuLWNvbW1l bnQtaWdub3JlLWZpcnN0LWxpbmUtcHJlZml4KQoobWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwg J3NwZWNtYW4tY29tbWVudC13aW5kb3ctY29uZmlnKQoobWFrZS12YXJpYWJsZS1idWZmZXItbG9j YWwgJ3NwZWNtYW4tY29tbWVudC1jaGFpbmVkLWNvbW1lbnQpCihtYWtlLXZhcmlhYmxlLWJ1ZmZl ci1sb2NhbCAnc3BlY21hbi1jb21tZW50LWJlZ2luLW1hcmspCihtYWtlLXZhcmlhYmxlLWJ1ZmZl ci1sb2NhbCAnc3BlY21hbi1jb21tZW50LWVuZC1tYXJrKQoobWFrZS12YXJpYWJsZS1idWZmZXIt bG9jYWwgJ3NwZWNtYW4tY29tbWVudC1wYXJlbnQtYnVmZmVyKQoKOzsgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KOzsgQ29tbWFuZHMgYW5kIGZ1bmN0aW9ucwo7OwoKOzsgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKGRlZnVuIHNwZWNtYW4tY29tbWVudC1zdGFydC1lbnRyeSAodW5pcXVpZmllcgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9tcHQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcHJlZml4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluZGVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWctbWFyawogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgaWdub3JlLWZpcnN0CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQtYnVmZmVy CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFpbmVkLWNv bW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZC1t YXJrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50 LXNlZWQpCgogICJBY2NlcHQgYSBjb21tZW50IGJ5IHBvcHBpbmcgdXAgYSBzcGVjbWFuLWNvbW1l bnQtbW9kZSBidWZmZXIKd2l0aCBhIG5hbWUgZGVyaXZlZCBmcm9tIFVOSVFVSUZJRVIsIGFuZCBl bWl0dGluZyBQUk9NUFQgaW4gdGhlIG1pbmlidWZmZXIuCgpUaGUgYXJndW1lbnQgUFJFRklYIGlz IGFkZGVkIGJlZm9yZSBhbGwgbGluZXMgZXhjZXB0IHRoZSBmaXJzdCwgd2l0aCBJTkRFTlQKc3Bh Y2VzIGFkZGVkIGJlZm9yZSBpdC4KCnRoZSBCRUctTUFSSyBzcGVjaWZpZXMgd2hlcmUgdGhlIGNv bW1lbnQgdGV4dCBzaG91bGQgYmUgaW5zZXJ0ZWQsIHdpdGggYW4gb3B0aW9uYWwKRU5ELU1BUksg YWxsb3dpbmcgcmVwbGFjZW1lbnQgaW5zdGVhZCBvZiBpbnNlcnRpb24uCgpPcHRpb25hbCA2dGgg YXJndW1lbnQgc3BlY2lmaWVzIHRvIG5vdCBhZGQgdGhlIHByZWZpeCB0byB0aGUgZmlyc3QgbGlu ZSB3aGVuIG5vbi1uaWwuCgpPcHRpb25hbCA3dGggYXJndW1lbnQgc3BlY2lmaWVzIGEgUEFSRU5U LUJVRkZFUiB0byByZXR1cm4gdG8gd2hlbiB0aGUgb3BlcmF0aW9uCmlzIGNvbXBsZXRlLgoKT3B0 aW9uYWwgOHRoIGFyZ3VtZW50IHNwZWNpZmllcyBpZiB0aGUgd2luZG93IGNvbmZpZ3VyYXRpb24g c2hvdWxkIGJlIHJlc3RvcmVkLAp3aGljaCBpcyB0cnVlIGZvciBub3JtYWwgY29tbWVudCBidWZm ZXJzIGJ1dCBmYWxzZSBmb3IgY2hhaW5lZCBjb21tZW50IGJ1ZmZlcnMKKHRob3NlIHdoZXJlIGEg Y29tbWVudCBidWZmZXIgd2hlbiBmaW5pc2hlZCBwYXNzZXMgZm9jdXMgdG8gYW5vdGhlciBvbmUp LgoKT3B0aW9uYWwgMTB0aCBhcmd1bWVudCBzcGVjaWZpZXMgYSBDT01NRU5ULVNFRUQgdG8gaW5z ZXJ0IGluIHRoZSBjb21tZW50IGJ1ZmZlciBmb3IKdGhlIHVzZXIgdG8gZWRpdC4iCgogIChsZXQg KChjb21tZW50LWJ1ZmZlciAgICAgKGdldC1idWZmZXItY3JlYXRlIChmb3JtYXQgIipDb21tZW50 LSVzKiIgdW5pcXVpZmllcikpKQogICAgICAgIChvbGQtd2luZG93LWNvbmZpZyAgKGN1cnJlbnQt d2luZG93LWNvbmZpZ3VyYXRpb24pKQogICAgICAgIChwYXJlbnQgICAgICAgICAgICAgKG9yIHBh cmVudC1idWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1idWZm ZXIpKSkKICAgICAgICApCiAgICAocG9wLXRvLWJ1ZmZlciBjb21tZW50LWJ1ZmZlcikKCiAgICAo c2V0cSBzcGVjbWFuLWNvbW1lbnQtd2luZG93LWNvbmZpZyAgICAgICAgICAgICBvbGQtd2luZG93 LWNvbmZpZykKICAgIChzZXRxIHNwZWNtYW4tY29tbWVudC1wYXJlbnQtYnVmZmVyICAgICAgICAg ICAgIHBhcmVudCkKICAgIChzZXRxIHNwZWNtYW4tY29tbWVudC1wcmVmaXggICAgICAgICAgICAg ICAgICAgIHByZWZpeCkKICAgIChzZXRxIHNwZWNtYW4tY29tbWVudC1pbmRlbnQgICAgICAgICAg ICAgICAgICAgIGluZGVudCkKICAgIChzZXRxIHNwZWNtYW4tY29tbWVudC1pZ25vcmUtZmlyc3Qt bGluZS1wcmVmaXggIGlnbm9yZS1maXJzdCkKICAgIChzZXRxIHNwZWNtYW4tY29tbWVudC1iZWdp bi1tYXJrICAgICAgICAgICAgICAgIGJlZy1tYXJrKQogICAgKHNldHEgc3BlY21hbi1jb21tZW50 LWVuZC1tYXJrICAgICAgICAgICAgICAgICAgZW5kLW1hcmspCiAgICAoc2V0cSBzcGVjbWFuLWNv bW1lbnQtY2hhaW5lZC1jb21tZW50ICAgICAgICAgICBjaGFpbmVkLWNvbW1lbnQpCgogICAgKHNl dHEgcG9wLXVwLXdpbmRvd3MgdCkKCiAgICAoc3BlY21hbi1jb21tZW50LW1vZGUpCiAgICAoYXV0 by1maWxsLW1vZGUgMSkKICAgIChzZXRxIGZpbGwtY29sdW1uICgtIHNwZWNtYW4tbWF4LWxpbmUt bGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQKICAgICAgICAgICAgICAgICAg ICAgICAgIChsZW5ndGggcHJlZml4KSkpCiAgICAKICAgIChpZiBjb21tZW50LXNlZWQKICAgICAg ICAoaW5zZXJ0IGNvbW1lbnQtc2VlZCkpCiAgICAKICAgIChtZXNzYWdlICIlcyAgVHlwZSBDLWMg Qy1jIHdoZW4gZG9uZS4iIHByb21wdCkpKQoKOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKGRlZnVu IHNwZWNtYW4tY29tbWVudC1jbGVhbnVwICgpCgogIDs7IFJlbW92ZSB1c2VsZXNzIHdoaXRlc3Bh Y2UuCiAgOzsKICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICh3aGlsZSAocmUtc2VhcmNoLWZv cndhcmQgIlsgXHRdKyQiIG5pbCB0KQogICAgKHJlcGxhY2UtbWF0Y2ggIiIpKQoKICA7OyBSZW1v dmUgdHJhaWxpbmcgbmV3bGluZXMsIHdoaXRlc3BhY2UuCiAgOzsgCjs7ICAoZ290by1jaGFyIChw b2ludC1tYXgpKQo7OyAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcblx0IikKOzsgIChkZWxldGUt cmVnaW9uIChwb2ludCkgKHBvaW50LW1heCkpCgogIDs7IEFkZCB0aGUgcHJlZml4IHRvIGVhY2gg bGluZQogIDs7CiAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAoaWYgKG5vdCBzcGVjbWFuLWNv bW1lbnQtaWdub3JlLWZpcnN0LWxpbmUtcHJlZml4KQogICAgICAoaW5zZXJ0IHNwZWNtYW4tY29t bWVudC1wcmVmaXgpKQogICh3aGlsZSAoc2VhcmNoLWZvcndhcmQgIlxuIiBuaWwgdCkKICAgIChp bnNlcnQgKG1ha2Utc3RyaW5nIHNwZWNtYW4tY29tbWVudC1pbmRlbnQgP1wgKSkKICAgIChpbnNl cnQgc3BlY21hbi1jb21tZW50LXByZWZpeCkpKQoKOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKGRl ZnVuIHNwZWNtYW4tY29tbWVudC1maW5pc2ggKCkKICAiQ29tcGxldGUgdGhlIG9wZXJhdGlvbiBp bXBsaWVkIGJ5IHRoZSBjdXJyZW50IGNvbW1lbnQuIgogIChpbnRlcmFjdGl2ZSkKCiAgOztDbGVh biBhbmQgcmVjb3JkIHRoZSBjb21tZW50IGluIHRoZSByaW5nLgogIDs7CiAgKGxldCAoKGNvbW1l bnQtYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpCiAgICAgICAgKGNvbW1lbnQtdGV4dCAgIChwcm9n bgogICAgICAgICAgICAgICAgICAgICAgICAgIChzcGVjbWFuLWNvbW1lbnQtY2xlYW51cCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN0cmluZykpKQogICAgICAgICkKCiAgICA7 OyBSZXR1cm4gdG8gInBhcmVudCIgYnVmZmVyIG9mIHRoaXMgb3BlcmF0aW9uLgogICAgOzsgUmVt b3ZlIGNvbW1lbnQgd2luZG93LgogICAgOzsKICAgIChsZXQgKChvbGQtd2luZG93LWNvbmZpZyAg c3BlY21hbi1jb21tZW50LXdpbmRvdy1jb25maWcpCiAgICAgICAgICAoY2hhaW5lZC1jb21tZW50 ICAgIHNwZWNtYW4tY29tbWVudC1jaGFpbmVkLWNvbW1lbnQpCiAgICAgICAgICAoYmVnLW1hcmsg ICAgICAgICAgIHNwZWNtYW4tY29tbWVudC1iZWdpbi1tYXJrKQogICAgICAgICAgKGVuZC1tYXJr ICAgICAgICAgICBzcGVjbWFuLWNvbW1lbnQtZW5kLW1hcmspCiAgICAgICAgICAoZWRpdGVkLWJ1 ZmZlciAgICAgIChtYXJrZXItYnVmZmVyIHNwZWNtYW4tY29tbWVudC1iZWdpbi1tYXJrKSkKICAg ICAgICAgICkKICAgICAgKHNldC1idWZmZXIgZWRpdGVkLWJ1ZmZlcikKICAgICAgKGRlbGV0ZS13 aW5kb3dzLW9uIGNvbW1lbnQtYnVmZmVyKQogICAgICAoa2lsbC1idWZmZXIgY29tbWVudC1idWZm ZXIpCiAgICAgIAogICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAoaWYgKG1hcmtlcnAgZW5k LW1hcmspCiAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIGJlZy1tYXJrIGVuZC1tYXJrKSkKICAg ICAgICAoZ290by1jaGFyIGJlZy1tYXJrKQogICAgICAgIChpbnNlcnQgY29tbWVudC10ZXh0KSkK CiAgICAgIChwb3AtdG8tYnVmZmVyIHNwZWNtYW4tY29tbWVudC1wYXJlbnQtYnVmZmVyKQogICAg ICAoaWYgKGFuZCBvbGQtd2luZG93LWNvbmZpZwogICAgICAgICAgICAgICAobm90IGNoYWluZWQt Y29tbWVudCkpCiAgICAgICAgICAoc2V0LXdpbmRvdy1jb25maWd1cmF0aW9uIG9sZC13aW5kb3ct Y29uZmlnKSkpKSkKCgo7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo7OyBTUEVDTUFOIEFEQVBUSVZF IEFVVE8gRklMTAo7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo7OyBSZXF1aXJlIHBhY2thZ2UgZmls bGFkYXB0CgoocmVxdWlyZSAnZmlsbGFkYXB0KQoKKGFkZC1ob29rICdzcGVjbWFuLW1vZGUtaG9v awogICcobGFtYmRhICgpIChhdXRvLWZpbGwtbW9kZSAxKSkpCihhZGQtaG9vayAnc3BlY21hbi1t b2RlLWhvb2sKICAnKGxhbWJkYSAoKSAoZmlsbGFkYXB0LW1vZGUgMSkpKQoKOyBUaGUgZSBjb21t ZW50IHRva2VuIGluIHRoZSB0b2tlbiB0YWJsZSBtdXN0IGFwcGVhdCBiZWZvcmUgdGhlIGJ1bGxl dCB0b2tlbgo7IHNpbmNlIHRoZSBidWxsZXQgcmVnZXhwIGluY2x1ZGUgIi0rIi4gVGhhdCdzIHdo eSB3ZSBwdXQgaXQgaW4gdGhlIGJlZ2luaW5nIG9mCjsgdGhlIGxpc3QuIFRoZSBvcmRlciBpbiB0 aGUgb3RoZXIgbGlzdHMgaXMgbm90IGltcG9ydGFudC4KOyBDKysgc3R5bGUgY29tbWVudHMgYXJl IGFscmVhZHkgcmVjb2duaXplZC4KKHNldGNhciBmaWxsYWRhcHQtdG9rZW4tdGFibGUgJygiLS0t KiIgZS1jb21tZW50KSkKKHNldGNhciBmaWxsYWRhcHQtdG9rZW4tbWF0Y2gtdGFibGUgJyhlLWNv bW1lbnQgZS1jb21tZW50KSkKKHNldGNhciBmaWxsYWRhcHQtdG9rZW4tY29udmVyc2lvbi10YWJs ZSAnKGUtY29tbWVudCAuIGV4YWN0KSkKCgoKOzs7IHNwZWNtYW4tY29tbWVudCBtb2RlIGRlZmlu aXRpb24gZW5kcyBoZXJlCjs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKOzsgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KOzsgQlVHUzoKOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KOzsgLSBXaGVuIGNsb3Np bmcgfSBpcyBvbiBzYW1lIGxpbmUgYXMgY29udGFpbmVyIChlLmcuIGZvbygpIGlzIHt9OykgYXV0 byBjb21tZW50Cjs7ICAgaXMgd3JvbmcKOzsgLSBEb2Vzbid0IGRldGVjdCBtZXRob2RzIHdoZW4g cGFyYW1ldGVyIGhhcyAoYml0czopIG1vZGlmaWVyLiBOb3RlIHRoYXQgdGhlcmUKOzsgICBtYXkg YmUgYW55IG51bWJlciBvZiBwYXJhbnRoZXNlcyBuZXN0ZWQuCjs7IC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCjs7IFRPRE86Cjs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjs7Cjs7IC0gcmV2aWV3IFRPRE8g Y29tbWVudHMgZW1iZWRkZWQgaW4gdGhlIGNvZGUuCjs7IC0gYWRkIGNvbW1hbmRzIHRvIHN5bnRh eCBmb3IgZWRpdGluZyBlY29tcy4KOzsgLSBzcGVjbWFuIGludGVyYWN0aW9uIG1vZGUuCjs7IC0g aGlkZXNob3cgaW50ZXJhY3Rpb24gKGV4aXN0cyBpbiBhIHBhcnRpYWwgZm9ybSwgY29tbWVudGVk IG91dCkKOzsgICAtIGNvbW1lbnRzCjs7ICAgLSBmb2xkaW5nIChzdHJ1Y3QsIG1ldGhvZCkKOzsg LSBoZWFkZXJzCjs7ICAgLSBvcHRpbWl6ZSBjcmVhdGlvbiBvZiBoZWFkZXJzCjs7ICAgLSBnZW5l cmFsaXplIGhlYWRlciBjcmVhdGlvbiBpbnRvIG1vZHVsYXIgZnVuY3Rpb25zLCB0byBtYWtlIGl0 IGVhc3kKOzsgICAgIHRvIGFkZCBhbmQgY2hhbmdlIGhlYWRlcnMuCjs7ICAgICAtIHdoaWxlIGF0 IGl0LCBhZGQgYSB0ZXN0IGhlYWRlcjoKOzsgICAgICAgIkZpbGU6XG5BdXRob3I6XG5EYXRlOlxu UHVycG9zZTpcbkV4cGVjdGVkOiIuLi4KOzsgLSBpbmRlbnRhdGlvbiB1Z2x5bmVzczoKOzsgICAt IHRoZSBpbmRlbnRhdGlvbiBhYnN0cmFjdGlvbiBmb3IgW10gaXMgdWdseS4KOzsgICAtIHByb2Js ZW1zIHdpdGggYSBzY29wZSBpbiBhIHBhcmVuIC0gaGFuZGxlZCB0d2ljZS4KOzsgLSBzcGVjbWFu LW1heC1saW5lLWxlbmd0aCBkZWZhdWx0cyB0byA4MCwgd2hpbGUgeC9lbWFjcyBuYXRpdmVseSBv cGVucyA4MAo7OyAgIGNoYXJhY3RlcnMgd2lkZS4gIHRoaXMgd291bGQgYmUgZmluZSwgYnV0IChu ZXdsaW5lKSBpcyBhbHNvIGEgY2hhcmFjdGVyCjs7ICAgYW5kIGNhdXNlcyB3cmFwLWFyb3VuZCBi eSBkZWZhdWx0IC0gd2hpY2ggaXMgdWdseS4KOzsgICAtIGNhbiBiZSBzb2x2ZWQgYnkgY2hhbmdp bmcgdGhlIGRlZmF1bHQgd2lkdGggaW4gLmVtYWNzLCBidXQgdGhpcyBpcwo7OyAgICAgYSBsaXR0 bGUgdG9vIGRlbWFuZGluZy4gIG9uIHRoZSBvdGhlciBoYW5kLCBjaGFuZ2luZyB0aGUgZGVmYXVs dCB0byA3OQo7OyAgICAgYmVjYXVzZSB4L2VtYWNzIGlzIHN0dXBpZCBpc24ndCB0b28gbmljZSBl aXRoZXIuCjs7Cjs7IAo7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo7OyBJU1NVRVM6Cjs7IC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCjs7Cjs7ICogY29uc2lkZXIgYy1jb2RlIGNvbW1lbnRzIGluIGFsbCBy ZS1zZWFyY2hlcwo7Owo7OyAtIEMgY29kZSAjOiBpbmRlbnRhdGlvbiBpcyBtZXNzZWQgdXAKOzsg ICAtIGFkZCAiQyBjb2RlICM6IiBhbmQgImVuZCAjIiB0byB1cC9kb3duIHNjb3BlIHF1ZXJpZXMu Cjs7ICAgLSBtaXhlZCBtYWpvci1tb2RlPwo7Owo7OyAtIGluZGVudGF0aW9uIGluY29uc2lzdGVu Y3kgLSBjb21tZW50cyBhcmUgaW5kZW50ZWQgYXMgYSBub3JtYWwgbGluZSwKOzsgICBidXQgaW5z ZXJ0aW9uIGluIGNvbW1lbnQgbW9kZSAob3IgY29tbWVudC1yZWFsaWduKSBoYXMgYSBuaWNlcgo7 OyAgIGluZGVudGF0aW9uLCB3aGVyZSB0aGUgZmlyc3QgY29tbWVudCBsaW5lIGRldGVybWluZXMg dGhlIGluZGVudGF0aW9uLgo7OyAgIHNpbmNlIHRoaXMgY29tbWVudCBtYXkgYmUgb24gYSBub3Jt YWwgbGluZSwgdGhlIGNvbW1lbnQgaW5kZW50YXRpb24KOzsgICBpcyB2YXJpYWJsZS4KOzsgICAt IGNvbW1lbnQgaW5kZW50YXRpb24gc2hvdWxkIGJlIHNlbnNpdGl2ZSB0byBzdWNoIGNvbW1lbnQg YmxvY2tzLgo7Owo7OyAtIHVzYWJpbGl0eSAtIHNvbWUgdGhpbmdzIGFyZSBub3QgaW50dWl0aXZl LCBhbmQgdGhlcmUgaXMgbm90IG11Y2ggaW4KOzsgICB0aGUgd2F5IG9mIGhlbHAuLi4KOzsgICAt IG1ldGhvZC9zdHJ1Y3QgaGVhZGVycyAtIG5lZWQgdG8gYmUgY2FsbGVkIGZyb20gd2l0aGluIHRo ZSByZWxldmFudAo7OyAgICAgc2NvcGUsIG9yIG9uIHRoZSBkZWZpbml0aW9uIGxpbmUuICBUaGlz IGlzIG5vdCBvYnZpb3VzIC0gZS5nLiB3aHkKOzsgICAgIG5vdCBqdXN0IGNhbGwgaXQgYW55d2hl cmUsIGJ1dCB0aGF0IG1ha2VzIGl0IGFjdCBzdHJhbmdlLgo7Owo7Owo7OyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo7OyBDSEFOR0VTOgo7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo7Owo7OyAtIHJldmll d2VkIG1vc3Qgb2YgdGhlIGNvZGUgYW5kIHJlbW92ZWQgYSBsb3Qgb2Ygb2xkIGNydWZ0Lgo7OyAt IGJldHRlciBwZXJmb3JtYW5jZS4KOzsgLSBleHRlcm5hbCBpcyBhIGtleXdvcmQuCjs7IC0gZml4 ZWQgc3BlY21hbi1vcGVuLWUtY29kZS1ibG9jayBvcHRpb25hbCBzcGFjZSBhZGRpdGlvbi4KOzsg LSBkZXNjcmliZS1jb250ZXh0OiAgYWRkZWQgb24gZXZlbnQgbWV0aG9kcywgZml4ZWQgY29udGV4 dCBuYW1lIGFjcXVpc2l0aW9uLgo7OyAtIHNwZWNtYW4taW5kZXg6IGZ1bGx5IHN1cHBvcnRlZC4K OzsgLSBzcGVjbWFuLWluZGV4OiBhY3RpdmF0aW9uIGN1c3RvbWl6YWJsZSAob24gYnkgZGVmYXVs dCkuCjs7IC0gZmllbGQgaGlnaGxpZ2h0aW5nIGZpeGVkLgo7OyAtIGFkZGVkIGV2ZW50IGhpZ2hs aWdodGluZy4KOzsgLSAnVE9ETzonIGluIGNvbW1lbnRzIGlzIG5vdyBoaWdobGlnaHRlZCBhcyB3 YXJuaW5nLgo7OyAtIDxmaWVsZD4gOiAqPG5hbWU+IG5vdyB3b3Jrcy4KOzsgLSBwdW5jdHVhdGlv biBpcyBub3cgaGlnaGxpZ2h0ZWQgKGNvbnRyb2xlZCBieSBjdXN0b21pemFibGUgdmFyaWFibGUp Cjs7ICAgYW5kIGl0IGhhcyBpdHMgb3duIGZhY2UgKGJlY2F1c2UgaXQncyBhbHdheXMgc2luZ2xl IGNoYXIpLgo7OyAtIG1ha2Ugc3BlY21hbi10YWItd2lkdGggYmUgc3BlY21hbi1iYXNpYy1vZmZz ZXQKOzsgLSBmaXhlZCBjdXN0b21pemUtZ3JvdXAgZm9yIHNwZWNtYW4uCjs7IC0gYWRkIG51bWJl ciBoaWdobGlnaHRpbmcuCjs7IC0gZml4ZWQgZXZlbnQgaGlnaGxpZ2h0aW5nLgo7OyAtIHJldmll d2VkLCByZXZpc2VkIGFuZCBvcmdhbml6ZWQga2V5d29yZCBsaXN0IGZvciBzeW50YXggaGlnaGxp Z2h0aW5nLgo7OyAtIGFkZGVkIHN5bnRheCBoaWdobGlnaHRpbmcgZm9yIG1hY3JvIGRlZmluaXRp b24ga2V5d29yZHMuCjs7IC0gZ2VuZXJhbCBldmVudHMgYW5kIHNwZWNpYWwgZXZlbnRzIGFyZSBo aWdobGlnaHRlZCBkaWZmZXJlbnRseS4KOzsgLSBkZXNjcmliZSBjb250ZXh0IC0gY29tcGxldGUg YWxzbyBmb3Igd2hlbiBhbmQgaW50ZXJuYWwgaWZkZWZzLgo7OyAtIGhlYWRlcnM6Cjs7ICAgLSBt b3JlIGludGVsbGlnZW50IC0gZmluZCB0aGUgdGhlIGZpcnN0IGRlZmluaXRpb24gYWJvdmUgdXNp bmcgcmVnZXhwcy4KOzsgICAtIGRlZmluZSBub3cgc3VwcG9ydGVkLgo7OyAgIC0gYWRkZWQgYSBj b21wYWN0IG1vZGUgd2hpY2ggaW5jbHVkZXMganVzdCB0aGUgbmFtZSwgc28gaXQgZG9lc24ndCBu ZWVkCjs7ICAgICBhbnkgdXNlciBpbnRlcmFjdGlvbi4gIHRoaXMgbW9kZSBpcyBub3cgZGVmYXVs dCBzbyBhbGwgdGhlIHNob3J0Y3V0cwo7OyAgICAgYWN0aXZhdGUgaXQuICB0aGUgZnVsbCBtb2Rl IGlzIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbWVudS4KOzsgICAtIHRoZSBoZWFkZXIgaXMgYWRk ZWQgYWJvdmUgYW55IGNvbW1lbnRzIGRpcmVjdGx5IGFib3ZlIHRoZSBkZWZpbml0aW9uLgo7OyAg IC0gYW4gZW1wdHkgbGluZSBpcyBhZGRlZCBhYm92ZSB0aGUgaGVhZGVyLCBpZiB0aGVyZSBpc24n dCBvbmUgYWxyZWFkeS4KOzsgICAtIGFkZGVkIGFuIGF1dG9tYXRpYyBtb2RlIHdoaWNoIGFkZHMg YWxsIGhlYWRlcnMgdG8gdGhlIGN1cnJlbnQgYnVmZmVyLAo7OyAgICAgYWNjZXNzaWJsZSB0aHJv dWdoIHRoZSBtZW51Lgo7OyAgIC0gaGVhZGVycyBpZ25vcmUgc3RydWN0cyB3aXRoIGV4aXN0aW5n IGhlYWRlcnMuCjs7IC0gcGFja2FnZXxwcml2YXRlfHByb3RlY3RlZCBzdHJ1Y3RzLCB1bml0cywg ZXh0ZW5kcywgZmllbGRzLCB0eXBlcywgZXRjJwo7OyAtIGZpeGVkIHNwZWNtYW4tY2xvc2VyLXA6 Cjs7ICAgZXJyb3IgaWYgZW50ZXIgaXMgcHJlc3NlZCBvbiBsYXN0IGxpbmUgYW5kIHRoZXJlIGlz IG5vIHRlcm1pbmF0aW5nICc+Cjs7IC0gc3BlY21hbi1iZWctb2Ytc3RhdGVtZW50IG9rIG5vdyAo d2FzIC0gY2hlY2s6IEMgc3R5bGUgZm9yIGxvb3AgbWVzc2VzCjs7ICAgaW5kZW50YXRpb24gKGZv ciB7aSA9IDA7IGkgPCAxMDsgaSArPSAxfSB7fSkpCjs7IC0gYmV0dGVyIGhhbmRsaW5nIGZvciBz cGVjbWFuIGNvbXBpbGUgYW5kIG1ha2UKOzsgLSBkb250IGluZGVudCBpbiBleC1jb2RlIHJlZ2lv bnMuCjs7IC0gb3B0aW1pemVkIGFsbCBzY29wZSBhbmQgcGFyZW4gc2VhcmNoIGJ5IHVzaW5nIGEg Z2xvYmFsIGRhdGEgc3RydWN0dXJlCjs7ICAgd2hpY2ggaXMgcHJlcGFyZWQgb25jZSAoYSBoYXNo IHRhYmxlKS4KOzsgLSByZXN1bHQvcmV0dXJuIC0gc3BlY2lhbCBmYWNlLgo7OyAtIGlmIChpbmRl eCAhPSBpdF9pbmRleCkgJiYgKHBhdGggaXMgYSBmaWVsZHNfY29uc3RyYWludF9wYXRoIChmY3Ap Cjs7ICAgdGhlIGlmIGhpZ2hsaWdodHMgYXMgYSBmdW5jdGlvbi4KOzsgLSAnYWRkJyBoaWdobGln aHQgaW4gLSByZXN1bHQuYWRkKHs8ZTEnZXhwPjsgPGUyJ2V4cD59KTsKOzsgLSBpbmRlbnRhdGlv biBvZiBlbHNlIGluIGNoZWNrIHRoYXQgZXhwcmVzc2lvbi4KOzsgLSBmaXhlZCBidWcgaW4gc3Bl Y21hbi1za2lwLWJhY2t3YXJkLWNvbW1lbnQtb3Itc3RyaW5nIHdoZW4gc2tpcHBpbmcgYmFjawo7 OyAgIG92ZXIgc3RyaW5ncy4KOzsgLSBpbXByb3ZlZCBzcGVjbWFuLW9wZW4tZS1jb2RlLXNlY3Rp b24KOzsgLSBhZGRlZCBoaWdobGlnaHRpbmcgZm9yIHJlYWRfb25seSgpCjs7IC0gZml4ZWQgaW5k ZW50YXRpb24gYnVnIHdpdGggY29udGludWVkIGxpbmVzIGluIG5ldyBzdGF0ZW1lbnRzLgo7OyAt IFxcdyBpcyBbYS16QS1aMC05X10gaW4gc3ludGF4LXRhYmxlCjs7IC0gYWRkZWQgIi5lIiBhcyBh IHNwZWVkYmFyIHN1cHBvcnRlZCBleHRlbnNpb24gLSBhbGxvd3MgdHJhdmVyc2luZyBlCjs7ICAg ZmlsZXMgaW50ZXJuYWwgc3RydWN0dXJlLCBhcyBjb21wdXRlZCB3aXRoIHNwZWNtYW4taW5kZXgs IHVzaW5nIHRoZQo7OyAgIHNwZWVkYmFyLgo7OyAtIGRlbGV0ZSBrZXkgZG9lc24ndCBkZWxldGUg cmVnaW9uIGV2ZW4gd2hlbiBkZWxldGUtcmVnaW9uIG9wdGlvbiBpcyBzZXQKOzsgICAtIGRlcHJl Y2F0ZWQgc3BlY21hbi1kZWxldGUtY2hhcgo7OyAtIGNhbid0IG9wZW4gbmV3IGUtY29kZSBzZWN0 aW9uIG9uIGFuIGVtcHR5IGZpbGUuCjs7IC0gY2FuJ3QgZWRpdCBhIG5ldyBjb21tZW50IHdoZW4g aXQncyBlbXB0eS4KOzsgLSBjYW4ndCBpbmRlbnQgcmVnaW9uIHdoZW4gdGhlcmUgYXJlIHRvbyBt YW55IGNsb3NpbmcgcGFyZW5zLgo7OyAtIGZpeCBtb3ZlIHRvIHN0YXJ0L2VuZAo7OyAtIGFkZCBh IGZ1bGwgcmVnaW9uIHNjb3BlIGxvY2F0aW5nIGZ1bmN0aW9uLgo7OyAtIG1ham9yIG9wdGltaXph dGlvbiBlZmZvcnQgd2l0aCBtYW55IHJld3JpdGVzLCBjZW50ZXJpbmcgbW9zdGx5IG9uCjs7ICAg dGhlbiBpbmRlbnRhdGlvbiBjb2RlIHBhdGg6Cjs7ICAgc3BlY21hbi1yZS1zZWFyY2gtKiwgc3Bl Y21hbi1pbmRlbnQtcmVnaW9uLCBzcGVjbWFuLWluZGVudC1saW5lLAo7OyAgIHNwZWNtYW4taW1l bnUtY3JlYXRlLW1lbnUsIHNwZWNtYW4tdXAtbGlzdCwKOzsgICBzcGVjbWFuLXNraXAtZm9yd2Fy ZC1jb21tZW50LW9yLXN0cmluZywgc3BlY21hbi1zY29wZS1vZmZzZXQsCjs7ICAgc3BlY21hbi1i ZWctb2Ytc3RhdGVtZW50LCBzcGVjbWFuLWJlZy1vZi1kZWZ1bi4KOzsgLSBjaGFuZ2VkIHZlcmlz aXR5IHJlZmVyZW5jZXMgdG8gY2FkZW5jZSByZWZlcmVuY2VzLgo7Owo7OyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQoKKHByb3ZpZGUgJ3NwZWNtYW4tbW9kZSkKKHJ1bi1ob29rcyAnc3BlY21hbi1tb2Rl LWxvYWQtaG9vaykKIAo7Ozsgc3BlY21hbi1tb2RlLmVsIGVuZHMgaGVyZQo= --_007_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_-- From debbugs-submit-bounces@debbugs.gnu.org Fri May 24 15:55:15 2013 Received: (at 14458) by debbugs.gnu.org; 24 May 2013 19:55:15 +0000 Received: from localhost ([127.0.0.1]:60843 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ufy54-0003wd-FI for submit@debbugs.gnu.org; Fri, 24 May 2013 15:55:15 -0400 Received: from fencepost.gnu.org ([208.118.235.10]:40138 ident=Debian-exim) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ufy52-0003wV-8q for 14458@debbugs.gnu.org; Fri, 24 May 2013 15:55:13 -0400 Received: from rgm by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1Ufy45-0006am-Fe; Fri, 24 May 2013 15:54:13 -0400 From: Glenn Morris To: Frederic Pouyet Subject: Re: bug#14458: 24.3; specman-mode_v1.22.el not compatible with emacs 24.x References: X-Spook: military beanpole Audiotel infowar subversive North Korea X-Ran: -\<*Mrp@@(|m1N,;2:M4Ko5BL,>MTc>xu}V?:??$,5)w]>ZMIt^"DF"NZVFA+!t7x>AO`I X-Hue: white X-Debbugs-No-Ack: yes X-Attribution: GM Date: Fri, 24 May 2013 15:54:13 -0400 In-Reply-To: (Frederic Pouyet's message of "Fri, 24 May 2013 09:33:40 +0200") Message-ID: User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -6.1 (------) X-Debbugs-Envelope-To: 14458 Cc: Avi Farjoun , Patrick Oury , Mahesh Soni , Orit Greengrass , 14458@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -8.0 (--------) --=-=-= As a general rule, we at bug-gnu-emacs don't support third-party libraries. The code looks pretty crufty, but the attached minimal patch might get it working again for you. If you have any further problems with it, someone on the help-gnu-emacs@gnu.org list might be willing to help. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=specman.diff *** specman-modev122.el.ORIG 2013-05-24 11:03:30.988169064 -0700 --- specman-modev122.el 2013-05-24 11:18:26.382601795 -0700 *************** *** 65,70 **** --- 65,72 ---- ;; specman-mode is a major mode for editing code written in the 'e' language ;; + (require 'cl) + (defconst specman-mode-version "$$Revision: 1.22 $$" "Version of this Specman mode.") *************** *** 137,154 **** (defmacro customize (&rest args) (message "Sorry, Customize is not available with this version of emacs")) (defmacro defcustom (var value doc &rest args) ! (` (defvar (, var) (, value) (, doc)))) ) (if (fboundp 'defface) nil ;; great! (defmacro defface (var value doc &rest args) ! (` (make-face (, var)))) ) (if (and (featurep 'custom) (fboundp 'customize-group)) nil ;; We've got what we needed ;; We have an intermediate custom-library, hack around it! (defmacro customize-group (var &rest args) ! (`(customize (, var) ))) ) (if (and (featurep 'custom) (fboundp 'custom-declare-variable)) nil ;; We've got what we needed --- 139,156 ---- (defmacro customize (&rest args) (message "Sorry, Customize is not available with this version of emacs")) (defmacro defcustom (var value doc &rest args) ! `(defvar ,var ,value , doc)) ) (if (fboundp 'defface) nil ;; great! (defmacro defface (var value doc &rest args) ! `(make-face ,var)) ) (if (and (featurep 'custom) (fboundp 'customize-group)) nil ;; We've got what we needed ;; We have an intermediate custom-library, hack around it! (defmacro customize-group (var &rest args) ! `(customize ,var) ) ) (if (and (featurep 'custom) (fboundp 'custom-declare-variable)) nil ;; We've got what we needed *************** *** 157,170 **** (defmacro customize (&rest args) (message "Sorry, Customize is not available with this version of emacs")) (defmacro defcustom (var value doc &rest args) ! (` (defvar (, var) (, value) (, doc)))) ) (if (and (featurep 'custom) (fboundp 'customize-group)) nil ;; We've got what we needed ;; We have an intermediate custom-library, hack around it! (defmacro customize-group (var &rest args) ! (`(customize (, var) ))) ) (condition-case nil (require 'easymenu) --- 159,172 ---- (defmacro customize (&rest args) (message "Sorry, Customize is not available with this version of emacs")) (defmacro defcustom (var value doc &rest args) ! `(defvar ,var ,value ,doc)) ) (if (and (featurep 'custom) (fboundp 'customize-group)) nil ;; We've got what we needed ;; We have an intermediate custom-library, hack around it! (defmacro customize-group (var &rest args) ! `(customize ,var)) ) (condition-case nil (require 'easymenu) *************** *** 407,419 **** "cover[ \t\n]+\\([A-Za-z0-9_]+\\)[ \t\n]+is" "Regexp that identifies cover definitions (arg 1)") (defconst specman-symbol-begin-regexp "\\<" "Regexp that identifies the beginning of a symbol") (defconst specman-symbol-end-regexp "\\>" ! "Regexp that identifies the end of a symbol") (defconst specman-number-regexp (concat --- 409,422 ---- "cover[ \t\n]+\\([A-Za-z0-9_]+\\)[ \t\n]+is" "Regexp that identifies cover definitions (arg 1)") + (eval-and-compile (defconst specman-symbol-begin-regexp "\\<" "Regexp that identifies the beginning of a symbol") (defconst specman-symbol-end-regexp "\\>" ! "Regexp that identifies the end of a symbol")) (defconst specman-number-regexp (concat *************** *** 748,754 **** :paren-parent nil)) scope-index) ! (when (re-search-forward "^<'" buffer-end nil) (while (and (< (point) buffer-end) (re-search-forward search-regexp buffer-end 'move)) --- 751,757 ---- :paren-parent nil)) scope-index) ! (when (re-search-forward "^<'" buffer-end t) (while (and (< (point) buffer-end) (re-search-forward search-regexp buffer-end 'move)) *************** *** 3135,3141 **** ;;; Hacks for FSF (require 'font-lock) ! (defvar specman-need-fld 1) (defvar font-lock-defaults-alist nil) ;In case we are XEmacs (if specman-need-fld (let ((specman-mode-defaults --- 3138,3144 ---- ;;; Hacks for FSF (require 'font-lock) ! (defvar specman-need-fld nil) (defvar font-lock-defaults-alist nil) ;In case we are XEmacs (if specman-need-fld (let ((specman-mode-defaults *************** *** 3205,3210 **** --- 3208,3216 ---- (make-local-variable 'indent-line-function) (setq indent-line-function 'specman-indent-line) + (set (make-local-variable 'font-lock-defaults) + (get 'specman-mode 'font-lock-defaults)) + (make-local-variable 'comment-start) (make-local-variable 'comment-end) (make-local-variable 'block-comment-start) *************** *** 3448,3454 **** (goto-char lim) (if (equal (point) ;; enter the scope (point-min)) ! (re-search-forward "^<'") (forward-char 1)) (specman-forward-ws) (forward-to-indentation 0) --- 3454,3460 ---- (goto-char lim) (if (equal (point) ;; enter the scope (point-min)) ! (re-search-forward "^<'" nil t) (forward-char 1)) (specman-forward-ws) (forward-to-indentation 0) *************** *** 5371,5377 **** ;; ============================================================================= ;; Require package filladapt ! (require 'filladapt) (add-hook 'specman-mode-hook '(lambda () (auto-fill-mode 1))) --- 5377,5383 ---- ;; ============================================================================= ;; Require package filladapt ! (when (require 'filladapt nil t) (add-hook 'specman-mode-hook '(lambda () (auto-fill-mode 1))) *************** *** 5384,5390 **** ; C++ style comments are already recognized. (setcar filladapt-token-table '("---*" e-comment)) (setcar filladapt-token-match-table '(e-comment e-comment)) ! (setcar filladapt-token-conversion-table '(e-comment . exact)) --- 5390,5396 ---- ; C++ style comments are already recognized. (setcar filladapt-token-table '("---*" e-comment)) (setcar filladapt-token-match-table '(e-comment e-comment)) ! (setcar filladapt-token-conversion-table '(e-comment . exact))) --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Fri May 24 15:55:27 2013 Received: (at control) by debbugs.gnu.org; 24 May 2013 19:55:27 +0000 Received: from localhost ([127.0.0.1]:60846 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ufy5H-0003xG-5l for submit@debbugs.gnu.org; Fri, 24 May 2013 15:55:27 -0400 Received: from fencepost.gnu.org ([208.118.235.10]:40143 ident=Debian-exim) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ufy5F-0003x9-Aa for control@debbugs.gnu.org; Fri, 24 May 2013 15:55:25 -0400 Received: from rgm by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1Ufy4J-0006fZ-Tf for control@debbugs.gnu.org; Fri, 24 May 2013 15:54:28 -0400 Date: Fri, 24 May 2013 15:54:27 -0400 Message-Id: Subject: control message for bug 14458 To: X-Mailer: mail (GNU Mailutils 2.1) From: Glenn Morris X-Spam-Score: -5.3 (-----) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.6 (------) close 14458 From debbugs-submit-bounces@debbugs.gnu.org Sat May 25 01:24:31 2013 Received: (at 14458) by debbugs.gnu.org; 25 May 2013 05:24:31 +0000 Received: from localhost ([127.0.0.1]:33284 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ug6xy-0003WL-KZ for submit@debbugs.gnu.org; Sat, 25 May 2013 01:24:31 -0400 Received: from mx-sanjose.cadence.com ([158.140.2.60]:52109) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ug6xv-0003Vm-T8 for 14458@debbugs.gnu.org; Sat, 25 May 2013 01:24:29 -0400 Received: from exowa02eu.global.cadence.com (exowa02eu.Cadence.COM [139.99.37.28]) by mx-sanjose.cadence.com (8.14.4/8.14.4) with ESMTP id r4P5Kpce007794 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=FAIL); Fri, 24 May 2013 22:20:53 -0700 (PDT) Received: from MAILEU2.global.cadence.com ([139.99.37.20]) by exowa02eu.global.cadence.com ([139.99.37.28]) with mapi; Sat, 25 May 2013 07:23:13 +0200 From: Frederic Pouyet To: Glenn Morris Date: Sat, 25 May 2013 07:23:11 +0200 Subject: RE: bug#14458: 24.3; specman-mode_v1.22.el not compatible with emacs 24.x Thread-Topic: bug#14458: 24.3; specman-mode_v1.22.el not compatible with emacs 24.x Thread-Index: Ac5YuHrtAdVEFcAkRmKjE47DAmc6QAATzi3Q Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Received: by mx-sanjose.cadence.com as r4P5Kpce007794 at Fri May 24 22:20:53 2013 X-Spam-Score: -3.4 (---) X-Debbugs-Envelope-To: 14458 Cc: Avi Farjoun , Patrick Oury , Mahesh Soni , Orit Greengrass , "14458@debbugs.gnu.org" <14458@debbugs.gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -5.3 (-----) Thanks a lot Glenn ! I can see the highlighting syntax now with emacs 24.3.1. Feel free to close the case. I would reopen it or create a new case if user= s would encounter stability issues. Best regards, Fred -----Original Message----- From: Glenn Morris [mailto:rgm@gnu.org]=20 Sent: Friday, May 24, 2013 9:54 PM To: Frederic Pouyet Cc: 14458@debbugs.gnu.org; Avi Farjoun; Patrick Oury; Mahesh Soni; Orit Gre= engrass Subject: Re: bug#14458: 24.3; specman-mode_v1.22.el not compatible with ema= cs 24.x As a general rule, we at bug-gnu-emacs don't support third-party libraries. The code looks pretty crufty, but the attached minimal patch might get it w= orking again for you. If you have any further problems with it, someone on the help-gnu-emacs@gnu= .org list might be willing to help. From debbugs-submit-bounces@debbugs.gnu.org Tue May 28 13:19:43 2013 Received: (at control) by debbugs.gnu.org; 28 May 2013 17:19:43 +0000 Received: from localhost ([127.0.0.1]:37776 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UhNYk-0007v3-H7 for submit@debbugs.gnu.org; Tue, 28 May 2013 13:19:42 -0400 Received: from fencepost.gnu.org ([208.118.235.10]:38523 ident=Debian-exim) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UhNYj-0007uw-2G for control@debbugs.gnu.org; Tue, 28 May 2013 13:19:41 -0400 Received: from rgm by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1UhNXR-0000l1-9e for control@debbugs.gnu.org; Tue, 28 May 2013 13:18:21 -0400 Date: Tue, 28 May 2013 13:18:21 -0400 Message-Id: Subject: control message for bug 14490 To: X-Mailer: mail (GNU Mailutils 2.1) From: Glenn Morris X-Spam-Score: -5.3 (-----) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.6 (------) forcemerge 14458 14490 From unknown Fri Aug 08 19:50:04 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Wed, 26 Jun 2013 11:24:03 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator